Merge "Update gate jobs as per the 2025.1 cycle testing runtime"
diff --git a/neutron_tempest_plugin/api/admin/test_tag.py b/neutron_tempest_plugin/api/admin/test_tag.py
index eae7977..31b2b96 100644
--- a/neutron_tempest_plugin/api/admin/test_tag.py
+++ b/neutron_tempest_plugin/api/admin/test_tag.py
@@ -26,53 +26,55 @@
super(TagTestJSON, cls).resource_setup()
cls.res_id = cls._create_resource()
- def _get_and_compare_tags(self, tags):
- res_body = self.client.get_tags(self.resource, self.res_id)
+ def _get_and_compare_tags(self, tags, client):
+ res_body = client.get_tags(self.resource, self.res_id)
self.assertCountEqual(tags, res_body['tags'])
- def _test_tag_operations(self):
+ def _test_tag_operations(self, client=None):
+ client = client or self.client
# create and get tags
tags = ['red', 'blue']
- res_body = self.client.update_tags(self.resource, self.res_id, tags)
+ res_body = client.update_tags(self.resource, self.res_id, tags)
self.assertCountEqual(tags, res_body['tags'])
- self._get_and_compare_tags(tags)
+ self._get_and_compare_tags(tags, client)
# add a tag
- self.client.update_tag(self.resource, self.res_id, 'green')
- self._get_and_compare_tags(['red', 'blue', 'green'])
+ client.update_tag(self.resource, self.res_id, 'green')
+ self._get_and_compare_tags(['red', 'blue', 'green'], client)
# update tag exist
- self.client.update_tag(self.resource, self.res_id, 'red')
- self._get_and_compare_tags(['red', 'blue', 'green'])
+ client.update_tag(self.resource, self.res_id, 'red')
+ self._get_and_compare_tags(['red', 'blue', 'green'], client)
# add a tag with a dot
- self.client.update_tag(self.resource, self.res_id, 'black.or.white')
- self._get_and_compare_tags(['red', 'blue', 'green', 'black.or.white'])
+ client.update_tag(self.resource, self.res_id, 'black.or.white')
+ self._get_and_compare_tags(['red', 'blue', 'green', 'black.or.white'],
+ client)
# replace tags
tags = ['red', 'yellow', 'purple']
- res_body = self.client.update_tags(self.resource, self.res_id, tags)
+ res_body = client.update_tags(self.resource, self.res_id, tags)
self.assertCountEqual(tags, res_body['tags'])
- self._get_and_compare_tags(tags)
+ self._get_and_compare_tags(tags, client)
# get tag
- self.client.get_tag(self.resource, self.res_id, 'red')
+ client.get_tag(self.resource, self.res_id, 'red')
# get tag not exist
- self.assertRaises(lib_exc.NotFound, self.client.get_tag,
+ self.assertRaises(lib_exc.NotFound, client.get_tag,
self.resource, self.res_id, 'green')
# delete tag
- self.client.delete_tag(self.resource, self.res_id, 'red')
- self._get_and_compare_tags(['yellow', 'purple'])
+ client.delete_tag(self.resource, self.res_id, 'red')
+ self._get_and_compare_tags(['yellow', 'purple'], client)
# delete tag not exist
- self.assertRaises(lib_exc.NotFound, self.client.delete_tag,
+ self.assertRaises(lib_exc.NotFound, client.delete_tag,
self.resource, self.res_id, 'green')
# delete tags
- self.client.delete_tags(self.resource, self.res_id)
- self._get_and_compare_tags([])
+ client.delete_tags(self.resource, self.res_id)
+ self._get_and_compare_tags([], client)
class TagNetworkTestJSON(TagTestJSON):
@@ -198,7 +200,7 @@
@decorators.idempotent_id('e9bac15e-c8bc-4317-8295-4bf1d8d522b8')
@utils.requires_ext(extension="standard-attr-tag", service="network")
def test_qos_policy_tags(self):
- self._test_tag_operations()
+ self._test_tag_operations(client=self.admin_client)
class TagTrunkTestJSON(TagTestJSON):
@@ -225,16 +227,20 @@
@classmethod
def resource_setup(cls):
super(TagFilterTestJSON, cls).resource_setup()
+ try:
+ client = cls.tag_client
+ except AttributeError:
+ client = cls.client
cls.res_ids = []
for i in range(5):
cls.res_ids.append(cls._create_resource())
- cls.client.update_tags(cls.resource, cls.res_ids[0], ['red'])
- cls.client.update_tags(cls.resource, cls.res_ids[1], ['red', 'blue'])
- cls.client.update_tags(cls.resource, cls.res_ids[2],
- ['red', 'blue', 'green'])
- cls.client.update_tags(cls.resource, cls.res_ids[3], ['green'])
+ client.update_tags(cls.resource, cls.res_ids[0], ['red'])
+ client.update_tags(cls.resource, cls.res_ids[1], ['red', 'blue'])
+ client.update_tags(cls.resource, cls.res_ids[2],
+ ['red', 'blue', 'green'])
+ client.update_tags(cls.resource, cls.res_ids[3], ['green'])
# 5th resource: no tags
@classmethod
@@ -441,6 +447,11 @@
res = self.client.list_qos_policies(**filters)
return res[self.resource]
+ @classmethod
+ def resource_setup(cls):
+ cls.tag_client = cls.admin_client
+ super().resource_setup()
+
@decorators.attr(type='smoke')
@decorators.idempotent_id('c2f9a6ae-2529-4cb9-a44b-b16f8ba27832')
@utils.requires_ext(extension="standard-attr-tag", service="network")
diff --git a/neutron_tempest_plugin/api/base.py b/neutron_tempest_plugin/api/base.py
index e17cf5e..4bcc6d2 100644
--- a/neutron_tempest_plugin/api/base.py
+++ b/neutron_tempest_plugin/api/base.py
@@ -595,15 +595,11 @@
# Generate subnet CIDRs starting from configured values
ip_version = ip_version or cls._ip_version
if ip_version == const.IP_VERSION_4:
- mask_bits = mask_bits or config.safe_get_config_value(
- 'network', 'project_network_mask_bits')
- cidr = netaddr.IPNetwork(config.safe_get_config_value(
- 'network', 'project_network_cidr'))
+ mask_bits = mask_bits or CONF.network.project_network_mask_bits
+ cidr = netaddr.IPNetwork(CONF.network.project_network_cidr)
elif ip_version == const.IP_VERSION_6:
- mask_bits = config.safe_get_config_value(
- 'network', 'project_network_v6_mask_bits')
- cidr = netaddr.IPNetwork(config.safe_get_config_value(
- 'network', 'project_network_v6_cidr'))
+ mask_bits = CONF.network.project_network_v6_mask_bits
+ cidr = netaddr.IPNetwork(CONF.network.project_network_v6_cidr)
else:
raise ValueError('Invalid IP version: {!r}'.format(ip_version))
diff --git a/neutron_tempest_plugin/api/test_routers.py b/neutron_tempest_plugin/api/test_routers.py
index 7758b1a..1430b81 100644
--- a/neutron_tempest_plugin/api/test_routers.py
+++ b/neutron_tempest_plugin/api/test_routers.py
@@ -38,9 +38,9 @@
def resource_setup(cls):
super(RoutersTest, cls).resource_setup()
cls.tenant_cidr = (
- config.safe_get_config_value('network', 'project_network_cidr')
+ CONF.network.project_network_cidr
if cls._ip_version == 4 else
- config.safe_get_config_value('network', 'project_network_v6_cidr'))
+ CONF.network.project_network_v6_cidr)
@decorators.idempotent_id('c72c1c0c-2193-4aca-eeee-b1442640eeee')
@tutils.requires_ext(extension="standard-attr-description",
diff --git a/neutron_tempest_plugin/config.py b/neutron_tempest_plugin/config.py
index 55d9d9e..23757c1 100644
--- a/neutron_tempest_plugin/config.py
+++ b/neutron_tempest_plugin/config.py
@@ -259,19 +259,3 @@
name='designate_feature_enabled', title='Enabled Designate Features')
CONF.register_group(dns_feature_group)
CONF.register_opts(DnsFeatureGroup, group="designate_feature_enabled")
-
-config_opts_translator = {
- 'project_network_cidr': 'tenant_network_cidr',
- 'project_network_v6_cidr': 'tenant_network_v6_cidr',
- 'project_network_mask_bits': 'tenant_network_mask_bits',
- 'project_network_v6_mask_bits': 'tenant_network_v6_mask_bits'}
-
-
-def safe_get_config_value(group, name):
- """Safely get Oslo config opts from Tempest, using old and new names."""
- conf_group = getattr(CONF, group)
-
- try:
- return getattr(conf_group, name)
- except cfg.NoSuchOptError:
- return getattr(conf_group, config_opts_translator[name])
diff --git a/roles/docker-setup/tasks/main.yml b/roles/docker-setup/tasks/main.yml
index 19d8bfb..1b0e2d7 100644
--- a/roles/docker-setup/tasks/main.yml
+++ b/roles/docker-setup/tasks/main.yml
@@ -4,6 +4,14 @@
name: docker.io
state: present
+- name: Install docker-buildx (only for Ubuntu and Debian)
+ become: yes
+ package:
+ name: docker-buildx
+ state: present
+ when:
+ - (ansible_facts['distribution'] | lower) in ['ubuntu', 'debian']
+
- name: Copy 52_docker_for_tempest to /etc/sudoers.d
copy:
src: 52_docker_for_tempest
diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml
index db40202..d39b4b8 100644
--- a/zuul.d/master_jobs.yaml
+++ b/zuul.d/master_jobs.yaml
@@ -1086,6 +1086,7 @@
- ^neutron/scheduler/.*$
- ^neutron/services/.*$
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
- ^neutron_tempest_plugin/services/bgp/.*$
- ^rally-jobs/.*$
@@ -1192,6 +1193,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|tap_as_a_service|vpnaas).*$
@@ -1272,6 +1274,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
@@ -1339,6 +1342,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|sfc|tap_as_a_service|vpnaas).*$
@@ -1414,6 +1418,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
@@ -1495,6 +1500,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service).*$
@@ -1566,6 +1572,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service).*$
@@ -1687,6 +1694,7 @@
- ^neutron/tests/fullstack/.*
- ^neutron/tests/functional/.*
- ^neutron_tempest_plugin/api/test_.*$
+ - ^neutron_tempest_plugin/api/admin/test_.*$
- ^neutron_tempest_plugin/scenario/admin/.*$
- ^neutron_tempest_plugin/scenario/test_.*$
- ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|vpnaas).*$