- job:
    name: ironic-base
    description: Base job for devstack/tempest based ironic jobs.
    parent: devstack-tempest
    nodeset: openstack-single-node-bionic
    timeout: 10800
    required-projects:
      - openstack/ironic
      - openstack/ironic-python-agent
      - openstack/ironic-tempest-plugin
      - openstack/pyghmi
      - openstack/virtualbmc
    irrelevant-files:
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^doc/.*$
      - ^driver-requirements.txt$
      - ^install-guide/.*$
      - ^ironic/locale/.*$
      - ^ironic/tests/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tools/.*$
      - ^tox.ini$
    vars:
      tox_envlist: all
      tempest_test_regex: ironic_tempest_plugin.tests.scenario
      tempest_concurrency: 1
      devstack_localrc:
        DEFAULT_INSTANCE_TYPE: baremetal
        FORCE_CONFIG_DRIVE: True
        INSTALL_TEMPEST: False # Don't install a tempest package globaly
        OVERRIDE_PUBLIC_BRIDGE_MTU: 1400
        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/git.openstack.org/openstack/ironic-tempest-plugin'"
        VIRT_DRIVER: ironic
        BUILD_TIMEOUT: 720
        IRONIC_BAREMETAL_BASIC_OPS: True
        IRONIC_BUILD_DEPLOY_RAMDISK: False
        IRONIC_CALLBACK_TIMEOUT: 600
        IRONIC_DEPLOY_DRIVER: ipmi
        IRONIC_INSPECTOR_BUILD_RAMDISK: False
        IRONIC_RAMDISK_TYPE: tinyipa
        IRONIC_TEMPEST_BUILD_TIMEOUT: 720
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
        IRONIC_VM_COUNT: 1
        IRONIC_VM_EPHEMERAL_DISK: 1
        IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
        IRONIC_VM_SPECS_RAM: 384
        IRONIC_DEFAULT_DEPLOY_INTERFACE: iscsi
        IRONIC_DEFAULT_RESCUE_INTERFACE: agent

        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan

        SWIFT_ENABLE_TEMPURLS: True
        SWIFT_TEMPURL_KEY: secretkey
      devstack_plugins:
        ironic: git://git.openstack.org/openstack/ironic
      zuul_copy_output:
        '{{ devstack_base_dir }}/ironic-bm-logs': 'logs'
      devstack_services:
        c-api: False
        c-bak: False
        c-sch: False
        c-vol: False
        cinder: False

        s-account: False
        s-container: False
        s-object: False
        s-proxy: False

        dstat: True
        g-api: True
        g-reg: True
        key: True
        mysql: True
        n-api: True
        n-api-meta: True
        n-cauth: True
        n-cond: True
        n-cpu: True
        n-novnc: True
        n-obj: True
        n-sch: True
        placement-api: True
        q-agt: False
        q-dhcp: False
        q-l3: False
        q-meta: False
        q-metering: False
        q-svc: False
        neutron-api: True
        neutron-agent: True
        neutron-dhcp: True
        neutron-l3: True
        neutron-metadata-agent: True
        neutron-metering: True
        rabbit: True

- job:
    name: ironic-dsvm-standalone
    description: Test ironic standalone
    parent: ironic-base
    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: ironic_standalone
      tempest_concurrency: 4
      devstack_localrc:
        FORCE_CONFIG_DRIVE: False

        IRONIC_AUTOMATED_CLEAN_ENABLED: False
        IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
        IRONIC_ENABLED_DEPLOY_INTERFACES: "iscsi,direct,ansible"
        IRONIC_VM_COUNT: 6
      devstack_services:
        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
        s-account: True
        s-container: True
        s-object: True
        s-proxy: True

- job:
    name: ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
    description: ironic-tempest-dsvm-ipa-partition-redfish-tinyipa
    parent: ironic-base
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_DEPLOY_DRIVER: redfish
        IRONIC_ENABLED_HARDWARE_TYPES: redfish

- job:
    name: ironic-tempest-dsvm-pxe_ipmitool-postgres
    description: ironic-tempest-dsvm-pxe_ipmitool-postgres
    parent: ironic-base
    vars:
      devstack_localrc:
        IRONIC_IPXE_ENABLED: False
      devstack_services:
        mysql: False
        postgresql: True

- job:
    name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
    description: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
    parent: ironic-base
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_VM_EPHEMERAL_DISK: 0
      devstack_services:
        s-account: True
        s-container: True
        s-object: True
        s-proxy: True

- job:
    name: ironic-tempest-dsvm-ipa-wholedisk-bios-pxe_snmp-tinyipa
    description: ironic-tempest-dsvm-ipa-wholedisk-bios-pxe_snmp-tinyipa
    parent: ironic-base
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_ENABLED_HARDWARE_TYPES: snmp
        IRONIC_DEPLOY_DRIVER: snmp
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_VM_EPHEMERAL_DISK: 0
        IRONIC_AUTOMATED_CLEAN_ENABLED: False

- job:
    name: ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
    description: ironic-tempest-dsvm-ipa-partition-uefi-pxe_ipmitool-tinyipa
    parent: ironic-base
    nodeset: openstack-single-node-xenial
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_BOOT_MODE: uefi
        IRONIC_VM_SPECS_RAM: 512
        IRONIC_AUTOMATED_CLEAN_ENABLED: False

- job:
    name: ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
    description: ironic-tempest-dsvm-ipa-partition-pxe_ipmitool-tinyipa-python3
    parent: ironic-base
    timeout: 5400
    vars:
      devstack_localrc:
        USE_PYTHON3: True

- job:
    name: ironic-tempest-dsvm-bfv
    description: ironic-tempest-dsvm-bfv
    parent: ironic-base
    timeout: 9600
    vars:
      tempest_test_regex: baremetal_boot_from_volume
      devstack_localrc:
        IRONIC_ENABLED_STORAGE_INTERFACES: cinder,noop
        IRONIC_STORAGE_INTERFACE: cinder
        IRONIC_ENABLED_BOOT_INTERFACES: ipxe,pxe,fake
        IRONIC_DEFAULT_BOOT_INTERFACE: ipxe
        IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_VM_EPHEMERAL_DISK: 0
        IRONIC_VM_COUNT: 3
        IRONIC_AUTOMATED_CLEAN_ENABLED: False
      devstack_services:
        c-api: True
        c-bak: True
        c-sch: True
        c-vol: True
        cinder: True

- job:
    name: ironic-tempest-dsvm-ironic-inspector
    description: ironic-tempest-dsvm-ironic-inspector
    parent: ironic-base
    required-projects:
      - openstack/ironic-inspector
    vars:
      tempest_test_regex: InspectorBasicTest
      devstack_localrc:
        IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
        IRONIC_INSPECTOR_MANAGE_FIREWALL: True
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_VM_EPHEMERAL_DISK: 0
        IRONIC_AUTOMATED_CLEAN_ENABLED: False
      devstack_plugins:
        ironic-inspector: git://git.openstack.org/openstack/ironic-inspector
      devstack_services:
        s-account: True
        s-container: True
        s-object: True
        s-proxy: True

- job:
    name: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-indirect
    description: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa-indirect
    parent: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
        IRONIC_AUTOMATED_CLEAN_ENABLED: False

- job:
    name: ironic-tempest-dsvm-ipa-partition-bios-agent_ipmitool-tinyipa-indirect
    description: ironic-tempest-dsvm-ipa-partition-bios-agent_ipmitool-tinyipa-indirect
    parent: ironic-tempest-dsvm-ipa-wholedisk-bios-agent_ipmitool-tinyipa
    timeout: 5400
    vars:
      devstack_localrc:
        IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
        IRONIC_AUTOMATED_CLEAN_ENABLED: False

- job:
    name: ironic-tempest-dsvm-functional-python2
    description: ironic-tempest-dsvm-functional-python2
    parent: ironic-base
    timeout: 5400
    pre-run: playbooks/ci-workarounds/etc-neutron.yaml
    vars:
      tempest_test_regex: ironic_tempest_plugin.tests.api
      devstack_localrc:
        IRONIC_BAREMETAL_BASIC_OPS: False
        IRONIC_DEFAULT_DEPLOY_INTERFACE: ""
        IRONIC_DEFAULT_NETWORK_INTERFACE: noop
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_VM_EPHEMERAL_DISK: 0
      devstack_services:
        g-api: False
        g-reg: False
        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
        neutron-api: False
        neutron-agent: False
        neutron-dhcp: False
        neutron-l3: False
        neutron-metadata-agent: False
        neutron-metering: False

- job:
    name: ironic-tempest-dsvm-functional-python3
    description: ironic-tempest-dsvm-functional-python3
    parent: ironic-tempest-dsvm-functional-python2
    vars:
      devstack_localrc:
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
        IRONIC_VM_EPHEMERAL_DISK: 1
        USE_PYTHON3: True

- job:
    name: ironic-tempest-dsvm-ipa-wholedisk-direct-tinyipa-multinode
    description: ironic-tempest-dsvm-ipa-wholedisk-direct-tinyipa-multinode
    parent: tempest-multinode-full
    pre-run: playbooks/ci-workarounds/set-stack-key.yaml
    timeout: 10800
    required-projects:
      - openstack/ironic
      - openstack/ironic-python-agent
      - openstack/ironic-tempest-plugin
      - openstack/pyghmi
      - openstack/virtualbmc
      - openstack/networking-generic-switch
    irrelevant-files:
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^doc/.*$
      - ^driver-requirements.txt$
      - ^install-guide/.*$
      - ^ironic/locale/.*$
      - ^ironic/tests/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tools/.*$
      - ^tox.ini$
    vars:
      tox_envlist: all
      tempest_concurrency: 4
      tempest_test_regex: "(ironic_tempest_plugin.tests.scenario|test_schedule_to_all_nodes)"
      devstack_localrc:
        BUILD_TIMEOUT: 1200
        DEFAULT_INSTANCE_TYPE: baremetal
        ENABLE_TENANT_TUNNELS: False
        ENABLE_TENANT_VLANS: True
        FORCE_CONFIG_DRIVE: True
        GENERIC_SWITCH_KEY_FILE: /opt/stack/.ssh/id_rsa
        HOST_TOPOLOGY: multinode
        HOST_TOPOLOGY_ROLE: primary
        INSTALL_TEMPEST: False # Don't install a tempest package globaly
        IRONIC_AUTOMATED_CLEAN_ENABLED: False
        HOST_TOPOLOGY_SUBNODES: "{{ hostvars['compute1']['nodepool']['public_ipv4'] }}"
        IRONIC_BAREMETAL_BASIC_OPS: True
        IRONIC_BUILD_DEPLOY_RAMDISK: False
        IRONIC_CALLBACK_TIMEOUT: 600
        IRONIC_DEFAULT_DEPLOY_INTERFACE: direct
        IRONIC_DEFAULT_BOOT_OPTION: local
        IRONIC_DEPLOY_DRIVER: ipmi
        IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron
        IRONIC_INSPECTOR_BUILD_RAMDISK: False
        IRONIC_NETWORK_INTERFACE: neutron
        IRONIC_PROVISION_NETWORK_NAME: ironic-provision
        IRONIC_PROVISION_SUBNET_GATEWAY: 10.0.5.1
        IRONIC_PROVISION_SUBNET_PREFIX: 10.0.5.0/24
        IRONIC_RAMDISK_TYPE: tinyipa
        IRONIC_TEMPEST_BUILD_TIMEOUT: 600
        IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
        IRONIC_USE_LINK_LOCAL: True
        IRONIC_VM_COUNT: 7
        IRONIC_VM_EPHEMERAL_DISK: 0
        IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
        IRONIC_VM_SPECS_RAM: 384
        OS_TEST_TIMEOUT: 2400
        OVERRIDE_PUBLIC_BRIDGE_MTU: 1400
        OVS_PHYSICAL_BRIDGE: brbm
        PHYSICAL_NETWORK: mynetwork
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vlan
        Q_PLUGIN: ml2
        Q_USE_PROVIDERNET_FOR_PUBLIC: False
        SWIFT_ENABLE_TEMPURLS: True
        SWIFT_TEMPURL_KEY: secretkey
        TEMPEST_PLUGINS: "'{{ ansible_user_dir }}/src/git.openstack.org/openstack/ironic-tempest-plugin'"
        TENANT_VLAN_RANGE: 100:150
        VIRT_DRIVER: ironic
      devstack_plugins:
        ironic: git://git.openstack.org/openstack/ironic
        networking-generic-switch: git://git.openstack.org/openstack/networking-generic-switch
      zuul_copy_output:
        '{{ devstack_base_dir }}/ironic-bm-logs': 'logs'
      devstack_services:
        c-api: False
        c-bak: False
        c-sch: False
        c-vol: False
        cinder: False

        s-account: True
        s-container: True
        s-object: True
        s-proxy: True

        dstat: True
        g-api: True
        g-reg: True
        key: True
        mysql: True
        n-api: True
        n-api-meta: True
        n-cauth: True
        n-cond: True
        n-cpu: True
        n-novnc: True
        n-obj: True
        n-sch: True
        placement-api: True
        q-agt: True
        q-dhcp: True
        q-l3: True
        q-meta: True
        q-metering: True
        q-svc: True
        rabbit: True
    group-vars:
      subnode:
        devstack_localrc:
          ENABLE_TENANT_TUNNELS: False
          ENABLE_TENANT_VLANS: True
          HOST_TOPOLOGY: multinode
          HOST_TOPOLOGY_ROLE: subnode
          IRONIC_AUTOMATED_CLEAN_ENABLED: False
          IRONIC_BAREMETAL_BASIC_OPS: True
          IRONIC_DEPLOY_DRIVER: ipmi
          IRONIC_DEFAULT_BOOT_OPTION: local
          IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron
          IRONIC_NETWORK_INTERFACE: neutron
          IRONIC_PROVISION_NETWORK_NAME: ironic-provision
          IRONIC_RAMDISK_TYPE: tinyipa
          IRONIC_USE_LINK_LOCAL: True
          IRONIC_VM_COUNT: 7
          IRONIC_VM_EPHEMERAL_DISK: 0
          IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
          IRONIC_VM_NETWORK_BRIDGE: sub1brbm
          IRONIC_VM_SPECS_RAM: 384
          OVS_PHYSICAL_BRIDGE: sub1brbm
          PHYSICAL_NETWORK: mynetwork
          Q_ML2_TENANT_NETWORK_TYPE: vlan
          VIRT_DRIVER: ironic
        devstack_services:
          c-api: False
          c-bak: False
          c-sch: False
          c-vol: False
          cinder: False

          q-agt: True
          n-cpu: True