neutron-tempest-plugin/zuul.d/rocky_jobs.yaml
Slawek Kaplonski 8988a01a96 Consolidate neutron-tempest-plugin-api with scenario jobs
That way we will run our API tests on the ML2/{OVS,OVN,Linuxbridge}
deployments which will give us slightly better coverage in some cases as
some API extensions may be available only with some specific backends
(see NDPProxy for example, which isn't available on the ML2/OVN case).

This will also allow us to drop neutron-tempest-plugin-api job and
having less jobs with same or better coverage is always good thing :)

Change-Id: Ie34e89636c56783000b4d72a479c23d8d1295002
2022-05-26 12:37:20 +02:00

672 lines
24 KiB
YAML

- job:
name: neutron-tempest-plugin-api-rocky
nodeset: openstack-single-node-xenial
parent: neutron-tempest-plugin-base
description: |
This job run on py2 for stable/rocky gate.
override-checkout: stable/rocky
required-projects: &required-projects-rocky
- openstack/neutron
- name: openstack/neutron-tempest-plugin
override-checkout: 0.9.0
- openstack/tempest
vars: &api_vars_rocky
devstack_services:
# Disable OVN services
br-ex-tcpdump: false
br-int-flows: false
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
branch_override: stable/rocky
tempest_test_regex: ^neutron_tempest_plugin\.api
# TODO(slaweq): find a way to put this list of extensions in
# neutron repository and keep it different per branch,
# then it could be removed from here
network_api_extensions_common: &api_extensions
- address-scope
- agent
- allowed-address-pairs
- auto-allocated-topology
- availability_zone
- binding
- default-subnetpools
- dhcp_agent_scheduler
- dns-domain-ports
- dns-integration
- empty-string-filtering
- expose-port-forwarding-in-fip
- ext-gw-mode
- external-net
- extra_dhcp_opt
- extraroute
- fip-port-details
- flavors
- floating-ip-port-forwarding
- ip-substring-filtering
- l3-flavors
- l3-ha
- l3_agent_scheduler
- logging
- metering
- multi-provider
- net-mtu
- net-mtu-writable
- network-ip-availability
- network_availability_zone
- pagination
- port-mac-address-regenerate
- port-security
- port-security-groups-filtering
- project-id
- provider
- qos
- qos-fip
- quotas
- quota_details
- rbac-policies
- router
- router_availability_zone
- security-group
- segment
- service-type
- sorting
- standard-attr-description
- standard-attr-revisions
- standard-attr-segment
- standard-attr-timestamp
- standard-attr-tag
- subnet_allocation
- subnet-service-types
- trunk
- trunk-details
network_api_extensions_tempest:
- dvr
devstack_localrc:
NEUTRON_DEPLOY_MOD_WSGI: false
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_tempest) | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
Q_AGENT: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
ML2_L3_PLUGIN: router
devstack_local_conf:
post-config:
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
/$NEUTRON_CORE_PLUGIN_CONF:
AGENT:
tunnel_types: gre,vxlan
ml2:
type_drivers: flat,geneve,vlan,gre,local,vxlan
test-config:
$TEMPEST_CONFIG:
neutron_plugin_options:
available_type_drivers: flat,geneve,vlan,gre,local,vxlan
# NOTE(gmann): This job run on py2 for stable/rocky gate.
branches:
- stable/rocky
- job:
name: neutron-tempest-plugin-api-rocky
nodeset: openstack-single-node-xenial
parent: neutron-tempest-plugin-base
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-pluign master gate.
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars:
<<: *api_vars_rocky
devstack_localrc:
USE_PYTHON3: True
branches: ^(?!stable/rocky).*$
- job:
name: neutron-tempest-plugin-scenario-openvswitch-rocky
parent: neutron-tempest-plugin-base
description: |
This job run on py2 for stable/rocky gate.
nodeset: openstack-single-node-xenial
timeout: 10000
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars: &scenario_vars_rocky
tempest_test_regex: "\
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
devstack_services:
# Disable OVN services
br-ex-tcpdump: false
br-int-flows: false
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
branch_override: stable/rocky
network_api_extensions: *api_extensions
network_available_features: &available_features
-
devstack_localrc:
USE_PYTHON3: false
Q_AGENT: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
# NOTE(slaweq) some tests are not running fine with ubuntu minimal on
# Rocky
IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
ADVANCED_INSTANCE_TYPE: ds512M
ADVANCED_INSTANCE_USER: ubuntu
CUSTOMIZE_IMAGE: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
enable_dvr: false
l3_ha: true
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
/$NEUTRON_CORE_PLUGIN_CONF:
agent:
tunnel_types: vxlan,gre
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
$NEUTRON_L3_CONF:
DEFAULT:
# NOTE(slaweq): on Xenial keepalived don't knows this option yet
keepalived_use_no_track: False
test-config:
$TEMPEST_CONFIG:
network-feature-enabled:
available_features: "{{ network_available_features | join(',') }}"
neutron_plugin_options:
available_type_drivers: flat,vlan,local,vxlan
firewall_driver: openvswitch
# NOTE(bcafarel): filtering out unstable tests or tests with known
# issues in the used pinned version for this EM branch
tempest_black_regex: &rocky_tempest_exclude "\
(^neutron_tempest_plugin.scenario.admin.test_floatingip.FloatingIpTestCasesAdmin.test_two_vms_fips)|\
(^neutron_tempest_plugin.scenario.test_floatingip.FloatingIPQosTest.test_qos)|\
(^neutron_tempest_plugin.scenario.test_internal_dns.InternalDNSTest.test_dns_domain_and_name)|\
(^neutron_tempest_plugin.scenario.test_port_forwardings.PortForwardingTestJSON.test_port_forwarding_to_2_servers)|\
(^neutron_tempest_plugin.scenario.test_ports.PortsTest.test_previously_used_port)|\
(^neutron_tempest_plugin.scenario.test_security_groups.NetworkSecGroupTest.test_ip_prefix)|\
(^neutron_tempest_plugin.scenario.test_security_groups.NetworkSecGroupTest.test_multiple_ports_portrange_remote)|\
(^neutron_tempest_plugin.scenario.test_security_groups.NetworkSecGroupTest.test_multiple_ports_secgroup_inheritance)|\
(^neutron_tempest_plugin.scenario.test_security_groups.NetworkSecGroupTest.test_remote_group)|\
(^neutron_tempest_plugin.scenario.test_trunk.TrunkTest.test_subport_connectivity)|\
(^tempest.api.compute.servers.test_attach_interfaces.AttachInterfacesTestJSON.test_reassign_port_between_servers)|\
(^tempest.api.compute.servers.test_attach_interfaces.AttachInterfacesUnderV243Test.test_add_remove_fixed_ip)"
branches:
- stable/rocky
irrelevant-files: &openvswitch-scenario-irrelevant-files
- ^(test-|)requirements.txt$
- ^releasenotes/.*$
- ^doc/.*$
- ^setup.cfg$
- ^.*\.rst$
- ^neutron/locale/.*$
- ^neutron/tests/unit/.*$
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^tools/.*$
- ^tox.ini$
- ^neutron/agent/windows/.*$
- ^neutron/plugins/ml2/drivers/linuxbridge/.*$
- ^neutron/plugins/ml2/drivers/macvtap/.*$
- ^neutron/plugins/ml2/drivers/mech_sriov/.*$
- job:
name: neutron-tempest-plugin-scenario-openvswitch-rocky
parent: neutron-tempest-plugin-openvswitch
nodeset: openstack-single-node-xenial
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-pluign master gate.
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars:
<<: *scenario_vars_rocky
devstack_localrc:
USE_PYTHON3: True
ADVANCED_INSTANCE_TYPE: ds512M
branches: ^(?!stable/rocky).*$
irrelevant-files: *openvswitch-scenario-irrelevant-files
- job:
name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-rocky
parent: neutron-tempest-plugin-base
nodeset: openstack-single-node-xenial
timeout: 10000
description: |
This job run on py2 for stable/rocky gate.
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars: &openvswitch_vars_rocky
devstack_services:
# Disable OVN services
br-ex-tcpdump: false
br-int-flows: false
ovn-controller: false
ovn-northd: false
ovs-vswitchd: false
ovsdb-server: false
q-ovn-metadata-agent: false
# Neutron services
q-agt: true
q-dhcp: true
q-l3: true
q-meta: true
q-metering: true
network_api_extensions: *api_extensions
network_available_features: *available_features
devstack_localrc:
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
Q_AGENT: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
# NOTE(slaweq) some tests are not running fine with ubuntu minimal on
# Rocky
IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
ADVANCED_INSTANCE_TYPE: ds512M
ADVANCED_INSTANCE_USER: ubuntu
CUSTOMIZE_IMAGE: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
enable_dvr: false
l3_ha: true
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
/$NEUTRON_CORE_PLUGIN_CONF:
agent:
tunnel_types: vxlan,gre
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
securitygroup:
firewall_driver: iptables_hybrid
$NEUTRON_L3_CONF:
DEFAULT:
# NOTE(slaweq): on Xenial keepalived don't knows this option yet
keepalived_use_no_track: False
test-config:
$TEMPEST_CONFIG:
network-feature-enabled:
available_features: "{{ network_available_features | join(',') }}"
neutron_plugin_options:
available_type_drivers: flat,vlan,local,vxlan
firewall_driver: iptables_hybrid
tempest_black_regex: *rocky_tempest_exclude
branches:
- stable/rocky
irrelevant-files: &iptables_hybrid_irrelevant_files
- ^(test-|)requirements.txt$
- ^releasenotes/.*$
- ^doc/.*$
- ^setup.cfg$
- ^.*\.rst$
- ^neutron/locale/.*$
- ^neutron/tests/unit/.*$
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^tools/.*$
- ^tox.ini$
- ^neutron/agent/linux/openvswitch_firewall/.*$
- ^neutron/agent/windows/.*$
- ^neutron/plugins/ml2/drivers/linuxbridge/.*$
- ^neutron/plugins/ml2/drivers/macvtap/.*$
- ^neutron/plugins/ml2/drivers/mech_sriov/.*$
- job:
name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid-rocky
parent: neutron-tempest-plugin-base
nodeset: openstack-single-node-xenial
timeout: 10000
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-pluign master gate.
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars:
<<: *openvswitch_vars_rocky
devstack_localrc:
USE_PYTHON3: True
ADVANCED_INSTANCE_TYPE: ds512M
branches: ^(?!stable/rocky).*$
irrelevant-files: *iptables_hybrid_irrelevant_files
- job:
name: neutron-tempest-plugin-scenario-linuxbridge-rocky
parent: neutron-tempest-plugin-base
timeout: 10000
description: |
This job run on py2 for stable/rocky gate.
nodeset: openstack-single-node-xenial
roles:
- zuul: openstack/neutron
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars: &linuxbridge_vars_rocky
branch_override: stable/rocky
tempest_test_regex: "\
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
network_api_extensions: *api_extensions
devstack_localrc:
USE_PYTHON3: false
Q_AGENT: linuxbridge
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
# NOTE(slaweq) some tests are not running fine with ubuntu minimal on
# Rocky
IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
ADVANCED_INSTANCE_TYPE: ds512M
ADVANCED_INSTANCE_USER: ubuntu
CUSTOMIZE_IMAGE: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
enable_dvr: false
AGENT:
debug_iptables_rules: true
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
/$NEUTRON_CORE_PLUGIN_CONF:
ml2:
type_drivers: flat,vlan,local,vxlan
$NEUTRON_L3_CONF:
DEFAULT:
# NOTE(slaweq): on Xenial keepalived don't knows this option yet
keepalived_use_no_track: False
test-config:
# NOTE: ignores linux bridge's trunk delete on bound port test
# for rocky branch (as https://review.opendev.org/#/c/605589/
# fix will not apply for rocky branch)
$TEMPEST_CONFIG:
neutron_plugin_options:
available_type_drivers: flat,vlan,local,vxlan
q_agent: None
tempest_black_regex: *rocky_tempest_exclude
branches:
- stable/rocky
- job:
name: neutron-tempest-plugin-scenario-linuxbridge-rocky
parent: neutron-tempest-plugin-base
nodeset: openstack-single-node-xenial
timeout: 10000
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-pluign master gate.
roles:
- zuul: openstack/neutron
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars:
<<: *linuxbridge_vars_rocky
devstack_localrc:
USE_PYTHON3: True
Q_AGENT: linuxbridge
NETWORK_API_EXTENSIONS: "{{ network_api_extensions | join(',') }}"
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
ADVANCED_INSTANCE_TYPE: ds512M
branches: ^(?!stable/rocky).*$
- job:
name: neutron-tempest-plugin-dvr-multinode-scenario-rocky
parent: tempest-multinode-full
description: |
This job run on py2 for stable/rocky gate.
nodeset: openstack-two-node-xenial
override-checkout: stable/rocky
roles:
- zuul: openstack/devstack
required-projects: *required-projects-rocky
pre-run: playbooks/dvr-multinode-scenario-pre-run.yaml
voting: false
vars: &multinode_scenario_vars_rocky
tempest_concurrency: 4
tox_envlist: all
tempest_test_regex: ^neutron_tempest_plugin\.scenario
# NOTE(slaweq): in case of some tests, which requires advanced image,
# default test timeout set to 1200 seconds may be not enough if job is
# run on slow node
tempest_test_timeout: 2400
network_api_extensions_common: *api_extensions
network_api_extensions_dvr:
- dvr
devstack_localrc:
USE_PYTHON3: false
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_dvr) | join(',') }}"
PHYSICAL_NETWORK: default
CIRROS_VERSION: 0.5.1
DEFAULT_IMAGE_NAME: cirros-0.5.1-x86_64-uec
DEFAULT_IMAGE_FILE_NAME: cirros-0.5.1-x86_64-uec.tar.gz
IMAGE_URLS: https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img
ADVANCED_IMAGE_NAME: ubuntu-18.04-server-cloudimg-amd64
ADVANCED_INSTANCE_TYPE: ds512M
ADVANCED_INSTANCE_USER: ubuntu
BUILD_TIMEOUT: 784
TEMPEST_PLUGINS: /opt/stack/neutron-tempest-plugin
devstack_plugins:
neutron: https://opendev.org/openstack/neutron.git
neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
tempest_plugins:
- neutron-tempest-plugin
devstack_services:
tls-proxy: false
tempest: true
neutron-dns: true
neutron-qos: true
neutron-segments: true
neutron-trunk: true
neutron-log: true
neutron-port-forwarding: true
# Cinder services
c-api: false
c-bak: false
c-sch: false
c-vol: false
cinder: false
# We don't need Swift to be run in the Neutron jobs
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_local_conf:
post-config:
$NEUTRON_CONF:
quotas:
quota_router: 100
quota_floatingip: 500
quota_security_group: 100
quota_security_group_rule: 1000
DEFAULT:
router_distributed: True
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
"/$NEUTRON_CORE_PLUGIN_CONF":
ml2:
type_drivers: flat,geneve,vlan,gre,local,vxlan
mechanism_drivers: openvswitch,l2population
ml2_type_vlan:
network_vlan_ranges: foo:1:10
ml2_type_vxlan:
vni_ranges: 1:2000
ml2_type_gre:
tunnel_id_ranges: 1:1000
agent:
enable_distributed_routing: True
l2_population: True
tunnel_types: vxlan,gre
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
$NEUTRON_L3_CONF:
DEFAULT:
agent_mode: dvr_snat
agent:
availability_zone: nova
$NEUTRON_DHCP_CONF:
agent:
availability_zone: nova
"/etc/neutron/api-paste.ini":
"composite:neutronapi_v2_0":
use: "call:neutron.auth:pipeline_factory"
noauth: "cors request_id catch_errors osprofiler extensions neutronapiapp_v2_0"
keystone: "cors request_id catch_errors osprofiler authtoken keystonecontext extensions neutronapiapp_v2_0"
test-config:
$TEMPEST_CONFIG:
network-feature-enabled:
available_features: *available_features
neutron_plugin_options:
provider_vlans: foo,
agent_availability_zone: nova
image_is_advanced: true
available_type_drivers: flat,geneve,vlan,gre,local,vxlan
l3_agent_mode: dvr_snat
firewall_driver: openvswitch
branch_override: stable/rocky
tempest_black_regex: *rocky_tempest_exclude
branches:
- stable/rocky
group-vars: &multinode_scenario_group_vars_rocky
subnode:
devstack_services:
tls-proxy: false
q-agt: true
q-l3: true
q-meta: true
neutron-qos: true
neutron-trunk: true
neutron-log: true
neutron-port-forwarding: true
# Cinder services
c-bak: false
c-vol: false
# We don't need Swift to be run in the Neutron jobs
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_localrc:
USE_PYTHON3: true
devstack_local_conf:
post-config:
$NEUTRON_CONF:
DEFAULT:
router_distributed: True
# NOTE(slaweq): We can get rid of this hardcoded absolute path when
# devstack-tempest job will be switched to use lib/neutron instead of
# lib/neutron-legacy
"/$NEUTRON_CORE_PLUGIN_CONF":
agent:
enable_distributed_routing: True
l2_population: True
tunnel_types: vxlan,gre
ovs:
tunnel_bridge: br-tun
bridge_mappings: public:br-ex
$NEUTRON_L3_CONF:
DEFAULT:
agent_mode: dvr_snat
agent:
availability_zone: nova
irrelevant-files: *openvswitch-scenario-irrelevant-files
- job:
name: neutron-tempest-plugin-dvr-multinode-scenario-rocky
parent: tempest-multinode-full
nodeset: openstack-two-node-xenial
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-pluign master gate.
override-checkout: stable/rocky
vars:
<<: *multinode_scenario_vars_rocky
devstack_localrc:
USE_PYTHON3: True
required-projects: *required-projects-rocky
group-vars:
<<: *multinode_scenario_group_vars_rocky
subnode:
devstack_localrc:
USE_PYTHON3: True
branches: ^(?!stable/rocky).*$
- job:
name: neutron-tempest-plugin-designate-scenario-rocky
parent: neutron-tempest-plugin-designate-scenario
description: |
This job run on py2 for stable/rocky gate.
nodeset: openstack-single-node-xenial
override-checkout: stable/rocky
required-projects:
- openstack/neutron
- name: openstack/neutron-tempest-plugin
override-checkout: 0.9.0
- name: openstack/designate-tempest-plugin
override-checkout: 0.7.0
- openstack/tempest
vars: &designate_scenario_vars_rocky
branch_override: stable/rocky
network_api_extensions_common: *api_extensions
devstack_localrc:
USE_PYTHON3: false
TEMPEST_PLUGINS: '"/opt/stack/designate-tempest-plugin /opt/stack/neutron-tempest-plugin"'
ADVANCED_INSTANCE_TYPE: ds512M
# NOTE(bcafarel): filtering out unstable tests or tests with known
# issues in the used pinned version for this EM branch
tempest_black_regex: "(^neutron_tempest_plugin.scenario.test_dns_integration.DNSIntegrationAdminTests.test_port_on_special_network)"
branches:
- stable/rocky
- job:
name: neutron-tempest-plugin-designate-scenario-rocky
parent: neutron-tempest-plugin-designate-scenario
nodeset: openstack-single-node-xenial
description: |
This job run on py3 for other than stable/rocky gate
which is nothing but neutron-tempest-plugin master gate.
override-checkout: stable/rocky
required-projects: *required-projects-rocky
vars:
<<: *designate_scenario_vars_rocky
devstack_localrc:
USE_PYTHON3: True
branches: ^(?!stable/rocky).*$