xenstore isn't even consistent in what happens on error
[invirt/packages/invirt-remote.git] / files / usr / sbin / sipb-xen-vmcontrol
1 #!/bin/sh
2 # sipb-xen-vmcontrol MACHINE ACTION
3 #
4 # remctl should have already verified that the user is authorized to
5 # control the machine.  So, we just need to execute the action requested.
6 #
7 # $0 and $1 come from the trusted remctl source.
8 #
9 # $2 and so on are user-provided, and thus sketchy.  I don't think we
10 # need them for this script.
11
12 ORIGMACHINE="$1"
13 ACTION="$2"
14 MACHINE="d_$ORIGMACHINE"
15
16 case "$ACTION" in
17     list|vcpu-list|uptime)
18         xm "$ACTION" "$MACHINE"
19         ;;
20     destroy|shutdown)
21         xm "$ACTION" "$MACHINE"
22         /usr/sbin/sipb-xen-update-conserver </dev/null >/dev/null 2>&1 &
23         ;;
24     install|create|reboot)
25         ARG="$3"
26         shift; shift; shift; MOREARGS="$*"
27         if [ "$ACTION" = "reboot" ]; then
28             xm destroy "$MACHINE" 2>/dev/null
29         else
30             xm list "$MACHINE" >/dev/null 2>/dev/null && echo "$MACHINE already exists" && exit 1
31         fi
32         if [ "$ACTION" = "install" ]; then
33             xm create sipb-database machine_name="$ORIGMACHINE" installer="$ARG" installer_options="$MOREARGS"
34 #       elif [ "$ACTION" = "copy" ]; then
35 #           sipb-xen-duplicate ...etc...
36         elif [ -n "$ARG" ]; then
37             xm create sipb-database machine_name="$ORIGMACHINE" cdrom_image="$ARG"
38         else
39             xm create sipb-database machine_name="$ORIGMACHINE"
40         fi
41         (sleep 4; /usr/sbin/sipb-xen-update-conserver) </dev/null >/dev/null 2>&1 &
42         ;;
43     list-long)
44         xm list --long "$MACHINE"
45         ;;
46     *)
47         echo "ERROR: Invalid Command"
48         exit 1
49         ;;
50 esac