Gitweb: http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=908fd9215... Commit: 908fd921599b4e494028f3972a71c99c0aed674f Parent: 697f4c0e1b59cefa7768f1947ce18d0813723ec5 Author: Marek 'marx' Grac mgrac@redhat.com AuthorDate: Mon Dec 16 16:09:50 2013 +0100 Committer: Marek 'marx' Grac mgrac@redhat.com CommitterDate: Mon Dec 16 16:09:50 2013 +0100
fence_virsh: Add UUID support for fence_virsh
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"]))
cluster-commits@lists.fedorahosted.org