summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorEd Leafe <ed@leafe.com>2011-08-02 18:23:58 +0000
committerEd Leafe <ed@leafe.com>2011-08-02 18:23:58 +0000
commit2dce2d54d14eed79ac3080e5f9ff6b715d5fc5c1 (patch)
treef2197ebe8cb10f615b84be042030d9346e20fc91 /plugins
parent85795ff1f8b6a0ff3de634828208d6debd91692f (diff)
parent07d89c29389fe8f2b9f3a398ab99566d151e8e92 (diff)
downloadnova-2dce2d54d14eed79ac3080e5f9ff6b715d5fc5c1.tar.gz
nova-2dce2d54d14eed79ac3080e5f9ff6b715d5fc5c1.tar.xz
nova-2dce2d54d14eed79ac3080e5f9ff6b715d5fc5c1.zip
Added the powerstate changes to the plugin.
Diffstat (limited to 'plugins')
-rwxr-xr-xplugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost29
1 files changed, 24 insertions, 5 deletions
diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost b/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost
index 5a5122b4a..c29d57717 100755
--- a/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost
+++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost
@@ -105,10 +105,20 @@ def set_host_enabled(self, arg_dict):
def _powerstate(state):
host_uuid = _get_host_uuid()
- cmd = "xe host-disable uuid=%(host_uuid)s" % locals()
- _run_command(cmd)
- cmd = "xe host-%(state)s uuid=%(host_uuid)s" % locals()
- _run_command(cmd)
+ # Host must be disabled first
+ result = _run_command("xe host-disable")
+ if result:
+ raise pluginlib.PluginError(result)
+ # All running VMs must be shutdown
+ result = _run_command("xe vm-shutdown --multiple power-state=running")
+ if result:
+ raise pluginlib.PluginError(result)
+ cmds = {"reboot": "xe host-reboot", "startup": "xe host-power-on",
+ "shutdown": "xe host-shutdown"}
+ result = _run_command(cmds[state])
+ # Should be empty string
+ if result:
+ raise pluginlib.PluginError(result)
return {"powerstate": state}
@@ -125,6 +135,14 @@ def host_shutdown(self, arg_dict):
@jsonify
+def host_start(self, arg_dict):
+ """Starts the host. NOTE: Currently not feasible, since the host
+ runs on the same machine as Xen.
+ """
+ return _powerstate("startup")
+
+
+@jsonify
def host_data(self, arg_dict):
"""Runs the commands on the xenstore host to return the current status
information.
@@ -240,4 +258,5 @@ if __name__ == "__main__":
{"host_data": host_data,
"set_host_enabled": set_host_enabled,
"host_shutdown": host_shutdown,
- "host_reboot": host_reboot})
+ "host_reboot": host_reboot,
+ "host_start": host_start})