Bug 1334162
| Summary: | nova-compute-wait complains about Invalid Nova host name. | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Andrew Beekhof <abeekhof> |
| Component: | fence-agents | Assignee: | Oyvind Albrigtsen <oalbrigt> |
| Status: | CLOSED ERRATA | QA Contact: | Asaf Hirshberg <ahirshbe> |
| Severity: | high | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 7.2 | CC: | abeekhof, agk, cluster-maint, fdinitto, mkrcmari, oalbrigt, oblaut, ushkalim |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | fence-agents-4.0.11-40.el7 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1320783 | Environment: | |
| Last Closed: | 2016-11-04 04:50:04 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
| Bug Depends On: | 1320783 | ||
| Bug Blocks: | |||
|
Comment 4
Oyvind Albrigtsen
2016-07-04 13:52:33 UTC
Andrew, Can you please share reproducing steps? Pulling info from the description: 1. specify host as FQDN in nova.conf (eg. overcloud-controller-0.localdomain) 2. specify hostname of the node in pcs as FQDN (eg. overcloud-controller-0.localdomain) 3. set domain attribute of the remote resource (eg. localdomain) Old agent: complains about invalid nova host name New agent: works Code Verified,
[root@overcloud-controller-0 heat-admin]# rpm -qa |grep fence-agents-com
fence-agents-common-4.0.11-40.el7.x86_64
fence-agents-compute-4.0.11-40.el7.x86_64
[root@overcloud-controller-0 heat-admin]# sed -n '205,284p' /usr/sbin/fence_compute
logging.debug("Waiting for nova to update it's internal state for %s" % options["--plug"])
time.sleep(1)
if not _host_evacuate(options):
sys.exit(1)
return
def fix_domain(options):
domains = {}
last_domain = None
if nova:
# Find it in nova
hypervisors = nova.hypervisors.list()
for hypervisor in hypervisors:
shorthost = hypervisor.hypervisor_hostname.split('.')[0]
if shorthost == hypervisor.hypervisor_hostname:
# Nova is not using FQDN
calculated = ""
else:
# Compute nodes are named as FQDN, strip off the hostname
calculated = hypervisor.hypervisor_hostname.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)
elif options.has_key("--domain") and options["--domain"] == calculated:
# Supplied domain name is valid
return
elif options.has_key("--domain"):
# 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))
last_domain = calculated
if len(domains) == 0 and not options.has_key("--domain"):
logging.error("Could not calculate the domain names used by compute nodes in nova")
elif len(domains) == 1 and not options.has_key("--domain"):
options["--domain"] = last_domain
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"] = last_domain
elif len(domains) > 1:
logging.error("The supplied domain '%s' did not match any used inside nova: %s"
% (options["--domain"], repr(domains)))
sys.exit(1)
def fix_plug_name(options):
if options["--action"] == "list":
return
if not options.has_key("--plug"):
return
fix_domain(options)
short_plug = options["--plug"].split('.')[0]
logging.debug("Checking target '%s' against calculated domain '%s'"% (options["--plug"], calculated))
if not options.has_key("--domain"):
# Nothing supplied and nova not available... what to do... nothing
return
elif options["--domain"] == "":
# Ensure any domain is stripped off since nova isn't using FQDN
options["--plug"] = short_plug
[root@overcloud-controller-0 heat-admin]#
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2373.html |