remove spurrious msgs from stderr
[tests.git] / system / lxc-driver.sh
1 #!/bin/bash
2
3 path=/vservers
4
5 function sense_all () {
6     virsh -c lxc:/// list 2> /dev/null | grep running | while read line; do
7         pid=$(echo $line | cut -d' ' -f1)
8         lxc_name=$(echo $line | cut -d' ' -f2)
9         timestamp=$(cat $path/$lxc_name/$lxc_name.timestamp 2> /dev/null)
10         echo "$lxc_name;$pid;$timestamp" 
11     done  
12 }
13
14 function start_all () {
15     virsh -c lxc:/// list --inactive | grep " - "| while read line; do
16         lxc_name=$(echo $line | cut -d' ' -f2)
17         virsh -c lxc:/// start $lxc_name
18     done    
19 }
20
21 function stop_all () {
22     virsh -c lxc:/// list | grep running | while read line; do
23         lxc_name=$(echo $line | cut -d' ' -f2)
24         virsh -c lxc:/// destroy $lxc_name
25     done   
26 }
27
28 function sense_lxc () {
29
30     lxc_name=$1; shift
31     if [ "$(virsh -c lxc:/// dominfo $lxc_name | grep State| cut -d' ' -f11)" == "running" ] ; then
32        pid=$(virsh -c lxc:/// dominfo $lxc_name| grep Id | cut -d' ' -f14)
33        timestamp=$(cat $path/$lxc_name/$lxc_name.timestamp)
34        echo "$lxc_name;$pid;$timestamp"
35     fi
36 }
37
38 function start_lxc () {
39
40     lxc_name=$1; shift
41     if [ "$(virsh -c lxc:/// dominfo $lxc_name | grep State| cut -d' ' -f11)" != "running" ] ; then
42        virsh -c lxc:/// start $lxc_name
43     fi
44 }
45
46 function stop_lxc () {
47
48     lxc_name=$1; shift
49     if [ "$(virsh -c lxc:/// dominfo $lxc_name | grep State| cut -d' ' -f11)" != "shut off" ] ; then
50        virsh -c lxc:/// destroy $lxc_name
51     fi
52 }
53
54 function restart_all () {
55
56     stop_all 
57     start_all
58 }
59
60 function restart_lxc () {
61
62     lxc_name=$1; shift
63     stop_lxc $lxc_name
64     start_lxc $lxc_name
65 }
66
67 function destroy_all () {
68     
69     stop_all
70     virsh -c lxc:/// list --all | while read line; do
71         lxc_name=$(echo $line | cut -d' ' -f2)
72         virsh -c lxc:/// undefine $lxc_name
73         rm -fr $path/$lxc_name 
74     done
75 }
76
77 function destroy_lxc () {
78
79     lxc_name=$1; shift
80     stop_lxc $lxc_name
81     virsh -c lxc:/// undefine $lxc_name
82     rm -fr $path/$lxc_name
83 }
84
85 function usage () {
86     echo "Usage: lxc-driver.sh [options]"
87     echo "Description:"
88     echo "   This command is used to manage and retreive information on existing lxc containers "
89     echo "lxc-driver.sh -c <COMMAND>_all"
90     echo "lxc-driver.sh -c <COMMAND>_lxc -n <LXCNAME>"
91     echo "<COMMAND> in {sense,start,stop,restart,destroy}"
92
93 }
94
95 function main () {
96
97     #set -x
98
99     while getopts "c:n:" opt ; do
100         case $opt in
101             c) command=$OPTARG;;
102             n) lxc=$OPTARG;;
103             *) usage && exit 1;;
104         esac
105     done
106
107     
108     case $command in
109         sense_all) sense_all ;;
110         start_all) start_all ;;
111          stop_all) stop_all ;;
112       restart_all) restart_all ;;
113       destroy_all) destroy_all ;;
114         sense_lxc) sense_lxc $lxc;;
115         start_lxc) start_lxc $lxc;;
116          stop_lxc) stop_lxc $lxc;;
117       restart_lxc) restart_lxc $lxc;;
118       destroy_lxc) destroy_lxc $lxc;;
119                 *) usage
120     esac
121
122
123 }
124
125 main "$@"
126