Fix traits to cpu flags mapping
Following keys like HW_CPU_X86_SVM and HW_CPU_X86_VMX are placed in TRAITS_CPU_MAPPING as part of a tuple instead of being direct keys. This patch will flaten these tuples. Closes-Bug: #2043030 Change-Id: Ia600ceb22c5939117095593b97ed94735c8f953c
This commit is contained in:
parent
8ac050c253
commit
99fe8c93a1
|
@ -710,6 +710,10 @@ sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
|
|||
os_mach_type = libvirt_utils.get_machine_type(image_meta)
|
||||
self.assertEqual('q35', os_mach_type)
|
||||
|
||||
def test_make_reverse_cpu_traits_mapping(self):
|
||||
for k in libvirt_utils.make_reverse_cpu_traits_mapping():
|
||||
self.assertIsInstance(k, str)
|
||||
|
||||
def test_get_flags_by_flavor_specs(self):
|
||||
flavor = objects.Flavor(
|
||||
id=1, flavorid='fakeid-1', name='fake1.small', memory_mb=128,
|
||||
|
@ -718,11 +722,15 @@ sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
|
|||
'trait:%s' % os_traits.HW_CPU_X86_3DNOW: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_X86_SSE2: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_HYPERTHREADING: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_X86_INTEL_VMX: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_X86_VMX: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_X86_SVM: 'required',
|
||||
'trait:%s' % os_traits.HW_CPU_X86_AMD_SVM: 'required',
|
||||
})
|
||||
traits = libvirt_utils.get_flags_by_flavor_specs(flavor)
|
||||
# we shouldn't see the hyperthreading trait since that's a valid trait
|
||||
# but not a CPU flag
|
||||
self.assertEqual(set(['3dnow', 'sse2']), traits)
|
||||
self.assertEqual(set(['3dnow', 'sse2', 'vmx', 'svm']), traits)
|
||||
|
||||
@mock.patch('nova.virt.libvirt.utils.copy_image')
|
||||
@mock.patch('nova.privsep.path.chown')
|
||||
|
|
|
@ -103,8 +103,20 @@ CPU_TRAITS_MAPPING = {
|
|||
'xop': os_traits.HW_CPU_X86_XOP
|
||||
}
|
||||
|
||||
|
||||
def make_reverse_cpu_traits_mapping() -> ty.Dict[str, str]:
|
||||
traits_cpu_mapping = dict()
|
||||
for k, v in CPU_TRAITS_MAPPING.items():
|
||||
if isinstance(v, tuple):
|
||||
for trait in v:
|
||||
traits_cpu_mapping[trait] = k
|
||||
else:
|
||||
traits_cpu_mapping[v] = k
|
||||
return traits_cpu_mapping
|
||||
|
||||
|
||||
# Reverse CPU_TRAITS_MAPPING
|
||||
TRAITS_CPU_MAPPING = {v: k for k, v in CPU_TRAITS_MAPPING.items()}
|
||||
TRAITS_CPU_MAPPING = make_reverse_cpu_traits_mapping()
|
||||
|
||||
# global directory for emulated TPM
|
||||
VTPM_DIR = '/var/lib/libvirt/swtpm/'
|
||||
|
|
Loading…
Reference in New Issue