Adds Pick guest CPU architecture based on host arch in libvirt driver support

Implement new image meta property that allows for the selection of the
correct QEMU binary, cpu architecture, and machine type for a guest
architecture that is different than the host architecture; An x86_64
guest running on an AArch64 host, and vice versa.

Specifically the required OS traits have been added to ensure that the
hw_architecture and hw_emulation_architecture fields recieve the
correct allowed values.

exapnded hw_architecture os_traits to match all specified in nova object
fields.

Depends-On: https://review.opendev.org/c/openstack/nova-specs/+/824044
Implements: blueprint pick-guest-arch-based-on-host-arch-in-libvirt-driver
Closes-Bug: 1863728
Signed-off-by: Jonathan Race <jrace@augusta.edu>
Change-Id: I891cd43b2b97b3774ff923e3487a153a5ba237ef
This commit is contained in:
Jonathan Race 2022-01-10 14:07:46 -05:00
parent ff96dcc647
commit fce0902443
2 changed files with 78 additions and 0 deletions

25
os_traits/compute/arch.py Normal file
View File

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
TRAITS = [
# traits corresponding to the allowed values of "hw_emulaton_architecture"
# image metadata property
# https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L120-228
'AARCH64',
'PPC64LE',
'MIPSEL',
'S390X',
'RISCV64',
'X86_64',
]

53
os_traits/hw/arch.py Normal file
View File

@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
TRAITS = [
# traits corresponding to the allowed values of "hw_architecture"
# image metadata property
# https://github.com/openstack/nova/blob/1f74441/nova/objects/fields.py#L120-228
'ALPHA',
'ARMV6',
'ARMV7',
'ARMV7B',
'AARCH64',
'CRIS',
'I686',
'IA64',
'LM32',
'M68K',
'MICROBLAZE',
'MICROBLAZEEL',
'MIPS',
'MIPSEL',
'MIPS64',
'MIPS64EL',
'OPENRISC',
'PARISC',
'PARISC64',
'PPC',
'PPCLE',
'PPC64',
'PPC64LE',
'PPCEMB',
'S390',
'S390X',
'SH4',
'SH4EB',
'SPARC',
'SPARC64',
'UNICORE32',
'X86_64',
'XTENSA',
'XTENSAEB',
]