From c5761f6544675ba854eaa998787780e32025dec4 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Fri, 8 Feb 2019 19:23:58 +0000 Subject: [PATCH] Convert CPU_TRAITS_MAPPING to use os_traits Now that os_traits provides symbols for each trait, we can refer to traits by symbol rather than by string. This gives us compile-time checking for free, in order to ensure that nova's use of traits lines up with what os_traits provides. Change-Id: Id1461c444f0f67b29e0a6a10181267ef1d1d8bc0 --- nova/virt/libvirt/utils.py | 65 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index 258edd0b89..7cec166fee 100644 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -22,6 +22,7 @@ import errno import os import re +import os_traits from oslo_concurrency import processutils from oslo_log import log as logging from oslo_utils import fileutils @@ -46,38 +47,38 @@ RESIZE_SNAPSHOT_NAME = 'nova-resize' # Mapping used to convert libvirt cpu features to traits, for more details, see # https://github.com/libvirt/libvirt/blob/master/src/cpu/cpu_map.xml. CPU_TRAITS_MAPPING = { - '3dnow': 'HW_CPU_X86_3DNOW', - 'abm': 'HW_CPU_X86_ABM', - 'aes': 'HW_CPU_X86_AESNI', - 'avx': 'HW_CPU_X86_AVX', - 'avx2': 'HW_CPU_X86_AVX2', - 'avx512bw': 'HW_CPU_X86_AVX512BW', - 'avx512cd': 'HW_CPU_X86_AVX512CD', - 'avx512dq': 'HW_CPU_X86_AVX512DQ', - 'avx512er': 'HW_CPU_X86_AVX512ER', - 'avx512f': 'HW_CPU_X86_AVX512F', - 'avx512pf': 'HW_CPU_X86_AVX512PF', - 'avx512vl': 'HW_CPU_X86_AVX512VL', - 'bmi1': 'HW_CPU_X86_BMI', - 'bmi2': 'HW_CPU_X86_BMI2', - 'pclmuldq': 'HW_CPU_X86_CLMUL', - 'f16c': 'HW_CPU_X86_F16C', - 'fma': 'HW_CPU_X86_FMA3', - 'fma4': 'HW_CPU_X86_FMA4', - 'mmx': 'HW_CPU_X86_MMX', - 'mpx': 'HW_CPU_X86_MPX', - 'sha-ni': 'HW_CPU_X86_SHA', - 'sse': 'HW_CPU_X86_SSE', - 'sse2': 'HW_CPU_X86_SSE2', - 'sse3': 'HW_CPU_X86_SSE3', - 'sse4.1': 'HW_CPU_X86_SSE41', - 'sse4.2': 'HW_CPU_X86_SSE42', - 'sse4a': 'HW_CPU_X86_SSE4A', - 'ssse3': 'HW_CPU_X86_SSSE3', - 'svm': 'HW_CPU_X86_SVM', - 'tbm': 'HW_CPU_X86_TBM', - 'vmx': 'HW_CPU_X86_VMX', - 'xop': 'HW_CPU_X86_XOP' + '3dnow': os_traits.HW_CPU_X86_3DNOW, + 'abm': os_traits.HW_CPU_X86_ABM, + 'aes': os_traits.HW_CPU_X86_AESNI, + 'avx': os_traits.HW_CPU_X86_AVX, + 'avx2': os_traits.HW_CPU_X86_AVX2, + 'avx512bw': os_traits.HW_CPU_X86_AVX512BW, + 'avx512cd': os_traits.HW_CPU_X86_AVX512CD, + 'avx512dq': os_traits.HW_CPU_X86_AVX512DQ, + 'avx512er': os_traits.HW_CPU_X86_AVX512ER, + 'avx512f': os_traits.HW_CPU_X86_AVX512F, + 'avx512pf': os_traits.HW_CPU_X86_AVX512PF, + 'avx512vl': os_traits.HW_CPU_X86_AVX512VL, + 'bmi1': os_traits.HW_CPU_X86_BMI, + 'bmi2': os_traits.HW_CPU_X86_BMI2, + 'pclmuldq': os_traits.HW_CPU_X86_CLMUL, + 'f16c': os_traits.HW_CPU_X86_F16C, + 'fma': os_traits.HW_CPU_X86_FMA3, + 'fma4': os_traits.HW_CPU_X86_FMA4, + 'mmx': os_traits.HW_CPU_X86_MMX, + 'mpx': os_traits.HW_CPU_X86_MPX, + 'sha-ni': os_traits.HW_CPU_X86_SHA, + 'sse': os_traits.HW_CPU_X86_SSE, + 'sse2': os_traits.HW_CPU_X86_SSE2, + 'sse3': os_traits.HW_CPU_X86_SSE3, + 'sse4.1': os_traits.HW_CPU_X86_SSE41, + 'sse4.2': os_traits.HW_CPU_X86_SSE42, + 'sse4a': os_traits.HW_CPU_X86_SSE4A, + 'ssse3': os_traits.HW_CPU_X86_SSSE3, + 'svm': os_traits.HW_CPU_X86_SVM, + 'tbm': os_traits.HW_CPU_X86_TBM, + 'vmx': os_traits.HW_CPU_X86_VMX, + 'xop': os_traits.HW_CPU_X86_XOP }