tempest: migrate api and scnario tests from tempest

tempest: use ceilometer client manager instead of tempest one

This patch replaces client manager used in base test class from tempest
one to ceilometer dedicated manager which only has clients necessary to
specific ceilometer test cases.

The conflicts in config parameter are solved by adding '_plugin' in
paramter names as suffix.

This patch also includes the following changes in tempest.

  - Ie99bbbe7655138c4c3ecae69ae0b361198a9651d
  - I340d96c27f0e906df5b8a109494920e9cd3b21d1
  - I14e16a1a7d9813b324ee40545c07f0e88fb637b7

Closes-Bug: 1549424
Depends-On: Ifc29617743b76b01eb6cd30a375cf47b56e4f635
Implements: blueprint tempest-plugin
Change-Id: Ifbe3152c486ddba79bb851c0ec3097213975f95c
diff --git a/ceilometer/tests/tempest/api/base.py b/ceilometer/tests/tempest/api/base.py
index 938bc88..103a123 100644
--- a/ceilometer/tests/tempest/api/base.py
+++ b/ceilometer/tests/tempest/api/base.py
@@ -13,27 +13,43 @@
 import time
 
 from oslo_utils import timeutils
-from tempest_lib import exceptions as lib_exc
-
 from tempest.common import compute
 from tempest.common.utils import data_utils
 from tempest import config
 from tempest import exceptions
+from tempest.lib import exceptions as lib_exc
 import tempest.test
 
+from ceilometer.tests.tempest.service import client
+
+
 CONF = config.CONF
 
 
+class ClientManager(client.Manager):
+
+    load_clients = [
+        'servers_client',
+        'compute_networks_client',
+        'compute_floating_ips_client',
+        'flavors_client',
+        'image_client',
+        'image_client_v2',
+        'telemetry_client',
+    ]
+
+
 class BaseTelemetryTest(tempest.test.BaseTestCase):
 
     """Base test case class for all Telemetry API tests."""
 
     credentials = ['primary']
+    client_manager = ClientManager
 
     @classmethod
     def skip_checks(cls):
         super(BaseTelemetryTest, cls).skip_checks()
-        if not CONF.service_available.ceilometer:
+        if not CONF.service_available.ceilometer_plugin:
             raise cls.skipException("Ceilometer support is required")
 
     @classmethod
@@ -44,11 +60,11 @@
     @classmethod
     def setup_clients(cls):
         super(BaseTelemetryTest, cls).setup_clients()
-        cls.telemetry_client = cls.os.telemetry_client
-        cls.servers_client = cls.os.servers_client
-        cls.flavors_client = cls.os.flavors_client
-        cls.image_client = cls.os.image_client
-        cls.image_client_v2 = cls.os.image_client_v2
+        cls.telemetry_client = cls.os_primary.telemetry_client
+        cls.servers_client = cls.os_primary.servers_client
+        cls.flavors_client = cls.os_primary.flavors_client
+        cls.image_client = cls.os_primary.image_client
+        cls.image_client_v2 = cls.os_primary.image_client_v2
 
     @classmethod
     def resource_setup(cls):
@@ -67,7 +83,7 @@
     def create_server(cls):
         tenant_network = cls.get_tenant_network()
         body, server = compute.create_test_server(
-            cls.os,
+            cls.os_primary,
             tenant_network=tenant_network,
             name=data_utils.rand_name('ceilometer-instance'),
             wait_until='ACTIVE')
@@ -75,10 +91,11 @@
         return body
 
     @classmethod
-    def create_image(cls, client):
-        body = client.create_image(
-            data_utils.rand_name('image'), container_format='bare',
-            disk_format='raw', visibility='private')
+    def create_image(cls, client, **kwargs):
+        body = client.create_image(name=data_utils.rand_name('image'),
+                                   container_format='bare',
+                                   disk_format='raw',
+                                   **kwargs)
         # TODO(jswarren) Move ['image'] up to initial body value assignment
         # once both v1 and v2 glance clients include the full response
         # object.