- builder: name: ironic-extra-vars builders: - shell: | cat << 'EOF' >> ironic-extra-vars {script} EOF - builder: name: ironic-vars-early builders: - shell: | cat << 'EOF' >> ironic-vars-early {script} EOF - builder: name: ironic-python3 builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_USE_PYTHON3=True - builder: name: ironic-grenade builders: - ironic-vars-early: script: | # Set this early so that we don't have to be as careful with builder ordering in jobs. export GRENADE_PLUGINRC="enable_grenade_plugin ironic https://git.openstack.org/openstack/ironic" - ironic-extra-vars: script: | export PROJECTS="openstack-dev/grenade $PROJECTS" export DEVSTACK_GATE_GRENADE=pullup export DEVSTACK_GATE_OS_TEST_TIMEOUT=2400 export DEVSTACK_GATE_TEMPEST_BAREMETAL_BUILD_TIMEOUT=1200 export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BUILD_DEPLOY_RAMDISK=False" - builder: name: ironic-inspector-grenade builders: - ironic-vars-early: script: | # export not needed for this as used within ironic-inspector-enabled # We disable the devstack plugin because the grenade code in Inspector # enables it and enabling it twice causes errors. IRONIC_INSPECTOR_DISABLE_DEVSTACK_PLUGIN=1 - ironic-extra-vars: script: | export GRENADE_PLUGINRC+=$'\n'"enable_grenade_plugin ironic-inspector https://git.openstack.org/openstack/ironic-inspector" - builder: name: ironic-grenade-multitenant builders: - ironic-extra-vars: script: | export GRENADE_PLUGINRC+=$'\n'"enable_grenade_plugin networking-generic-switch https://git.openstack.org/openstack/networking-generic-switch" - builder: name: ironic-client-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="python-ironicclient,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-lib-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="ironic-lib,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-pygmi-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="pyghmi,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-virtualbmc-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="virtualbmc,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-virtualpdu-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="virtualpdu,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-deploy-with-IPA builders: - ironic-extra-vars: script: | export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER_ISCSI_WITH_IPA=True" # Standardize VM size for each supported ramdisk case "{ramdisk-type}" in 'tinyipa') export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=384" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_RAMDISK_TYPE=tinyipa" ;; 'tinyipa256') export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=256" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_RAMDISK_TYPE=tinyipa" ;; 'coreos') export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=1280" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_RAMDISK_TYPE=coreos" ;; # if using a ramdisk without a known good value, use the devstack # default by not exporting any value for IRONIC_VM_SPECS_RAM esac - builder: name: ironic-ipxe-disabled builders: - ironic-extra-vars: script: | export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_IPXE_ENABLED=False" - builder: name: ironic-tempest-full builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_TEMPEST_FULL=1 - builder: name: ironic-tempest-regex builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_TEMPEST_REGEX="{tempest-regex}" - builder: name: ironic-multitenant builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_OS_TEST_TIMEOUT=2400 # networking-generic-switch requires sudo to execute ovs-vsctl commands export DEVSTACK_GATE_REMOVE_STACK_SUDO=0 export PROJECTS="openstack/networking-generic-switch $PROJECTS" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin networking-generic-switch git://git.openstack.org/openstack/networking-generic-switch" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_USE_LINK_LOCAL=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"OVS_PHYSICAL_BRIDGE=brbm" export DEVSTACK_LOCAL_CONFIG+=$'\n'"PHYSICAL_NETWORK=mynetwork" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_NETWORK_NAME=ironic-provision" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_SUBNET_PREFIX=10.0.5.0/24" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_PROVISION_SUBNET_GATEWAY=10.0.5.1" export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_PLUGIN=ml2" export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_USE_PROVIDERNET_FOR_PUBLIC=False" export DEVSTACK_LOCAL_CONFIG+=$'\n'"ENABLE_TENANT_VLANS=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"Q_ML2_TENANT_NETWORK_TYPE=vlan" export DEVSTACK_LOCAL_CONFIG+=$'\n'"TENANT_VLAN_RANGE=100:150" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_ENABLED_NETWORK_INTERFACES=flat,neutron" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_NETWORK_INTERFACE=neutron" - builder: name: ironic-multinode builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_TOPOLOGY="multinode" - builder: name: ironic-inspector-enabled builders: - ironic-extra-vars: script: | export PROJECTS="openstack/ironic-inspector $PROJECTS" export PROJECTS="openstack/python-ironic-inspector-client $PROJECTS" # grenade enables devstack plugin if [[ -z "$IRONIC_INSPECTOR_DISABLE_DEVSTACK_PLUGIN" ]] ; then export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-inspector git://git.openstack.org/openstack/ironic-inspector" fi # use tempest plugin if [[ "$ZUUL_BRANCH" != "master" ]] ; then # NOTE(jroll) if this isn't a patch against master, then # fetch master to install the plugin export DEVSTACK_LOCAL_CONFIG+=$'\n'"TEMPEST_PLUGINS+=' git+git://git.openstack.org/openstack/ironic-inspector'" else # on master, use the local change, so we can pick up any changes to the plugin export DEVSTACK_LOCAL_CONFIG+=$'\n'"TEMPEST_PLUGINS+=' /opt/stack/new/ironic-inspector'" fi export IRONIC_INSPECTOR_AUTO_DISCOVERY={inspector-auto-discovery} if [ "$IRONIC_INSPECTOR_AUTO_DISCOVERY" == "1" ]; then # discovery test requires sudo for iptables and virsh export DEVSTACK_GATE_REMOVE_STACK_SUDO=0 # enable enroll hook export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_NODE_NOT_FOUND_HOOK=enroll" # we are deleting node from ironic for simulate node discovery, # so inspector has to sync cache asap export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_CLEAN_UP_PERIOD=5" fi # Make IPXE configuration consistent between Mitaka and Master export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_IPXE_ENABLED=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_RAMDISK_ELEMENT=ironic-agent" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_MANAGE_FIREWALL=True" - builder: name: ironic-inspector-client-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="python-ironic-inspector-client,$DEVSTACK_PROJECT_FROM_GIT" - builder: name: ironic-postgres-enabled builders: - ironic-extra-vars: script: | export DEVSTACK_GATE_POSTGRES=1 - builder: name: ironic-tempest-plugin builders: - ironic-vars-early: script: | # use tempest plugin if [[ "$ZUUL_BRANCH" != "master" ]] ; then # NOTE(jroll) if this isn't a patch against master, then # fetch master to install the plugin export DEVSTACK_LOCAL_CONFIG+=$'\n'"TEMPEST_PLUGINS+=' git+git://git.openstack.org/openstack/ironic'" else # on master, use the local change, so we can pick up any changes to the plugin export DEVSTACK_LOCAL_CONFIG+=$'\n'"TEMPEST_PLUGINS+=' /opt/stack/new/ironic'" fi export TEMPEST_CONCURRENCY={concurrency} - builder: name: ironic-resource-classes builders: - ironic-extra-vars: script: | export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_USE_RESOURCE_CLASSES=True" - builder: # NOTE(adam_g): This is a temporary macro until we can define the Ironic d-s-g job in a # standard, minimal fashion. name: devstack-virtual-ironic builders: - shell: | #!/bin/bash -xe export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-lib $PROJECTS" export PROJECTS="openstack/ironic-python-agent $PROJECTS" export PROJECTS="openstack/python-ironicclient $PROJECTS" export PROJECTS="openstack/pyghmi $PROJECTS" export PROJECTS="openstack/virtualbmc $PROJECTS" export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=1 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_CONFIGDRIVE=1 export DEVSTACK_GATE_IRONIC_DRIVER={deploy_driver} export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi if [ "{deploy_driver}" == "pxe_snmp" ] ; then # explicitly enable pxe_snmp driver export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_ENABLED_DRIVERS=fake,pxe_snmp" fi if [ "{deploy_driver}" == "redfish" ] ; then # When deploying with redfish we need to enable the "redfish" # hardware type export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_ENABLED_HARDWARE_TYPES=redfish" fi if [ "{image-type}" == "wholedisk" ] ; then export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_TEMPEST_WHOLE_DISK_IMAGE=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_EPHEMERAL_DISK=0" else export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_TEMPEST_WHOLE_DISK_IMAGE=False" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_EPHEMERAL_DISK=1" fi if [ -n "{build-ramdisk}" ] ; then export DEVSTACK_GATE_IRONIC_BUILD_RAMDISK=1 export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_BUILD_RAMDISK=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"USE_SUBNETPOOL=False" else export DEVSTACK_GATE_IRONIC_BUILD_RAMDISK=0 export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_BUILD_RAMDISK=False" fi if [ "{boot-mode}" == "uefi" ] ; then export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BOOT_MODE=uefi" fi export DEVSTACK_PROJECT_FROM_GIT="" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_COUNT={bm-vm-count}" # Ensure the ironic-vars-EARLY file exists touch ironic-vars-early # Pull in the EARLY variables injected by the optional builders source ironic-vars-early # devstack plugin didn't exist until mitaka export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic git://git.openstack.org/openstack/ironic" # Ensure the ironic-EXTRA-vars file exists touch ironic-extra-vars # Pull in the EXTRA variables injected by the optional builders source ironic-extra-vars cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh - builder: name: ironic-staging-drivers-enabled builders: - ironic-extra-vars: script: | export PROJECTS="openstack/ironic-staging-drivers $PROJECTS" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-staging-drivers git://git.openstack.org/openstack/ironic-staging-drivers" - builder: name: ironic-staging-test-driver builders: - ironic-extra-vars: script: | export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_STAGING_DRIVER={staging-driver}" - builder: name: ironic-sushy-from-source builders: - ironic-extra-vars: script: | export DEVSTACK_PROJECT_FROM_GIT="sushy,$DEVSTACK_PROJECT_FROM_GIT" - job-template: name: '{pipeline}-ironic-dsvm-functional-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=1 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export TEMPEST_CONCURRENCY=2 export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1 export DEVSTACK_GATE_TEMPEST_REGEX='ironic' export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-python-agent $PROJECTS" export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" # No post_test_hook is needed while tests live in tempest cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-ironicclient-dsvm-functional-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=0 export DEVSTACK_PROJECT_FROM_GIT=python-ironicclient export OVERRIDE_ENABLED_SERVICES=key,mysql,rabbit,ir-api,ir-cond export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export PROJECTS="openstack/ironic $PROJECTS" export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER=fake" # neutron isn't enabled here export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_ENABLED_NETWORK_INTERFACES=noop" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DHCP_PROVIDER=none" function post_test_hook {{ # Configure and run functional tests $BASE/new/python-ironicclient/ironicclient/tests/functional/hooks/post_test_hook.sh }} export -f post_test_hook cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-ironic-inspector-dsvm-{ramdisk}-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=0 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_CONFIGDRIVE=1 export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export PROJECTS="openstack/ironic openstack/ironic-inspector $PROJECTS" export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-inspector https://git.openstack.org/openstack/ironic-inspector" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_AUTOMATED_CLEAN_ENABLED=False" if [ "{ramdisk}" != "dib" ] ; then export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER_ISCSI_WITH_IPA=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_RAMDISK_ELEMENT=ironic-agent" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BUILD_DEPLOY_RAMDISK=False" # IPA requires at least 1 GiB of RAM export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=1024"$'\n'"IRONIC_VM_COUNT=1" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_IPXE_ENABLED=True" if [ "{ramdisk}" == "ipa-src" ] ; then export PROJECTS="openstack/ironic-python-agent $PROJECTS" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_BUILD_RAMDISK=True" fi fi function post_test_hook {{ source $BASE/new/devstack/openrc admin admin cd /opt/stack/new/ironic-inspector sudo -E -u stack ./devstack/exercise.sh }} export -f post_test_hook cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-ironic-inspector-dsvm-discovery-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=0 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_CONFIGDRIVE=1 export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export PROJECTS="openstack/ironic openstack/ironic-inspector $PROJECTS" export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-inspector https://git.openstack.org/openstack/ironic-inspector" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_AUTOMATED_CLEAN_ENABLED=False" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER_ISCSI_WITH_IPA=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_RAMDISK_ELEMENT=ironic-agent" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BUILD_DEPLOY_RAMDISK=False" # IPA requires at least 1 GiB of RAM export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=1024"$'\n'"IRONIC_VM_COUNT=1" # enable enroll hook export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_NODE_NOT_FOUND_HOOK=enroll" # discovery_exercise.sh requires iptables and virsh direct access export DEVSTACK_GATE_REMOVE_STACK_SUDO=0 function post_test_hook {{ source $BASE/new/devstack/openrc admin admin cd /opt/stack/new/ironic-inspector sudo -E -u stack ./devstack/discovery_exercise.sh }} export -f post_test_hook cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-python-ironic-inspector-client-dsvm-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=0 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_CONFIGDRIVE=1 export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi # DEVSTACK_PROJECT_FROM_GIT adds to PROJECTS, so no need to add python-ironic-inspector-client below export DEVSTACK_PROJECT_FROM_GIT="python-ironic-inspector-client" export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-inspector $PROJECTS" export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-inspector https://git.openstack.org/openstack/ironic-inspector" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_AUTOMATED_CLEAN_ENABLED=False" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER_ISCSI_WITH_IPA=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_INSPECTOR_RAMDISK_ELEMENT=ironic-agent" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BUILD_DEPLOY_RAMDISK=False" # IPA requires at least 1 GiB of RAM export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_SPECS_RAM=1024"$'\n'"IRONIC_VM_COUNT=1" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_IPXE_ENABLED=True" function post_test_hook {{ source $BASE/new/devstack/openrc admin admin cd /opt/stack/new/ironic-inspector sudo -E -u stack ./devstack/exercise.sh }} export -f post_test_hook cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-ironic-staging-drivers-dsvm-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PYTHONUNBUFFERED=true export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export BRANCH_OVERRIDE={branch-override} export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-staging-drivers $PROJECTS" if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"enable_plugin ironic-staging-drivers git://git.openstack.org/openstack/ironic-staging-drivers" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_BUILD_DEPLOY_RAMDISK=False" # No post_test_hook is needed while tests live in tempest cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-pxe_ssh-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-ipxe-disabled - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: 'yes' deploy_driver: pxe_ssh image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-{image-type}-{boot-mode}-{driver}-{ramdisk-type}{src}-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: '{ramdisk-type}' - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '{src}' deploy_driver: '{driver}' image-type: '{image-type}' boot-mode: '{boot-mode}' branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-partition-pxe_ipmitool-tinyipa-python3-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - ironic-python3 - local_conf: conf: | [[local|localrc]] disable_service s-account disable_service s-container disable_service s-object disable_service s-proxy - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ipmitool image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-partition-redfish-tinyipa-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: 'redfish' image-type: 'partition' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-partition-redfish-sushy-src-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-sushy-from-source - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: 'redfish' image-type: 'partition' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-resourceclasses-partition-pxe_ipmitool-tinyipa{src}-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-resource-classes - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '{src}' deploy_driver: 'pxe_ipmitool' image-type: 'partition' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 2 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-lib-{image-type}-{driver}-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 75 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-lib-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: 'yes' deploy_driver: '{driver}' image-type: '{image-type}' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-ipa-{image-type}-{driver}-{ramdisk-type}{src}-multinode-{node-release}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: '{ramdisk-type}' - ironic-multinode - ironic-multitenant - ironic-tempest-plugin: concurrency: 4 - devstack-virtual-ironic: build-ramdisk: '{src}' deploy_driver: '{driver}' image-type: '{image-type}' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 7 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-grenade-dsvm-ironic-multinode-multitenant-{node-release}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-grenade - ironic-grenade-multitenant - ironic-multinode - ironic-multitenant - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-plugin: concurrency: 4 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: 'agent_ipmitool' image-type: 'wholedisk' boot-mode: 'bios' branch-override: '{branch-override}' bm-vm-count: 7 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-pxe_ipa-full-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 160 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-full - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ssh image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 7 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-{driver}-postgres-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-postgres-enabled - ironic-ipxe-disabled - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: '{driver}' image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-parallel-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - shell: | #!/bin/bash -xe export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-lib $PROJECTS" export PROJECTS="openstack/ironic-python-agent $PROJECTS" export PROJECTS="openstack/python-ironicclient $PROJECTS" export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=1 # NOTE(deva): tempest-lib support was added in Mitaka # but this job doesn't run on stable branches, so we can keep it simple here export DEVSTACK_GATE_TEMPEST_ALL_PLUGINS=1 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_CONFIGDRIVE=1 export TEMPEST_CONCURRENCY=2 export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi # Run only baremetal tests export DEVSTACK_GATE_TEMPEST_REGEX='ironic' cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-pxe_ipmitool-pyghmi-src-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'coreos' - ironic-tempest-regex: tempest-regex: ironic - ironic-pygmi-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ipmitool image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-pxe_ipmitool-virtualbmc-src-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-virtualbmc-from-source - ironic-pygmi-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ipmitool image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-pxe_snmp-virtualpdu-src-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-virtualpdu-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_snmp image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-python-ironicclient-src-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: ironic - ironic-client-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ssh image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-multitenant-network-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: baremetal_multitenancy - ironic-multitenant - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: agent_ssh image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 3 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-inspector{src}-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: InspectorBasicTest - ironic-inspector-enabled: inspector-auto-discovery: 0 - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '{src}' deploy_driver: agent_ipmitool image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-python-ironic-inspector-client-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: InspectorSmokeTest - ironic-inspector-enabled: inspector-auto-discovery: 0 - ironic-inspector-client-from-source - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: agent_ipmitool image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-tempest-dsvm-ironic-inspector-discovery-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-regex: tempest-regex: InspectorDiscoveryTest - ironic-inspector-enabled: inspector-auto-discovery: 1 - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: agent_ipmitool image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-grenade-dsvm-ironic-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-grenade - ironic-tempest-plugin: concurrency: 1 - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ssh image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 7 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-grenade-dsvm-ironic-inspector-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - print-template-name: template-name: "{template-name}" - link-logs - net-info - devstack-checkout - ironic-grenade - ironic-inspector-grenade - ironic-deploy-with-IPA: ramdisk-type: 'tinyipa' - ironic-tempest-plugin: concurrency: 1 - ironic-inspector-enabled - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: pxe_ssh image-type: partition boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 7 publishers: - devstack-logs - console-log - job-template: name: '{pipeline}-ironic-dsvm-standalone-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 180 - timestamps builders: - link-logs - net-info - devstack-checkout - ironic-tempest-plugin: concurrency: 4 - ironic-tempest-regex: tempest-regex: ironic_standalone - shell: | #!/bin/bash -xe export PROJECTS="openstack/ironic $PROJECTS" export PROJECTS="openstack/ironic-lib $PROJECTS" export PROJECTS="openstack/ironic-python-agent $PROJECTS" export PROJECTS="openstack/python-ironicclient $PROJECTS" export PYTHONUNBUFFERED=true export DEVSTACK_GATE_TEMPEST=1 export DEVSTACK_GATE_IRONIC=1 export DEVSTACK_GATE_NEUTRON=1 export DEVSTACK_GATE_IRONIC_BUILD_RAMDISK=0 export DEVSTACK_GATE_VIRT_DRIVER=ironic export DEVSTACK_GATE_IRONIC_DRIVER=agent_ipmitool export OVERRIDE_ENABLED_SERVICES="g-api,g-reg,q-agt,q-dhcp,q-l3,q-svc,key,mysql,rabbit,ir-api,ir-cond,s-account,s-container,s-object,s-proxy,tempest" export BRANCH_OVERRIDE={branch-override} if [ "$BRANCH_OVERRIDE" != "default" ] ; then export OVERRIDE_ZUUL_BRANCH=$BRANCH_OVERRIDE fi export DEVSTACK_LOCAL_CONFIG="enable_plugin ironic git://git.openstack.org/openstack/ironic" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_VM_COUNT=6" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_DEPLOY_DRIVER=agent_ipmitool" export DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_ENABLE_TEMPURLS=True" export DEVSTACK_LOCAL_CONFIG+=$'\n'"SWIFT_TEMPURL_KEY=secretkey" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_ENABLED_DRIVERS=fake,agent_ipmitool,pxe_ipmitool" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_AUTOMATED_CLEAN_ENABLED=False" export DEVSTACK_LOCAL_CONFIG+=$'\n'"IRONIC_USE_MOD_WSGI=True" # Ensure the ironic-vars-EARLY file exists touch ironic-vars-early # Pull in the EARLY variables injected by the optional builders source ironic-vars-early # Ensure the ironic-EXTRA-vars file exists touch ironic-extra-vars # Pull in the EXTRA variables injected by the optional builders source ironic-extra-vars cp devstack-gate/devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh ./safe-devstack-vm-gate-wrap.sh publishers: - devstack-logs - console-log # NOTE(pas-ha) explanation for variables choices: # - devstack plugin of ironic-staging-drivers will be able to # switch over nodes to ansible-deploy-enabled driver only # from agent_ipmitool to pxe_ipmitool_ansible driver. # - Ansible-deploy driver does not support netboot, # so testing wholedisk images only # - Partition images with localboot are supported but deploy does not # work with default cirros image as those do not have grub(2) installed # - Only tinyipa-based ramdisks are supported to be rebuilt for compatibility # with ansible-deploy driver - job-template: name: '{pipeline}-tempest-dsvm-ironic-staging-drivers-ansible-wholedisk-{node}{suffix}' node: '{node}' wrappers: - build-timeout: timeout: 80 - timestamps builders: - link-logs - net-info - devstack-checkout - ironic-deploy-with-IPA: ramdisk-type: tinyipa - ironic-staging-drivers-enabled - ironic-staging-test-driver: staging-driver: pxe_ipmitool_ansible - ironic-tempest-regex: tempest-regex: ironic - ironic-tempest-plugin: concurrency: 1 - devstack-virtual-ironic: build-ramdisk: '' deploy_driver: agent_ipmitool image-type: wholedisk boot-mode: bios branch-override: '{branch-override}' bm-vm-count: 1 publishers: - devstack-logs - console-log