Merge "Avoid crashing while getting libvirt capabilities with unknown arch names"

This commit is contained in:
Zuul 2019-03-15 13:13:56 +00:00 committed by Gerrit Code Review
commit c8f7246343
2 changed files with 19 additions and 5 deletions

View File

@ -16075,6 +16075,14 @@ class LibvirtConnTestCase(test.NoDBTestCase,
guest.domtype = ['kvm']
caps.guests.append(guest)
# Include one that is not known to nova to make sure it
# does not trip us up.
guest = vconfig.LibvirtConfigGuest()
guest.ostype = 'hvm'
guest.arch = 'itanic'
guest.domtype = ['kvm']
caps.guests.append(guest)
return caps
self.stub_out('nova.virt.libvirt.host.Host.get_capabilities',

View File

@ -5939,11 +5939,17 @@ class LibvirtDriver(driver.ComputeDriver):
for dt in g.domtype:
if dt != CONF.libvirt.virt_type:
continue
instance_cap = (
fields.Architecture.canonicalize(g.arch),
fields.HVType.canonicalize(dt),
fields.VMMode.canonicalize(g.ostype))
instance_caps.append(instance_cap)
try:
instance_cap = (
fields.Architecture.canonicalize(g.arch),
fields.HVType.canonicalize(dt),
fields.VMMode.canonicalize(g.ostype))
instance_caps.append(instance_cap)
except exception.InvalidArchitectureName:
# NOTE(danms): Libvirt is exposing a guest arch that nova
# does not even know about. Avoid aborting here and
# continue to process the rest.
pass
return instance_caps