Merge "Advanced vmedia deployment test ops"
This commit is contained in:
@@ -212,6 +212,12 @@ if [[ "$hostdomain" =~ "rax" ]] || [[ "$hostdomain" =~ "iweb" ]]; then
|
||||
# we should make a helper method...
|
||||
fi
|
||||
|
||||
# DO NOT MODIFY/SET
|
||||
# NOTE(TheJulia): These settings are for virtual media based testing, and
|
||||
# the need to send traffic *back* to the host. The subnet ID is dynamic,
|
||||
# the IP needs to be within the floating IP range.
|
||||
PUBLIC_SUBNET_ID=""
|
||||
PUBLIC_SUBNET_IP="172.24.5.250"
|
||||
|
||||
# Oslo Policy enforcement for Scope and new policy enforcement.
|
||||
IRONIC_ENFORCE_SCOPE=$(trueorfalse True IRONIC_ENFORCE_SCOPE)
|
||||
@@ -348,6 +354,10 @@ fi
|
||||
IRONIC_DIB_RAMDISK_OS=${IRONIC_DIB_RAMDISK_OS:-centos9}
|
||||
IRONIC_DIB_RAMDISK_RELEASE=${IRONIC_DIB_RAMDISK_RELEASE:-}
|
||||
|
||||
# OS for building images in CI
|
||||
IRONIC_DIB_OS=${IRONIC_DIB_RAMDISK_OS:-centos9}
|
||||
IRONIC_DIB_RELEASE=${IRONIC_DIB_RAMDISK_RELEASE:-}
|
||||
|
||||
# Configure URLs required to download ramdisk if we're not building it, and
|
||||
# IRONIC_DEPLOY_RAMDISK/KERNEL or the RAMDISK/KERNEL_URLs have not been
|
||||
# preconfigured.
|
||||
@@ -2561,6 +2571,13 @@ SUBSHELL
|
||||
# Route back to our test subnet. Static should be safe for a while.
|
||||
sudo ip -6 route add fd00::/8 via $IPV6_ROUTER_GW_IP
|
||||
fi
|
||||
|
||||
# NOTE(TheJulia): Getting the subnet_id might need additional logic
|
||||
# behind it, should also just generally work.
|
||||
PUBLIC_SUBNET_ID=$(openstack router show $Q_ROUTER_NAME -c external_gateway_info -f json | jq -r .external_gateway_info.external_fixed_ips[0].subnet_id)
|
||||
# Add a route for dhcp-less return path traffic
|
||||
sudo ip route add 10.0.6.0/24 via $PUBLIC_SUBNET_IP
|
||||
|
||||
if [[ "${IRONIC_NETWORK_SIMULATOR:-ovs}" != "ovs" ]]; then
|
||||
create_network_simulator
|
||||
fi
|
||||
@@ -3849,6 +3866,7 @@ function build_ipa_dib_ramdisk {
|
||||
fi
|
||||
git_clone $IRONIC_PYTHON_AGENT_BUILDER_REPO $IRONIC_PYTHON_AGENT_BUILDER_DIR $IRONIC_PYTHON_AGENT_BUILDER_BRANCH
|
||||
ELEMENTS_PATH="$IRONIC_PYTHON_AGENT_BUILDER_DIR/dib" \
|
||||
DIB_CLOUD_INIT_DATASOURCES="ConfigDrive,openstack" \
|
||||
DIB_DHCP_TIMEOUT=$IRONIC_DIB_DHCP_TIMEOUT \
|
||||
DIB_RELEASE=$IRONIC_DIB_RAMDISK_RELEASE \
|
||||
DIB_REPOLOCATION_ironic_python_agent="$IRONIC_PYTHON_AGENT_DIR" \
|
||||
@@ -3869,6 +3887,45 @@ function build_ipa_dib_ramdisk {
|
||||
rm -rf $tempdir
|
||||
}
|
||||
|
||||
function build_wholedisk_image {
|
||||
local img_path=$1
|
||||
local tempdir
|
||||
tempdir=$(mktemp -d --tmpdir=${DEST})
|
||||
|
||||
# install diskimage-builder if not present
|
||||
if ! $(type -P disk-image-create > /dev/null); then
|
||||
install_diskimage_builder
|
||||
fi
|
||||
|
||||
echo "Building wholedisk DIB image options: $IRONIC_DIB_OPTIONS block-device-efi bootloader"
|
||||
# Build a bootable UEFI image iniit tooling .
|
||||
DIB_DHCP_TIMEOUT=$IRONIC_DIB_DHCP_TIMEOUT \
|
||||
DIB_RELEASE=$IRONIC_DIB_RELEASE \
|
||||
DIB_SIMPLE_INIT_NO_DHCP_FALLBACK=1 \
|
||||
DIB_CLOUD_INIT_DATASOURCES="ConfigDrive,openstack" \
|
||||
disk-image-create "$IRONIC_DIB_OPTIONS" block-device-efi bootloader \
|
||||
-x -o "$tempdir/wholedisk"
|
||||
chmod -R +r $tempdir
|
||||
mv "$tempdir/wholedisk.qcow2" "$img_path"
|
||||
rm -rf $tempdir
|
||||
}
|
||||
|
||||
function upload_baremetal_ironic_wholedisk {
|
||||
disk_img=$1
|
||||
disk_img_name=$2
|
||||
|
||||
if [[ "$HOST_TOPOLOGY_ROLE" != "subnode" ]]; then
|
||||
echo_summary "Uploading baremetal images for ironic"
|
||||
wholedisk_image_id=$(openstack --os-cloud devstack-admin \
|
||||
image create \
|
||||
$(basename $disk_img_name) \
|
||||
--public --disk-format=qcow2 \
|
||||
--container-format=bare \
|
||||
--file $(readlink -f "$disk_img") -f value -c id)
|
||||
die_if_not_set $LINENO wholedisk_image_id "Failed to load wholedisk image into glance"
|
||||
fi
|
||||
}
|
||||
|
||||
function build_dib_image {
|
||||
local target_path=$1
|
||||
local tempdir
|
||||
@@ -4096,10 +4153,17 @@ function prepare_baremetal_basic_ops {
|
||||
if [[ "$IRONIC_BAREMETAL_BASIC_OPS" != "True" ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ "${IRONIC_BUILD_WHOLEDISK:-False}" == "True" ]]; then
|
||||
local dib_file_path
|
||||
dib_file_path=$FILES/ironic-wholedisk-image.qcow2
|
||||
build_wholedisk_image $dib_file_path
|
||||
echo "WARNING: Overriding supplied IRONIC_WHOLEDISK_IMAGE_NAME as we have built an image as requested."
|
||||
IRONIC_WHOLEDISK_IMAGE_NAME="ironic-wholedisk-image.qcow2"
|
||||
upload_baremetal_ironic_wholedisk $dib_file_path $IRONIC_WHOLEDISK_IMAGE_NAME
|
||||
fi
|
||||
if ! is_service_enabled nova && is_http_server_required; then
|
||||
local image_file_path
|
||||
if [[ ${IRONIC_WHOLEDISK_IMAGE_NAME} =~ \.img$ ]]; then
|
||||
if [[ ${IRONIC_WHOLEDISK_IMAGE_NAME} =~ \.img$ ]] || [ -f $FILES/${IRONIC_WHOLEDISK_IMAGE_NAME} ]; then
|
||||
image_file_path=$FILES/${IRONIC_WHOLEDISK_IMAGE_NAME}
|
||||
else
|
||||
image_file_path=$FILES/${IRONIC_WHOLEDISK_IMAGE_NAME}.img
|
||||
@@ -4307,6 +4371,10 @@ function ironic_configure_tempest {
|
||||
iniset $TEMPEST_CONFIG baremetal inspect_timeout $IRONIC_TEMPEST_BUILD_TIMEOUT
|
||||
fi
|
||||
|
||||
# Set networking parameters for dhcp-less vmedia testing
|
||||
iniset $TEMPEST_CONFIG baremetal public_subnet_id $PUBLIC_SUBNET_ID
|
||||
iniset $TEMPEST_CONFIG baremetal public_subnet_ip $PUBLIC_SUBNET_IP
|
||||
|
||||
if [[ $IRONIC_VM_VOLUME_COUNT -gt 1 ]]; then
|
||||
iniset $TEMPEST_CONFIG baremetal_feature_enabled software_raid True
|
||||
iniset $TEMPEST_CONFIG baremetal_feature_enabled deploy_time_raid True
|
||||
|
@@ -474,8 +474,8 @@
|
||||
# result and makes this job VERY sensitive to heavy disk IO of the
|
||||
# underlying hypervisor/cloud.
|
||||
IRONIC_CALLBACK_TIMEOUT: 800
|
||||
IRONIC_GRUB2_SHIM_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/EFI/BOOT/BOOTX64.EFI
|
||||
IRONIC_GRUB2_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/EFI/BOOT/grubx64.efi
|
||||
IRONIC_GRUB2_SHIM_FILE: "https://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/BOOTX64.EFI"
|
||||
IRONIC_GRUB2_FILE: "https://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/grubx64.efi"
|
||||
IRONIC_GRUB2_CONFIG_PATH: EFI/BOOT/grub.cfg
|
||||
IRONIC_REDFISH_EMULATOR_FEATURE_SET: vmedia
|
||||
devstack_services:
|
||||
@@ -1103,7 +1103,7 @@
|
||||
TENANT_VLAN_RANGE: 100:150
|
||||
IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron
|
||||
IRONIC_NETWORK_INTERFACE: neutron
|
||||
IRONIC_DEFAILT_RESCUE_INTERFACE: no-rescue
|
||||
IRONIC_DEFAULT_RESCUE_INTERFACE: no-rescue
|
||||
IRONIC_USE_LINK_LOCAL: True
|
||||
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
|
||||
IRONIC_VM_EPHEMERAL_DISK: 0
|
||||
@@ -1184,6 +1184,102 @@
|
||||
IRONIC_TEMPEST_BUILD_TIMEOUT: 2000
|
||||
IRONIC_PING_TIMEOUT: 1440
|
||||
|
||||
- job:
|
||||
name: ironic-tempest-standalone-advanced
|
||||
description: ironic-tempest-standalone-advanced test cases
|
||||
parent: ironic-base
|
||||
required-projects:
|
||||
- opendev.org/openstack/diskimage-builder
|
||||
- opendev.org/openstack/networking-generic-switch
|
||||
- opendev.org/openstack/ironic-python-agent-builder
|
||||
vars:
|
||||
tempest_test_timeout: 2800
|
||||
devstack_services:
|
||||
# NOTE(TheJulia): We could likely change this over to OVN,
|
||||
# but it really doesn't matter. We're using vmedia here.
|
||||
q-agt: True
|
||||
q-dhcp: True
|
||||
q-l3: True
|
||||
q-meta: False
|
||||
q-metering: False
|
||||
q-svc: True
|
||||
swift: True
|
||||
s-account: True
|
||||
s-container: True
|
||||
s-object: True
|
||||
s-proxy: True
|
||||
n-api: False
|
||||
n-api-meta: False
|
||||
n-cauth: False
|
||||
n-cond: False
|
||||
n-cpu: False
|
||||
n-novnc: False
|
||||
n-obj: False
|
||||
n-sch: False
|
||||
nova: False
|
||||
placement-api: False
|
||||
devstack_plugins:
|
||||
ironic: https://opendev.org/openstack/ironic
|
||||
networking-generic-switch: https://opendev.org/openstack/networking-generic-switch
|
||||
# NOTE(TheJulia): Nova default behavior is to rely upon stack defaults, v6 needs to
|
||||
# be explicit. This is the best place to wire it in.
|
||||
tempest_test_regex: ironic_standalone.test_advanced_ops
|
||||
devstack_localrc:
|
||||
IRONIC_RAMDISK_TYPE: dib
|
||||
# known working path
|
||||
# The options below are known working, and leverage simple-init element
|
||||
# (glean) to perform initial configuration. Ironic's dib element
|
||||
# removes cloud-init, and upon re-install it just doesn't work for
|
||||
# unknown reasons.
|
||||
IRONIC_DIB_RAMDISK_OPTIONS: centos simple-init
|
||||
IRONIC_DIB_OPTIONS: centos simple-init
|
||||
IRONIC_BUILD_DEPLOY_RAMDISK: True
|
||||
IRONIC_BUILD_WHOLEDISK: True
|
||||
IRONIC_DIB_RAMDISK_OS: centos9
|
||||
IRONIC_DIB_OS: centos9
|
||||
IRONIC_DIB_RAMDISK_RELEASE: 9-stream
|
||||
IRONIC_DIB_RELEASE: 9-stream
|
||||
IRONIC_DEPLOY_DRIVER: redfish
|
||||
IRONIC_ENABLED_HARDWARE_TYPES: redfish
|
||||
IRONIC_ENABLED_POWER_INTERFACES: redfish
|
||||
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
|
||||
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
||||
IRONIC_ENABLED_BOOT_INTERFACES: redfish-virtual-media
|
||||
SWIFT_ENABLE_TEMPURLS: False
|
||||
IRONIC_CALLBACK_TIMEOUT: 800
|
||||
IRONIC_GRUB2_SHIM_FILE: "https://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/BOOTX64.EFI"
|
||||
IRONIC_GRUB2_FILE: "https://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/grubx64.efi"
|
||||
IRONIC_GRUB2_CONFIG_PATH: EFI/BOOT/grub.cfg
|
||||
IRONIC_PROVISION_NETWORK_NAME: ironic-provision
|
||||
# Cache the image locally so we convert it to raw,
|
||||
# allowing it to be streamed. Otherwise the ramdisk
|
||||
# will run out of RAM.
|
||||
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: local
|
||||
OVS_PHYSICAL_BRIDGE: brbm
|
||||
PHYSICAL_NETWORK: mynetwork
|
||||
TENANT_VLAN_RANGE: 100:150
|
||||
IRONIC_ENABLED_NETWORK_INTERFACES: neutron
|
||||
IRONIC_NETWORK_INTERFACE: neutron
|
||||
IRONIC_DEFAULT_RESCUE_INTERFACE: no-rescue
|
||||
IRONIC_USE_LINK_LOCAL: True
|
||||
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
|
||||
IRONIC_VM_EPHEMERAL_DISK: 0
|
||||
IRONIC_VM_INTERFACE_COUNT: 1
|
||||
# This will swap and needs to get to tinycore soon.
|
||||
IRONIC_VM_SPECS_CPU: 2
|
||||
IRONIC_VM_SPECS_DISK: 8
|
||||
Q_PLUGIN: ml2
|
||||
ENABLE_TENANT_VLANS: True
|
||||
Q_ML2_TENANT_NETWORK_TYPE: vlan
|
||||
OVS_BRIDGE_MAPPINGS: "public:br-ex,mynetwork:brbm"
|
||||
USE_PROVIDER_NETWORKING: True
|
||||
PUBLIC_PHYSICAL_NETWORK: public
|
||||
PUBLIC_PROVIDERNET_TYPE: flat
|
||||
Q_USE_PROVIDERNET_FOR_PUBLIC: True
|
||||
BUILD_TIMEOUT: 2000
|
||||
IRONIC_TEMPEST_BUILD_TIMEOUT: 2000
|
||||
IRONIC_PING_TIMEOUT: 1440
|
||||
|
||||
# NOTE(rpittau): OLD TINYIPA JOBS
|
||||
# Those jobs are used by other projects, we leave them here until
|
||||
# we can convert them to dib.
|
||||
|
@@ -17,6 +17,8 @@
|
||||
- ironic-tempest-functional-python3
|
||||
- ironic-standalone-redfish:
|
||||
voting: false
|
||||
- ironic-tempest-standalone-advanced:
|
||||
voting: false
|
||||
- ironic-tempest-bios-redfish-pxe
|
||||
- ironic-tempest-uefi-redfish-vmedia
|
||||
- ironic-tempest-ramdisk-bios-snmp-pxe
|
||||
|
Reference in New Issue
Block a user