diff --git a/octavia_tempest_plugin/common/decorators.py b/octavia_tempest_plugin/common/decorators.py
index b484497..15c3c17 100644
--- a/octavia_tempest_plugin/common/decorators.py
+++ b/octavia_tempest_plugin/common/decorators.py
@@ -52,3 +52,49 @@
                     message = e.resp_body.get('faultstring', message)
                 raise testtools.TestCase.skipException(message)
     return wrapper
+
+
+def retry_on_port_in_use(start_port, max_retries=3):
+    """Decorator to retry a test function if the specified port is in use.
+
+    This handles cases where a test fails due to a port conflict, typically
+    caused by another service binding the same port on the host. The decorator
+    catches '[Errno 98] Address already in use' errors and retries the test
+    using incrementally higher port numbers.
+
+    The decorated function must accept `port` as its first parameter.
+
+    :param start_port: Initial port to attempt.
+    :param max_retries: Number of retries with incremented port values.
+    """
+    def decorator(func):
+        @wraps(func)
+        def wrapper(self, *args, **kwargs):
+            port = start_port
+            last_exception = None
+
+            for _ in range(max_retries):
+                try:
+                    return func(self, port, *args, **kwargs)
+                except exceptions.NotImplemented as e:
+                    message = (
+                        "The configured provider driver '{driver}' does not "
+                        "support a feature required for this test.".format(
+                            driver=CONF.load_balancer.provider
+                        )
+                    )
+                    if hasattr(e, 'resp_body'):
+                        message = e.resp_body.get('faultstring', message)
+                    raise testtools.TestCase.skipException(message)
+
+                except Exception as e:
+                    if "Address already in use" in str(e):
+                        last_exception = e
+                        port += 1
+                    else:
+                        raise
+
+            raise Exception(f"All port attempts failed after {max_retries} "
+                            f"retries. Last error: {last_exception}")
+        return wrapper
+    return decorator
diff --git a/octavia_tempest_plugin/tests/api/v2/test_listener.py b/octavia_tempest_plugin/tests/api/v2/test_listener.py
index 46735a5..249c1ff 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_listener.py
@@ -245,14 +245,26 @@
     def test_http_listener_create(self):
         self._test_listener_create(const.HTTP, 8000)
 
+    @decorators.idempotent_id('4aaf06a4-a9e0-440d-9ff8-d4be13ddea96')
+    def test_http_listener_create_no_allowed_cidrs(self):
+        self._test_listener_create(const.HTTP, 8100, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('2cc89237-fc6b-434d-b38e-b3309823e71f')
     def test_https_listener_create(self):
         self._test_listener_create(const.HTTPS, 8001)
 
+    @decorators.idempotent_id('6085be5d-c49c-4275-87a9-2e256dc2ac9b')
+    def test_https_listener_create_no_allowed_cidrs(self):
+        self._test_listener_create(const.HTTPS, 8101, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('45580065-5653-436b-aaff-dc465fa0a542')
     def test_tcp_listener_create(self):
         self._test_listener_create(const.TCP, 8002)
 
+    @decorators.idempotent_id('f20ab493-d92f-4c86-a053-0d788efaec11')
+    def test_tcp_listener_create_no_allowed_cidrs(self):
+        self._test_listener_create(const.TCP, 8102, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('1a6ba0d0-f309-4088-a686-dda0e9ab7e43')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
@@ -264,6 +276,18 @@
                                      'on Octavia API version 2.25 or newer.')
         self._test_listener_create(const.PROMETHEUS, 8090)
 
+    @decorators.idempotent_id('bfa264ec-c7dc-487a-9437-cb19d7aec7a3')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
+        'PROMETHEUS listener tests are disabled in the tempest configuration.')
+    def test_prometheus_listener_create_no_allowed_cidrs(self):
+        if not self.mem_listener_client.is_version_supported(
+                self.api_version, '2.25'):
+            raise self.skipException('PROMETHEUS listeners are only available '
+                                     'on Octavia API version 2.25 or newer.')
+        self._test_listener_create(const.PROMETHEUS, 8190,
+                                   use_allowed_cidrs=False)
+
     @decorators.idempotent_id('df9861c5-4a2a-4122-8d8f-5556156e343e')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
@@ -276,15 +300,37 @@
                 ' require the either the barbican service,or running in noop.')
         self._test_listener_create(const.TERMINATED_HTTPS, 8095)
 
+    @decorators.idempotent_id('3f91e0f6-e223-48ad-8c6a-b5a608cc8bb3')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
+        '[loadbalancer-feature-enabled] "terminated_tls_enabled" is '
+        'False in the tempest configuration. TLS tests will be skipped.')
+    def test_terminated_https_listener_create_no_allowed_cidrs(self):
+        if not self.should_apply_terminated_https():
+            raise self.skipException(
+                f'Listener API tests with {const.TERMINATED_HTTPS} protocol'
+                ' require the either the barbican service,or running in noop.')
+        self._test_listener_create(const.TERMINATED_HTTPS, 8195,
+                                   use_allowed_cidrs=False)
+
     @decorators.idempotent_id('7b53f336-47bc-45ae-bbd7-4342ef0673fc')
     def test_udp_listener_create(self):
         self._test_listener_create(const.UDP, 8003)
 
+    @decorators.idempotent_id('214a837a-7173-46d9-a83b-a6e80f9295da')
+    def test_udp_listener_create_no_allowed_cidrs(self):
+        self._test_listener_create(const.UDP, 8103, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('d6d36c32-27ff-4977-9d21-fd71a14e3b20')
     def test_sctp_listener_create(self):
         self._test_listener_create(const.SCTP, 8004)
 
-    def _test_listener_create(self, protocol, protocol_port):
+    @decorators.idempotent_id('bc38ac9b-7241-4047-b5aa-815f11359cf2')
+    def test_sctp_listener_create_no_allowed_cidrs(self):
+        self._test_listener_create(const.SCTP, 8104, use_allowed_cidrs=False)
+
+    def _test_listener_create(self, protocol, protocol_port,
+                              use_allowed_cidrs=True):
         """Tests listener create and basic show APIs.
 
         * Tests that users without the loadbalancer member role cannot
@@ -345,7 +391,7 @@
             })
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             # Test that CIDR IP version matches VIP IP version
             bad_cidrs = ['192.0.1.0/24', '2001:db8:a0b:12f0::/64']
             listener_kwargs.update({const.ALLOWED_CIDRS: bad_cidrs})
@@ -448,7 +494,7 @@
                                   listener[const.TAGS])
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             self.assertEqual(self.allowed_cidrs, listener[const.ALLOWED_CIDRS])
 
     @decorators.idempotent_id('cceac303-4db5-4d5a-9f6e-ff33780a5f29')
@@ -679,10 +725,18 @@
     def test_http_listener_list(self):
         self._test_listener_list(const.HTTP, 8020)
 
+    @decorators.idempotent_id('3a753098-2b7c-43f9-b3f2-2be5576ec594')
+    def test_http_listener_list_no_allowed_cidrs(self):
+        self._test_listener_list(const.HTTP, 8120, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('61b7c643-f5fa-4471-8f9e-2e0ccdaf5ac7')
     def test_https_listener_list(self):
         self._test_listener_list(const.HTTPS, 8030)
 
+    @decorators.idempotent_id('e6c05d39-b76a-4245-83c2-0fc889e1e955')
+    def test_https_listener_list_no_allowed_cidrs(self):
+        self._test_listener_list(const.HTTPS, 8130, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('5473e071-8277-4ac5-9277-01ecaf46e274')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
@@ -694,18 +748,42 @@
                                      'on Octavia API version 2.25 or newer.')
         self._test_listener_list(const.PROMETHEUS, 8091)
 
+    @decorators.idempotent_id('71dd1ab0-b203-468e-9333-690847b848ee')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
+        'PROMETHEUS listener tests are disabled in the tempest configuration.')
+    def test_prometheus_listener_list_no_allowed_cidrs(self):
+        if not self.mem_listener_client.is_version_supported(
+                self.api_version, '2.25'):
+            raise self.skipException('PROMETHEUS listeners are only available '
+                                     'on Octavia API version 2.25 or newer.')
+        self._test_listener_list(const.PROMETHEUS, 8191,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('1cd476e2-7788-415e-bcaf-c377acfc9794')
     def test_tcp_listener_list(self):
         self._test_listener_list(const.TCP, 8030)
 
+    @decorators.idempotent_id('bdfe190e-6cee-46ae-a7cf-4acf617339df')
+    def test_tcp_listener_list_no_allowed_cidrs(self):
+        self._test_listener_list(const.TCP, 8130, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('c08fb77e-b317-4d6f-b430-91f5b27ebac6')
     def test_udp_listener_list(self):
         self._test_listener_list(const.UDP, 8040)
 
+    @decorators.idempotent_id('d2fbaf87-8441-4d66-a1c7-f9e2b246a419')
+    def test_udp_listener_list_no_allowed_cidrs(self):
+        self._test_listener_list(const.UDP, 8140, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('0abc3998-aacd-4edd-88f5-c5c35557646f')
     def test_sctp_listener_list(self):
         self._test_listener_list(const.SCTP, 8041)
 
+    @decorators.idempotent_id('b8a52d1a-97c9-4356-abe6-2ac9e90eed0c')
+    def test_sctp_listener_list_no_allowed_cidrs(self):
+        self._test_listener_list(const.SCTP, 8141, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('aed69f58-fe69-401d-bf07-37b0d6d8437f')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
@@ -718,7 +796,21 @@
                 ' require the either the barbican service,or running in noop.')
         self._test_listener_list(const.TERMINATED_HTTPS, 8042)
 
-    def _test_listener_list(self, protocol, protocol_port_base):
+    @decorators.idempotent_id('0f0b5021-245e-42bd-84d5-c089c2028cf5')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
+        '[loadbalancer-feature-enabled] "terminated_tls_enabled" is '
+        'False in the tempest configuration. TLS tests will be skipped.')
+    def test_terminated_https_listener_list_no_allowed_cidrs(self):
+        if not self.should_apply_terminated_https():
+            raise self.skipException(
+                f'Listener API tests with {const.TERMINATED_HTTPS} protocol'
+                ' require the either the barbican service,or running in noop.')
+        self._test_listener_list(const.TERMINATED_HTTPS, 8142,
+                                 use_allowed_cidrs=False)
+
+    def _test_listener_list(self, protocol, protocol_port_base,
+                            use_allowed_cidrs=True):
         """Tests listener list API and field filtering.
 
         * Create a clean loadbalancer.
@@ -1010,7 +1102,7 @@
             show_listener_response_fields.append('timeout_member_data')
             show_listener_response_fields.append('timeout_tcp_inspect')
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             show_listener_response_fields.append('allowed_cidrs')
         if self.mem_listener_client.is_version_supported(
                 self.api_version, '2.27'):
@@ -1098,10 +1190,18 @@
     def test_http_listener_show(self):
         self._test_listener_show(const.HTTP, 8050)
 
+    @decorators.idempotent_id('f852a76d-f41c-48e4-9c73-6f99d49af581')
+    def test_http_listener_show_no_allowed_cidrs(self):
+        self._test_listener_show(const.HTTP, 8150, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('aa838646-435f-4a20-8442-519a7a138e7e')
     def test_https_listener_show(self):
         self._test_listener_show(const.HTTPS, 8051)
 
+    @decorators.idempotent_id('00ff83ca-e286-4080-b9ec-850979e676bb')
+    def test_https_listener_show_no_allowed_cidrs(self):
+        self._test_listener_show(const.HTTPS, 8151, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('b851b754-4333-4115-9063-a9fce44c2e46')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
@@ -1113,18 +1213,42 @@
                                      'on Octavia API version 2.25 or newer.')
         self._test_listener_show(const.PROMETHEUS, 8092)
 
+    @decorators.idempotent_id('6fd0c3ae-d091-4c45-aa72-447581ec7939')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
+        'PROMETHEUS listener tests are disabled in the tempest configuration.')
+    def test_prometheus_listener_show_no_allowed_cidrs(self):
+        if not self.mem_listener_client.is_version_supported(
+                self.api_version, '2.25'):
+            raise self.skipException('PROMETHEUS listeners are only available '
+                                     'on Octavia API version 2.25 or newer.')
+        self._test_listener_show(const.PROMETHEUS, 8192,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('1fcbbee2-b697-4890-b6bf-d308ac1c94cd')
     def test_tcp_listener_show(self):
         self._test_listener_show(const.TCP, 8052)
 
+    @decorators.idempotent_id('916d36b8-9211-4a4f-aa84-3ed38477afd3')
+    def test_tcp_listener_show_no_allowed_cidrs(self):
+        self._test_listener_show(const.TCP, 8152, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('1dea3a6b-c95b-4e91-b591-1aa9cbcd0d1d')
     def test_udp_listener_show(self):
         self._test_listener_show(const.UDP, 8053)
 
+    @decorators.idempotent_id('38201807-28d0-4e29-9796-58db3280484f')
+    def test_udp_listener_show_no_allowed_cidrs(self):
+        self._test_listener_show(const.UDP, 8153, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('10992529-1d0a-47a3-855c-3dbcd868db4e')
     def test_sctp_listener_show(self):
         self._test_listener_show(const.SCTP, 8054)
 
+    @decorators.idempotent_id('6755f564-c8b1-40a1-8514-4893feb6e54d')
+    def test_sctp_listener_show_no_allowed_cidrs(self):
+        self._test_listener_show(const.SCTP, 8154, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('2c2e7146-0efc-44b6-8401-f1c69c2422fe')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
@@ -1137,7 +1261,21 @@
                 ' require the either the barbican service,or running in noop.')
         self._test_listener_show(const.TERMINATED_HTTPS, 8055)
 
-    def _test_listener_show(self, protocol, protocol_port):
+    @decorators.idempotent_id('9d7bd568-cc8b-49fe-bfed-f612944bd489')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
+        '[loadbalancer-feature-enabled] "terminated_tls_enabled" is '
+        'False in the tempest configuration. TLS tests will be skipped.')
+    def test_terminated_https_listener_show_no_allowed_cidrs(self):
+        if not self.should_apply_terminated_https():
+            raise self.skipException(
+                f'Listener API tests with {const.TERMINATED_HTTPS} protocol'
+                ' require the either the barbican service,or running in noop.')
+        self._test_listener_show(const.TERMINATED_HTTPS, 8155,
+                                 use_allowed_cidrs=False)
+
+    def _test_listener_show(self, protocol, protocol_port,
+                            use_allowed_cidrs=True):
         """Tests listener show API.
 
         * Create a fully populated listener.
@@ -1199,7 +1337,7 @@
             })
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             listener_kwargs.update({const.ALLOWED_CIDRS: self.allowed_cidrs})
 
         listener = self.mem_listener_client.create_listener(**listener_kwargs)
@@ -1274,7 +1412,7 @@
             self.assertEqual(const.ONLINE, listener[const.OPERATING_STATUS])
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             self.assertEqual(self.allowed_cidrs, listener[const.ALLOWED_CIDRS])
 
         if hsts_supported:
@@ -1299,10 +1437,18 @@
     def test_http_listener_update(self):
         self._test_listener_update(const.HTTP, 8060)
 
+    @decorators.idempotent_id('8ee610b6-af92-4a59-8332-370b4d529250')
+    def test_http_listener_update_no_allowed_cidrs(self):
+        self._test_listener_update(const.HTTP, 8160, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('9679b061-2b2c-469f-abd9-26ed140ef001')
     def test_https_listener_update(self):
         self._test_listener_update(const.HTTPS, 8061)
 
+    @decorators.idempotent_id('cae9f1e2-c395-427a-a150-26ef864d6e83')
+    def test_https_listener_update_no_allowed_cidrs(self):
+        self._test_listener_update(const.HTTPS, 8161, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('cbba6bf8-9184-4da5-95e9-5efe1f89ddf0')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
@@ -1314,18 +1460,42 @@
                                      'on Octavia API version 2.25 or newer.')
         self._test_listener_update(const.PROMETHEUS, 8093)
 
+    @decorators.idempotent_id('cbc8ffa9-750f-4050-938a-555594f76916')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.prometheus_listener_enabled,
+        'PROMETHEUS listener tests are disabled in the tempest configuration.')
+    def test_prometheus_listener_update_no_allowed_cidrs(self):
+        if not self.mem_listener_client.is_version_supported(
+                self.api_version, '2.25'):
+            raise self.skipException('PROMETHEUS listeners are only available '
+                                     'on Octavia API version 2.25 or newer.')
+        self._test_listener_update(const.PROMETHEUS, 8193,
+                                   use_allowed_cidrs=False)
+
     @decorators.idempotent_id('8d933121-db03-4ccc-8b77-4e879064a9ba')
     def test_tcp_listener_update(self):
         self._test_listener_update(const.TCP, 8062)
 
+    @decorators.idempotent_id('64b20147-59f0-4ce5-9390-d03767ae12c4')
+    def test_tcp_listener_update_no_allowed_cidrs(self):
+        self._test_listener_update(const.TCP, 8162, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('fd02dbfd-39ce-41c2-b181-54fc7ad91707')
     def test_udp_listener_update(self):
         self._test_listener_update(const.UDP, 8063)
 
+    @decorators.idempotent_id('1cf09eeb-c983-4dd6-b5d3-d36fb61830b2')
+    def test_udp_listener_update_no_allowed_cidrs(self):
+        self._test_listener_update(const.UDP, 8163, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('c590b485-4e08-4e49-b384-2282b3f6f1b9')
     def test_sctp_listener_update(self):
         self._test_listener_update(const.SCTP, 8064)
 
+    @decorators.idempotent_id('818d840a-c1e9-426b-92b9-c5131df2ba4f')
+    def test_sctp_listener_update_no_allowed_cidrs(self):
+        self._test_listener_update(const.SCTP, 8164, use_allowed_cidrs=False)
+
     @decorators.idempotent_id('2ae08e10-fbf8-46d8-a073-15f90454d718')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
@@ -1338,7 +1508,21 @@
                 ' require the either the barbican service,or running in noop.')
         self._test_listener_update(const.TERMINATED_HTTPS, 8065)
 
-    def _test_listener_update(self, protocol, protocol_port):
+    @decorators.idempotent_id('32e88736-6ba1-4d14-83ef-ebdb3e3950e4')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
+        '[loadbalancer-feature-enabled] "terminated_tls_enabled" is '
+        'False in the tempest configuration. TLS tests will be skipped.')
+    def test_terminated_https_listener_update_no_allowed_cidrs(self):
+        if not self.should_apply_terminated_https():
+            raise self.skipException(
+                f'Listener API tests with {const.TERMINATED_HTTPS} protocol'
+                ' require the either the barbican service,or running in noop.')
+        self._test_listener_update(const.TERMINATED_HTTPS, 8165,
+                                   use_allowed_cidrs=False)
+
+    def _test_listener_update(self, protocol, protocol_port,
+                              use_allowed_cidrs=True):
         """Tests listener update and show APIs.
 
         * Create a fully populated listener.
@@ -1398,7 +1582,7 @@
             })
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             listener_kwargs.update({const.ALLOWED_CIDRS: self.allowed_cidrs})
 
         listener = self.mem_listener_client.create_listener(**listener_kwargs)
@@ -1459,7 +1643,7 @@
                                   listener[const.TAGS])
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             self.assertEqual(self.allowed_cidrs, listener[const.ALLOWED_CIDRS])
 
         # Test that a user without the loadbalancer role cannot
@@ -1514,7 +1698,7 @@
             })
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             # Test that CIDR IP version matches VIP IP version
             bad_cidrs = ['192.0.2.0/24', '2001:db8::/6']
             listener_update_kwargs.update({const.ALLOWED_CIDRS: bad_cidrs})
@@ -1592,7 +1776,7 @@
                                   listener[const.TAGS])
 
         if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+                self.api_version, '2.12') and use_allowed_cidrs:
             expected_cidrs = ['192.0.2.0/24']
             if CONF.load_balancer.test_with_ipv6:
                 expected_cidrs = ['2001:db8::/64']
@@ -1716,22 +1900,47 @@
     def test_http_listener_show_stats(self):
         self._test_listener_show_stats(const.HTTP, 8080)
 
+    @decorators.idempotent_id('2a97a5f3-f05c-447c-80a7-326efcf31ab2')
+    def test_http_listener_show_stats_no_allowed_cidrs(self):
+        self._test_listener_show_stats(const.HTTP, 8180,
+                                       use_allowed_cidrs=False)
+
     @decorators.idempotent_id('f8a43c27-f0a0-496d-a287-1958f337ac04')
     def test_https_listener_show_stats(self):
         self._test_listener_show_stats(const.HTTPS, 8081)
 
+    @decorators.idempotent_id('9766962d-6819-4cb7-944a-899fef3fa241')
+    def test_https_listener_show_stats_no_allowed_cidrs(self):
+        self._test_listener_show_stats(const.HTTPS, 8181,
+                                       use_allowed_cidrs=False)
+
     @decorators.idempotent_id('8a999856-f448-498c-b891-21af449b5208')
     def test_tcp_listener_show_stats(self):
         self._test_listener_show_stats(const.TCP, 8082)
 
+    @decorators.idempotent_id('6afaea72-f4ed-4f15-a1c3-57ed16f12068')
+    def test_tcp_listener_show_stats_no_allowed_cidrs(self):
+        self._test_listener_show_stats(const.TCP, 8182,
+                                       use_allowed_cidrs=False)
+
     @decorators.idempotent_id('a4c1f199-923b-41e4-a134-c91e590e20c4')
     def test_udp_listener_show_stats(self):
         self._test_listener_show_stats(const.UDP, 8083)
 
+    @decorators.idempotent_id('45a120c4-9bd1-4032-ae5e-9b6458598b3d')
+    def test_udp_listener_show_stats_no_allowed_cidrs(self):
+        self._test_listener_show_stats(const.UDP, 8183,
+                                       use_allowed_cidrs=False)
+
     @decorators.idempotent_id('7f6d3906-529c-4b99-8376-b836059df220')
     def test_sctp_listener_show_stats(self):
         self._test_listener_show_stats(const.SCTP, 8084)
 
+    @decorators.idempotent_id('460f2308-9411-4ab2-9b9e-23fe87c9dec3')
+    def test_sctp_listener_show_stats_no_allowed_cidrs(self):
+        self._test_listener_show_stats(const.SCTP, 8184,
+                                       use_allowed_cidrs=False)
+
     @decorators.idempotent_id('c39c996f-9633-4d81-a5f1-e94643f0c650')
     @testtools.skipUnless(
         CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
@@ -1744,7 +1953,21 @@
                 ' require the either the barbican service,or running in noop.')
         self._test_listener_show_stats(const.TERMINATED_HTTPS, 8085)
 
-    def _test_listener_show_stats(self, protocol, protocol_port):
+    @decorators.idempotent_id('a402f84c-a29e-4e24-8ef6-f7eb8b0ffc46')
+    @testtools.skipUnless(
+        CONF.loadbalancer_feature_enabled.terminated_tls_enabled,
+        '[loadbalancer-feature-enabled] "terminated_tls_enabled" is '
+        'False in the tempest configuration. TLS tests will be skipped.')
+    def test_terminated_https_listener_show_stats_no_allowed_cidrs(self):
+        if not self.should_apply_terminated_https():
+            raise self.skipException(
+                f'Listener API tests with {const.TERMINATED_HTTPS} protocol'
+                ' require the either the barbican service,or running in noop.')
+        self._test_listener_show_stats(const.TERMINATED_HTTPS, 8085,
+                                       use_allowed_cidrs=False)
+
+    def _test_listener_show_stats(self, protocol, protocol_port,
+                                  use_allowed_cidrs=True):
         """Tests listener show statistics API.
 
         * Create a listener.
@@ -1776,6 +1999,10 @@
                                            self.SNI2_secret_ref],
             })
 
+        if self.mem_listener_client.is_version_supported(
+                self.api_version, '2.12') and use_allowed_cidrs:
+            listener_kwargs.update({const.ALLOWED_CIDRS: self.allowed_cidrs})
+
         listener = self.mem_listener_client.create_listener(**listener_kwargs)
         self.addCleanup(
             self.mem_listener_client.cleanup_listener,
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
index be997aa..74514f2 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_listener.py
@@ -118,54 +118,117 @@
                                           const.LB_ALGORITHM_LEAST_CONNECTIONS)
         self._test_listener_CRUD(const.HTTP, pool1, pool2)
 
+    @decorators.idempotent_id('d6d729ba-b03f-496c-8e0f-53704cd4994d')
+    def test_http_least_connections_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.HTTP,
+                                          const.LB_ALGORITHM_LEAST_CONNECTIONS)
+        self._test_listener_CRUD(const.HTTP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('0681b2ac-8301-4e6c-bf29-b35244864af3')
     def test_tcp_least_connections_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.TCP,
                                           const.LB_ALGORITHM_LEAST_CONNECTIONS)
         self._test_listener_CRUD(const.TCP, pool1, pool2)
 
+    @decorators.idempotent_id('10c5ecc8-533d-403c-9eb1-e3ca83586781')
+    def test_tcp_least_connections_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.TCP,
+                                          const.LB_ALGORITHM_LEAST_CONNECTIONS)
+        self._test_listener_CRUD(const.TCP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('27a2ba7d-6147-46e4-886a-47c1ba63bf89')
     def test_udp_least_connections_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.UDP,
                                           const.LB_ALGORITHM_LEAST_CONNECTIONS)
         self._test_listener_CRUD(const.UDP, pool1, pool2)
 
+    @decorators.idempotent_id('76776488-b38d-418e-9804-e0be4a443b51')
+    def test_udp_least_connections_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.UDP,
+                                          const.LB_ALGORITHM_LEAST_CONNECTIONS)
+        self._test_listener_CRUD(const.UDP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('4a874014-b7d1-49a4-ac9a-2400b3434700')
     def test_http_round_robin_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.HTTP,
                                           const.LB_ALGORITHM_ROUND_ROBIN)
         self._test_listener_CRUD(const.HTTP, pool1, pool2)
 
+    @decorators.idempotent_id('a2d8e2ca-5104-41b0-b011-819782e01054')
+    def test_http_round_robin_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.HTTP,
+                                          const.LB_ALGORITHM_ROUND_ROBIN)
+        self._test_listener_CRUD(const.HTTP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('2b888812-d916-44f0-b620-8d83dbb45975')
     def test_tcp_round_robin_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.TCP,
                                           const.LB_ALGORITHM_ROUND_ROBIN)
         self._test_listener_CRUD(const.TCP, pool1, pool2)
 
+    @decorators.idempotent_id('1b2bfce6-29f9-4af6-87f2-329654c03c3d')
+    def test_tcp_round_robin_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.TCP,
+                                          const.LB_ALGORITHM_ROUND_ROBIN)
+        self._test_listener_CRUD(const.TCP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('dd913f74-c6a6-4998-9bed-095babb9cb47')
     def test_udp_round_robin_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.UDP,
                                           const.LB_ALGORITHM_ROUND_ROBIN)
         self._test_listener_CRUD(const.UDP, pool1, pool2)
 
+    @decorators.idempotent_id('4a938409-eb79-4a9b-b003-44115153163d')
+    def test_udp_round_robin_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.UDP,
+                                          const.LB_ALGORITHM_ROUND_ROBIN)
+        self._test_listener_CRUD(const.UDP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('b2ae8604-7a4f-477c-9658-fac27734671a')
     def test_http_source_ip_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.HTTP,
                                           const.LB_ALGORITHM_SOURCE_IP)
         self._test_listener_CRUD(const.HTTP, pool1, pool2)
 
+    @decorators.idempotent_id('baa747b1-0b3c-4f56-a1d1-b5550ec69c6e')
+    def test_http_source_ip_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.HTTP,
+                                          const.LB_ALGORITHM_SOURCE_IP)
+        self._test_listener_CRUD(const.HTTP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('0ad3fdee-e8c2-4c44-9690-b8a838fbc7a5')
     def test_tcp_source_ip_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.TCP,
                                           const.LB_ALGORITHM_SOURCE_IP)
         self._test_listener_CRUD(const.TCP, pool1, pool2)
 
+    @decorators.idempotent_id('3778e729-8c5b-4634-876a-8bacba0976c2')
+    def test_tcp_source_ip_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.TCP,
+                                          const.LB_ALGORITHM_SOURCE_IP)
+        self._test_listener_CRUD(const.TCP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('7830aba8-12ca-40d9-9d9b-a63f7a43b287')
     def test_udp_source_ip_listener_CRUD(self):
         pool1, pool2 = self._create_pools(const.UDP,
                                           const.LB_ALGORITHM_SOURCE_IP)
         self._test_listener_CRUD(const.UDP, pool1, pool2)
 
+    @decorators.idempotent_id('8d98b27b-f775-4f1b-8b74-88ec2e60e39f')
+    def test_udp_source_ip_listener_CRUD_no_allowed_cidrs(self):
+        pool1, pool2 = self._create_pools(const.UDP,
+                                          const.LB_ALGORITHM_SOURCE_IP)
+        self._test_listener_CRUD(const.UDP, pool1, pool2,
+                                 use_allowed_cidrs=False)
+
     @decorators.idempotent_id('807a421e-5e99-4556-b0eb-512d39b25eac')
     def test_http_source_ip_port_listener_CRUD(self):
         try:
@@ -180,6 +243,21 @@
                 message = e.resp_body.get('faultstring', message)
             raise testtools.TestCase.skipException(message)
 
+    @decorators.idempotent_id('1d522a51-4fa0-4b8e-9f72-292e0f145bf1')
+    def test_http_source_ip_port_listener_CRUD_no_allowed_cidrs(self):
+        try:
+            pool1, pool2 = self._create_pools(
+                const.HTTP, const.LB_ALGORITHM_SOURCE_IP_PORT)
+            self._test_listener_CRUD(const.HTTP, pool1, pool2,
+                                     use_allowed_cidrs=False)
+        except exceptions.NotImplemented as e:
+            message = ("The configured provider driver '{driver}' "
+                       "does not support a feature required for this "
+                       "test.".format(driver=CONF.load_balancer.provider))
+            if hasattr(e, 'resp_body'):
+                message = e.resp_body.get('faultstring', message)
+            raise testtools.TestCase.skipException(message)
+
     @decorators.idempotent_id('6211f8ad-622d-404d-b199-8c2eb55ab340')
     def test_tcp_source_ip_port_listener_CRUD(self):
         try:
@@ -194,6 +272,21 @@
                 message = e.resp_body.get('faultstring', message)
             raise testtools.TestCase.skipException(message)
 
+    @decorators.idempotent_id('a66d32f9-2186-437e-a145-139f5a1b0786')
+    def test_tcp_source_ip_port_listener_CRUD_no_allowed_cidrs(self):
+        try:
+            pool1, pool2 = self._create_pools(
+                const.TCP, const.LB_ALGORITHM_SOURCE_IP_PORT)
+            self._test_listener_CRUD(const.TCP, pool1, pool2,
+                                     use_allowed_cidrs=False)
+        except exceptions.NotImplemented as e:
+            message = ("The configured provider driver '{driver}' "
+                       "does not support a feature required for this "
+                       "test.".format(driver=CONF.load_balancer.provider))
+            if hasattr(e, 'resp_body'):
+                message = e.resp_body.get('faultstring', message)
+            raise testtools.TestCase.skipException(message)
+
     @decorators.idempotent_id('3f9a2de9-5012-437d-a907-a25e1f68ccfb')
     def test_udp_source_ip_port_listener_CRUD(self):
         try:
@@ -208,7 +301,23 @@
                 message = e.resp_body.get('faultstring', message)
             raise testtools.TestCase.skipException(message)
 
-    def _test_listener_CRUD(self, protocol, pool1_id, pool2_id):
+    @decorators.idempotent_id('dff6d829-9122-47cb-9ce5-f2def7fcf902')
+    def test_udp_source_ip_port_listener_CRUD_no_allowed_cidrs(self):
+        try:
+            pool1, pool2 = self._create_pools(
+                const.UDP, const.LB_ALGORITHM_SOURCE_IP_PORT)
+            self._test_listener_CRUD(const.UDP, pool1, pool2,
+                                     use_allowed_cidrs=False)
+        except exceptions.NotImplemented as e:
+            message = ("The configured provider driver '{driver}' "
+                       "does not support a feature required for this "
+                       "test.".format(driver=CONF.load_balancer.provider))
+            if hasattr(e, 'resp_body'):
+                message = e.resp_body.get('faultstring', message)
+            raise testtools.TestCase.skipException(message)
+
+    def _test_listener_CRUD(self, protocol, pool1_id, pool2_id,
+                            use_allowed_cidrs=True):
         """Tests listener create, read, update, delete
 
         * Create a fully populated listener.
@@ -249,8 +358,9 @@
                 const.TIMEOUT_MEMBER_DATA: 1000,
                 const.TIMEOUT_TCP_INSPECT: 50,
             })
-        if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+        if (use_allowed_cidrs and
+                self.mem_listener_client.is_version_supported(
+                    self.api_version, '2.12')):
             listener_kwargs.update({const.ALLOWED_CIDRS: self.allowed_cidrs})
 
         listener = self.mem_listener_client.create_listener(**listener_kwargs)
@@ -295,8 +405,9 @@
             self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_CONNECT])
             self.assertEqual(1000, listener[const.TIMEOUT_MEMBER_DATA])
             self.assertEqual(50, listener[const.TIMEOUT_TCP_INSPECT])
-        if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+        if (use_allowed_cidrs and
+                self.mem_listener_client.is_version_supported(
+                    self.api_version, '2.12')):
             self.assertEqual(self.allowed_cidrs, listener[const.ALLOWED_CIDRS])
 
         # Listener update
@@ -328,9 +439,9 @@
                 const.TIMEOUT_MEMBER_DATA: 2000,
                 const.TIMEOUT_TCP_INSPECT: 100,
             })
-
-        if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+        if (use_allowed_cidrs and
+                self.mem_listener_client.is_version_supported(
+                    self.api_version, '2.12')):
             new_cidrs = ['192.0.2.0/24']
             if CONF.load_balancer.test_with_ipv6:
                 new_cidrs = ['2001:db8::/64']
@@ -382,8 +493,9 @@
             self.assertEqual(2000, listener[const.TIMEOUT_MEMBER_CONNECT])
             self.assertEqual(2000, listener[const.TIMEOUT_MEMBER_DATA])
             self.assertEqual(100, listener[const.TIMEOUT_TCP_INSPECT])
-        if self.mem_listener_client.is_version_supported(
-                self.api_version, '2.12'):
+        if (use_allowed_cidrs and
+                self.mem_listener_client.is_version_supported(
+                    self.api_version, '2.12')):
             expected_cidrs = ['192.0.2.0/24']
             if CONF.load_balancer.test_with_ipv6:
                 expected_cidrs = ['2001:db8::/64']
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
index db92352..9cf77ac 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_traffic_ops.py
@@ -27,6 +27,7 @@
 from tempest.lib import exceptions
 
 from octavia_tempest_plugin.common import constants as const
+from octavia_tempest_plugin.common.decorators import retry_on_port_in_use
 from octavia_tempest_plugin.tests import test_base
 from octavia_tempest_plugin.tests import waiters
 
@@ -912,17 +913,18 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('a446585b-5651-40ce-a4db-cb2ab4d37c03')
-    def test_source_ip_port_http_traffic(self):
+    @retry_on_port_in_use(start_port=60091)
+    def test_source_ip_port_http_traffic(self, port):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
         # handle this test case special.
         try:
             pool_id = self._listener_pool_create(
-                const.HTTP, 60091,
+                const.HTTP, port,
                 pool_algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)[1]
             self._test_basic_traffic(
-                const.HTTP, 60091, pool_id,
-                traffic_member_count=1, persistent=False, source_port=60091)
+                const.HTTP, port, pool_id,
+                traffic_member_count=1, persistent=False, source_port=port)
         except exceptions.NotImplemented as e:
             message = ("The configured provider driver '{driver}' "
                        "does not support a feature required for this "
@@ -934,19 +936,20 @@
     @testtools.skipIf(CONF.load_balancer.test_with_noop,
                       'Traffic tests will not work in noop mode.')
     @decorators.idempotent_id('60108f30-d870-487c-ab96-8d8a9b587b94')
-    def test_source_ip_port_tcp_traffic(self):
+    @retry_on_port_in_use(start_port=60092)
+    def test_source_ip_port_tcp_traffic(self, port):
         # This is a special case as the reference driver does not support
         # this test. Since it runs with not_implemented_is_error, we must
         # handle this test case special.
         try:
             listener_id, pool_id = self._listener_pool_create(
-                const.TCP, 60092,
+                const.TCP, port,
                 pool_algorithm=const.LB_ALGORITHM_SOURCE_IP_PORT)
             # Without a delay this can trigger a "Cannot assign requested
             # address" warning setting the source port, leading to failure
             self._test_basic_traffic(
-                const.TCP, 60092, pool_id, traffic_member_count=1,
-                persistent=False, source_port=60092, delay=0.2)
+                const.TCP, port, pool_id, traffic_member_count=1,
+                persistent=False, source_port=port, delay=0.2)
         except exceptions.NotImplemented as e:
             message = ("The configured provider driver '{driver}' "
                        "does not support a feature required for this "
diff --git a/octavia_tempest_plugin/tests/validators.py b/octavia_tempest_plugin/tests/validators.py
index 5ff7bd5..57ba2e2 100644
--- a/octavia_tempest_plugin/tests/validators.py
+++ b/octavia_tempest_plugin/tests/validators.py
@@ -113,6 +113,8 @@
                     session.close()
                 raise
             except Exception as e:
+                if "[Errno 98] Address already in use" in str(e):
+                    raise e
                 LOG.info('Validate URL got exception: %s. '
                          'Retrying.', e)
                 time.sleep(request_interval)
@@ -410,8 +412,10 @@
                               response_counts)
                     time.sleep(1)
                     return
-            except Exception:
+            except Exception as e:
                 LOG.warning('Server is not passing initial traffic. Waiting.')
+                if "[Errno 98] Address already in use" in str(e):
+                    raise e
             time.sleep(request_interval)
 
         LOG.debug('Loadbalancer wait for load balancer response totals: %s',
diff --git a/tox.ini b/tox.ini
index d8c77d6..a4649bf 100644
--- a/tox.ini
+++ b/tox.ini
@@ -10,7 +10,7 @@
 setenv =
    VIRTUAL_ENV={envdir}
    PYTHONWARNINGS=default::DeprecationWarning
-deps = -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
        -r{toxinidir}/test-requirements.txt
 commands =
   stestr run {posargs}
@@ -43,7 +43,8 @@
 
 [testenv:docs]
 deps =
-    -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -r{toxinidir}/requirements.txt
     -r{toxinidir}/test-requirements.txt
     -r{toxinidir}/doc/requirements.txt
 allowlist_externals = rm
@@ -63,7 +64,7 @@
 
 [testenv:releasenotes]
 deps =
-    -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+    -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
     -r{toxinidir}/requirements.txt
     -r{toxinidir}/doc/requirements.txt
 commands =
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index b31247f..7669892 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -39,26 +39,6 @@
           - controller
 
 - nodeset:
-    name: octavia-single-node-centos-8
-    nodes:
-      - name: controller
-        label: nested-virt-centos-8
-    groups:
-      - name: tempest
-        nodes:
-          - controller
-
-- nodeset:
-    name: octavia-single-node-centos-8-stream
-    nodes:
-      - name: controller
-        label: nested-virt-centos-8-stream
-    groups:
-      - name: tempest
-        nodes:
-          - controller
-
-- nodeset:
     name: octavia-single-node-centos-9-stream
     nodes:
       - name: controller
@@ -140,13 +120,6 @@
               debug: True
       devstack_services:
         c-bak: false
-        ceilometer-acentral: false
-        ceilometer-acompute: false
-        ceilometer-alarm-evaluator: false
-        ceilometer-alarm-notifier: false
-        ceilometer-anotification: false
-        ceilometer-api: false
-        ceilometer-collector: false
         c-sch: false
         c-api: false
         c-vol: false
@@ -197,13 +170,6 @@
               debug: True
       devstack_services:
         c-bak: false
-        ceilometer-acentral: false
-        ceilometer-acompute: false
-        ceilometer-alarm-evaluator: false
-        ceilometer-alarm-notifier: false
-        ceilometer-anotification: false
-        ceilometer-api: false
-        ceilometer-collector: false
         c-sch: false
         c-api: false
         c-vol: false
@@ -577,18 +543,6 @@
               RBAC_test_type: advanced
 
 - job:
-    name: octavia-v2-dsvm-noop-api-stable-2023-2
-    parent: octavia-v2-dsvm-noop-api
-    nodeset: octavia-single-node-ubuntu-jammy
-    override-checkout: stable/2023.2
-    vars:
-      devstack_local_conf:
-        test-config:
-          "$TEMPEST_CONFIG":
-            load_balancer:
-              RBAC_test_type: advanced
-
-- job:
     name: octavia-v2-dsvm-scenario-base
     parent: octavia-dsvm-live-base
     vars:
@@ -619,14 +573,14 @@
     name: octavia-v2-dsvm-scenario
     parent: octavia-v2-dsvm-scenario-base
     branches:
-      regex: ^(unmaintained/|stable/(2023.2|2024.1|2024.2))
+      regex: ^(unmaintained/|stable/(2024.1|2024.2))
       negate: true
     nodeset: octavia-single-node-ubuntu-noble
 
 - job:
     name: octavia-v2-dsvm-scenario
     parent: octavia-v2-dsvm-scenario-base
-    branches: ^(stable/(2023.2|2024.1|2024.2))
+    branches: ^(stable/(2024.1|2024.2))
     nodeset: octavia-single-node-ubuntu-jammy
 
 - job:
@@ -741,30 +695,6 @@
     vars:
       tempest_test_regex: ^octavia_tempest_plugin.tests.scenario.v2.(?!.*traffic_ops)
 
-- job:
-    name: octavia-v2-dsvm-scenario-stable-2023-2
-    parent: octavia-v2-dsvm-scenario
-    nodeset: octavia-single-node-ubuntu-jammy
-    override-checkout: stable/2023.2
-    vars:
-      devstack_local_conf:
-        test-config:
-          "$TEMPEST_CONFIG":
-            load_balancer:
-              RBAC_test_type: advanced
-
-- job:
-    name: octavia-v2-dsvm-scenario-traffic-ops-stable-2023-2
-    parent: octavia-v2-dsvm-scenario-stable-2023-2
-    vars:
-      tempest_test_regex: ^octavia_tempest_plugin.tests.scenario.v2.*traffic_ops
-
-- job:
-    name: octavia-v2-dsvm-scenario-non-traffic-ops-stable-2023-2
-    parent: octavia-v2-dsvm-scenario-stable-2023-2
-    vars:
-      tempest_test_regex: ^octavia_tempest_plugin.tests.scenario.v2.(?!.*traffic_ops)
-
 # Legacy jobs for the transition to the act-stdby two node jobs
 - job:
     name: octavia-v2-dsvm-scenario-two-node
@@ -831,26 +761,6 @@
                 loadbalancer_topology: ACTIVE_STANDBY
 
 - job:
-    name: octavia-v2-dsvm-scenario-centos-8
-    parent: octavia-v2-dsvm-scenario
-    nodeset: octavia-single-node-centos-8
-    vars:
-      devstack_localrc:
-        OCTAVIA_AMP_BASE_OS: centos
-        OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID: 8
-        OCTAVIA_AMP_IMAGE_SIZE: 3
-
-- job:
-    name: octavia-v2-dsvm-scenario-centos-8-stream
-    parent: octavia-v2-dsvm-scenario
-    nodeset: octavia-single-node-centos-8-stream
-    vars:
-      devstack_localrc:
-        OCTAVIA_AMP_BASE_OS: centos
-        OCTAVIA_AMP_DISTRIBUTION_RELEASE_ID: 8-stream
-        OCTAVIA_AMP_IMAGE_SIZE: 3
-
-- job:
     name: octavia-v2-dsvm-scenario-centos-9-stream
     parent: octavia-v2-dsvm-scenario
     nodeset: octavia-single-node-centos-9-stream
@@ -952,14 +862,14 @@
     name: octavia-v2-dsvm-tls-barbican
     parent: octavia-v2-dsvm-tls-barbican-base
     branches:
-      regex: ^(unmaintained/|stable/(2023.2|2024.1|2024.2))
+      regex: ^(unmaintained/|stable/(2024.1|2024.2))
       negate: true
     nodeset: octavia-single-node-ubuntu-noble
 
 - job:
     name: octavia-v2-dsvm-tls-barbican
     parent: octavia-v2-dsvm-tls-barbican-base
-    branches: ^(stable/(2023.2|2024.1|2024.2))
+    branches: ^(stable/(2024.1|2024.2))
     nodeset: octavia-single-node-ubuntu-jammy
 
 - job:
@@ -993,18 +903,6 @@
               RBAC_test_type: advanced
 
 - job:
-    name: octavia-v2-dsvm-tls-barbican-stable-2023-2
-    parent: octavia-v2-dsvm-tls-barbican
-    nodeset: octavia-single-node-ubuntu-jammy
-    override-checkout: stable/2023.2
-    vars:
-      devstack_local_conf:
-        test-config:
-          "$TEMPEST_CONFIG":
-            load_balancer:
-              RBAC_test_type: advanced
-
-- job:
     name: octavia-v2-dsvm-spare-pool
     parent: octavia-v2-dsvm-scenario
     vars:
@@ -1050,13 +948,6 @@
               volume_size: 2
       devstack_services:
         c-bak: true
-        ceilometer-acentral: false
-        ceilometer-acompute: false
-        ceilometer-alarm-evaluator: false
-        ceilometer-alarm-notifier: false
-        ceilometer-anotification: false
-        ceilometer-api: false
-        ceilometer-collector: false
         c-sch: true
         c-api: true
         c-vol: true
@@ -1141,14 +1032,14 @@
     name: octavia-v2-act-stdby-dsvm-scenario
     parent: octavia-v2-act-stdby-dsvm-scenario-base
     branches:
-      regex: ^(unmaintained/|stable/(2023.2|2024.1|2024.2))
+      regex: ^(unmaintained/|stable/(2024.1|2024.2))
       negate: true
     nodeset: octavia-single-node-ubuntu-noble
 
 - job:
     name: octavia-v2-act-stdby-dsvm-scenario
     parent: octavia-v2-act-stdby-dsvm-scenario-base
-    branches: ^(stable/(2023.2|2024.1|2024.2))
+    branches: ^(stable/(2024.1|2024.2))
     nodeset: octavia-single-node-ubuntu-jammy
 
 - job:
@@ -1181,18 +1072,6 @@
             load_balancer:
               RBAC_test_type: advanced
 
-- job:
-    name: octavia-v2-act-stdby-dsvm-scenario-stable-2023-2
-    parent: octavia-v2-act-stdby-dsvm-scenario
-    nodeset: octavia-single-node-ubuntu-jammy
-    override-checkout: stable/2023.2
-    vars:
-      devstack_local_conf:
-        test-config:
-          "$TEMPEST_CONFIG":
-            load_balancer:
-              RBAC_test_type: advanced
-
 # Temporary job, remove once it is no longer used in octavia gates
 - job:
     name: octavia-v2-dsvm-noop-api-keystone-default-roles
@@ -1220,7 +1099,7 @@
     parent: ovn-octavia-provider-tempest-release
     description: Runs the neutron OVN provider driver for Octavia api test.
     voting: false
-    timeout: 5400
+    timeout: 7800
     attempts: 1
     tags: ovn-octavia-provider
     irrelevant-files:
@@ -1249,7 +1128,7 @@
     parent: ovn-octavia-provider-tempest-release
     description: Runs the neutron OVN provider driver for Octavia scenario test.
     voting: false
-    timeout: 5400
+    timeout: 7800
     attempts: 1
     tags: ovn-octavia-provider
     irrelevant-files:
@@ -1266,6 +1145,7 @@
       - ^octavia/volume/.*$
       - ^octavia/tests/.*$
     vars:
+      tempest_test_regex: ^octavia_tempest_plugin.tests.scenario.v2
       devstack_local_conf:
         test-config:
           "$TEMPEST_CONFIG":
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index 128da42..f42c4b1 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -12,7 +12,6 @@
         - octavia-v2-dsvm-noop-api-stable-2025-1
         - octavia-v2-dsvm-noop-api-stable-2024-2
         - octavia-v2-dsvm-noop-api-stable-2024-1
-        - octavia-v2-dsvm-noop-api-stable-2023-2
         - octavia-v2-dsvm-noop-api-advanced-rbac
         - octavia-v2-dsvm-scenario-traffic-ops
         - octavia-v2-dsvm-scenario-non-traffic-ops
@@ -22,13 +21,10 @@
         - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2024-2
         - octavia-v2-dsvm-scenario-traffic-ops-stable-2024-1
         - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2024-1
-        - octavia-v2-dsvm-scenario-traffic-ops-stable-2023-2
-        - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2023-2
         - octavia-v2-dsvm-tls-barbican
         - octavia-v2-dsvm-tls-barbican-stable-2025-1
         - octavia-v2-dsvm-tls-barbican-stable-2024-2
         - octavia-v2-dsvm-tls-barbican-stable-2024-1
-        - octavia-v2-dsvm-tls-barbican-stable-2023-2
         - octavia-v2-dsvm-scenario-ipv6-only:
             voting: false
         - octavia-v2-dsvm-scenario-centos-9-stream-traffic-ops:
@@ -49,8 +45,6 @@
             voting: false
         - octavia-v2-act-stdby-dsvm-scenario-stable-2024-1:
             voting: false
-        - octavia-v2-act-stdby-dsvm-scenario-stable-2023-2:
-            voting: false
         - octavia-v2-dsvm-cinder-amphora:
             voting: false
         # Third party provider jobs
@@ -66,7 +60,6 @@
         - octavia-v2-dsvm-noop-api-stable-2025-1
         - octavia-v2-dsvm-noop-api-stable-2024-2
         - octavia-v2-dsvm-noop-api-stable-2024-1
-        - octavia-v2-dsvm-noop-api-stable-2023-2
         - octavia-v2-dsvm-noop-api-advanced-rbac
         - octavia-v2-dsvm-scenario-traffic-ops
         - octavia-v2-dsvm-scenario-non-traffic-ops
@@ -76,10 +69,7 @@
         - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2024-2
         - octavia-v2-dsvm-scenario-traffic-ops-stable-2024-1
         - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2024-1
-        - octavia-v2-dsvm-scenario-traffic-ops-stable-2023-2
-        - octavia-v2-dsvm-scenario-non-traffic-ops-stable-2023-2
         - octavia-v2-dsvm-tls-barbican
         - octavia-v2-dsvm-tls-barbican-stable-2025-1
         - octavia-v2-dsvm-tls-barbican-stable-2024-2
         - octavia-v2-dsvm-tls-barbican-stable-2024-1
-        - octavia-v2-dsvm-tls-barbican-stable-2023-2
