diff --git a/nova/tests/unit/virt/libvirt/test_driver.py b/nova/tests/unit/virt/libvirt/test_driver.py index fe93672de4b8..d9ee76e204d6 100644 --- a/nova/tests/unit/virt/libvirt/test_driver.py +++ b/nova/tests/unit/virt/libvirt/test_driver.py @@ -16157,6 +16157,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.stubs.Set(host.Host, "get_capabilities", diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 378b210c2c5d..6fadbb9774f4 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -5861,11 +5861,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