Merge "Add 2024.2 (Dalmatian) stable jobs"
diff --git a/neutron_tempest_plugin/api/admin/test_quotas.py b/neutron_tempest_plugin/api/admin/test_quotas.py
index 0cf474e..eb47fa5 100644
--- a/neutron_tempest_plugin/api/admin/test_quotas.py
+++ b/neutron_tempest_plugin/api/admin/test_quotas.py
@@ -87,7 +87,7 @@
new_quotas = {'network': 0, 'security_group': 0}
# Change quotas for tenant
- quota_set = self._setup_quotas(tenant_id, **new_quotas)
+ quota_set = self._setup_quotas(tenant_id, force=True, **new_quotas)
for key, value in new_quotas.items():
self.assertEqual(value, quota_set[key])
@@ -112,6 +112,23 @@
for q in non_default_quotas['quotas']:
self.assertNotEqual(tenant_id, q['tenant_id'])
+ @decorators.idempotent_id('43d01327-d8be-4773-a8f0-1d2e9664fda2')
+ @decorators.attr(type='gate')
+ @utils.requires_ext(extension='quota-check-limit-default',
+ service='network')
+ def test_quotas_force_false(self):
+ project_id = self.create_project()['id']
+ self._create_network(project_id)
+
+ new_quotas = {'network': 0}
+ # force=false (by default)
+ self.assertRaises(lib_exc.BadRequest, self.admin_client.update_quotas,
+ project_id, **new_quotas)
+
+ new_quotas['network'] = 100
+ quota_set = self._setup_quotas(project_id, **new_quotas)
+ self.assertEqual(new_quotas['network'], quota_set['network'])
+
@decorators.idempotent_id('e974b5ba-090a-452c-a578-f9710151d9fc')
@decorators.attr(type='gate')
@utils.requires_ext(extension="quota_details", service="network")
diff --git a/neutron_tempest_plugin/api/test_security_groups.py b/neutron_tempest_plugin/api/test_security_groups.py
index 5e8b18e..6992399 100644
--- a/neutron_tempest_plugin/api/test_security_groups.py
+++ b/neutron_tempest_plugin/api/test_security_groups.py
@@ -281,9 +281,10 @@
def _set_quota(self, val, resource):
res_quota = self._get_quota(resource)
project_id = self.client.project_id
- self.admin_client.update_quotas(project_id, **{resource: val})
+ self.admin_client.update_quotas(project_id, **{resource: val,
+ 'force': True})
self.addCleanup(self.admin_client.update_quotas,
- project_id, **{resource: res_quota})
+ project_id, **{resource: res_quota, 'force': True})
def _get_quota(self, resource):
project_id = self.client.project_id
@@ -383,7 +384,8 @@
def _set_sg_rules_quota(self, val):
project_id = self.client.project_id
self.admin_client.update_quotas(project_id,
- **{'security_group_rule': val})
+ **{'security_group_rule': val,
+ 'force': True})
LOG.info('Trying to update security group rule quota {} '.format(val))
def _get_sg_rules_quota(self):
@@ -435,7 +437,8 @@
sg_rules_quota = self._get_sg_rules_quota()
project_id = self.client.project_id
self.addCleanup(self.admin_client.update_quotas,
- project_id, **{'security_group_rule': sg_rules_quota})
+ project_id, **{'security_group_rule': sg_rules_quota,
+ 'force': True})
values = [-1, 0, 10, 2147483647]
for value in values:
self._set_sg_rules_quota(value)
diff --git a/neutron_tempest_plugin/scenario/test_dns_integration.py b/neutron_tempest_plugin/scenario/test_dns_integration.py
index 8163b51..d520aa2 100644
--- a/neutron_tempest_plugin/scenario/test_dns_integration.py
+++ b/neutron_tempest_plugin/scenario/test_dns_integration.py
@@ -39,8 +39,6 @@
# when designate_tempest_plugin is not available
dns_base = testtools.try_import('designate_tempest_plugin.tests.base')
dns_waiters = testtools.try_import('designate_tempest_plugin.common.waiters')
-dns_data_utils = testtools.try_import('designate_tempest_plugin.data_utils')
-
if dns_base:
DNSMixin = dns_base.BaseDnsV2Test
else:
@@ -54,9 +52,8 @@
def setup_clients(cls):
super(BaseDNSIntegrationTests, cls).setup_clients()
cls.zone_client = cls.os_tempest.dns_v2.ZonesClient()
- cls.admin_zone_client = cls.os_admin.dns_v2.ZonesClient()
cls.recordset_client = cls.os_tempest.dns_v2.RecordsetClient()
- cls.query_client.build_timeout = 60
+ cls.query_client.build_timeout = 30
@classmethod
def skip_checks(cls):
@@ -71,13 +68,12 @@
@utils.requires_ext(extension="dns-integration", service="network")
def resource_setup(cls):
super(BaseDNSIntegrationTests, cls).resource_setup()
- cls.zone_name = dns_data_utils.rand_zone_name(
- name="basednsintegrationtests")
- cls.zone = cls.zone_client.create_zone(
- name=cls.zone_name, wait_until='ACTIVE')[1]
- cls.addClassResourceCleanup(
- cls.zone_client.delete_zone, cls.zone['id'],
- ignore_errors=lib_exc.NotFound)
+ cls.zone = cls.zone_client.create_zone()[1]
+ cls.addClassResourceCleanup(cls.zone_client.delete_zone,
+ cls.zone['id'], ignore_errors=lib_exc.NotFound)
+ dns_waiters.wait_for_zone_status(
+ cls.zone_client, cls.zone['id'], 'ACTIVE')
+
cls.network = cls.create_network(dns_domain=cls.zone['name'])
cls.subnet = cls.create_subnet(cls.network)
cls.subnet_v6 = cls.create_subnet(cls.network, ip_version=6)
@@ -85,20 +81,6 @@
cls.create_router_interface(cls.router['id'], cls.subnet['id'])
cls.keypair = cls.create_keypair()
- @classmethod
- def resource_cleanup(cls):
- super(BaseDNSIntegrationTests, cls).resource_cleanup()
- admin_listed_zones = cls.admin_zone_client.list_zones(
- headers=dns_base.BaseDnsV2Test.all_projects_header)[1]['zones']
- neutron_zone_ids = [
- zn['id'] for zn in admin_listed_zones if
- 'zone for reverse lookups set up by Neutron.' in
- str(zn['description']) and cls.zone_name.strip('.') in zn['email']]
- for id in neutron_zone_ids:
- cls.admin_zone_client.delete_zone(
- id, headers=dns_base.BaseDnsV2Test.all_projects_header,
- ignore_errors=lib_exc.NotFound)
-
def _create_floatingip_with_dns(self, dns_name):
return self.create_floatingip(client=self.os_primary.network_client,
dns_name=dns_name,
@@ -268,8 +250,7 @@
@classmethod
def resource_setup(cls):
super(DNSIntegrationExtraTests, cls).resource_setup()
- cls.network2 = cls.create_network(
- name=data_utils.rand_name('dns_integration_net'))
+ cls.network2 = cls.create_network()
cls.subnet2 = cls.create_subnet(cls.network2)
cls.subnet2_v6 = cls.create_subnet(cls.network2,
ip_version=6,
@@ -293,16 +274,6 @@
self.client.delete_port(port['id'])
self._verify_dns_records(addr_v6, name, record_type='AAAA',
found=False)
- self.client.update_subnet(
- self.subnet2['id'], dns_publish_fixed_ip=True)
- port = self.create_port(self.network2,
- dns_domain=self.zone['name'],
- dns_name=name)
- addr_v4 = port['fixed_ips'][1 - v6_index]['ip_address']
- self._verify_dns_records(addr_v4, name, record_type='A')
- self.client.delete_port(port['id'])
- self._verify_dns_records(addr_v4, name, record_type='A',
- found=False)
class DNSIntegrationDomainPerProjectTests(BaseDNSIntegrationTests):
@@ -315,15 +286,19 @@
@classmethod
def resource_setup(cls):
super(BaseDNSIntegrationTests, cls).resource_setup()
- cls.name = data_utils.rand_name('test-domain')
- cls.zone_name = "%s.%s.%s.zone." % (cls.client.user_id,
+
+ name = data_utils.rand_name('test-domain')
+ zone_name = "%s.%s.%s.zone." % (cls.client.user_id,
cls.client.project_id,
- cls.name)
- dns_domain_template = "<user_id>.<project_id>.%s.zone." % cls.name
- cls.zone = cls.zone_client.create_zone(
- name=cls.zone_name, wait_until='ACTIVE')[1]
+ name)
+ dns_domain_template = "<user_id>.<project_id>.%s.zone." % name
+
+ cls.zone = cls.zone_client.create_zone(name=zone_name)[1]
cls.addClassResourceCleanup(cls.zone_client.delete_zone,
cls.zone['id'], ignore_errors=lib_exc.NotFound)
+ dns_waiters.wait_for_zone_status(
+ cls.zone_client, cls.zone['id'], 'ACTIVE')
+
cls.network = cls.create_network(dns_domain=dns_domain_template)
cls.subnet = cls.create_subnet(cls.network,
dns_publish_fixed_ip=True)
@@ -334,20 +309,6 @@
cls.create_router_interface(cls.router['id'], cls.subnet['id'])
cls.keypair = cls.create_keypair()
- @classmethod
- def resource_cleanup(cls):
- super(BaseDNSIntegrationTests, cls).resource_cleanup()
- admin_listed_zones = cls.admin_zone_client.list_zones(
- headers=dns_base.BaseDnsV2Test.all_projects_header)[1]['zones']
- neutron_zone_ids = [
- zn['id'] for zn in admin_listed_zones if
- 'zone for reverse lookups set up by Neutron.' in
- str(zn['description']) and cls.zone_name.strip('.') in zn['email']]
- for id in neutron_zone_ids:
- cls.admin_zone_client.delete_zone(
- id, headers=dns_base.BaseDnsV2Test.all_projects_header,
- ignore_errors=lib_exc.NotFound)
-
@decorators.idempotent_id('43a67509-3161-4125-8f2c-0d4a67599721')
def test_port_with_dns_name(self):
name = data_utils.rand_name('port-test')
diff --git a/neutron_tempest_plugin/scenario/test_mtu.py b/neutron_tempest_plugin/scenario/test_mtu.py
index ea62fcf..99c5130 100644
--- a/neutron_tempest_plugin/scenario/test_mtu.py
+++ b/neutron_tempest_plugin/scenario/test_mtu.py
@@ -170,18 +170,12 @@
networks = []
@classmethod
- def skip_checks(cls):
- super(NetworkWritableMtuTest, cls).skip_checks()
- supported_type_drivers = ['vxlan', 'geneve']
- if not any(type_driver in supported_type_drivers for type_driver in
- config.CONF.neutron_plugin_options.available_type_drivers):
- raise cls.skipException(
- "Neither VXLAN nor GENEVE type_driver is enabled")
-
- @classmethod
@utils.requires_ext(extension="net-mtu-writable", service="network")
def resource_setup(cls):
super(NetworkWritableMtuTest, cls).resource_setup()
+ if cls.is_driver_ovn:
+ raise cls.skipException("East/west icmp fragmentation is not "
+ "supported with ML2/OVN")
def _create_setup(self):
self.admin_client = self.os_admin.network_client
diff --git a/zuul.d/2023_1_jobs.yaml b/zuul.d/2023_1_jobs.yaml
index 4325b83..32e2c4c 100644
--- a/zuul.d/2023_1_jobs.yaml
+++ b/zuul.d/2023_1_jobs.yaml
@@ -210,10 +210,6 @@
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
- # TODO(jlibosva): Remove the NetworkWritableMtuTest test from the list
- # once east/west fragmentation is supported in core OVN
- tempest_exclude_regex: "\
- (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
devstack_localrc:
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_ovn) | join(',') }}"
devstack_services:
diff --git a/zuul.d/2023_2_jobs.yaml b/zuul.d/2023_2_jobs.yaml
index 7406440..7aa1642 100644
--- a/zuul.d/2023_2_jobs.yaml
+++ b/zuul.d/2023_2_jobs.yaml
@@ -205,10 +205,6 @@
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
- # TODO(jlibosva): Remove the NetworkWritableMtuTest test from the list
- # once east/west fragmentation is supported in core OVN
- tempest_exclude_regex: "\
- (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
devstack_localrc:
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_ovn) | join(',') }}"
devstack_services:
diff --git a/zuul.d/2024_1_jobs.yaml b/zuul.d/2024_1_jobs.yaml
index f0a182b..86fbc52 100644
--- a/zuul.d/2024_1_jobs.yaml
+++ b/zuul.d/2024_1_jobs.yaml
@@ -207,10 +207,6 @@
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
- # TODO(jlibosva): Remove the NetworkWritableMtuTest test from the list
- # once east/west fragmentation is supported in core OVN
- tempest_exclude_regex: "\
- (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
devstack_localrc:
NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_ovn) | join(',') }}"
devstack_local_conf:
diff --git a/zuul.d/master_jobs.yaml b/zuul.d/master_jobs.yaml
index b2e6c86..5518798 100644
--- a/zuul.d/master_jobs.yaml
+++ b/zuul.d/master_jobs.yaml
@@ -627,10 +627,6 @@
network_api_extensions_ovn:
- vlan-transparent
- external-gateway-multihoming
- # TODO(jlibosva): Remove the NetworkWritableMtuTest test from the list
- # once east/west fragmentation is supported in core OVN
- tempest_exclude_regex: "\
- (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
devstack_localrc:
Q_AGENT: ovn
OVN_AGENT_EXTENSIONS: 'metadata'
diff --git a/zuul.d/zed_jobs.yaml b/zuul.d/zed_jobs.yaml
index 176527d..54e9af5 100644
--- a/zuul.d/zed_jobs.yaml
+++ b/zuul.d/zed_jobs.yaml
@@ -186,8 +186,6 @@
(^neutron_tempest_plugin.scenario)|\
(^tempest.api.compute.servers.test_attach_interfaces)|\
(^tempest.api.compute.servers.test_multiple_create)"
- tempest_exclude_regex: "\
- (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
network_api_extensions: *api_extensions
network_api_extensions_ovn:
- vlan-transparent