Merge "Revert "Make centos 9 stream jobs non-voting""
diff --git a/.zuul.yaml b/.zuul.yaml
index 1e4a9a3..ebb843a 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -32,7 +32,7 @@
         sg-core: https://github.com/infrawatch/sg-core
       # NOTE(jokke): The following will disable the gabbi based integration tests for now.
       # We will need to figure out how we refactor them to be stable in the CI.
-      tempest_exclude_regex: (^telemetry_tempest_plugin\.scenario\.test_telemetry_integration)
+      tempest_exclude_regex: (^telemetry_tempest_plugin\.scenario\.test_telemetry_integration\.)
       devstack_services:
         tempest: true
       devstack_localrc:
@@ -59,6 +59,7 @@
               metric_backends: gnocchi,prometheus
             telemetry:
               disable_ssl_certificate_validation: True
+              ceilometer_polling_interval: 15
       tempest_test_regex: telemetry_tempest_plugin
       tox_envlist: all
 
diff --git a/telemetry_tempest_plugin/config.py b/telemetry_tempest_plugin/config.py
index c8f757b..ed1017a 100644
--- a/telemetry_tempest_plugin/config.py
+++ b/telemetry_tempest_plugin/config.py
@@ -83,7 +83,10 @@
     cfg.StrOpt('sg_core_service_url',
                default="127.0.0.1:3000",
                help="URL to sg-core prometheus endpoint"),
-
+    cfg.IntOpt('ceilometer_polling_interval',
+               default=300,
+               help="Polling interval configured for ceilometer. This can "
+                    "be used in test cases to wait for metrics to appear.")
 ]
 
 telemetry_services_opts = [
diff --git a/telemetry_tempest_plugin/scenario/telemetry_integration_prometheus_gabbits/ceilometer-sg-core-integration.yaml b/telemetry_tempest_plugin/scenario/telemetry_integration_prometheus_gabbits/ceilometer-sg-core-integration.yaml
index f4cd0b1..5568878 100644
--- a/telemetry_tempest_plugin/scenario/telemetry_integration_prometheus_gabbits/ceilometer-sg-core-integration.yaml
+++ b/telemetry_tempest_plugin/scenario/telemetry_integration_prometheus_gabbits/ceilometer-sg-core-integration.yaml
@@ -3,7 +3,7 @@
     desc: Check the sg-core prometheus endpoint for ceilometer metrics
     GET: $ENVIRON['SG_CORE_SERVICE_URL']/metrics
     poll:
-      count: 60
+      count: $ENVIRON['CEILOMETER_POLLING_INTERVAL']
       delay: 2
     response_strings:
       - "ceilometer_image_size"
diff --git a/telemetry_tempest_plugin/scenario/test_telemetry_integration_prometheus.py b/telemetry_tempest_plugin/scenario/test_telemetry_integration_prometheus.py
index c379470..d4dcc0e 100644
--- a/telemetry_tempest_plugin/scenario/test_telemetry_integration_prometheus.py
+++ b/telemetry_tempest_plugin/scenario/test_telemetry_integration_prometheus.py
@@ -13,7 +13,7 @@
 import os
 
 from tempest import config
-import tempest.test
+from tempest.scenario import manager
 
 from telemetry_tempest_plugin.scenario import utils
 
@@ -23,22 +23,27 @@
                         'telemetry_integration_prometheus_gabbits')
 
 
-class PrometheusGabbiTest(tempest.test.BaseTestCase):
-    credentials = ['admin']
+class PrometheusGabbiTest(manager.ScenarioTest):
+    credentials = ['admin', 'primary']
 
     TIMEOUT_SCALING_FACTOR = 5
 
     @classmethod
     def skip_checks(cls):
         super(PrometheusGabbiTest, cls).skip_checks()
-        if not CONF.service_available.sg_core:
-            raise cls.skipException("sg-core support is required")
+        for name in ["sg_core", "glance", "ceilometer"]:
+            if not getattr(CONF.service_available, name, False):
+                raise cls.skipException("%s support is required" %
+                                        name.capitalize())
 
     def _prep_test(self, filename):
         os.environ.update({
             "SG_CORE_SERVICE_URL":
             str(config.CONF.telemetry.sg_core_service_url),
+            "CEILOMETER_POLLING_INTERVAL":
+            str(CONF.telemetry.ceilometer_polling_interval),
         })
+        self.image_create()
 
 
 utils.generate_tests(PrometheusGabbiTest, TEST_DIR)