[Cluster-devel] [PATCH] fence_virsh: Add UUID support for fence_virsh
Marek 'marx' Grac
mgrac at redhat.com
Mon Dec 16 15:10:13 UTC 2013
UUID support for fence_virsh (libvirt) was added. The only function which has to be rewritted was
get_power_status as currently, there is no easy way how to print (name, uuid and state) via virsh.
This patch is based on one proposed by Bogdan Dobrelya for RHEL6.
---
fence/agents/virsh/fence_virsh.py | 26 +++++++++++++++-----------
1 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/fence/agents/virsh/fence_virsh.py b/fence/agents/virsh/fence_virsh.py
index ac8dc7b..1ec5310 100644
--- a/fence/agents/virsh/fence_virsh.py
+++ b/fence/agents/virsh/fence_virsh.py
@@ -15,6 +15,9 @@ REDHAT_COPYRIGHT=""
BUILD_DATE=""
#END_VERSION_GENERATION
+def get_name_or_uuid(options):
+ return options["--uuid"] if options.has_key("--uuid") else options["--plug"]
+
def get_outlets_status(conn, options):
if options.has_key("--use-sudo"):
prefix = SUDO_PATH + " "
@@ -40,20 +43,21 @@ def get_outlets_status(conn, options):
return result
def get_power_status(conn, options):
- outlets = get_outlets_status(conn, options)
+ prefix = SUDO_PATH + " " if options.has_key("--use-sudo") else ""
+ conn.sendline(prefix + "virsh domstate %s" % (get_name_or_uuid(options)))
+ conn.log_expect(options, options["--command-prompt"], int(options["--shell-timeout"]))
- if (not (options["--plug"] in outlets)):
- fail_usage("Failed: You have to enter existing name of virtual machine!")
- else:
- return outlets[options["--plug"]][1]
+ for line in conn.before.splitlines():
+ if line.strip() in ["running", "blocked", "idle", "no state", "paused"]:
+ return "on"
+ if "error:" in line.strip():
+ fail_usage("Failed: You have to enter existing name/UUID of virtual machine!")
-def set_power_status(conn, options):
- if options.has_key("--use-sudo"):
- prefix = SUDO_PATH + " "
- else:
- prefix = ""
+ return "off"
- conn.sendline(prefix + "virsh %s "%(options["--action"] == "on" and "start" or "destroy")+options["--plug"])
+def set_power_status(conn, options):
+ prefix = SUDO_PATH + " " if options.has_key("--use-sudo") else ""
+ conn.sendline(prefix + "virsh %s "%(options["--action"] == "on" and "start" or "destroy") + get_name_or_uuid(options))
conn.log_expect(options, options["--command-prompt"], int(options["--power-timeout"]))
time.sleep(int(options["--power-wait"]))
--
1.7.7.6
More information about the Cluster-devel
mailing list