CI: Changes to support Anaconda CI jobs
Introduces additional job configuration to enable automated integration testing via tempest of the anaconda deployment interface. Also, configures a private subnet with DNS, which is required by anaconda executing, in order to facilitate processing of URLs. Change-Id: I61b5205cf2c9f83dfcabf4314247c76fb6a56acd
This commit is contained in:
parent
e75626392b
commit
d8fc96fd1f
@ -1332,6 +1332,17 @@ function configure_ironic_networks {
|
|||||||
configure_ironic_cleaning_network
|
configure_ironic_cleaning_network
|
||||||
echo_summary "Configuring Ironic rescue network"
|
echo_summary "Configuring Ironic rescue network"
|
||||||
configure_ironic_rescue_network
|
configure_ironic_rescue_network
|
||||||
|
echo_summary "Configuring Neutron Private Subnet, if needed."
|
||||||
|
configure_ironic_private_subnet
|
||||||
|
}
|
||||||
|
|
||||||
|
function configure_ironic_private_subnet {
|
||||||
|
if [[ "${IRONIC_ANACONDA_IMAGE_REF:-}" != "" ]]; then
|
||||||
|
# NOTE(TheJulia): Anaconda needs DNS for FQDN resolution
|
||||||
|
# and devstack doesn't create this network with dns.
|
||||||
|
subnet_id=$(openstack --os-cloud $OS_CLOUD subnet show private-subnet -f value -c id)
|
||||||
|
openstack --os-cloud $OS_CLOUD subnet set --dns-nameserver 8.8.8.8 $subnet_id
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_ironic_cleaning_network {
|
function configure_ironic_cleaning_network {
|
||||||
@ -1405,7 +1416,8 @@ function configure_ironic_provision_network {
|
|||||||
${net_segment_id:+--network-segment $net_segment_id} \
|
${net_segment_id:+--network-segment $net_segment_id} \
|
||||||
$IRONIC_PROVISION_PROVIDER_SUBNET_NAME \
|
$IRONIC_PROVISION_PROVIDER_SUBNET_NAME \
|
||||||
--gateway $IRONIC_PROVISION_SUBNET_GATEWAY --network $net_id \
|
--gateway $IRONIC_PROVISION_SUBNET_GATEWAY --network $net_id \
|
||||||
--subnet-range $IRONIC_PROVISION_SUBNET_PREFIX -f value -c id)"
|
--subnet-range $IRONIC_PROVISION_SUBNET_PREFIX \
|
||||||
|
--dns-nameserver 8.8.8.8 -f value -c id)"
|
||||||
else
|
else
|
||||||
# NOTE(TheJulia): Consider changing this to stateful to support UEFI once we move
|
# NOTE(TheJulia): Consider changing this to stateful to support UEFI once we move
|
||||||
# CI to Ubuntu Jammy as it will support v6 and v4 UEFI firmware driven boot ops.
|
# CI to Ubuntu Jammy as it will support v6 and v4 UEFI firmware driven boot ops.
|
||||||
@ -3057,6 +3069,16 @@ function upload_baremetal_ironic_deploy {
|
|||||||
iniset $IRONIC_CONF_FILE conductor deploy_ramdisk $IRONIC_DEPLOY_RAMDISK_ID
|
iniset $IRONIC_CONF_FILE conductor deploy_ramdisk $IRONIC_DEPLOY_RAMDISK_ID
|
||||||
iniset $IRONIC_CONF_FILE conductor rescue_kernel $IRONIC_DEPLOY_KERNEL_ID
|
iniset $IRONIC_CONF_FILE conductor rescue_kernel $IRONIC_DEPLOY_KERNEL_ID
|
||||||
iniset $IRONIC_CONF_FILE conductor rescue_ramdisk $IRONIC_DEPLOY_RAMDISK_ID
|
iniset $IRONIC_CONF_FILE conductor rescue_ramdisk $IRONIC_DEPLOY_RAMDISK_ID
|
||||||
|
|
||||||
|
if [[ "${IRONIC_ANACONDA_INSECURE_HEARTBEAT:-}" != "" ]]; then
|
||||||
|
iniset $IRONIC_CONF_FILE anaconda insecure_heartbeat ${IRONIC_ANACONDA_INSECURE_HEARTBEAT:-}
|
||||||
|
fi
|
||||||
|
# NOTE(TheJulia): Compared to an image deploy, anaconda is relatively
|
||||||
|
# slow as it installs packages one at a time. As such, we need an option
|
||||||
|
# to extend.
|
||||||
|
if [[ "${IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT:-}" != "" ]]; then
|
||||||
|
iniset $IRONIC_CONF_FILE conductor deploy_callback_timeout ${IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT:-}
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepare_baremetal_basic_ops {
|
function prepare_baremetal_basic_ops {
|
||||||
@ -3221,6 +3243,23 @@ function ironic_configure_tempest {
|
|||||||
if [[ "$IRONIC_RAMDISK_IMAGE" != "" ]]; then
|
if [[ "$IRONIC_RAMDISK_IMAGE" != "" ]]; then
|
||||||
iniset $TEMPEST_CONFIG baremetal ramdisk_iso_image_ref "$IRONIC_RAMDISK_IMAGE"
|
iniset $TEMPEST_CONFIG baremetal ramdisk_iso_image_ref "$IRONIC_RAMDISK_IMAGE"
|
||||||
fi
|
fi
|
||||||
|
if [[ "${IRONIC_ANACONDA_IMAGE_REF:-}" != "" ]]; then
|
||||||
|
# In a perfect world we would use *just* the opendev repo
|
||||||
|
# mirror, and let things be magical, but OpenDev Infra cannot
|
||||||
|
# mirror the /images path with the limited storage space.
|
||||||
|
iniset $TEMPEST_CONFIG baremetal anaconda_image_ref ${IRONIC_ANACONDA_IMAGE_REF:-}
|
||||||
|
fi
|
||||||
|
if [[ "${IRONIC_ANACONDA_KERNEL_REF:-}" != "" ]]; then
|
||||||
|
iniset $TEMPEST_CONFIG baremetal anaconda_kernel_ref ${IRONIC_ANACONDA_KERNEL_REF:-}
|
||||||
|
fi
|
||||||
|
if [[ "${IRONIC_ANACONDA_RAMDISK_REF:-}" != "" ]]; then
|
||||||
|
iniset $TEMPEST_CONFIG baremetal anaconda_initial_ramdisk_ref ${IRONIC_ANACONDA_RAMDISK_REF:-}
|
||||||
|
fi
|
||||||
|
if [[ "${IRONIC_ANACONDA_STAGE2_REF:-}" != "" ]]; then
|
||||||
|
iniset $TEMPEST_CONFIG baremetal anaconda_stage2_ramdisk_ref ${IRONIC_ANACONDA_STAGE2_REF:-}
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
# NOTE(dtantsur): keep this option here until the defaults change in
|
# NOTE(dtantsur): keep this option here until the defaults change in
|
||||||
# ironic-tempest-plugin to disable classic drivers testing.
|
# ironic-tempest-plugin to disable classic drivers testing.
|
||||||
iniset $TEMPEST_CONFIG baremetal enabled_drivers ""
|
iniset $TEMPEST_CONFIG baremetal enabled_drivers ""
|
||||||
|
@ -216,6 +216,48 @@
|
|||||||
s-object: False
|
s-object: False
|
||||||
s-proxy: False
|
s-proxy: False
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: ironic-standalone-anaconda
|
||||||
|
parent: ironic-standalone-redfish
|
||||||
|
description:
|
||||||
|
Test ironic with the anaconda deployment interface.
|
||||||
|
Test also uses Redfish.
|
||||||
|
required-projects:
|
||||||
|
- opendev.org/openstack/sushy-tools
|
||||||
|
irrelevant-files:
|
||||||
|
- ^.*\.rst$
|
||||||
|
- ^api-ref/.*$
|
||||||
|
- ^doc/.*$
|
||||||
|
- ^install-guide/.*$
|
||||||
|
- ^ironic/locale/.*$
|
||||||
|
- ^ironic/tests/.*$
|
||||||
|
- ^releasenotes/.*$
|
||||||
|
- ^setup.cfg$
|
||||||
|
- ^test-requirements.txt$
|
||||||
|
- ^tools/.*$
|
||||||
|
- ^tox.ini$
|
||||||
|
vars:
|
||||||
|
tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance
|
||||||
|
tempest_test_timeout: 4800
|
||||||
|
tempest_concurrency: 2
|
||||||
|
devstack_localrc:
|
||||||
|
IRONIC_ENABLED_DEPLOY_INTERFACES: "anaconda"
|
||||||
|
IRONIC_VM_COUNT: 2
|
||||||
|
IRONIC_VM_VOLUME_COUNT: 1
|
||||||
|
IRONIC_VM_SPECS_RAM: 3192
|
||||||
|
IRONIC_VM_SPECS_CPU: 3
|
||||||
|
IRONIC_ENFORCE_SCOPE: True
|
||||||
|
# We're using a lot of disk space in this job. Some testing nodes have
|
||||||
|
# a small root partition, so use /opt which is mounted from a bigger
|
||||||
|
# ephemeral partition on such nodes
|
||||||
|
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
||||||
|
IRONIC_ANACONDA_IMAGE_REF: http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/
|
||||||
|
IRONIC_ANACONDA_KERNEL_REF: http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/images/pxeboot/vmlinuz
|
||||||
|
IRONIC_ANACONDA_RAMDISK_REF: http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/images/pxeboot/initrd.img
|
||||||
|
IRONIC_ANACONDA_INSECURE_HEARTBEAT: True
|
||||||
|
IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT: 3600
|
||||||
|
IRONIC_PXE_BOOT_RETRY_TIMEOUT: 3600
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: ironic-tempest-bios-redfish-pxe
|
name: ironic-tempest-bios-redfish-pxe
|
||||||
description: "Deploy ironic node over PXE using BIOS boot mode"
|
description: "Deploy ironic node over PXE using BIOS boot mode"
|
||||||
|
@ -45,6 +45,8 @@
|
|||||||
voting: false
|
voting: false
|
||||||
- ironic-tempest-ipxe-ipv6:
|
- ironic-tempest-ipxe-ipv6:
|
||||||
voting: false
|
voting: false
|
||||||
|
- ironic-standalone-anaconda:
|
||||||
|
voting: false
|
||||||
- ironic-inspector-tempest-rbac-scope-enforced:
|
- ironic-inspector-tempest-rbac-scope-enforced:
|
||||||
voting: false
|
voting: false
|
||||||
- bifrost-integration-tinyipa-ubuntu-focal:
|
- bifrost-integration-tinyipa-ubuntu-focal:
|
||||||
|
Loading…
Reference in New Issue
Block a user