Merge invirt-remote-host and invirt-remote-server into invirt-remote
[invirt/packages/invirt-remote.git] / host / usr / sbin / invirt-vmcontrol
diff --git a/host/usr/sbin/invirt-vmcontrol b/host/usr/sbin/invirt-vmcontrol
new file mode 100755 (executable)
index 0000000..70bff12
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+# invirt-vmcontrol MACHINE ACTION
+#
+# remctl should have already verified that the user is authorized to
+# control the machine.  So, we just need to execute the action requested.
+#
+# $0 and $1 come from the trusted remctl source.
+#
+# $2 and so on are user-provided, and thus sketchy.
+
+ORIGMACHINE="$1"
+ACTION="$2"
+MACHINE="d_$ORIGMACHINE"
+
+case "$ACTION" in
+    list|vcpu-list|uptime)
+        xm "$ACTION" "$MACHINE"
+       ;;
+    destroy|shutdown|reboot)
+       xm "$ACTION" "$MACHINE"
+       /usr/sbin/invirt-update-conserver </dev/null >/dev/null 2>&1 &
+       ;;
+    install|create)
+       shift; shift;
+       xm list "$MACHINE" >/dev/null 2>/dev/null && echo "$MACHINE already exists" && exit 1
+       if [ "$ACTION" = "install" ]; then
+           xm create invirt-database machine_name="$ORIGMACHINE" installer_options="$(printf '%q ' "$@")"
+       elif [ -n "$1" ]; then
+           xm create invirt-database machine_name="$ORIGMACHINE" cdrom_image="$1"
+       else
+           xm create invirt-database machine_name="$ORIGMACHINE"
+       fi
+       (sleep 4; /usr/sbin/invirt-update-conserver) </dev/null >/dev/null 2>&1 &
+       ;;
+    list-long)
+       xm list --long "$MACHINE"
+       ;;
+    vnctoken)
+        invirt-vnc-authtoken "$ORIGMACHINE"
+        ;;
+    *)
+        echo "ERROR: Invalid Command"
+        exit 34
+        ;;
+esac