diff --git a/SOURCES/bz1214359-5-fence_compute.patch b/SOURCES/bz1214359-5-fence_compute.patch new file mode 100644 index 0000000..b12fdf4 --- /dev/null +++ b/SOURCES/bz1214359-5-fence_compute.patch @@ -0,0 +1,77 @@ +From a1f988fa0f3f89f8dac17717295c4219a02757cf Mon Sep 17 00:00:00 2001 +From: "Fabio M. Di Nitto" +Date: Sat, 20 Jun 2015 07:45:08 +0200 +Subject: [PATCH 1/3] fence_compute: add support for recording fencing + operations in attrd + +This is required to support multiple compute nodes failure at once +with controller node failures happening at the same time. + +Signed-off-by: Fabio M. Di Nitto +--- + fence/agents/compute/fence_compute.py | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) + +diff --git a/fence/agents/compute/fence_compute.py b/fence/agents/compute/fence_compute.py +index 000aef7..d8a1e95 100644 +--- a/fence/agents/compute/fence_compute.py ++++ b/fence/agents/compute/fence_compute.py +@@ -71,6 +71,10 @@ def _host_evacuate(host, on_shared_storage): + for server in hyper.servers: + response.append(_server_evacuate(server, on_shared_storage)) + ++def set_attrd_status(host, status, options): ++ logging.debug("Setting fencing status for %s to %s" % (host, status)) ++ run_command(options, "attrd_updater -p -n evacute -Q -N %s -v %s" % (host, status)) ++ + def set_power_status(_, options): + global override_status + +@@ -159,6 +163,15 @@ def define_new_opts(): + "default" : "", + "order": 5, + } ++ all_opt["record-only"] = { ++ "getopt" : "", ++ "longopt" : "record-only", ++ "help" : "--record-only Record the target as needing evacuation but as yet do not intiate it", ++ "required" : "0", ++ "shortdesc" : "Only record the target as needing evacuation", ++ "default" : "False", ++ "order": 5, ++ } + all_opt["no-shared-storage"] = { + "getopt" : "", + "longopt" : "no-shared-storage", +@@ -175,7 +188,8 @@ def main(): + atexit.register(atexit_handler) + + device_opt = ["login", "passwd", "tenant-name", "auth-url", +- "no_login", "no_password", "port", "domain", "no-shared-storage", "endpoint-type"] ++ "no_login", "no_password", "port", "domain", "no-shared-storage", "endpoint-type", ++ "record-only"] + define_new_opts() + all_opt["shell_timeout"]["default"] = "180" + +@@ -199,6 +213,18 @@ def main(): + if options["--action"] != "list" and options["--domain"] != "" and options.has_key("--plug"): + options["--plug"] = options["--plug"] + "." + options["--domain"] + ++ if options["--record-only"] != "False": ++ if options["--action"] == "on": ++ set_attrd_status(options["--plug"], "no", options) ++ sys.exit(0) ++ ++ elif options["--action"] in ["off", "reboot"]: ++ set_attrd_status(options["--plug"], "yes", options) ++ sys.exit(0) ++ ++ elif options["--action"] in ["status", "monitor"]: ++ sys.exit(0) ++ + # The first argument is the Nova client version + nova = nova_client.Client('2', + options["--username"], +-- +1.9.3 + diff --git a/SOURCES/bz1214359-6-fence_compute.patch b/SOURCES/bz1214359-6-fence_compute.patch new file mode 100644 index 0000000..ed1c851 --- /dev/null +++ b/SOURCES/bz1214359-6-fence_compute.patch @@ -0,0 +1,48 @@ +From a703fba575b965c843ec527621fdd5009425be35 Mon Sep 17 00:00:00 2001 +From: "Fabio M. Di Nitto" +Date: Sat, 20 Jun 2015 11:43:09 +0200 +Subject: [PATCH 2/3] fence_compute: resync with master and drop unnecessary + workaround + +Signed-off-by: Fabio M. Di Nitto +--- + fence/agents/compute/fence_compute.py | 23 ----------------------- + 1 file changed, 23 deletions(-) + +diff --git a/fence/agents/compute/fence_compute.py b/fence/agents/compute/fence_compute.py +index d8a1e95..82d9c46 100644 +--- a/fence/agents/compute/fence_compute.py ++++ b/fence/agents/compute/fence_compute.py +@@ -233,29 +233,6 @@ def main(): + options["--auth-url"], + endpoint_type=options["--endpoint-type"]) + +- if options["--action"] in ["on", "off", "reboot" ]: +- try: +- nova.services.list(host=options["--plug"]) +- except ConnectionError as (err): +- # Yes, exit(0) +- # +- # Its possible that the control plane on which this +- # agent depends is not functional +- # +- # In this situation, fencing is waiting for resource +- # recovery and resource recovery is waiting for +- # fencing. +- # +- # To break the cycle, we all the fencing agent to +- # return 'done' immediately so that we can recover the +- # control plane. We then rely on the NovaCompute RA +- # to call this agent directly once the control plane +- # is up. +- # +- # Yes its horrible, but still better than nova itself. +- logging.warning("Nova connection failed: %s " % str(err)) +- sys.exit(0) +- + if options["--action"] in ["off", "reboot"]: + # Pretend we're 'on' so that the fencing library will always call set_power_status(off) + override_status = "on" +-- +1.9.3 + diff --git a/SPECS/fence-agents.spec b/SPECS/fence-agents.spec index 7517d0b..ae630c5 100644 --- a/SPECS/fence-agents.spec +++ b/SPECS/fence-agents.spec @@ -16,7 +16,7 @@ Name: fence-agents Summary: Fence Agents for Red Hat Cluster Version: 4.0.11 -Release: 13%{?alphatag:.%{alphatag}}%{?dist} +Release: 13%{?alphatag:.%{alphatag}}%{?dist}.1 License: GPLv2+ and LGPLv2+ Group: System Environment/Base URL: http://sourceware.org/cluster/wiki/ @@ -47,6 +47,8 @@ Patch22: bz1214359-1-fence_compute.patch Patch23: bz1214359-2-fence_compute.patch Patch24: bz1214359-3-fence_compute.patch Patch25: bz1214359-4-fence_compute.patch +Patch26: bz1214359-5-fence_compute.patch +Patch27: bz1214359-6-fence_compute.patch %if 0%{?rhel} %global supportedagents apc apc_snmp bladecenter brocade cisco_mds cisco_ucs compute drac5 eaton_snmp eps hpblade ibmblade ifmib ilo ilo_mp ilo_ssh intelmodular ipdu ipmilan kdump rhevm rsb scsi vmware_soap wti @@ -98,6 +100,8 @@ BuildRequires: autoconf automake libtool %patch23 -p1 -b .bz1214359-2 %patch24 -p1 -b .bz1214359-3 %patch25 -p1 -b .bz1214359-4 +%patch26 -p1 -b .bz1214359-5 +%patch27 -p1 -b .bz1214359-6 %build ./autogen.sh @@ -625,6 +629,10 @@ The fence-agents-zvm package contains a fence agent for z/VM hypervisors %endif %changelog +* Wed Jul 15 2015 Marek Grac - 4.0.11-13.1 +- fence_compute: add support for recoding fencing operations in attrd + Resolves: rhbz#1243505 + * Mon Jun 08 2015 Marek Grac - 4.0.11-13 - New fence agent fence_compute Resolves: rhbz#1228599