X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2Flxc-driver.sh;h=cec69fbf7c30f48661145bc7565519e024535f87;hb=59dac837b5ddd466f726c80b2043d310086aaea9;hp=23c8786cc6afca34380547ebb543d2bced4360dc;hpb=53888c4e7d4063ae5da4f27fa60af7beb54e25f0;p=tests.git diff --git a/system/lxc-driver.sh b/system/lxc-driver.sh index 23c8786..cec69fb 100755 --- a/system/lxc-driver.sh +++ b/system/lxc-driver.sh @@ -2,11 +2,15 @@ path=/vservers +#################### work on all containers - only deal with the ones that have a timestamp function sense_all () { virsh -c lxc:/// list 2> /dev/null | grep running | while read line; do pid=$(echo $line | cut -d' ' -f1) lxc_name=$(echo $line | cut -d' ' -f2) - timestamp=$(cat $path/$lxc_name/$lxc_name.timestamp 2> /dev/null) + # ignore regular vservers like testmaster and the like + timestamp_file=$path/$lxc_name/$lxc_name.timestamp + [ -f $timestamp_file ] || continue + timestamp=$(cat $timestamp_file 2> /dev/null) echo "$lxc_name;$pid;$timestamp" done } @@ -14,6 +18,9 @@ function sense_all () { function start_all () { virsh -c lxc:/// list --inactive | grep " - "| while read line; do lxc_name=$(echo $line | cut -d' ' -f2) + # ignore regular vservers like testmaster and the like + timestamp_file=$path/$lxc_name/$lxc_name.timestamp + [ -f $timestamp_file ] || continue virsh -c lxc:/// start $lxc_name done } @@ -21,16 +28,40 @@ function start_all () { function stop_all () { virsh -c lxc:/// list | grep running | while read line; do lxc_name=$(echo $line | cut -d' ' -f2) + # ignore regular vservers like testmaster and the like + timestamp_file=$path/$lxc_name/$lxc_name.timestamp + [ -f $timestamp_file ] || continue virsh -c lxc:/// destroy $lxc_name done } +function destroy_all () { + + stop_all + virsh -c lxc:/// list --all | while read line; do + lxc_name=$(echo $line | cut -d' ' -f2) + # ignore regular vservers like testmaster and the like + timestamp_file=$path/$lxc_name/$lxc_name.timestamp + [ -f $timestamp_file ] || continue + virsh -c lxc:/// undefine $lxc_name + rm -fr $path/$lxc_name + done +} + +function restart_all () { + + stop_all + start_all +} + +#################### deal with one user-specified container function sense_lxc () { lxc_name=$1; shift if [ "$(virsh -c lxc:/// dominfo $lxc_name | grep State| cut -d' ' -f11)" == "running" ] ; then pid=$(virsh -c lxc:/// dominfo $lxc_name| grep Id | cut -d' ' -f14) - timestamp=$(cat $path/$lxc_name/$lxc_name.timestamp) + timestamp_file=$path/$lxc_name/$lxc_name.timestamp + timestamp=$(cat $timestamp_file) echo "$lxc_name;$pid;$timestamp" fi } @@ -51,12 +82,6 @@ function stop_lxc () { fi } -function restart_all () { - - stop_all - start_all -} - function restart_lxc () { lxc_name=$1; shift @@ -64,16 +89,6 @@ function restart_lxc () { start_lxc $lxc_name } -function destroy_all () { - - stop_all - virsh -c lxc:/// list --all | while read line; do - lxc_name=$(echo $line | cut -d' ' -f2) - virsh -c lxc:/// undefine $lxc_name - rm -fr $path/$lxc_name - done -} - function destroy_lxc () { lxc_name=$1; shift @@ -82,13 +97,16 @@ function destroy_lxc () { rm -fr $path/$lxc_name } +#################### +commands="sense_all|start_all|stop_all|restart_all|destroy_all|sense_lxc|start_lxc|stop_lxc|restart_lxc|destroy_lxc" + function usage () { echo "Usage: lxc-driver.sh [options]" echo "Description:" echo " This command is used to manage and retreive information on existing lxc containers " echo "lxc-driver.sh -c _all" echo "lxc-driver.sh -c _lxc -n " - echo " in {sense,start,stop,restart,destroy}" + echo " in {$commands}" } @@ -106,17 +124,8 @@ function main () { case $command in - sense_all) sense_all ;; - start_all) start_all ;; - stop_all) stop_all ;; - restart_all) restart_all ;; - destroy_all) destroy_all ;; - sense_lxc) sense_lxc $lxc;; - start_lxc) start_lxc $lxc;; - stop_lxc) stop_lxc $lxc;; - restart_lxc) restart_lxc $lxc;; - destroy_lxc) destroy_lxc $lxc;; - *) usage + sense_all|start_all|stop_all|restart_all|destroy_all|sense_lxc|start_lxc|stop_lxc|restart_lxc|destroy_lxc) $command ;; + *) usage esac