Merge "libvirt: Correctly handle non-CPU flag traits"

This commit is contained in:
Zuul 2019-09-21 03:40:40 +00:00 committed by Gerrit Code Review
commit 1ec87c227c
2 changed files with 17 additions and 1 deletions

View File

@ -19,6 +19,7 @@ import tempfile
import ddt
import mock
import os_traits
from oslo_concurrency import processutils
from oslo_config import cfg
from oslo_utils import fileutils
@ -1000,3 +1001,17 @@ 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_get_flags_by_flavor_specs(self):
flavor = objects.Flavor(
id=1, flavorid='fakeid-1', name='fake1.small', memory_mb=128,
vcpus=1, root_gb=1, ephemeral_gb=0, swap=0, rxtx_factor=0,
deleted=False, extra_specs={
'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',
})
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)

View File

@ -597,6 +597,7 @@ def get_flags_by_flavor_specs(flavor):
resource_request = scheduler_utils.ResourceRequest(req_spec)
required_traits = resource_request.all_required_traits
flags = [TRAITS_CPU_MAPPING.get(trait) for trait in required_traits]
flags = [TRAITS_CPU_MAPPING[trait] for trait in required_traits
if trait in TRAITS_CPU_MAPPING]
return set(flags)