fence-agents/0004-fence_compute-Don-t-list-hypervisors-but-nova-comput.patch
Kristoffer Gronlund db0d731e53 - Update to version 4.0.24:
* Improve obtaining status on Cisco UCS devices
  * Fix issues with symlink installations
  * Fix documentation for fence_scsi and fence_mpath

OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/fence-agents?expand=0&rev=54
2016-08-26 13:59:46 +00:00

85 lines
3.1 KiB
Diff

From 610f1aea848e05ae3fc085975aee8fc36a41d4af Mon Sep 17 00:00:00 2001
From: Vincent Untz <vuntz@suse.com>
Date: Thu, 4 Feb 2016 09:59:43 +0100
Subject: [PATCH 4/9] fence_compute: Don't list hypervisors but nova-compute
services
Everything we do (evacuate, force_down) is on nova-compute services, so
there's no reason to list hypervisors; just directly look for
nova-compute services.
This matters as hypervisors are always FQDN, while nova service hosts
can be short hostnames.
---
fence/agents/compute/fence_compute.py | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/fence/agents/compute/fence_compute.py b/fence/agents/compute/fence_compute.py
index 074b78f..994aeb2 100644
--- a/fence/agents/compute/fence_compute.py
+++ b/fence/agents/compute/fence_compute.py
@@ -218,23 +218,23 @@ def fix_domain(options):
if nova:
# Find it in nova
- hypervisors = nova.hypervisors.list()
- for hypervisor in hypervisors:
- shorthost = hypervisor.hypervisor_hostname.split('.')[0]
+ services = nova.services.list(binary="nova-compute")
+ for service in services:
+ shorthost = service.host.split('.')[0]
- if shorthost == hypervisor.hypervisor_hostname:
+ if shorthost == service.host:
# Nova is not using FQDN
calculated = ""
else:
# Compute nodes are named as FQDN, strip off the hostname
- calculated = hypervisor.hypervisor_hostname.replace(shorthost+".", "")
+ calculated = service.host.replace(shorthost+".", "")
domains[calculated] = shorthost
if calculated == last_domain:
# Avoid complaining for each compute node with the same name
# One hopes they don't appear interleaved as A.com B.com A.com B.com
- logging.debug("Calculated the same domain from: %s" % hypervisor.hypervisor_hostname)
+ logging.debug("Calculated the same domain from: %s" % service.host)
elif "--domain" in options and options["--domain"] == calculated:
# Supplied domain name is valid
@@ -243,7 +243,7 @@ def fix_domain(options):
elif "--domain" in options:
# Warn in case nova isn't available at some point
logging.warning("Supplied domain '%s' does not match the one calculated from: %s"
- % (options["--domain"], hypervisor.hypervisor_hostname))
+ % (options["--domain"], service.host))
last_domain = calculated
@@ -256,7 +256,7 @@ def fix_domain(options):
elif len(domains) == 1:
logging.error("Overriding supplied domain '%s' does not match the one calculated from: %s"
- % (options["--domain"], hypervisor.hypervisor_hostname))
+ % (options["--domain"], service.host))
options["--domain"] = last_domain
return options["--domain"]
@@ -298,9 +298,9 @@ def get_plugs_list(_, options):
result = {}
if nova:
- hypervisors = nova.hypervisors.list()
- for hypervisor in hypervisors:
- longhost = hypervisor.hypervisor_hostname
+ services = nova.services.list(binary="nova-compute")
+ for service in services:
+ longhost = service.host
shorthost = longhost.split('.')[0]
result[longhost] = ("", None)
result[shorthost] = ("", None)
--
2.9.0