diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index d6af86e61c..d2cf52febc 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -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', diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 692d88303d..a23b563624 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -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