diff --git a/octavia_tempest_plugin/config.py b/octavia_tempest_plugin/config.py
index 91aa2c4..701eb8e 100644
--- a/octavia_tempest_plugin/config.py
+++ b/octavia_tempest_plugin/config.py
@@ -31,19 +31,6 @@
                      "to be available."),
 ]
 
-# Pull in the service_available for barbican if it is not defined.
-# If the barbican tempest plugin isn't loaded, this won't load from
-# tempest.conf.
-try:
-    if cfg.CONF.service_available.barbican is not None:
-        LOG.info('Barbican service_available state: {}'.format(
-            cfg.CONF.service_available.barbican))
-except cfg.NoSuchOptError:
-    ServiceAvailableGroup.append(
-        cfg.BoolOpt('barbican', default=False,
-                    help="Whether or not the barbican service is expected to "
-                         "be available."))
-
 octavia_group = cfg.OptGroup(name='load_balancer',
                              title='load-balancer service options')
 
diff --git a/octavia_tempest_plugin/services/load_balancer/v2/amphora_client.py b/octavia_tempest_plugin/services/load_balancer/v2/amphora_client.py
index 54f280e..ce324cb 100644
--- a/octavia_tempest_plugin/services/load_balancer/v2/amphora_client.py
+++ b/octavia_tempest_plugin/services/load_balancer/v2/amphora_client.py
@@ -12,7 +12,7 @@
 #   License for the specific language governing permissions and limitations
 #   under the License.
 
-import json
+from oslo_serialization import jsonutils
 
 from tempest import config
 
@@ -154,6 +154,6 @@
         response, body = self.get(request_uri)
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))[self.stats_root_tag]
+            return jsonutils.loads(body.decode('utf-8'))[self.stats_root_tag]
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
diff --git a/octavia_tempest_plugin/services/load_balancer/v2/base_client.py b/octavia_tempest_plugin/services/load_balancer/v2/base_client.py
index 397c735..a3ad153 100644
--- a/octavia_tempest_plugin/services/load_balancer/v2/base_client.py
+++ b/octavia_tempest_plugin/services/load_balancer/v2/base_client.py
@@ -13,9 +13,8 @@
 #   under the License.
 #
 
-import json
-
 from oslo_log import log as logging
+from oslo_serialization import jsonutils
 from tempest import config
 from tempest.lib.common import rest_client
 from tempest.lib.common.utils import test_utils
@@ -99,12 +98,12 @@
         else:
             request_uri = self.uri
 
-        response, body = self.post(request_uri, json.dumps(obj_dict))
+        response, body = self.post(request_uri, jsonutils.dumps(obj_dict))
         self.expected_success(201, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))[self.root_tag]
+            return jsonutils.loads(body.decode('utf-8'))[self.root_tag]
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
 
     def _show_object(self, obj_id, parent_id=None, query_params=None,
                      return_object_only=True):
@@ -156,9 +155,9 @@
         response, body = self.get(request_uri)
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))[self.root_tag]
+            return jsonutils.loads(body.decode('utf-8'))[self.root_tag]
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
 
     def _list_objects(self, parent_id=None, query_params=None,
                       return_object_only=True):
@@ -208,9 +207,9 @@
         response, body = self.get(request_uri)
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))[self.list_root_tag]
+            return jsonutils.loads(body.decode('utf-8'))[self.list_root_tag]
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
 
     def _update_object(self, obj_id, parent_id=None, return_object_only=True,
                        **kwargs):
@@ -258,12 +257,12 @@
             uri = self.uri
 
         request_uri = '{0}/{1}'.format(uri, obj_id)
-        response, body = self.put(request_uri, json.dumps(obj_dict))
+        response, body = self.put(request_uri, jsonutils.dumps(obj_dict))
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))[self.root_tag]
+            return jsonutils.loads(body.decode('utf-8'))[self.root_tag]
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
 
     def _delete_obj(self, obj_id, parent_id=None, ignore_errors=False,
                     cascade=False):
@@ -365,7 +364,7 @@
         try:
             request_uri = '{0}/{1}'.format(uri, obj_id)
             response, body = self.get(request_uri)
-            resp_obj = json.loads(body.decode('utf-8'))[self.root_tag]
+            resp_obj = jsonutils.loads(body.decode('utf-8'))[self.root_tag]
             if (response.status == 404 or
                     resp_obj['provisioning_status'] == const.DELETED):
                 raise exceptions.NotFound()
@@ -447,7 +446,7 @@
         response, body = self.get('/')
         self.expected_success(200, response.status)
 
-        versions_list = json.loads(body.decode('utf-8'))['versions']
+        versions_list = jsonutils.loads(body.decode('utf-8'))['versions']
         current_versions = (version for version in versions_list if
                             version['status'] == 'CURRENT')
         max_version = '0.0'
diff --git a/octavia_tempest_plugin/services/load_balancer/v2/listener_client.py b/octavia_tempest_plugin/services/load_balancer/v2/listener_client.py
index 082f4b7..de84bd1 100644
--- a/octavia_tempest_plugin/services/load_balancer/v2/listener_client.py
+++ b/octavia_tempest_plugin/services/load_balancer/v2/listener_client.py
@@ -13,6 +13,8 @@
 #   under the License.
 #
 
+from oslo_serialization import jsonutils
+
 from tempest import config
 
 from octavia_tempest_plugin.services.load_balancer.v2 import base_client
@@ -291,3 +293,53 @@
         """
         return self._delete_obj(obj_id=listener_id,
                                 ignore_errors=ignore_errors)
+
+    def get_listener_stats(self, listener_id, query_params=None,
+                           return_object_only=True):
+        """Get listener statistics.
+
+        :param listener_id: The listener ID to query.
+        :param query_params: The optional query parameters to append to the
+                             request. Ex. fields=id&fields=name
+        :param return_object_only: If True, the response returns the object
+                                   inside the root tag. False returns the full
+                                   response from the API.
+        :raises AssertionError: if the expected_code isn't a valid http success
+                                response code
+        :raises BadRequest: If a 400 response code is received
+        :raises Conflict: If a 409 response code is received
+        :raises Forbidden: If a 403 response code is received
+        :raises Gone: If a 410 response code is received
+        :raises InvalidContentType: If a 415 response code is received
+        :raises InvalidHTTPResponseBody: The response body wasn't valid JSON
+        :raises InvalidHttpSuccessCode: if the read code isn't an expected
+                                        http success code
+        :raises NotFound: If a 404 response code is received
+        :raises NotImplemented: If a 501 response code is received
+        :raises OverLimit: If a 413 response code is received and over_limit is
+                           not in the response body
+        :raises RateLimitExceeded: If a 413 response code is received and
+                                   over_limit is in the response body
+        :raises ServerFault: If a 500 response code is received
+        :raises Unauthorized: If a 401 response code is received
+        :raises UnexpectedContentType: If the content-type of the response
+                                       isn't an expect type
+        :raises UnexpectedResponseCode: If a response code above 400 is
+                                        received and it doesn't fall into any
+                                        of the handled checks
+        :raises UnprocessableEntity: If a 422 response code is received and
+                                     couldn't be parsed
+        :returns: A listener statistics object.
+        """
+        if query_params:
+            request_uri = '{0}/{1}/stats?{2}'.format(self.uri, listener_id,
+                                                     query_params)
+        else:
+            request_uri = '{0}/{1}/stats'.format(self.uri, listener_id)
+
+        response, body = self.get(request_uri)
+        self.expected_success(200, response.status)
+        if return_object_only:
+            return jsonutils.loads(body.decode('utf-8'))['stats']
+        else:
+            return jsonutils.loads(body.decode('utf-8'))
diff --git a/octavia_tempest_plugin/services/load_balancer/v2/loadbalancer_client.py b/octavia_tempest_plugin/services/load_balancer/v2/loadbalancer_client.py
index 6ea83f0..9a287cf 100644
--- a/octavia_tempest_plugin/services/load_balancer/v2/loadbalancer_client.py
+++ b/octavia_tempest_plugin/services/load_balancer/v2/loadbalancer_client.py
@@ -13,7 +13,7 @@
 #   under the License.
 #
 
-import json
+from oslo_serialization import jsonutils
 
 from tempest import config
 
@@ -337,9 +337,9 @@
         response, body = self.get(request_uri)
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))['stats']
+            return jsonutils.loads(body.decode('utf-8'))['stats']
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
 
     def get_loadbalancer_status(self, lb_id, query_params=None,
                                 return_object_only=True):
@@ -387,6 +387,6 @@
         response, body = self.get(request_uri)
         self.expected_success(200, response.status)
         if return_object_only:
-            return json.loads(body.decode('utf-8'))['statuses']
+            return jsonutils.loads(body.decode('utf-8'))['statuses']
         else:
-            return json.loads(body.decode('utf-8'))
+            return jsonutils.loads(body.decode('utf-8'))
diff --git a/octavia_tempest_plugin/services/load_balancer/v2/member_client.py b/octavia_tempest_plugin/services/load_balancer/v2/member_client.py
index 3909ac2..63e836a 100644
--- a/octavia_tempest_plugin/services/load_balancer/v2/member_client.py
+++ b/octavia_tempest_plugin/services/load_balancer/v2/member_client.py
@@ -12,9 +12,8 @@
 #   License for the specific language governing permissions and limitations
 #   under the License.
 
-import json
-
 from oslo_log import log as logging
+from oslo_serialization import jsonutils
 from tempest import config
 
 from octavia_tempest_plugin.services.load_balancer.v2 import base_client
@@ -269,7 +268,7 @@
         obj_dict = {self.list_root_tag: members_list}
         request_uri = self.uri.format(parent=pool_id)
 
-        response, body = self.put(request_uri, json.dumps(obj_dict))
+        response, body = self.put(request_uri, jsonutils.dumps(obj_dict))
         self.expected_success(202, response.status)
         return
 
diff --git a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
index 4887995..5f560c4 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_healthmonitor.py
@@ -37,7 +37,7 @@
     def skip_checks(cls):
         super(HealthMonitorAPITest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.health_monitor_enabled:
-            cls.skip('Health Monitors not supported')
+            raise cls.skipException('Health Monitors not supported')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/api/v2/test_l7policy.py b/octavia_tempest_plugin/tests/api/v2/test_l7policy.py
index eeb22bf..ee559af 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_l7policy.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_l7policy.py
@@ -35,10 +35,10 @@
     def skip_checks(cls):
         super(L7PolicyAPITest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled:
-            cls.skipException('[loadbalancer-feature-enabled] '
-                              '"l7_protocol_enabled" is set to False in the '
-                              'Tempest configuration. L7 Scenario tests will '
-                              'be skipped.')
+            raise cls.skipException(
+                '[loadbalancer-feature-enabled] '
+                '"l7_protocol_enabled" is set to False in the Tempest '
+                'configuration. L7 API tests will be skipped.')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/api/v2/test_l7rule.py b/octavia_tempest_plugin/tests/api/v2/test_l7rule.py
index a75b157..7fed40c 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_l7rule.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_l7rule.py
@@ -34,10 +34,10 @@
     def skip_checks(cls):
         super(L7RuleAPITest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled:
-            cls.skipException('[loadbalancer-feature-enabled]'
-                              ' "l7_protocol_enabled" is set to False in the'
-                              ' Tempest configuration.L7 Scenario tests would'
-                              ' be skipped.')
+            raise cls.skipException(
+                '[loadbalancer-feature-enabled] '
+                '"l7_protocol_enabled" is set to False in the Tempest '
+                'configuration. L7 API tests will be skipped.')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/api/v2/test_listener.py b/octavia_tempest_plugin/tests/api/v2/test_listener.py
index 928ecfb..599305a 100644
--- a/octavia_tempest_plugin/tests/api/v2/test_listener.py
+++ b/octavia_tempest_plugin/tests/api/v2/test_listener.py
@@ -768,3 +768,76 @@
             const.ACTIVE,
             CONF.load_balancer.check_interval,
             CONF.load_balancer.check_timeout)
+
+    @decorators.idempotent_id('6f14a6c1-945e-43bc-8215-410c8a5edb25')
+    def test_listener_show_stats(self):
+        """Tests listener show statistics API.
+
+        * Create a listener.
+        * Validates that other accounts cannot see the stats for the
+        *   listener.
+        * Show listener statistics.
+        * Validate the show reflects the expected values.
+        """
+        listener_name = data_utils.rand_name("lb_member_listener1-stats")
+        listener_description = data_utils.arbitrary_string(size=255)
+
+        listener_kwargs = {
+            const.NAME: listener_name,
+            const.DESCRIPTION: listener_description,
+            const.ADMIN_STATE_UP: True,
+            const.PROTOCOL: const.HTTP,
+            const.PROTOCOL_PORT: 84,
+            const.LOADBALANCER_ID: self.lb_id,
+            const.CONNECTION_LIMIT: 200,
+        }
+
+        listener = self.mem_listener_client.create_listener(**listener_kwargs)
+        self.addCleanup(
+            self.mem_listener_client.cleanup_listener,
+            listener[const.ID],
+            lb_client=self.mem_lb_client, lb_id=self.lb_id)
+
+        waiters.wait_for_status(
+            self.mem_lb_client.show_loadbalancer, self.lb_id,
+            const.PROVISIONING_STATUS, const.ACTIVE,
+            CONF.load_balancer.build_interval,
+            CONF.load_balancer.build_timeout)
+        listener = waiters.wait_for_status(
+            self.mem_listener_client.show_listener,
+            listener[const.ID], const.PROVISIONING_STATUS,
+            const.ACTIVE,
+            CONF.load_balancer.build_interval,
+            CONF.load_balancer.build_timeout)
+        if not CONF.load_balancer.test_with_noop:
+            listener = waiters.wait_for_status(
+                self.mem_listener_client.show_listener,
+                listener[const.ID], const.OPERATING_STATUS,
+                const.ONLINE,
+                CONF.load_balancer.build_interval,
+                CONF.load_balancer.build_timeout)
+
+        # Test that a user, without the load balancer member role, cannot
+        # use this command
+        if CONF.load_balancer.RBAC_test_type == const.ADVANCED:
+            self.assertRaises(
+                exceptions.Forbidden,
+                self.os_primary.listener_client.get_listener_stats,
+                listener[const.ID])
+
+        # Test that a different user, with the load balancer role, cannot see
+        # the listener stats
+        if not CONF.load_balancer.RBAC_test_type == const.NONE:
+            member2_client = self.os_roles_lb_member2.listener_client
+            self.assertRaises(exceptions.Forbidden,
+                              member2_client.get_listener_stats,
+                              listener[const.ID])
+
+        stats = self.mem_listener_client.get_listener_stats(listener[const.ID])
+
+        self.assertEqual(5, len(stats))
+        self.assertEqual(0, stats[const.ACTIVE_CONNECTIONS])
+        self.assertEqual(0, stats[const.BYTES_IN])
+        self.assertEqual(0, stats[const.BYTES_OUT])
+        self.assertEqual(0, stats[const.REQUEST_ERRORS])
+        self.assertEqual(0, stats[const.TOTAL_CONNECTIONS])
diff --git a/octavia_tempest_plugin/tests/barbican_scenario/v2/test_tls_barbican.py b/octavia_tempest_plugin/tests/barbican_scenario/v2/test_tls_barbican.py
index 86dac04..27663b2 100644
--- a/octavia_tempest_plugin/tests/barbican_scenario/v2/test_tls_barbican.py
+++ b/octavia_tempest_plugin/tests/barbican_scenario/v2/test_tls_barbican.py
@@ -50,7 +50,7 @@
         if not CONF.validation.run_validation:
             raise cls.skipException('Traffic tests will not work without '
                                     'run_validation enabled.')
-        if not CONF.service_available.barbican:
+        if not getattr(CONF.service_available, 'barbican', False):
             raise cls.skipException('TLS with Barbican tests require the '
                                     'barbican service.')
 
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
index b2b1d18..e3b4036 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_healthmonitor.py
@@ -32,7 +32,7 @@
     def skip_checks(cls):
         super(HealthMonitorScenarioTest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.health_monitor_enabled:
-            cls.skip('Health Monitors not supported')
+            raise cls.skipException('Health Monitors not supported')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py b/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py
index c39a6c6..a38066c 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_l7policy.py
@@ -32,10 +32,10 @@
     def skip_checks(cls):
         super(L7PolicyScenarioTest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled:
-            cls.skipException('[loadbalancer-feature-enabled] '
-                              '"l7_protocol_enabled" is set to False in the '
-                              'Tempest configuration. L7 Scenario tests will '
-                              'be skipped.')
+            raise cls.skipException(
+                '[loadbalancer-feature-enabled] '
+                '"l7_protocol_enabled" is set to False in the Tempest '
+                'configuration. L7 Scenario tests will be skipped.')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py b/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py
index 5c322ab..1c147db 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_l7rule.py
@@ -32,10 +32,10 @@
     def skip_checks(cls):
         super(L7RuleScenarioTest, cls).skip_checks()
         if not CONF.loadbalancer_feature_enabled.l7_protocol_enabled:
-            cls.skipException('[loadbalancer-feature-enabled] '
-                              '"l7_protocol_enabled" is set to False in the '
-                              'Tempest configuration. L7 Scenario tests will '
-                              'be skipped.')
+            raise cls.skipException(
+                '[loadbalancer-feature-enabled] '
+                '"l7_protocol_enabled" is set to False in the Tempest '
+                'configuration. L7 Scenario tests will be skipped.')
 
     @classmethod
     def resource_setup(cls):
diff --git a/octavia_tempest_plugin/tests/scenario/v2/test_member.py b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
index d5c1b1b..488a7fd 100644
--- a/octavia_tempest_plugin/tests/scenario/v2/test_member.py
+++ b/octavia_tempest_plugin/tests/scenario/v2/test_member.py
@@ -53,7 +53,7 @@
         protocol = const.HTTP
         lb_feature_enabled = CONF.loadbalancer_feature_enabled
         if not lb_feature_enabled.l7_protocol_enabled:
-            cls.protocol = lb_feature_enabled.l4_protocol
+            protocol = lb_feature_enabled.l4_protocol
 
         listener_name = data_utils.rand_name("lb_member_listener1_member")
         listener_kwargs = {
@@ -125,7 +125,10 @@
         if self.lb_member_vip_subnet:
             member_kwargs[const.SUBNET_ID] = self.lb_member_vip_subnet[
                 const.ID]
-
+        hm_enabled = CONF.loadbalancer_feature_enabled.health_monitor_enabled
+        if not hm_enabled:
+            del member_kwargs[const.MONITOR_ADDRESS]
+            del member_kwargs[const.MONITOR_PORT]
         member = self.mem_member_client.create_member(**member_kwargs)
         self.addCleanup(
             self.mem_member_client.cleanup_member,
@@ -161,8 +164,9 @@
             pool_id=self.pool_id)
 
         equal_items = [const.NAME, const.ADMIN_STATE_UP, const.ADDRESS,
-                       const.PROTOCOL_PORT, const.WEIGHT,
-                       const.MONITOR_ADDRESS, const.MONITOR_PORT]
+                       const.PROTOCOL_PORT, const.WEIGHT]
+        if hm_enabled:
+            equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1'):
             equal_items.append(const.BACKUP)
@@ -182,8 +186,6 @@
             const.NAME: new_name,
             const.ADMIN_STATE_UP: not member[const.ADMIN_STATE_UP],
             const.WEIGHT: member[const.WEIGHT] + 1,
-            const.MONITOR_ADDRESS: '192.0.2.3',
-            const.MONITOR_PORT: member[const.MONITOR_PORT] + 1,
         }
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1'):
@@ -191,6 +193,10 @@
                 const.BACKUP: not member[const.BACKUP],
             })
 
+        if hm_enabled:
+            member_update_kwargs[const.MONITOR_ADDRESS] = '192.0.2.3'
+            member_update_kwargs[const.MONITOR_PORT] = member[
+                const.MONITOR_PORT] + 1
         member = self.mem_member_client.update_member(
             member[const.ID], **member_update_kwargs)
 
@@ -208,8 +214,9 @@
             pool_id=self.pool_id)
 
         # Test changed items
-        equal_items = [const.NAME, const.ADMIN_STATE_UP, const.WEIGHT,
-                       const.MONITOR_ADDRESS, const.MONITOR_PORT]
+        equal_items = [const.NAME, const.ADMIN_STATE_UP, const.WEIGHT]
+        if hm_enabled:
+            equal_items += [const.MONITOR_ADDRESS, const.MONITOR_PORT]
         if self.mem_member_client.is_version_supported(
                 self.api_version, '2.1'):
             equal_items.append(const.BACKUP)
diff --git a/releasenotes/notes/add-listener-stats-api-test-88947cf5e6ae9cae.yaml b/releasenotes/notes/add-listener-stats-api-test-88947cf5e6ae9cae.yaml
new file mode 100644
index 0000000..1737aa2
--- /dev/null
+++ b/releasenotes/notes/add-listener-stats-api-test-88947cf5e6ae9cae.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Added the listener stats service client and API test.
diff --git a/requirements.txt b/requirements.txt
index 815be94..c9f839c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -9,6 +9,7 @@
 octavia-lib>=1.0.0 # Apache-2.0
 oslo.config>=5.2.0 # Apache-2.0
 oslo.log>=3.36.0  # Apache-2.0
+oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 oslo.utils>=3.33.0  # Apache-2.0
 oslotest>=3.2.0 # Apache-2.0
 python-barbicanclient>=4.5.2 # Apache-2.0
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index f5426cc..8c8ac73 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -37,6 +37,7 @@
     timeout: 7800
     required-projects:
       - openstack/octavia
+      - openstack/octavia-lib
       - openstack/octavia-tempest-plugin
       - openstack/python-octaviaclient
     pre-run: playbooks/Octavia-DSVM/pre.yaml
@@ -91,6 +92,13 @@
     vars:
       devstack_localrc:
         DIB_LOCAL_ELEMENTS: openstack-ci-mirrors
+      devstack_local_conf:
+        post-config:
+          $OCTAVIA_CONF:
+            haproxy_amphora:
+              # Set these higher for non-nested virt nodepool instances
+              connection_max_retries: 300
+              build_active_retries: 300
       devstack_services:
         neutron-qos: true
       devstack_plugins:
@@ -362,12 +370,15 @@
       - openstack/barbican
       - openstack/diskimage-builder
       - openstack/python-barbicanclient
+      - openstack/barbican-tempest-plugin
     vars:
       tempest_test_regex: ^octavia_tempest_plugin.tests.barbican_scenario.v2
       devstack_services:
         barbican: true
       devstack_plugins:
         barbican: https://git.openstack.org/openstack/barbican.git
+      devstack_localrc:
+        TEMPEST_PLUGINS: '"/opt/stack/octavia-tempest-plugin /opt/stack/barbican-tempest-plugin"'
 
 # Temporary transitional aliases for gates used in other repos
 # Remove once octavia has transitioned job names
