Merge "Remove [compute-feature-enabled] block_migrate_cinder_iscsi"
diff --git a/releasenotes/notes/Add-resource_name_prefix-config-option-26e0b7cfeffc48f9.yaml b/releasenotes/notes/Add-resource_name_prefix-config-option-26e0b7cfeffc48f9.yaml
new file mode 100644
index 0000000..0824c66
--- /dev/null
+++ b/releasenotes/notes/Add-resource_name_prefix-config-option-26e0b7cfeffc48f9.yaml
@@ -0,0 +1,10 @@
+---
+features:
+  - |
+    A new config option in the default section, resource_name_prefix,
+    is added to allow users to customize the name (specifically the prefix)
+    of the resources created by Tempest during a test run. By default it is
+    set to tempest.
+    Tempest cleanup CLI will then use this config option to cleanup only the
+    resources that match the prefix. Make sure this prefix does not match with
+    the resource name you do not want Tempest cleanup CLI to delete.
diff --git a/releasenotes/notes/add-delete-image-from-specific-store-api-84c0ecd50724f6de.yaml b/releasenotes/notes/add-delete-image-from-specific-store-api-84c0ecd50724f6de.yaml
new file mode 100644
index 0000000..a8a0b70
--- /dev/null
+++ b/releasenotes/notes/add-delete-image-from-specific-store-api-84c0ecd50724f6de.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add delete image from specific store API to image V2 client
diff --git a/tempest/api/compute/admin/test_agents.py b/tempest/api/compute/admin/test_agents.py
index f54fb22..8fc155b 100644
--- a/tempest/api/compute/admin/test_agents.py
+++ b/tempest/api/compute/admin/test_agents.py
@@ -51,7 +51,9 @@
             # If you try to create an agent with the same hypervisor,
             # os and architecture as an existing agent, Nova will return
             # an HTTPConflict or HTTPServerError.
-            kwargs[rand_key] = data_utils.rand_name(kwargs[rand_key])
+            kwargs[rand_key] = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=kwargs[rand_key])
         return kwargs
 
     @decorators.idempotent_id('1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90')
diff --git a/tempest/api/compute/admin/test_aggregates_negative.py b/tempest/api/compute/admin/test_aggregates_negative.py
index 7b115ce..c284370 100644
--- a/tempest/api/compute/admin/test_aggregates_negative.py
+++ b/tempest/api/compute/admin/test_aggregates_negative.py
@@ -15,10 +15,13 @@
 
 from tempest.api.compute import base
 from tempest.common import tempest_fixtures as fixtures
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class AggregatesAdminNegativeTestJSON(base.BaseV2ComputeAdminTest):
     """Tests Aggregates API that require admin privileges"""
@@ -40,7 +43,9 @@
                      if v['status'] == 'enabled' and v['state'] == 'up']
 
     def _create_test_aggregate(self):
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.aggregate_name_prefix)
         aggregate = (self.client.create_aggregate(name=aggregate_name)
                      ['aggregate'])
         self.addCleanup(self.client.delete_aggregate, aggregate['id'])
@@ -50,7 +55,9 @@
     @decorators.idempotent_id('86a1cb14-da37-4a70-b056-903fd56dfe29')
     def test_aggregate_create_as_user(self):
         """Regular user is not allowed to create an aggregate"""
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.aggregate_name_prefix)
         self.assertRaises(lib_exc.Forbidden,
                           self.aggregates_client.create_aggregate,
                           name=aggregate_name)
@@ -125,7 +132,9 @@
     def test_aggregate_add_non_exist_host(self):
         """Adding a non-exist host to an aggregate should fail"""
         while True:
-            non_exist_host = data_utils.rand_name('nonexist_host')
+            non_exist_host = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='nonexist_host')
             if non_exist_host not in self.hosts:
                 break
         aggregate = self._create_test_aggregate()
diff --git a/tempest/api/compute/admin/test_create_server.py b/tempest/api/compute/admin/test_create_server.py
index ccdfbf3..293e284 100644
--- a/tempest/api/compute/admin/test_create_server.py
+++ b/tempest/api/compute/admin/test_create_server.py
@@ -51,7 +51,8 @@
 
         def create_flavor_with_ephemeral(ephem_disk):
             name = 'flavor_with_ephemeral_%s' % ephem_disk
-            flavor_name = data_utils.rand_name(name)
+            flavor_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name=name)
 
             ram = flavor_base['ram']
             vcpus = flavor_base['vcpus']
diff --git a/tempest/api/compute/admin/test_flavors.py b/tempest/api/compute/admin/test_flavors.py
index 294b1ab..cece905 100644
--- a/tempest/api/compute/admin/test_flavors.py
+++ b/tempest/api/compute/admin/test_flavors.py
@@ -16,10 +16,13 @@
 import uuid
 
 from tempest.api.compute import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
     """Tests Flavors API Create and Delete that require admin privileges"""
@@ -76,7 +79,9 @@
 
         This operation requires the user to have 'admin' role
         """
-        flavor_name = data_utils.rand_name(self.flavor_name_prefix)
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.flavor_name_prefix)
 
         # Create the flavor
         self.create_flavor(name=flavor_name,
@@ -107,7 +112,9 @@
             self.assertEqual(flavor['OS-FLV-EXT-DATA:ephemeral'], 0)
             self.assertEqual(flavor['os-flavor-access:is_public'], True)
 
-        flavor_name = data_utils.rand_name(self.flavor_name_prefix)
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.flavor_name_prefix)
         new_flavor_id = data_utils.rand_int_id(start=1000)
 
         # Create the flavor
@@ -143,7 +150,9 @@
         tenant is not automatically added access list.
         This operation requires the user to have 'admin' role
         """
-        flavor_name = data_utils.rand_name(self.flavor_name_prefix)
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.flavor_name_prefix)
 
         # Create the flavor
         self.create_flavor(name=flavor_name,
@@ -178,7 +187,9 @@
 
         Try to List/Get flavor with another user
         """
-        flavor_name = data_utils.rand_name(self.flavor_name_prefix)
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.flavor_name_prefix)
 
         # Create the flavor
         self.create_flavor(name=flavor_name,
@@ -192,8 +203,11 @@
     @decorators.idempotent_id('fb9cbde6-3a0e-41f2-a983-bdb0a823c44e')
     def test_is_public_string_variations(self):
         """Test creating public and non public flavors"""
-        flavor_name_not_public = data_utils.rand_name(self.flavor_name_prefix)
-        flavor_name_public = data_utils.rand_name(self.flavor_name_prefix)
+        prefix = CONF.resource_name_prefix
+        flavor_name_not_public = data_utils.rand_name(
+            prefix=prefix, name=self.flavor_name_prefix)
+        flavor_name_public = data_utils.rand_name(
+            prefix=prefix, name=self.flavor_name_prefix)
 
         # Create a non public flavor
         self.create_flavor(name=flavor_name_not_public,
diff --git a/tempest/api/compute/admin/test_flavors_extra_specs.py b/tempest/api/compute/admin/test_flavors_extra_specs.py
index da95660..5829269 100644
--- a/tempest/api/compute/admin/test_flavors_extra_specs.py
+++ b/tempest/api/compute/admin/test_flavors_extra_specs.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.compute import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class FlavorsExtraSpecsTestJSON(base.BaseV2ComputeAdminTest):
     """Tests Flavor Extra Spec API extension.
@@ -28,7 +31,8 @@
     @classmethod
     def resource_setup(cls):
         super(FlavorsExtraSpecsTestJSON, cls).resource_setup()
-        flavor_name = data_utils.rand_name('test_flavor')
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test_flavor')
         ram = 512
         vcpus = 1
         disk = 10
@@ -139,7 +143,9 @@
     @decorators.idempotent_id('d3114f03-b0f2-4dc7-be11-70c0abc178b3')
     def test_flavor_update_with_custom_namespace(self):
         """Test flavor creation with a custom namespace, key and value"""
-        flavor_name = data_utils.rand_name(self.flavor_name_prefix)
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.flavor_name_prefix)
         flavor_id = self.create_flavor(ram=self.ram,
                                        vcpus=self.vcpus,
                                        disk=self.disk,
diff --git a/tempest/api/compute/admin/test_flavors_extra_specs_negative.py b/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
index 6822614..7f518d2 100644
--- a/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
+++ b/tempest/api/compute/admin/test_flavors_extra_specs_negative.py
@@ -15,10 +15,13 @@
 #    under the License.
 
 from tempest.api.compute import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class FlavorsExtraSpecsNegativeTestJSON(base.BaseV2ComputeAdminTest):
     """Negative Tests Flavor Extra Spec API extension.
@@ -30,7 +33,8 @@
     def resource_setup(cls):
         super(FlavorsExtraSpecsNegativeTestJSON, cls).resource_setup()
 
-        flavor_name = data_utils.rand_name('test_flavor')
+        flavor_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test_flavor')
         ram = 512
         vcpus = 1
         disk = 10
diff --git a/tempest/api/compute/admin/test_keypairs_v210.py b/tempest/api/compute/admin/test_keypairs_v210.py
index 3068127..5c5031b 100644
--- a/tempest/api/compute/admin/test_keypairs_v210.py
+++ b/tempest/api/compute/admin/test_keypairs_v210.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.compute.keypairs import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class KeyPairsV210TestJSON(base.BaseKeypairTest):
     """Tests KeyPairs API with microversion higher than 2.9"""
@@ -33,7 +36,8 @@
     def _create_and_check_keypairs(self, user_id):
         key_list = list()
         for _ in range(2):
-            k_name = data_utils.rand_name('keypair')
+            k_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='keypair')
             keypair = self.create_keypair(k_name,
                                           keypair_type='ssh',
                                           user_id=user_id,
diff --git a/tempest/api/compute/admin/test_live_migration.py b/tempest/api/compute/admin/test_live_migration.py
index b57d73c..f6a1ae9 100644
--- a/tempest/api/compute/admin/test_live_migration.py
+++ b/tempest/api/compute/admin/test_live_migration.py
@@ -211,7 +211,8 @@
         self.assertEqual(volume_id1, volume_id2)
 
     def _create_net_subnet(self, name, cidr):
-        net_name = data_utils.rand_name(name=name)
+        net_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=name)
         net = self.networks_client.create_network(name=net_name)['network']
         self.addClassResourceCleanup(
             self.networks_client.delete_network, net['id'])
@@ -225,7 +226,8 @@
         return net
 
     def _create_port(self, network_id, name):
-        name = data_utils.rand_name(name=name)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=name)
         port = self.ports_client.create_port(name=name,
                                              network_id=network_id)['port']
         self.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -241,7 +243,8 @@
         subport = self._create_port(network_id=net['id'], name='subport')
 
         trunk = self.trunks_client.create_trunk(
-            name=data_utils.rand_name('trunk'),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='trunk'),
             port_id=parent['id'],
             sub_ports=[{"segmentation_id": 42, "port_id": subport['id'],
                         "segmentation_type": "vlan"}]
diff --git a/tempest/api/compute/admin/test_live_migration_negative.py b/tempest/api/compute/admin/test_live_migration_negative.py
index 80c0525..c956d99 100644
--- a/tempest/api/compute/admin/test_live_migration_negative.py
+++ b/tempest/api/compute/admin/test_live_migration_negative.py
@@ -43,7 +43,8 @@
     @decorators.idempotent_id('7fb7856e-ae92-44c9-861a-af62d7830bcb')
     def test_invalid_host_for_migration(self):
         """Test migrating to an invalid host should not change the status"""
-        target_host = data_utils.rand_name('host')
+        target_host = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='host')
         server = self.create_test_server(wait_until="ACTIVE")
 
         self.assertRaises(lib_exc.BadRequest, self._migrate_server_to,
diff --git a/tempest/api/compute/admin/test_migrations.py b/tempest/api/compute/admin/test_migrations.py
index b3d2833..fa8a737 100644
--- a/tempest/api/compute/admin/test_migrations.py
+++ b/tempest/api/compute/admin/test_migrations.py
@@ -74,7 +74,9 @@
         flavor = self.admin_flavors_client.show_flavor(
             self.flavor_ref)['flavor']
         flavor = self.admin_flavors_client.create_flavor(
-            name=data_utils.rand_name('test_resize_flavor_'),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='test_resize_flavor_'),
             ram=flavor['ram'],
             disk=flavor['disk'],
             vcpus=flavor['vcpus']
diff --git a/tempest/api/compute/admin/test_quotas.py b/tempest/api/compute/admin/test_quotas.py
index caf4fc1..70711f5 100644
--- a/tempest/api/compute/admin/test_quotas.py
+++ b/tempest/api/compute/admin/test_quotas.py
@@ -43,7 +43,9 @@
 
     def _get_updated_quotas(self):
         # Verify that GET shows the updated quota set of project
-        project_name = data_utils.rand_name('cpu_quota_project')
+        project_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='cpu_quota_project')
         project_desc = project_name + '-desc'
         project = identity.identity_utils(self.os_admin).create_project(
             name=project_name, description=project_desc)
@@ -59,7 +61,9 @@
         self.assertEqual(5120, quota_set['ram']['limit'])
 
         # Verify that GET shows the updated quota set of user
-        user_name = data_utils.rand_name('cpu_quota_user')
+        user_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='cpu_quota_user')
         password = data_utils.rand_password()
         email = user_name + '@testmail.tm'
         user = identity.identity_utils(self.os_admin).create_user(
@@ -157,7 +161,9 @@
                       'Legacy quota update not available with unified limits')
     def test_delete_quota(self):
         """Test admin can delete the compute quota set for a project"""
-        project_name = data_utils.rand_name('ram_quota_project')
+        project_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='ram_quota_project')
         project_desc = project_name + '-desc'
         project = identity.identity_utils(self.os_admin).create_project(
             name=project_name, description=project_desc)
diff --git a/tempest/api/compute/admin/test_quotas_negative.py b/tempest/api/compute/admin/test_quotas_negative.py
index a4120bb..ef89cc1 100644
--- a/tempest/api/compute/admin/test_quotas_negative.py
+++ b/tempest/api/compute/admin/test_quotas_negative.py
@@ -133,8 +133,9 @@
         # when we reach limit maxSecurityGroupRules
         self._update_quota('security_group_rules', 0)
 
-        s_name = data_utils.rand_name('securitygroup')
-        s_description = data_utils.rand_name('description')
+        prefix = CONF.resource_name_prefix
+        s_name = data_utils.rand_name(prefix=prefix, name='securitygroup')
+        s_description = data_utils.rand_name(prefix=prefix, name='description')
         securitygroup = self.sg_client.create_security_group(
             name=s_name, description=s_description)['security_group']
         self.addCleanup(self.sg_client.delete_security_group,
diff --git a/tempest/api/compute/admin/test_security_groups.py b/tempest/api/compute/admin/test_security_groups.py
index f0a6a84..41acc94 100644
--- a/tempest/api/compute/admin/test_security_groups.py
+++ b/tempest/api/compute/admin/test_security_groups.py
@@ -15,9 +15,12 @@
 
 from tempest.api.compute import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class SecurityGroupsTestAdminJSON(base.BaseV2ComputeAdminTest):
     """Test security groups API that requires admin privilege
@@ -57,9 +60,11 @@
         # List of all security groups created
         security_group_list = []
         # Create two security groups for a non-admin tenant
+        prefix = CONF.resource_name_prefix
         for _ in range(2):
-            name = data_utils.rand_name('securitygroup')
-            description = data_utils.rand_name('description')
+            name = data_utils.rand_name(prefix=prefix, name='securitygroup')
+            description = data_utils.rand_name(
+                prefix=prefix, name='description')
             securitygroup = self.client.create_security_group(
                 name=name, description=description)['security_group']
             self.addCleanup(self._delete_security_group,
@@ -69,8 +74,9 @@
         client_tenant_id = securitygroup['tenant_id']
         # Create two security groups for admin tenant
         for _ in range(2):
-            name = data_utils.rand_name('securitygroup')
-            description = data_utils.rand_name('description')
+            name = data_utils.rand_name(prefix=prefix, name='securitygroup')
+            description = data_utils.rand_name(
+                prefix=prefix, name='description')
             adm_securitygroup = self.adm_client.create_security_group(
                 name=name, description=description)['security_group']
             self.addCleanup(self._delete_security_group,
diff --git a/tempest/api/compute/admin/test_servers.py b/tempest/api/compute/admin/test_servers.py
index 321078c..be838fc 100644
--- a/tempest/api/compute/admin/test_servers.py
+++ b/tempest/api/compute/admin/test_servers.py
@@ -37,11 +37,14 @@
     def resource_setup(cls):
         super(ServersAdminTestJSON, cls).resource_setup()
 
-        cls.s1_name = data_utils.rand_name(cls.__name__ + '-server')
+        prefix = CONF.resource_name_prefix
+        cls.s1_name = data_utils.rand_name(prefix=prefix,
+                                           name=cls.__name__ + '-server')
         server = cls.create_test_server(name=cls.s1_name)
         cls.s1_id = server['id']
 
-        cls.s2_name = data_utils.rand_name(cls.__name__ + '-server')
+        cls.s2_name = data_utils.rand_name(prefix=prefix,
+                                           name=cls.__name__ + '-server')
         server = cls.create_test_server(name=cls.s2_name,
                                         wait_until='ACTIVE')
         cls.s2_id = server['id']
diff --git a/tempest/api/compute/admin/test_volume.py b/tempest/api/compute/admin/test_volume.py
index e7c931e..2813d7a 100644
--- a/tempest/api/compute/admin/test_volume.py
+++ b/tempest/api/compute/admin/test_volume.py
@@ -59,6 +59,11 @@
             'min_ram': image['min_ram'],
             'visibility': 'public',
         }
+        if 'kernel_id' in image:
+            create_dict['kernel_id'] = image['kernel_id']
+        if 'ramdisk_id' in image:
+            create_dict['ramdisk_id'] = image['ramdisk_id']
+
         create_dict.update(kwargs)
         try:
             new_image = self.admin_image_client.create_image(**create_dict)
diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py
index d02532d..2557e47 100644
--- a/tempest/api/compute/base.py
+++ b/tempest/api/compute/base.py
@@ -223,7 +223,9 @@
             `compute.create_test_server` call.
         """
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name(cls.__name__ + "-server")
+            kwargs['name'] = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=cls.__name__ + "-server")
 
         request_version = api_version_request.APIVersionRequest(
             cls.request_microversion)
@@ -260,10 +262,13 @@
 
     @classmethod
     def create_security_group(cls, name=None, description=None):
+        prefix = CONF.resource_name_prefix
         if name is None:
-            name = data_utils.rand_name(cls.__name__ + "-securitygroup")
+            name = data_utils.rand_name(
+                prefix=prefix, name=cls.__name__ + "-securitygroup")
         if description is None:
-            description = data_utils.rand_name('description')
+            description = data_utils.rand_name(
+                prefix=prefix, name='description')
         body = cls.security_groups_client.create_security_group(
             name=name, description=description)['security_group']
         cls.addClassResourceCleanup(
@@ -276,7 +281,9 @@
     @classmethod
     def create_test_server_group(cls, name="", policy=None):
         if not name:
-            name = data_utils.rand_name(cls.__name__ + "-Server-Group")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=cls.__name__ + "-Server-Group")
         if cls.is_requested_microversion_compatible('2.63'):
             policy = policy or ['affinity']
             if not isinstance(policy, list):
@@ -324,8 +331,11 @@
         If compute microversion >= 2.36, the returned image response will
         be from the image service API rather than the compute image proxy API.
         """
-        name = kwargs.pop('name',
-                          data_utils.rand_name(cls.__name__ + "-image"))
+        name = kwargs.pop(
+            'name',
+            data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=cls.__name__ + "-image"))
         wait_until = kwargs.pop('wait_until', None)
         wait_for_server = kwargs.pop('wait_for_server', True)
 
@@ -501,7 +511,9 @@
         if 'size' not in kwargs:
             kwargs['size'] = CONF.volume.volume_size
         if 'display_name' not in kwargs:
-            vol_name = data_utils.rand_name(cls.__name__ + '-volume')
+            vol_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=cls.__name__ + '-volume')
             kwargs['display_name'] = vol_name
         if image_ref is not None:
             kwargs['imageRef'] = image_ref
@@ -595,7 +607,8 @@
     def create_volume_snapshot(self, volume_id, name=None, description=None,
                                metadata=None, force=False):
         name = name or data_utils.rand_name(
-            self.__class__.__name__ + '-snapshot')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-snapshot')
         snapshot = self.snapshots_client.create_snapshot(
             volume_id=volume_id,
             force=force,
@@ -652,7 +665,9 @@
     def create_flavor(self, ram, vcpus, disk, name=None,
                       is_public='True', **kwargs):
         if name is None:
-            name = data_utils.rand_name(self.__class__.__name__ + "-flavor")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + "-flavor")
         id = kwargs.pop('id', data_utils.rand_int_id(start=1000))
         client = self.admin_flavors_client
         flavor = client.create_flavor(
diff --git a/tempest/api/compute/flavors/test_flavors_negative.py b/tempest/api/compute/flavors/test_flavors_negative.py
index 22b71fc..09f54b5 100644
--- a/tempest/api/compute/flavors/test_flavors_negative.py
+++ b/tempest/api/compute/flavors/test_flavors_negative.py
@@ -44,7 +44,8 @@
         size = random.randint(1024, 4096)
         image_file = io.BytesIO(data_utils.random_bytes(size))
         params = {
-            'name': data_utils.rand_name('image'),
+            'name': data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='image'),
             'container_format': CONF.image.container_formats[0],
             'disk_format': CONF.image.disk_formats[0],
             'min_ram': min_img_ram,
diff --git a/tempest/api/compute/images/test_image_metadata.py b/tempest/api/compute/images/test_image_metadata.py
index f630bc8..1c9f212 100644
--- a/tempest/api/compute/images/test_image_metadata.py
+++ b/tempest/api/compute/images/test_image_metadata.py
@@ -52,9 +52,12 @@
     def resource_setup(cls):
         super(ImagesMetadataTestJSON, cls).resource_setup()
         cls.image_id = None
-
+        image_name_kwargs = {
+            'prefix': CONF.resource_name_prefix,
+            'name': 'image'
+        }
         params = {
-            'name': data_utils.rand_name('image'),
+            'name': data_utils.rand_name(**image_name_kwargs),
             'container_format': 'bare',
             'disk_format': 'raw',
             'visibility': 'private'
diff --git a/tempest/api/compute/images/test_images.py b/tempest/api/compute/images/test_images.py
index d47ffce..87cedae 100644
--- a/tempest/api/compute/images/test_images.py
+++ b/tempest/api/compute/images/test_images.py
@@ -57,7 +57,8 @@
         # in task_state image_snapshot
         self.addCleanup(waiters.wait_for_server_status, self.servers_client,
                         server['id'], 'ACTIVE')
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         try:
             image = self.create_image_from_server(server['id'],
                                                   name=snapshot_name,
@@ -83,7 +84,8 @@
         waiters.wait_for_server_status(self.servers_client,
                                        server['id'], 'SHUTOFF')
         self.addCleanup(self.servers_client.delete_server, server['id'])
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         image = self.create_image_from_server(server['id'],
                                               name=snapshot_name,
                                               wait_until='ACTIVE',
@@ -102,7 +104,8 @@
                                        server['id'], 'PAUSED')
         self.addCleanup(self.servers_client.delete_server, server['id'])
 
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         image = self.create_image_from_server(server['id'],
                                               name=snapshot_name,
                                               wait_until='ACTIVE',
@@ -121,7 +124,8 @@
                                        server['id'], 'SUSPENDED')
         self.addCleanup(self.servers_client.delete_server, server['id'])
 
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         image = self.create_image_from_server(server['id'],
                                               name=snapshot_name,
                                               wait_until='ACTIVE',
@@ -136,7 +140,8 @@
         self.addCleanup(self.servers_client.delete_server, server['id'])
 
         # Snapshot it
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         image = self.create_image_from_server(server['id'],
                                               name=snapshot_name,
                                               wait_until='ACTIVE',
diff --git a/tempest/api/compute/images/test_images_negative.py b/tempest/api/compute/images/test_images_negative.py
index 124651e..2375514 100644
--- a/tempest/api/compute/images/test_images_negative.py
+++ b/tempest/api/compute/images/test_images_negative.py
@@ -66,8 +66,12 @@
         """Check server image should not be created with invalid server id"""
         # Create a new image with invalid server id
         meta = {'image_type': 'test'}
-        self.assertRaises(lib_exc.NotFound, self.create_image_from_server,
-                          data_utils.rand_name('invalid'), metadata=meta)
+        self.assertRaises(
+            lib_exc.NotFound,
+            self.create_image_from_server,
+            data_utils.rand_name(prefix=CONF.resource_name_prefix,
+                                 name='invalid'),
+            metadata=meta)
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('ec176029-73dc-4037-8d72-2e4ff60cf538')
@@ -76,7 +80,8 @@
 
         Return an error if server id passed is 35 characters or less
         """
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         test_uuid = ('a' * 35)
         self.assertRaises(lib_exc.NotFound, self.client.create_image,
                           test_uuid, name=snapshot_name)
@@ -88,7 +93,8 @@
 
         Return an error if sever id passed is 37 characters or more
         """
-        snapshot_name = data_utils.rand_name('test-snap')
+        snapshot_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test-snap')
         test_uuid = ('a' * 37)
         self.assertRaises(lib_exc.NotFound, self.client.create_image,
                           test_uuid, name=snapshot_name)
@@ -105,8 +111,10 @@
     @decorators.idempotent_id('381acb65-785a-4942-94ce-d8f8c84f1f0f')
     def test_delete_image_with_invalid_image_id(self):
         """Check an image should not be deleted with invalid image id"""
-        self.assertRaises(lib_exc.NotFound, self.client.delete_image,
-                          data_utils.rand_name('invalid'))
+        self.assertRaises(
+            lib_exc.NotFound, self.client.delete_image,
+            data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='invalid'))
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('137aef61-39f7-44a1-8ddf-0adf82511701')
diff --git a/tempest/api/compute/images/test_images_oneserver.py b/tempest/api/compute/images/test_images_oneserver.py
index 2b859da..ed3bf66 100644
--- a/tempest/api/compute/images/test_images_oneserver.py
+++ b/tempest/api/compute/images/test_images_oneserver.py
@@ -66,7 +66,8 @@
             MIN_RAM = 'min_ram'
 
         # Create a new image
-        name = data_utils.rand_name('image')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         meta = {'image_type': 'test'}
         image = self.create_image_from_server(self.server_id, name=name,
                                               metadata=meta,
@@ -104,6 +105,8 @@
         # We use a string with 3 byte utf-8 character due to nova/glance which
         # will return 400(Bad Request) if we attempt to send a name which has
         # 4 byte utf-8 character.
-        utf8_name = data_utils.rand_name(b'\xe2\x82\xa1'.decode('utf-8'))
+        utf8_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=b'\xe2\x82\xa1'.decode('utf-8'))
         self.create_image_from_server(self.server_id, name=utf8_name,
                                       wait_until='ACTIVE')
diff --git a/tempest/api/compute/images/test_list_image_filters.py b/tempest/api/compute/images/test_list_image_filters.py
index c6eff9b..78363ee 100644
--- a/tempest/api/compute/images/test_list_image_filters.py
+++ b/tempest/api/compute/images/test_list_image_filters.py
@@ -56,8 +56,12 @@
         super(ListImageFiltersTestJSON, cls).resource_setup()
 
         def _create_image():
+            image_name_kwargs = {
+                'prefix': CONF.resource_name_prefix,
+                'name': cls.__name__ + '-image'
+            }
             params = {
-                'name': data_utils.rand_name(cls.__name__ + '-image'),
+                'name': data_utils.rand_name(**image_name_kwargs),
                 'container_format': 'bare',
                 'disk_format': 'raw',
                 'visibility': 'private'
diff --git a/tempest/api/compute/keypairs/base.py b/tempest/api/compute/keypairs/base.py
index 44da88c..5f8f959 100644
--- a/tempest/api/compute/keypairs/base.py
+++ b/tempest/api/compute/keypairs/base.py
@@ -14,8 +14,11 @@
 #    under the License.
 
 from tempest.api.compute import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 
+CONF = config.CONF
+
 
 class BaseKeypairTest(base.BaseV2ComputeTest):
     """Base test case class for all keypair API tests."""
@@ -32,7 +35,8 @@
             client = self.keypairs_client
         if keypair_name is None:
             keypair_name = data_utils.rand_name(
-                self.__class__.__name__ + '-keypair')
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-keypair')
         kwargs = {'name': keypair_name}
         delete_params = {}
         if pub_key:
diff --git a/tempest/api/compute/keypairs/test_keypairs.py b/tempest/api/compute/keypairs/test_keypairs.py
index 8df2e84..2aab58d 100644
--- a/tempest/api/compute/keypairs/test_keypairs.py
+++ b/tempest/api/compute/keypairs/test_keypairs.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.compute.keypairs import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class KeyPairsV2TestJSON(base.BaseKeypairTest):
     """Test keypairs API with compute microversion less than 2.2"""
@@ -54,7 +57,8 @@
     @decorators.idempotent_id('6c1d3123-4519-4742-9194-622cb1714b7d')
     def test_keypair_create_delete(self):
         """Test create/delete keypair"""
-        k_name = data_utils.rand_name('keypair')
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='keypair')
         keypair = self.create_keypair(k_name)
         key_name = keypair['name']
         self.assertEqual(key_name, k_name,
@@ -64,7 +68,8 @@
     @decorators.idempotent_id('a4233d5d-52d8-47cc-9a25-e1864527e3df')
     def test_get_keypair_detail(self):
         """Test getting keypair detail by keypair name"""
-        k_name = data_utils.rand_name('keypair')
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='keypair')
         self.create_keypair(k_name)
         keypair_detail = self.keypairs_client.show_keypair(k_name)['keypair']
         self.assertEqual(keypair_detail['name'], k_name,
@@ -74,7 +79,8 @@
     @decorators.idempotent_id('39c90c6a-304a-49dd-95ec-2366129def05')
     def test_keypair_create_with_pub_key(self):
         """Test creating keypair with a given public key"""
-        k_name = data_utils.rand_name('keypair')
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='keypair')
         pub_key = ("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCs"
                    "Ne3/1ILNCqFyfYWDeTKLD6jEXC2OQHLmietMWW+/vd"
                    "aZq7KZEwO0jhglaFjU1mpqq4Gz5RX156sCTNM9vRbw"
diff --git a/tempest/api/compute/keypairs/test_keypairs_negative.py b/tempest/api/compute/keypairs/test_keypairs_negative.py
index 40bea3f..feef864 100644
--- a/tempest/api/compute/keypairs/test_keypairs_negative.py
+++ b/tempest/api/compute/keypairs/test_keypairs_negative.py
@@ -15,10 +15,13 @@
 #    under the License.
 
 from tempest.api.compute.keypairs import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class KeyPairsNegativeTestJSON(base.BaseKeypairTest):
     """Negative tests of keypairs API"""
@@ -35,7 +38,9 @@
     @decorators.idempotent_id('7cc32e47-4c42-489d-9623-c5e2cb5a2fa5')
     def test_keypair_delete_nonexistent_key(self):
         """Test non-existent key deletion should throw a proper error"""
-        k_name = data_utils.rand_name("keypair-non-existent")
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="keypair-non-existent")
         self.assertRaises(lib_exc.NotFound,
                           self.keypairs_client.delete_keypair,
                           k_name)
@@ -60,7 +65,8 @@
     @decorators.idempotent_id('0359a7f1-f002-4682-8073-0c91e4011b7c')
     def test_create_keypair_with_duplicate_name(self):
         """Test keypairs with duplicate names should not be created"""
-        k_name = data_utils.rand_name('keypair')
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='keypair')
         self.keypairs_client.create_keypair(name=k_name)
         # Now try the same keyname to create another key
         self.assertRaises(lib_exc.Conflict, self.create_keypair,
diff --git a/tempest/api/compute/keypairs/test_keypairs_v22.py b/tempest/api/compute/keypairs/test_keypairs_v22.py
index e229c37..06bbf57 100644
--- a/tempest/api/compute/keypairs/test_keypairs_v22.py
+++ b/tempest/api/compute/keypairs/test_keypairs_v22.py
@@ -13,9 +13,12 @@
 #    under the License.
 
 from tempest.api.compute.keypairs import test_keypairs
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class KeyPairsV22TestJSON(test_keypairs.KeyPairsV2TestJSON):
     """Test keypairs API with compute microversion greater than 2.1"""
@@ -29,7 +32,8 @@
         self.assertEqual(keypair_type, keypair['type'])
 
     def _test_keypairs_create_list_show(self, keypair_type=None):
-        k_name = data_utils.rand_name('keypair')
+        k_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='keypair')
         keypair = self.create_keypair(k_name, keypair_type=keypair_type)
         # Verify whether 'type' is present in keypair create response of
         # version 2.2 and it is with default value 'ssh'.
diff --git a/tempest/api/compute/security_groups/test_security_group_rules_negative.py b/tempest/api/compute/security_groups/test_security_group_rules_negative.py
index 3d000ca..c09be58 100644
--- a/tempest/api/compute/security_groups/test_security_group_rules_negative.py
+++ b/tempest/api/compute/security_groups/test_security_group_rules_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.compute.security_groups import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class SecurityGroupRulesNegativeTestJSON(base.BaseSecurityGroupsTest):
     """Negative tests of security group rules API
@@ -59,7 +62,8 @@
         with parent group id which is not integer.
         """
         # Adding rules to the non int Security Group id
-        parent_group_id = data_utils.rand_name('non_int_id')
+        parent_group_id = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='non_int_id')
         ip_protocol = 'tcp'
         from_port = 22
         to_port = 22
@@ -105,7 +109,8 @@
         sg = self.create_security_group()
         # Adding rules to the created Security Group
         parent_group_id = sg['id']
-        ip_protocol = data_utils.rand_name('999')
+        ip_protocol = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='999')
         from_port = 22
         to_port = 22
 
diff --git a/tempest/api/compute/security_groups/test_security_groups.py b/tempest/api/compute/security_groups/test_security_groups.py
index a1f3514..01a7986 100644
--- a/tempest/api/compute/security_groups/test_security_groups.py
+++ b/tempest/api/compute/security_groups/test_security_groups.py
@@ -15,10 +15,13 @@
 
 from tempest.api.compute.security_groups import base
 from tempest.common import waiters
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class SecurityGroupsTestJSON(base.BaseSecurityGroupsTest):
     """Test security groups API with compute microversion less than 2.36"""
@@ -69,7 +72,8 @@
         Security group should be created, fetched and deleted
         with char space between name along with leading and trailing spaces.
         """
-        s_name = ' %s ' % data_utils.rand_name('securitygroup ')
+        s_name = ' %s ' % data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='securitygroup ')
         securitygroup = self.create_security_group(name=s_name)
         securitygroup_name = securitygroup['name']
         self.assertEqual(securitygroup_name, s_name,
@@ -133,8 +137,9 @@
         securitygroup = self.create_security_group()
         securitygroup_id = securitygroup['id']
         # Update the name and description
-        s_new_name = data_utils.rand_name('sg-hth')
-        s_new_des = data_utils.rand_name('description-hth')
+        prefix = CONF.resource_name_prefix
+        s_new_name = data_utils.rand_name(prefix=prefix, name='sg-hth')
+        s_new_des = data_utils.rand_name(prefix=prefix, name='description-hth')
         self.client.update_security_group(securitygroup_id,
                                           name=s_new_name,
                                           description=s_new_des)
diff --git a/tempest/api/compute/security_groups/test_security_groups_negative.py b/tempest/api/compute/security_groups/test_security_groups_negative.py
index 4607112..c7d873f 100644
--- a/tempest/api/compute/security_groups/test_security_groups_negative.py
+++ b/tempest/api/compute/security_groups/test_security_groups_negative.py
@@ -55,7 +55,8 @@
         as an empty string, or group name with white spaces, or group name
         with chars more than 255.
         """
-        s_description = data_utils.rand_name('description')
+        s_description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='description')
         # Create Security Group with empty string as group name
         self.assertRaises(lib_exc.BadRequest,
                           self.client.create_security_group,
@@ -81,7 +82,8 @@
         longer than 255 chars. Empty description is allowed by the API
         reference, however.
         """
-        s_name = data_utils.rand_name('securitygroup')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='securitygroup')
         # Create Security Group with group description longer than 255 chars
         s_description = 'description-'.ljust(260, '0')
         self.assertRaises(lib_exc.BadRequest,
@@ -94,8 +96,10 @@
     @decorators.attr(type=['negative'])
     def test_security_group_create_with_duplicate_name(self):
         """Test creating security group with duplicate name should fail"""
-        s_name = data_utils.rand_name('securitygroup')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='securitygroup')
+        s_description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='description')
         self.create_security_group(name=s_name, description=s_description)
         # Now try the Security Group with the same 'Name'
         self.assertRaises(lib_exc.BadRequest,
@@ -138,10 +142,13 @@
     @decorators.attr(type=['negative'])
     def test_update_security_group_with_invalid_sg_id(self):
         """Test updating security group with invalid group id should fail"""
-        s_name = data_utils.rand_name('sg')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='sg')
+        s_description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='description')
         # Create a non int sg_id
-        sg_id_invalid = data_utils.rand_name('sg')
+        sg_id_invalid = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='sg')
         self.assertRaises(lib_exc.BadRequest,
                           self.client.update_security_group, sg_id_invalid,
                           name=s_name, description=s_description)
@@ -179,8 +186,10 @@
     def test_update_non_existent_security_group(self):
         """Test updating a non existent security group should fail"""
         non_exist_id = self.generate_random_security_group_id()
-        s_name = data_utils.rand_name('sg')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='sg')
+        s_description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='description')
         self.assertRaises(lib_exc.NotFound,
                           self.client.update_security_group,
                           non_exist_id, name=s_name,
diff --git a/tempest/api/compute/servers/test_attach_interfaces.py b/tempest/api/compute/servers/test_attach_interfaces.py
index 9b6bf84..8984d1d 100644
--- a/tempest/api/compute/servers/test_attach_interfaces.py
+++ b/tempest/api/compute/servers/test_attach_interfaces.py
@@ -161,7 +161,9 @@
         network_id = ifs[0]['net_id']
         port = self.ports_client.create_port(
             network_id=network_id,
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__))
         port_id = port['port']['id']
         self.addCleanup(self.ports_client.delete_port, port_id)
         iface = self.interfaces_client.create_interface(
@@ -324,7 +326,9 @@
 
         port = self.ports_client.create_port(
             network_id=network_id,
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__))
         port_id = port['port']['id']
         self.addCleanup(self.ports_client.delete_port, port_id)
 
diff --git a/tempest/api/compute/servers/test_create_server.py b/tempest/api/compute/servers/test_create_server.py
index c9aec62..6664e15 100644
--- a/tempest/api/compute/servers/test_create_server.py
+++ b/tempest/api/compute/servers/test_create_server.py
@@ -53,7 +53,9 @@
         cls.meta = {'hello': 'world'}
         cls.accessIPv4 = '1.1.1.1'
         cls.accessIPv6 = '0000:0000:0000:0000:0000:babe:220.12.22.2'
-        cls.name = data_utils.rand_name(cls.__name__ + '-server')
+        cls.name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-server')
         cls.password = data_utils.rand_password()
         disk_config = cls.disk_config
         server_initial = cls.create_test_server(
diff --git a/tempest/api/compute/servers/test_create_server_multi_nic.py b/tempest/api/compute/servers/test_create_server_multi_nic.py
index 6ec058d..1cbb976 100644
--- a/tempest/api/compute/servers/test_create_server_multi_nic.py
+++ b/tempest/api/compute/servers/test_create_server_multi_nic.py
@@ -67,7 +67,9 @@
         cls.subnets_client = cls.os_primary.subnets_client
 
     def _create_net_subnet_ret_net_from_cidr(self, cidr):
-        name_net = data_utils.rand_name(self.__class__.__name__)
+        name_net = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__)
         net = self.networks_client.create_network(name=name_net)
         self.addCleanup(self.networks_client.delete_network,
                         net['network']['id'])
diff --git a/tempest/api/compute/servers/test_device_tagging.py b/tempest/api/compute/servers/test_device_tagging.py
index 7d29a4d..2640311 100644
--- a/tempest/api/compute/servers/test_device_tagging.py
+++ b/tempest/api/compute/servers/test_device_tagging.py
@@ -172,11 +172,15 @@
 
         # Create networks
         net1 = self.networks_client.create_network(
-            name=data_utils.rand_name('device-tagging-net1'))['network']
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='device-tagging-net1'))['network']
         self.addCleanup(self.networks_client.delete_network, net1['id'])
 
         net2 = self.networks_client.create_network(
-            name=data_utils.rand_name('device-tagging-net2'))['network']
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='device-tagging-net2'))['network']
         self.addCleanup(self.networks_client.delete_network, net2['id'])
 
         # Create subnets
@@ -195,13 +199,17 @@
         # Create ports
         self.port1 = self.ports_client.create_port(
             network_id=net1['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__),
             fixed_ips=[{'subnet_id': subnet1['id']}])['port']
         self.addCleanup(self.ports_client.delete_port, self.port1['id'])
 
         self.port2 = self.ports_client.create_port(
             network_id=net1['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__),
             fixed_ips=[{'subnet_id': subnet1['id']}])['port']
         self.addCleanup(self.ports_client.delete_port, self.port2['id'])
 
@@ -215,7 +223,9 @@
             wait_until='SSHABLE',
             validation_resources=validation_resources,
             config_drive=config_drive_enabled,
-            name=data_utils.rand_name('device-tagging-server'),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='device-tagging-server'),
             networks=[
                 # Validation network for ssh
                 {
@@ -378,7 +388,8 @@
         # Create network
         net = self.networks_client.create_network(
             name=data_utils.rand_name(
-                'tagged-attachments-test-net'))['network']
+                prefix=CONF.resource_name_prefix,
+                name='tagged-attachments-test-net'))['network']
         self.addCleanup(self.networks_client.delete_network, net['id'])
 
         # Create subnet
@@ -400,7 +411,9 @@
             validatable=True,
             validation_resources=validation_resources,
             config_drive=config_drive_enabled,
-            name=data_utils.rand_name('device-tagging-server'),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='device-tagging-server'),
             networks=[{'uuid': self.get_tenant_network()['id']}],
             wait_until='SSHABLE')
         self.addCleanup(self.delete_server, server['id'])
diff --git a/tempest/api/compute/servers/test_list_server_filters.py b/tempest/api/compute/servers/test_list_server_filters.py
index 990dd52..7873296 100644
--- a/tempest/api/compute/servers/test_list_server_filters.py
+++ b/tempest/api/compute/servers/test_list_server_filters.py
@@ -48,17 +48,23 @@
         else:
             cls.fixed_network_name = None
         network_kwargs = fixed_network.set_networks_kwarg(network)
-        cls.s1_name = data_utils.rand_name(cls.__name__ + '-instance')
+        cls.s1_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-instance')
         cls.s1 = cls.create_test_server(name=cls.s1_name, **network_kwargs)
 
-        cls.s2_name = data_utils.rand_name(cls.__name__ + '-instance')
+        cls.s2_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-instance')
         # If image_ref_alt is "" or None then we still want to boot a server
         # but we rely on `testtools.skipUnless` decorator to actually skip
         # the irrelevant tests.
         cls.s2 = cls.create_test_server(
             name=cls.s2_name, image_id=cls.image_ref_alt or cls.image_ref)
 
-        cls.s3_name = data_utils.rand_name(cls.__name__ + '-instance')
+        cls.s3_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-instance')
         cls.s3 = cls.create_test_server(name=cls.s3_name,
                                         flavor=cls.flavor_ref_alt,
                                         wait_until='ACTIVE')
diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py
index a181839..21ed0cd 100644
--- a/tempest/api/compute/servers/test_server_actions.py
+++ b/tempest/api/compute/servers/test_server_actions.py
@@ -133,7 +133,9 @@
                               ['addresses'])
         # The server should be rebuilt using the provided image and data
         meta = {'rebuild': 'server'}
-        new_name = data_utils.rand_name(self.__class__.__name__ + '-server')
+        new_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-server')
         password = 'rebuildPassw0rd'
         rebuilt_server = self.client.rebuild_server(
             server_id,
@@ -575,7 +577,8 @@
             raise lib_exc.InvalidConfiguration(
                 'api_v2 must be True in [image-feature-enabled].')
 
-        backup1 = data_utils.rand_name('backup-1')
+        backup1 = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='backup-1')
         resp = self.client.create_backup(self.server_id,
                                          backup_type='daily',
                                          rotation=2,
@@ -603,7 +606,8 @@
         waiters.wait_for_image_status(glance_client,
                                       image1_id, 'active')
 
-        backup2 = data_utils.rand_name('backup-2')
+        backup2 = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='backup-2')
         waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
         resp = self.client.create_backup(self.server_id,
                                          backup_type='daily',
@@ -639,7 +643,8 @@
 
         # create the third one, due to the rotation is 2,
         # the first one will be deleted
-        backup3 = data_utils.rand_name('backup-3')
+        backup3 = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='backup-3')
         waiters.wait_for_server_status(self.client, self.server_id, 'ACTIVE')
         resp = self.client.create_backup(self.server_id,
                                          backup_type='daily',
@@ -796,7 +801,8 @@
     def test_create_backup(self):
         server = self.create_test_server(wait_until='ACTIVE')
 
-        backup1 = data_utils.rand_name('backup-1')
+        backup1 = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='backup-1')
         # Just check create_back to verify the schema with 2.47
         self.servers_client.create_backup(server['id'],
                                           backup_type='daily',
@@ -859,7 +865,9 @@
 
         # The server should be rebuilt using the provided image and data
         meta = {'rebuild': 'server'}
-        new_name = data_utils.rand_name(self.__class__.__name__ + '-server')
+        new_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-server')
         password = 'rebuildPassw0rd'
         rebuilt_server = self.servers_client.rebuild_server(
             server['id'],
diff --git a/tempest/api/compute/servers/test_server_group.py b/tempest/api/compute/servers/test_server_group.py
index 4b6d45a..f92b5ba 100644
--- a/tempest/api/compute/servers/test_server_group.py
+++ b/tempest/api/compute/servers/test_server_group.py
@@ -17,9 +17,12 @@
 
 from tempest.api.compute import base
 from tempest.common import compute
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ServerGroupTestJSON(base.BaseV2ComputeTest):
     """These tests check for the server-group APIs.
@@ -80,7 +83,8 @@
 
     def _create_delete_server_group(self, policy):
         # Create and Delete the server-group with given policy
-        name = data_utils.rand_name('server-group')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='server-group')
         server_group = self._create_server_group(name, policy)
         self._delete_server_group(server_group)
 
@@ -99,7 +103,8 @@
     def test_create_delete_multiple_server_groups_with_same_name_policy(self):
         """Test Create/Delete the server-groups with same name and policy"""
         server_groups = []
-        server_group_name = data_utils.rand_name('server-group')
+        server_group_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='server-group')
         for _ in range(0, 2):
             server_groups.append(self._create_server_group(server_group_name,
                                                            self.policy))
diff --git a/tempest/api/compute/servers/test_server_tags.py b/tempest/api/compute/servers/test_server_tags.py
index cdeaae5..0b5870a 100644
--- a/tempest/api/compute/servers/test_server_tags.py
+++ b/tempest/api/compute/servers/test_server_tags.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.compute import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ServerTagsTestJSON(base.BaseV2ComputeTest):
     """Test server tags with compute microversion greater than 2.25"""
@@ -51,7 +54,8 @@
         self.assertEmpty(fetched_tags)
 
         # Add server tag to the server.
-        assigned_tag = data_utils.rand_name('tag')
+        assigned_tag = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='tag')
         self._update_server_tags(self.server['id'], assigned_tag)
 
         # Check that added tag exists.
@@ -67,11 +71,16 @@
     def test_update_all_tags(self):
         """Test updating all server tags"""
         # Add server tags to the server.
-        tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
+        kwargs = {
+            'prefix': CONF.resource_name_prefix,
+            'name': 'tag'
+        }
+        tags = [data_utils.rand_name(**kwargs), data_utils.rand_name(**kwargs)]
         self._update_server_tags(self.server['id'], tags)
 
         # Replace tags with new tags and check that they are present.
-        new_tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
+        new_tags = [data_utils.rand_name(**kwargs),
+                    data_utils.rand_name(**kwargs)]
         replaced_tags = self.client.update_all_tags(
             self.server['id'], new_tags)['tags']
         self.assertCountEqual(new_tags, replaced_tags)
@@ -83,9 +92,13 @@
     @decorators.idempotent_id('a63b2a74-e918-4b7c-bcab-10c855f3a57e')
     def test_delete_all_tags(self):
         """Test deleting all server tags"""
+        kwargs = {
+            'prefix': CONF.resource_name_prefix,
+            'name': 'tag'
+        }
         # Add server tags to the server.
-        assigned_tags = [data_utils.rand_name('tag'),
-                         data_utils.rand_name('tag')]
+        assigned_tags = [data_utils.rand_name(**kwargs),
+                         data_utils.rand_name(**kwargs)]
         self._update_server_tags(self.server['id'], assigned_tags)
 
         # Delete tags from the server and check that they were deleted.
@@ -97,7 +110,8 @@
     def test_check_tag_existence(self):
         """Test checking server tag existence"""
         # Add server tag to the server.
-        assigned_tag = data_utils.rand_name('tag')
+        assigned_tag = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='tag')
         self._update_server_tags(self.server['id'], assigned_tag)
 
         # Check that added tag exists. Throws a 404 if not found, else a 204,
diff --git a/tempest/api/compute/servers/test_servers.py b/tempest/api/compute/servers/test_servers.py
index 388b9b0..c72b74e 100644
--- a/tempest/api/compute/servers/test_servers.py
+++ b/tempest/api/compute/servers/test_servers.py
@@ -60,7 +60,8 @@
         """Test creating a server with already existing name is allowed"""
         # TODO(sdague): clear out try, we do cleanup one layer up
         server_name = data_utils.rand_name(
-            self.__class__.__name__ + '-server')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-server')
         server = self.create_test_server(name=server_name,
                                          wait_until='ACTIVE')
         id1 = server['id']
@@ -79,7 +80,8 @@
     @decorators.idempotent_id('f9e15296-d7f9-4e62-b53f-a04e89160833')
     def test_create_specify_keypair(self):
         """Test creating server with keypair"""
-        key_name = data_utils.rand_name('key')
+        key_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='key')
         self.keypairs_client.create_keypair(name=key_name)
         self.addCleanup(self.keypairs_client.delete_keypair, key_name)
         self.keypairs_client.list_keypairs()
@@ -91,7 +93,8 @@
 
     def _update_server_name(self, server_id, status, prefix_name='server'):
         # The server name should be changed to the provided value
-        new_name = data_utils.rand_name(prefix_name)
+        new_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=prefix_name)
 
         # Update the server with a new name
         self.client.update_server(server_id,
@@ -159,7 +162,9 @@
         will return 400(Bad Request) if we attempt to send a name which has
         4 byte utf-8 character.
         """
-        utf8_name = data_utils.rand_name(b'\xe2\x82\xa1'.decode('utf-8'))
+        utf8_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=b'\xe2\x82\xa1'.decode('utf-8'))
         self.create_test_server(name=utf8_name, wait_until='ACTIVE')
 
 
diff --git a/tempest/api/compute/servers/test_servers_microversions.py b/tempest/api/compute/servers/test_servers_microversions.py
index 566d04a..346c659 100644
--- a/tempest/api/compute/servers/test_servers_microversions.py
+++ b/tempest/api/compute/servers/test_servers_microversions.py
@@ -15,6 +15,7 @@
 
 from tempest.api.compute import base
 from tempest.common import waiters
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
@@ -30,6 +31,8 @@
 # their integration tests, you can add tests to cover those schema
 # in this file.
 
+CONF = config.CONF
+
 
 class ServerShowV254Test(base.BaseV2ComputeTest):
     """Test servers API schema for compute microversion greater than 2.53"""
@@ -41,7 +44,8 @@
         """Test rebuilding server with microversion greater than 2.53"""
         server = self.create_test_server(wait_until='ACTIVE')
         keypair_name = data_utils.rand_name(
-            self.__class__.__name__ + '-keypair')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-keypair')
         kwargs = {'name': keypair_name}
         self.keypairs_client.create_keypair(**kwargs)
         self.addCleanup(self.keypairs_client.delete_keypair,
diff --git a/tempest/api/compute/servers/test_servers_negative.py b/tempest/api/compute/servers/test_servers_negative.py
index bd383d3..22fe54d 100644
--- a/tempest/api/compute/servers/test_servers_negative.py
+++ b/tempest/api/compute/servers/test_servers_negative.py
@@ -267,7 +267,8 @@
     def test_create_with_non_existent_keypair(self):
         """Creating a server with non-existent keypair should fail"""
         # Pass a non-existent keypair while creating a server
-        key_name = data_utils.rand_name('key')
+        key_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='key')
         self.assertRaises(lib_exc.BadRequest,
                           self.create_test_server,
                           key_name=key_name)
@@ -288,7 +289,8 @@
         """Updating name of a non-existent server should fail"""
         nonexistent_server = data_utils.rand_uuid()
         new_name = data_utils.rand_name(
-            self.__class__.__name__ + '-server') + '_updated'
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-server') + '_updated'
 
         self.assertRaises(lib_exc.NotFound, self.client.update_server,
                           nonexistent_server, name=new_name)
diff --git a/tempest/api/compute/volumes/test_volume_snapshots.py b/tempest/api/compute/volumes/test_volume_snapshots.py
index 30bea60..5b06a86 100644
--- a/tempest/api/compute/volumes/test_volume_snapshots.py
+++ b/tempest/api/compute/volumes/test_volume_snapshots.py
@@ -53,7 +53,9 @@
         volume = self.create_volume()
         self.addCleanup(self.delete_volume, volume['id'])
 
-        s_name = data_utils.rand_name(self.__class__.__name__ + '-Snapshot')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Snapshot')
         # Create snapshot
         snapshot = self.snapshots_client.create_snapshot(
             volume_id=volume['id'],
diff --git a/tempest/api/compute/volumes/test_volumes_get.py b/tempest/api/compute/volumes/test_volumes_get.py
index 554f418..2a4189e 100644
--- a/tempest/api/compute/volumes/test_volumes_get.py
+++ b/tempest/api/compute/volumes/test_volumes_get.py
@@ -47,7 +47,9 @@
     @decorators.idempotent_id('f10f25eb-9775-4d9d-9cbe-1cf54dae9d5f')
     def test_volume_create_get_delete(self):
         """Test create/get/delete volume"""
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         metadata = {'Type': 'work'}
         # Create volume
         volume = self.create_volume(size=CONF.volume.volume_size,
diff --git a/tempest/api/compute/volumes/test_volumes_negative.py b/tempest/api/compute/volumes/test_volumes_negative.py
index f553e32..c386497 100644
--- a/tempest/api/compute/volumes/test_volumes_negative.py
+++ b/tempest/api/compute/volumes/test_volumes_negative.py
@@ -64,7 +64,9 @@
     @decorators.idempotent_id('5125ae14-152b-40a7-b3c5-eae15e9022ef')
     def test_create_volume_with_invalid_size(self):
         """Test creating volume with invalid size should fail"""
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         metadata = {'Type': 'work'}
         self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
                           size='#$%', display_name=v_name, metadata=metadata)
@@ -73,7 +75,9 @@
     @decorators.idempotent_id('131cb3a1-75cc-4d40-b4c3-1317f64719b0')
     def test_create_volume_without_passing_size(self):
         """Test creating volume without specifying size should fail"""
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         metadata = {'Type': 'work'}
         self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
                           size='', display_name=v_name, metadata=metadata)
@@ -82,7 +86,9 @@
     @decorators.idempotent_id('8cce995e-0a83-479a-b94d-e1e40b8a09d1')
     def test_create_volume_with_size_zero(self):
         """Test creating volume with size=0 should fail"""
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         metadata = {'Type': 'work'}
         self.assertRaises(lib_exc.BadRequest, self.client.create_volume,
                           size='0', display_name=v_name, metadata=metadata)
@@ -97,9 +103,11 @@
     @decorators.idempotent_id('62972737-124b-4513-b6cf-2f019f178494')
     def test_delete_invalid_volume_id(self):
         """Test deleting volume with an invalid volume id should fail"""
-        self.assertRaises(lib_exc.NotFound,
-                          self.client.delete_volume,
-                          data_utils.rand_name('invalid'))
+        self.assertRaises(
+            lib_exc.NotFound,
+            self.client.delete_volume,
+            data_utils.rand_name(prefix=CONF.resource_name_prefix,
+                                 name='invalid'))
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('0d1417c5-4ae8-4c2c-adc5-5f0b864253e5')
diff --git a/tempest/api/identity/admin/v2/test_endpoints.py b/tempest/api/identity/admin/v2/test_endpoints.py
index 236ce7c..20d023b 100644
--- a/tempest/api/identity/admin/v2/test_endpoints.py
+++ b/tempest/api/identity/admin/v2/test_endpoints.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class EndPointsTestJSON(base.BaseIdentityV2AdminTest):
     """Test keystone v2 endpoints"""
@@ -24,9 +27,12 @@
     @classmethod
     def resource_setup(cls):
         super(EndPointsTestJSON, cls).resource_setup()
-        s_name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(
+            name='service', prefix=CONF.resource_name_prefix)
+        s_type = data_utils.rand_name(
+            name='type', prefix=CONF.resource_name_prefix)
+        s_description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         service_data = cls.services_client.create_service(
             name=s_name, type=s_type,
             description=s_description)['OS-KSADM:service']
@@ -36,7 +42,8 @@
         # Create endpoints so as to use for LIST and GET test cases
         cls.setup_endpoints = list()
         for _ in range(2):
-            region = data_utils.rand_name('region')
+            region = data_utils.rand_name(
+                name='region', prefix=CONF.resource_name_prefix)
             url = data_utils.rand_url()
             endpoint = cls.endpoints_client.create_endpoint(
                 service_id=cls.service_id,
@@ -65,7 +72,8 @@
     @decorators.idempotent_id('9974530a-aa28-4362-8403-f06db02b26c1')
     def test_create_list_delete_endpoint(self):
         """Test creating, listing and deleting a keystone endpoint"""
-        region = data_utils.rand_name('region')
+        region = data_utils.rand_name(
+            name='region', prefix=CONF.resource_name_prefix)
         url = data_utils.rand_url()
         endpoint = self.endpoints_client.create_endpoint(
             service_id=self.service_id,
diff --git a/tempest/api/identity/admin/v2/test_roles.py b/tempest/api/identity/admin/v2/test_roles.py
index 9736a76..6d384ab 100644
--- a/tempest/api/identity/admin/v2/test_roles.py
+++ b/tempest/api/identity/admin/v2/test_roles.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class RolesTestJSON(base.BaseIdentityV2AdminTest):
 
@@ -26,7 +29,8 @@
         super(RolesTestJSON, cls).resource_setup()
         cls.roles = list()
         for _ in range(5):
-            role_name = data_utils.rand_name(name='role')
+            role_name = data_utils.rand_name(
+                name='role', prefix=CONF.resource_name_prefix)
             role = cls.roles_client.create_role(name=role_name)['role']
             cls.addClassResourceCleanup(
                 test_utils.call_and_ignore_notfound_exc,
@@ -57,7 +61,8 @@
     @decorators.idempotent_id('c62d909d-6c21-48c0-ae40-0a0760e6db5e')
     def test_role_create_delete(self):
         """Role should be created, verified, and deleted."""
-        role_name = data_utils.rand_name(name='role-test')
+        role_name = data_utils.rand_name(
+            name='role-test', prefix=CONF.resource_name_prefix)
         body = self.roles_client.create_role(name=role_name)['role']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.roles_client.delete_role, body['id'])
diff --git a/tempest/api/identity/admin/v2/test_roles_negative.py b/tempest/api/identity/admin/v2/test_roles_negative.py
index 3c71ba9..0f0466e 100644
--- a/tempest/api/identity/admin/v2/test_roles_negative.py
+++ b/tempest/api/identity/admin/v2/test_roles_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class RolesNegativeTestJSON(base.BaseIdentityV2AdminTest):
     """Negative tests of keystone roles via v2 API"""
@@ -55,7 +58,8 @@
     @decorators.idempotent_id('585c8998-a8a4-4641-a5dd-abef7a8ced00')
     def test_create_role_by_unauthorized_user(self):
         """Test non-admin user should not be able to create role via v2 API"""
-        role_name = data_utils.rand_name(name='role')
+        role_name = data_utils.rand_name(
+            name='role', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.Forbidden,
                           self.non_admin_roles_client.create_role,
                           name=role_name)
@@ -66,7 +70,8 @@
         """Test creating role without a valid token via v2 API should fail"""
         token = self.client.auth_provider.get_token()
         self.client.delete_token(token)
-        role_name = data_utils.rand_name(name='role')
+        role_name = data_utils.rand_name(
+            name='role', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.Unauthorized,
                           self.roles_client.create_role, name=role_name)
         self.client.auth_provider.clear_auth()
@@ -75,7 +80,8 @@
     @decorators.idempotent_id('c0cde2c8-81c1-4bb0-8fe2-cf615a3547a8')
     def test_role_create_duplicate(self):
         """Test role names should be unique via v2 API"""
-        role_name = data_utils.rand_name(name='role-dup')
+        role_name = data_utils.rand_name(
+            name='role-dup', prefix=CONF.resource_name_prefix)
         body = self.roles_client.create_role(name=role_name)['role']
         role1_id = body.get('id')
         self.addCleanup(self.roles_client.delete_role, role1_id)
@@ -86,7 +92,8 @@
     @decorators.idempotent_id('15347635-b5b1-4a87-a280-deb2bd6d865e')
     def test_delete_role_by_unauthorized_user(self):
         """Test non-admin user should not be able to delete role via v2 API"""
-        role_name = data_utils.rand_name(name='role')
+        role_name = data_utils.rand_name(
+            name='role', prefix=CONF.resource_name_prefix)
         body = self.roles_client.create_role(name=role_name)['role']
         self.addCleanup(self.roles_client.delete_role, body['id'])
         role_id = body.get('id')
@@ -97,7 +104,8 @@
     @decorators.idempotent_id('44b60b20-70de-4dac-beaf-a3fc2650a16b')
     def test_delete_role_request_without_token(self):
         """Test deleting role without a valid token via v2 API should fail"""
-        role_name = data_utils.rand_name(name='role')
+        role_name = data_utils.rand_name(
+            name='role', prefix=CONF.resource_name_prefix)
         body = self.roles_client.create_role(name=role_name)['role']
         self.addCleanup(self.roles_client.delete_role, body['id'])
         role_id = body.get('id')
diff --git a/tempest/api/identity/admin/v2/test_services.py b/tempest/api/identity/admin/v2/test_services.py
index 182b24c..0e5d378 100644
--- a/tempest/api/identity/admin/v2/test_services.py
+++ b/tempest/api/identity/admin/v2/test_services.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class ServicesTestJSON(base.BaseIdentityV2AdminTest):
     """Test identity services via v2 API"""
@@ -34,9 +37,12 @@
         """Test verifies the identity service create/get/delete via v2 API"""
         # GET Service
         # Creating a Service
-        name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
-        description = data_utils.rand_name('description')
+        name = data_utils.rand_name(
+            name='service', prefix=CONF.resource_name_prefix)
+        s_type = data_utils.rand_name(
+            name='type', prefix=CONF.resource_name_prefix)
+        description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         service_data = self.services_client.create_service(
             name=name, type=s_type,
             description=description)['OS-KSADM:service']
@@ -70,8 +76,10 @@
 
         Create a service only with name and type.
         """
-        name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
+        name = data_utils.rand_name(
+            name='service', prefix=CONF.resource_name_prefix)
+        s_type = data_utils.rand_name(
+            name='type', prefix=CONF.resource_name_prefix)
         service = self.services_client.create_service(
             name=name, type=s_type)['OS-KSADM:service']
         self.assertIn('id', service)
@@ -87,9 +95,12 @@
         """Test Create/List/Verify/Delete of identity service via v2 API"""
         services = []
         for _ in range(3):
-            name = data_utils.rand_name('service')
-            s_type = data_utils.rand_name('type')
-            description = data_utils.rand_name('description')
+            name = data_utils.rand_name(
+                name='service', prefix=CONF.resource_name_prefix)
+            s_type = data_utils.rand_name(
+                name='type', prefix=CONF.resource_name_prefix)
+            description = data_utils.rand_name(
+                name='description', prefix=CONF.resource_name_prefix)
 
             service = self.services_client.create_service(
                 name=name, type=s_type,
diff --git a/tempest/api/identity/admin/v2/test_tenant_negative.py b/tempest/api/identity/admin/v2/test_tenant_negative.py
index 792dad9..4c7c44c 100644
--- a/tempest/api/identity/admin/v2/test_tenant_negative.py
+++ b/tempest/api/identity/admin/v2/test_tenant_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class TenantsNegativeTestJSON(base.BaseIdentityV2AdminTest):
     """Negative tests of keystone tenants via v2 API"""
@@ -77,7 +80,8 @@
     @decorators.idempotent_id('af16f44b-a849-46cb-9f13-a751c388f739')
     def test_tenant_create_duplicate(self):
         """Test tenant names should be unique via v2 API"""
-        tenant_name = data_utils.rand_name(name='tenant')
+        tenant_name = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         self.setup_test_tenant(name=tenant_name)
         self.assertRaises(lib_exc.Conflict, self.tenants_client.create_tenant,
                           name=tenant_name)
@@ -89,7 +93,8 @@
 
         Non-admin user should not be authorized to create a tenant via v2 API.
         """
-        tenant_name = data_utils.rand_name(name='tenant')
+        tenant_name = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.Forbidden,
                           self.non_admin_tenants_client.create_tenant,
                           name=tenant_name)
@@ -98,7 +103,8 @@
     @decorators.idempotent_id('a3ee9d7e-6920-4dd5-9321-d4b2b7f0a638')
     def test_create_tenant_request_without_token(self):
         """Test creating tenant without a token via v2 API is not allowed"""
-        tenant_name = data_utils.rand_name(name='tenant')
+        tenant_name = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         token = self.client.auth_provider.get_token()
         self.client.delete_token(token)
         self.assertRaises(lib_exc.Unauthorized,
diff --git a/tempest/api/identity/admin/v2/test_tenants.py b/tempest/api/identity/admin/v2/test_tenants.py
index 5f73e1c..4f674a8 100644
--- a/tempest/api/identity/admin/v2/test_tenants.py
+++ b/tempest/api/identity/admin/v2/test_tenants.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class TenantsTestJSON(base.BaseIdentityV2AdminTest):
     """Test identity tenants via v2 API"""
@@ -46,7 +49,8 @@
     @decorators.idempotent_id('d25e9f24-1310-4d29-b61b-d91299c21d6d')
     def test_tenant_create_with_description(self):
         """Test creating tenant with a description via v2 API"""
-        tenant_desc = data_utils.rand_name(name='desc')
+        tenant_desc = data_utils.rand_name(
+            name='desc', prefix=CONF.resource_name_prefix)
         tenant = self.setup_test_tenant(description=tenant_desc)
         tenant_id = tenant['id']
         desc1 = tenant['description']
@@ -83,12 +87,14 @@
     @decorators.idempotent_id('781f2266-d128-47f3-8bdb-f70970add238')
     def test_tenant_update_name(self):
         """Test updating name attribute of a tenant via v2 API"""
-        t_name1 = data_utils.rand_name(name='tenant')
+        t_name1 = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         tenant = self.setup_test_tenant(name=t_name1)
         t_id = tenant['id']
         resp1_name = tenant['name']
 
-        t_name2 = data_utils.rand_name(name='tenant2')
+        t_name2 = data_utils.rand_name(
+            name='tenant2', prefix=CONF.resource_name_prefix)
         body = self.tenants_client.update_tenant(t_id, name=t_name2)['tenant']
         resp2_name = body['name']
         self.assertNotEqual(resp1_name, resp2_name)
@@ -105,12 +111,14 @@
     @decorators.idempotent_id('859fcfe1-3a03-41ef-86f9-b19a47d1cd87')
     def test_tenant_update_desc(self):
         """Test updating description attribute of a tenant via v2 API"""
-        t_desc = data_utils.rand_name(name='desc')
+        t_desc = data_utils.rand_name(
+            name='desc', prefix=CONF.resource_name_prefix)
         tenant = self.setup_test_tenant(description=t_desc)
         t_id = tenant['id']
         resp1_desc = tenant['description']
 
-        t_desc2 = data_utils.rand_name(name='desc2')
+        t_desc2 = data_utils.rand_name(
+            name='desc2', prefix=CONF.resource_name_prefix)
         body = self.tenants_client.update_tenant(t_id, description=t_desc2)
         updated_tenant = body['tenant']
         resp2_desc = updated_tenant['description']
diff --git a/tempest/api/identity/admin/v2/test_tokens.py b/tempest/api/identity/admin/v2/test_tokens.py
index 5d89f9d..78a2aad 100644
--- a/tempest/api/identity/admin/v2/test_tokens.py
+++ b/tempest/api/identity/admin/v2/test_tokens.py
@@ -29,7 +29,8 @@
     def test_create_check_get_delete_token(self):
         """Test getting create/check/get/delete token for user via v2 API"""
         # get a token by username and password
-        user_name = data_utils.rand_name(name='user')
+        user_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         user_password = data_utils.rand_password()
         # first:create a tenant
         tenant = self.setup_test_tenant()
@@ -67,7 +68,8 @@
         """
 
         # Create a user.
-        user_name = data_utils.rand_name(name='user')
+        user_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         user_password = data_utils.rand_password()
         tenant_id = None  # No default tenant so will get unscoped token.
         user = self.create_test_user(name=user_name,
@@ -76,10 +78,12 @@
                                      email='')
 
         # Create a couple tenants.
-        tenant1_name = data_utils.rand_name(name='tenant')
+        tenant1_name = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         tenant1 = self.setup_test_tenant(name=tenant1_name)
 
-        tenant2_name = data_utils.rand_name(name='tenant')
+        tenant2_name = data_utils.rand_name(
+            name='tenant', prefix=CONF.resource_name_prefix)
         tenant2 = self.setup_test_tenant(name=tenant2_name)
 
         # Create a role
diff --git a/tempest/api/identity/admin/v2/test_users.py b/tempest/api/identity/admin/v2/test_users.py
index 57a321a..011419e 100644
--- a/tempest/api/identity/admin/v2/test_users.py
+++ b/tempest/api/identity/admin/v2/test_users.py
@@ -18,9 +18,12 @@
 from testtools import matchers
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class UsersTestJSON(base.BaseIdentityV2AdminTest):
     """Test keystone users via v2 API"""
@@ -28,7 +31,8 @@
     @classmethod
     def resource_setup(cls):
         super(UsersTestJSON, cls).resource_setup()
-        cls.alt_user = data_utils.rand_name('test_user')
+        cls.alt_user = data_utils.rand_name(
+            name='test_user', prefix=CONF.resource_name_prefix)
         cls.alt_email = cls.alt_user + '@testmail.tm'
 
     @decorators.attr(type='smoke')
@@ -43,7 +47,8 @@
     def test_create_user_with_enabled(self):
         """Test creating a user with enabled : False via v2 API"""
         tenant = self.setup_test_tenant()
-        name = data_utils.rand_name('test_user')
+        name = data_utils.rand_name(
+            name='test_user', prefix=CONF.resource_name_prefix)
         user = self.create_test_user(name=name,
                                      tenantId=tenant['id'],
                                      email=self.alt_email,
@@ -59,7 +64,8 @@
         user = self.create_test_user(tenantId=tenant['id'])
 
         # Updating user details with new values
-        u_name2 = data_utils.rand_name('user2')
+        u_name2 = data_utils.rand_name(
+            name='user2', prefix=CONF.resource_name_prefix)
         u_email2 = u_name2 + '@testmail.tm'
         update_user = self.users_client.update_user(user['id'], name=u_name2,
                                                     email=u_email2,
diff --git a/tempest/api/identity/admin/v2/test_users_negative.py b/tempest/api/identity/admin/v2/test_users_negative.py
index eda1fdd..7ccd75c 100644
--- a/tempest/api/identity/admin/v2/test_users_negative.py
+++ b/tempest/api/identity/admin/v2/test_users_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class UsersNegativeTestJSON(base.BaseIdentityV2AdminTest):
     """Negative tests of identity users via v2 API"""
@@ -25,7 +28,8 @@
     @classmethod
     def resource_setup(cls):
         super(UsersNegativeTestJSON, cls).resource_setup()
-        cls.alt_user = data_utils.rand_name('test_user')
+        cls.alt_user = data_utils.rand_name(
+            'test_user', prefix=CONF.resource_name_prefix)
         cls.alt_password = data_utils.rand_password()
         cls.alt_email = cls.alt_user + '@testmail.tm'
 
@@ -106,7 +110,8 @@
     def test_create_user_with_enabled_non_bool(self):
         """Creating a user with invalid enabled para via v2 API should fail"""
         tenant = self.setup_test_tenant()
-        name = data_utils.rand_name('test_user')
+        name = data_utils.rand_name(
+            'test_user', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.BadRequest, self.users_client.create_user,
                           name=name, password=self.alt_password,
                           tenantId=tenant['id'],
@@ -116,7 +121,8 @@
     @decorators.idempotent_id('3d07e294-27a0-4144-b780-a2a1bf6fee19')
     def test_update_user_for_non_existent_user(self):
         """Updating a non-existent user via v2 API should fail"""
-        user_name = data_utils.rand_name('user')
+        user_name = data_utils.rand_name(
+            'user', prefix=CONF.resource_name_prefix)
         non_existent_id = data_utils.rand_uuid()
         self.assertRaises(lib_exc.NotFound, self.users_client.update_user,
                           non_existent_id, name=user_name)
diff --git a/tempest/api/identity/admin/v3/test_credentials.py b/tempest/api/identity/admin/v3/test_credentials.py
index 441f10f..1213cfc 100644
--- a/tempest/api/identity/admin/v3/test_credentials.py
+++ b/tempest/api/identity/admin/v3/test_credentials.py
@@ -15,9 +15,12 @@
 from oslo_serialization import jsonutils as json
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class CredentialsTestJSON(base.BaseIdentityV3AdminTest):
     """Test keystone credentials"""
@@ -35,8 +38,11 @@
                           ['access', 'secret']]
         for _ in range(2):
             project = cls.projects_client.create_project(
-                data_utils.rand_name('project'),
-                description=data_utils.rand_name('project-desc'))['project']
+                data_utils.rand_name(
+                    name='project', prefix=CONF.resource_name_prefix),
+                description=data_utils.rand_name(
+                    name='project-desc',
+                    prefix=CONF.resource_name_prefix))['project']
             cls.addClassResourceCleanup(
                 cls.projects_client.delete_project, project['id'])
             cls.projects.append(project['id'])
@@ -50,8 +56,10 @@
     @decorators.idempotent_id('7cd59bf9-bda4-4c72-9467-d21cab278355')
     def test_credentials_create_get_update_delete(self):
         """Test creating, getting, updating, deleting of credentials"""
+        prefix = CONF.resource_name_prefix
         blob = '{"access": "%s", "secret": "%s"}' % (
-            data_utils.rand_name('Access'), data_utils.rand_name('Secret'))
+            data_utils.rand_name(name='Access', prefix=prefix),
+            data_utils.rand_name(name='Secret', prefix=prefix))
         cred = self.creds_client.create_credential(
             user_id=self.user_body['id'], project_id=self.projects[0],
             blob=blob, type='ec2')['credential']
@@ -61,8 +69,8 @@
         for value2 in self.creds_list[1]:
             self.assertIn(value2, cred['blob'])
 
-        new_keys = [data_utils.rand_name('NewAccess'),
-                    data_utils.rand_name('NewSecret')]
+        new_keys = [data_utils.rand_name(name='NewAccess', prefix=prefix),
+                    data_utils.rand_name(name='NewSecret', prefix=prefix)]
         blob = '{"access": "%s", "secret": "%s"}' % (new_keys[0], new_keys[1])
         update_body = self.creds_client.update_credential(
             cred['id'], blob=blob, project_id=self.projects[1],
@@ -88,10 +96,12 @@
         """Test listing credentials"""
         created_cred_ids = list()
         fetched_cred_ids = list()
+        prefix = CONF.resource_name_prefix
 
         for _ in range(2):
             blob = '{"access": "%s", "secret": "%s"}' % (
-                data_utils.rand_name('Access'), data_utils.rand_name('Secret'))
+                data_utils.rand_name(name='Access', prefix=prefix),
+                data_utils.rand_name(name='Secret', prefix=prefix))
             cred = self.creds_client.create_credential(
                 user_id=self.user_body['id'], project_id=self.projects[0],
                 blob=blob, type='ec2')['credential']
diff --git a/tempest/api/identity/admin/v3/test_default_project_id.py b/tempest/api/identity/admin/v3/test_default_project_id.py
index 7c3a6cc..64550d1 100644
--- a/tempest/api/identity/admin/v3/test_default_project_id.py
+++ b/tempest/api/identity/admin/v3/test_default_project_id.py
@@ -42,7 +42,8 @@
     def test_default_project_id(self):
         """Creating a token without project will default to user's project"""
         # create a domain
-        dom_name = data_utils.rand_name('dom')
+        dom_name = data_utils.rand_name(
+            name='dom', prefix=CONF.resource_name_prefix)
         domain_body = self.domains_client.create_domain(
             name=dom_name)['domain']
         dom_id = domain_body['id']
@@ -57,7 +58,8 @@
 
         # create a user in the domain, with the previous project as his
         # default project
-        user_name = data_utils.rand_name('user')
+        user_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         user_pass = data_utils.rand_password()
         user_body = self.users_client.create_user(
             name=user_name,
diff --git a/tempest/api/identity/admin/v3/test_domain_configuration.py b/tempest/api/identity/admin/v3/test_domain_configuration.py
index a246a36..e195dd9 100644
--- a/tempest/api/identity/admin/v3/test_domain_configuration.py
+++ b/tempest/api/identity/admin/v3/test_domain_configuration.py
@@ -14,11 +14,14 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class DomainConfigurationTestJSON(base.BaseIdentityV3AdminTest):
     """Test domain configuration"""
@@ -150,7 +153,8 @@
         domain, _ = self._create_domain_and_config(self.custom_config)
 
         # Check that updating configuration groups work.
-        new_driver = data_utils.rand_name('driver')
+        new_driver = data_utils.rand_name(
+            name='driver', prefix=CONF.resource_name_prefix)
         new_limit = data_utils.rand_int_id(0, 100)
         new_group_config = {'identity': {'driver': new_driver,
                                          'list_limit': new_limit}}
@@ -162,7 +166,8 @@
         self.assertEqual(new_limit, updated_config['identity']['list_limit'])
 
         # Check that updating individual configuration group options work.
-        new_driver = data_utils.rand_name('driver')
+        new_driver = data_utils.rand_name(
+            name='driver', prefix=CONF.resource_name_prefix)
 
         updated_config = self.client.update_domain_group_option_config(
             domain['id'], 'identity', 'driver', driver=new_driver)['config']
diff --git a/tempest/api/identity/admin/v3/test_domains.py b/tempest/api/identity/admin/v3/test_domains.py
index 419c6c7..80c4d1c 100644
--- a/tempest/api/identity/admin/v3/test_domains.py
+++ b/tempest/api/identity/admin/v3/test_domains.py
@@ -76,9 +76,10 @@
     @decorators.idempotent_id('f2f5b44a-82e8-4dad-8084-0661ea3b18cf')
     def test_create_update_delete_domain(self):
         """Test creating, updating and deleting domain"""
+        prefix = CONF.resource_name_prefix
         # Create domain
-        d_name = data_utils.rand_name('domain')
-        d_desc = data_utils.rand_name('domain-desc')
+        d_name = data_utils.rand_name(name='domain', prefix=prefix)
+        d_desc = data_utils.rand_name(name='domain-desc', prefix=prefix)
         domain = self.domains_client.create_domain(
             name=d_name, description=d_desc)['domain']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -92,8 +93,8 @@
         self.assertEqual(d_desc, domain['description'])
         self.assertEqual(True, domain['enabled'])
         # Update domain
-        new_desc = data_utils.rand_name('new-desc')
-        new_name = data_utils.rand_name('new-name')
+        new_desc = data_utils.rand_name(name='new-desc', prefix=prefix)
+        new_name = data_utils.rand_name(name='new-name', prefix=prefix)
         updated_domain = self.domains_client.update_domain(
             domain['id'], name=new_name, description=new_desc,
             enabled=False)['domain']
@@ -139,8 +140,10 @@
     def test_create_domain_with_disabled_status(self):
         """Test creating domain with disabled status"""
         # Create domain with enabled status as false
-        d_name = data_utils.rand_name('domain')
-        d_desc = data_utils.rand_name('domain-desc')
+        d_name = data_utils.rand_name(
+            name='domain', prefix=CONF.resource_name_prefix)
+        d_desc = data_utils.rand_name(
+            name='domain-desc', prefix=CONF.resource_name_prefix)
         domain = self.domains_client.create_domain(
             name=d_name, description=d_desc, enabled=False)['domain']
         self.addCleanup(self.domains_client.delete_domain, domain['id'])
@@ -152,7 +155,8 @@
     def test_create_domain_without_description(self):
         """Test creating domain without description"""
         # Create domain only with name
-        d_name = data_utils.rand_name('domain')
+        d_name = data_utils.rand_name(
+            name='domain', prefix=CONF.resource_name_prefix)
         domain = self.domains_client.create_domain(name=d_name)['domain']
         self.addCleanup(self.delete_domain, domain['id'])
         expected_data = {'name': d_name, 'enabled': True}
diff --git a/tempest/api/identity/admin/v3/test_domains_negative.py b/tempest/api/identity/admin/v3/test_domains_negative.py
index c90206d..1087b63 100644
--- a/tempest/api/identity/admin/v3/test_domains_negative.py
+++ b/tempest/api/identity/admin/v3/test_domains_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class DomainsNegativeTestJSON(base.BaseIdentityV3AdminTest):
     """Negative tests of identity domains"""
@@ -73,7 +76,8 @@
     @decorators.idempotent_id('e6f9e4a2-4f36-4be8-bdbc-4e199ae29427')
     def test_domain_create_duplicate(self):
         """Test creating domain with duplicate name should fail"""
-        domain_name = data_utils.rand_name('domain-dup')
+        domain_name = data_utils.rand_name(
+            name='domain-dup', prefix=CONF.resource_name_prefix)
         domain = self.domains_client.create_domain(name=domain_name)['domain']
         domain_id = domain['id']
         self.addCleanup(self.delete_domain, domain_id)
diff --git a/tempest/api/identity/admin/v3/test_endpoint_groups.py b/tempest/api/identity/admin/v3/test_endpoint_groups.py
index 2fa92e3..591a83b 100644
--- a/tempest/api/identity/admin/v3/test_endpoint_groups.py
+++ b/tempest/api/identity/admin/v3/test_endpoint_groups.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class EndPointGroupsTest(base.BaseIdentityV3AdminTest):
     """Test endpoint groups"""
@@ -42,8 +45,10 @@
         cls.addClassResourceCleanup(
             cls.services_client.delete_service, service_id)
 
-        name = data_utils.rand_name('service_group')
-        description = data_utils.rand_name('description')
+        name = data_utils.rand_name(
+            name='service_group', prefix=CONF.resource_name_prefix)
+        description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         filters = {'service_id': service_id}
 
         endpoint_group = cls.client.create_endpoint_group(
@@ -57,9 +62,10 @@
 
     @classmethod
     def _create_service(cls):
-        s_name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
-        s_description = data_utils.rand_name('description')
+        prefix = CONF.resource_name_prefix
+        s_name = data_utils.rand_name(name='service', prefix=prefix)
+        s_type = data_utils.rand_name(name='type', prefix=prefix)
+        s_description = data_utils.rand_name(name='description', prefix=prefix)
         service_data = (
             cls.services_client.create_service(name=s_name,
                                                type=s_type,
@@ -73,8 +79,10 @@
         """Test create/list/show/check/delete of endpoint group"""
         service_id = self._create_service()
         self.addCleanup(self.services_client.delete_service, service_id)
-        name = data_utils.rand_name('service_group')
-        description = data_utils.rand_name('description')
+        name = data_utils.rand_name(
+            name='service_group', prefix=CONF.resource_name_prefix)
+        description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         filters = {'service_id': service_id}
 
         endpoint_group = self.client.create_endpoint_group(
@@ -135,8 +143,10 @@
         # with new values
         service1_id = self._create_service()
         self.addCleanup(self.services_client.delete_service, service1_id)
-        name = data_utils.rand_name('service_group')
-        description = data_utils.rand_name('description')
+        name = data_utils.rand_name(
+            name='service_group', prefix=CONF.resource_name_prefix)
+        description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         filters = {'service_id': service1_id}
 
         endpoint_group = self.client.create_endpoint_group(
@@ -149,8 +159,10 @@
         # Creating new attr values to update endpoint group
         service2_id = self._create_service()
         self.addCleanup(self.services_client.delete_service, service2_id)
-        name2 = data_utils.rand_name('service_group2')
-        description2 = data_utils.rand_name('description2')
+        name2 = data_utils.rand_name(
+            name='service_group2', prefix=CONF.resource_name_prefix)
+        description2 = data_utils.rand_name(
+            name='description2', prefix=CONF.resource_name_prefix)
         filters = {'service_id': service2_id}
 
         # Updating endpoint group with new attr values
diff --git a/tempest/api/identity/admin/v3/test_endpoints.py b/tempest/api/identity/admin/v3/test_endpoints.py
index 0199d73..f9f3e72 100644
--- a/tempest/api/identity/admin/v3/test_endpoints.py
+++ b/tempest/api/identity/admin/v3/test_endpoints.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class EndPointsTestJSON(base.BaseIdentityV3AdminTest):
     """Test keystone endpoints"""
@@ -46,7 +49,8 @@
             cls.addClassResourceCleanup(
                 cls.services_client.delete_service, service['id'])
 
-            region_name = data_utils.rand_name('region')
+            region_name = data_utils.rand_name(
+                'region', prefix=CONF.resource_name_prefix)
             url = data_utils.rand_url()
             endpoint = cls.client.create_endpoint(
                 service_id=cls.service_ids[i], interface=interfaces[i],
@@ -60,12 +64,14 @@
 
     @classmethod
     def _create_service(cls, s_name=None, s_type=None, s_description=None):
+        prefix = CONF.resource_name_prefix
         if s_name is None:
-            s_name = data_utils.rand_name('service')
+            s_name = data_utils.rand_name(name='service', prefix=prefix)
         if s_type is None:
-            s_type = data_utils.rand_name('type')
+            s_type = data_utils.rand_name(name='type', prefix=prefix)
         if s_description is None:
-            s_description = data_utils.rand_name('description')
+            s_description = data_utils.rand_name(
+                name='description', prefix=prefix)
         service_data = (
             cls.services_client.create_service(name=s_name, type=s_type,
                                                description=s_description))
@@ -115,7 +121,8 @@
     @decorators.idempotent_id('0e2446d2-c1fd-461b-a729-b9e73e3e3b37')
     def test_create_list_show_delete_endpoint(self):
         """Test creating, listing, showing and deleting keystone endpoint"""
-        region_name = data_utils.rand_name('region')
+        region_name = data_utils.rand_name(
+            name='region', prefix=CONF.resource_name_prefix)
         url = data_utils.rand_url()
         interface = 'public'
         endpoint = self.client.create_endpoint(service_id=self.service_ids[0],
@@ -162,16 +169,17 @@
         # endpoint_for_update is deleted, otherwise we will get a 404 error
         # when deleting endpoint_for_update if endpoint's service is deleted.
 
+        prefix = CONF.resource_name_prefix
         # Creating service for updating endpoint with new service ID
-        s_name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(name='service', prefix=prefix)
+        s_type = data_utils.rand_name(name='type', prefix=prefix)
+        s_description = data_utils.rand_name(name='description', prefix=prefix)
         service2 = self._create_service(s_name=s_name, s_type=s_type,
                                         s_description=s_description)
         self.addCleanup(self.services_client.delete_service, service2['id'])
 
         # Creating an endpoint so as to check update endpoint with new values
-        region1_name = data_utils.rand_name('region')
+        region1_name = data_utils.rand_name(name='region', prefix=prefix)
         url1 = data_utils.rand_url()
         interface1 = 'public'
         endpoint_for_update = (
@@ -183,7 +191,7 @@
         self.addCleanup(self.regions_client.delete_region, region1['id'])
 
         # Updating endpoint with new values
-        region2_name = data_utils.rand_name('region')
+        region2_name = data_utils.rand_name(name='region', prefix=prefix)
         url2 = data_utils.rand_url()
         interface2 = 'internal'
         endpoint = self.client.update_endpoint(endpoint_for_update['id'],
diff --git a/tempest/api/identity/admin/v3/test_endpoints_negative.py b/tempest/api/identity/admin/v3/test_endpoints_negative.py
index 9689d87..2d47eb8 100644
--- a/tempest/api/identity/admin/v3/test_endpoints_negative.py
+++ b/tempest/api/identity/admin/v3/test_endpoints_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class EndpointsNegativeTestJSON(base.BaseIdentityV3AdminTest):
     """Negative tests of endpoint"""
@@ -34,10 +37,11 @@
 
     @classmethod
     def resource_setup(cls):
+        prefix = CONF.resource_name_prefix
         super(EndpointsNegativeTestJSON, cls).resource_setup()
-        s_name = data_utils.rand_name('service')
-        s_type = data_utils.rand_name('type')
-        s_description = data_utils.rand_name('description')
+        s_name = data_utils.rand_name(name='service', prefix=prefix)
+        s_type = data_utils.rand_name(name='type', prefix=prefix)
+        s_description = data_utils.rand_name(name='description', prefix=prefix)
         service_data = (
             cls.services_client.create_service(name=s_name, type=s_type,
                                                description=s_description)
@@ -56,7 +60,8 @@
         """
         interface = 'public'
         url = data_utils.rand_url()
-        region = data_utils.rand_name('region')
+        region = data_utils.rand_name(
+            name='region', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.BadRequest, self.client.create_endpoint,
                           service_id=self.service_id, interface=interface,
                           url=url, region=region, enabled='False')
@@ -70,7 +75,8 @@
         """
         interface = 'public'
         url = data_utils.rand_url()
-        region = data_utils.rand_name('region')
+        region = data_utils.rand_name(
+            name='region', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.BadRequest, self.client.create_endpoint,
                           service_id=self.service_id, interface=interface,
                           url=url, region=region, enabled='True')
@@ -78,7 +84,8 @@
     def _assert_update_raises_bad_request(self, enabled):
 
         # Create an endpoint
-        region1_name = data_utils.rand_name('region')
+        region1_name = data_utils.rand_name(
+            name='region', prefix=CONF.resource_name_prefix)
         url1 = data_utils.rand_url()
         interface1 = 'public'
         endpoint_for_update = (
diff --git a/tempest/api/identity/admin/v3/test_groups.py b/tempest/api/identity/admin/v3/test_groups.py
index b2e3775..b5b3c5d 100644
--- a/tempest/api/identity/admin/v3/test_groups.py
+++ b/tempest/api/identity/admin/v3/test_groups.py
@@ -38,9 +38,10 @@
     @decorators.idempotent_id('2e80343b-6c81-4ac3-88c7-452f3e9d5129')
     def test_group_create_update_get(self):
         """Test creating, updating and getting keystone group"""
+        prefix = CONF.resource_name_prefix
         # Verify group creation works.
-        name = data_utils.rand_name('Group')
-        description = data_utils.rand_name('Description')
+        name = data_utils.rand_name(name='Group', prefix=prefix)
+        description = data_utils.rand_name(name='Description', prefix=prefix)
         group = self.setup_test_group(name=name, domain_id=self.domain['id'],
                                       description=description)
         self.assertEqual(group['name'], name)
@@ -48,8 +49,10 @@
         self.assertEqual(self.domain['id'], group['domain_id'])
 
         # Verify updating name and description works.
-        first_name_update = data_utils.rand_name('UpdateGroup')
-        first_desc_update = data_utils.rand_name('UpdateDescription')
+        first_name_update = data_utils.rand_name(
+            name='UpdateGroup', prefix=prefix)
+        first_desc_update = data_utils.rand_name(
+            name='UpdateDescription', prefix=prefix)
         updated_group = self.groups_client.update_group(
             group['id'], name=first_name_update,
             description=first_desc_update)['group']
@@ -65,7 +68,7 @@
         # Verify that updating a single field for a group (name) leaves the
         # other fields (description, domain_id) unchanged.
         second_name_update = data_utils.rand_name(
-            self.__class__.__name__ + 'UpdateGroup')
+            self.__class__.__name__ + 'UpdateGroup', prefix=prefix)
         updated_group = self.groups_client.update_group(
             group['id'], name=second_name_update)['group']
         self.assertEqual(second_name_update, updated_group['name'])
diff --git a/tempest/api/identity/admin/v3/test_inherits.py b/tempest/api/identity/admin/v3/test_inherits.py
index cababc6..48bde2b 100644
--- a/tempest/api/identity/admin/v3/test_inherits.py
+++ b/tempest/api/identity/admin/v3/test_inherits.py
@@ -37,20 +37,21 @@
     @classmethod
     def resource_setup(cls):
         super(InheritsV3TestJSON, cls).resource_setup()
-        u_name = data_utils.rand_name('user-')
+        prefix = CONF.resource_name_prefix
+        u_name = data_utils.rand_name(name='user-', prefix=prefix)
         u_desc = '%s description' % u_name
         u_email = '%s@testmail.tm' % u_name
         u_password = data_utils.rand_password()
         cls.domain = cls.create_domain()
         cls.project = cls.projects_client.create_project(
-            data_utils.rand_name('project-'),
-            description=data_utils.rand_name('project-desc-'),
+            data_utils.rand_name(name='project-', prefix=prefix),
+            description=data_utils.rand_name('project-desc-', prefix=prefix),
             domain_id=cls.domain['id'])['project']
         cls.addClassResourceCleanup(cls.projects_client.delete_project,
                                     cls.project['id'])
         cls.group = cls.groups_client.create_group(
-            name=data_utils.rand_name('group-'), project_id=cls.project['id'],
-            domain_id=cls.domain['id'])['group']
+            name=data_utils.rand_name(name='group-', prefix=prefix),
+            project_id=cls.project['id'], domain_id=cls.domain['id'])['group']
         cls.addClassResourceCleanup(cls.groups_client.delete_group,
                                     cls.group['id'])
         if not CONF.identity_feature_enabled.immutable_user_source:
diff --git a/tempest/api/identity/admin/v3/test_list_projects.py b/tempest/api/identity/admin/v3/test_list_projects.py
index b33d8bd..2135fcc 100644
--- a/tempest/api/identity/admin/v3/test_list_projects.py
+++ b/tempest/api/identity/admin/v3/test_list_projects.py
@@ -45,20 +45,21 @@
     @classmethod
     def resource_setup(cls):
         super(ListProjectsTestJSON, cls).resource_setup()
+        prefix = CONF.resource_name_prefix
         domain_id = cls.os_admin.credentials.domain_id
         # Create project with domain
-        p1_name = data_utils.rand_name(cls.__name__)
+        p1_name = data_utils.rand_name(cls.__name__, prefix=prefix)
         cls.p1 = cls.projects_client.create_project(
             p1_name, enabled=False, domain_id=domain_id)['project']
         cls.addClassResourceCleanup(cls.projects_client.delete_project,
                                     cls.p1['id'])
         # Create default project
-        p2_name = data_utils.rand_name(cls.__name__)
+        p2_name = data_utils.rand_name(cls.__name__, prefix=prefix)
         cls.p2 = cls.projects_client.create_project(p2_name)['project']
         cls.addClassResourceCleanup(cls.projects_client.delete_project,
                                     cls.p2['id'])
         # Create a new project (p3) using p2 as parent project
-        p3_name = data_utils.rand_name(cls.__name__)
+        p3_name = data_utils.rand_name(cls.__name__, prefix=prefix)
         cls.p3 = cls.projects_client.create_project(
             p3_name, parent_id=cls.p2['id'])['project']
         cls.addClassResourceCleanup(cls.projects_client.delete_project,
@@ -99,7 +100,8 @@
         cls.p1 = cls.projects_client.show_project(
             cls.os_primary.credentials.project_id)['project']
         # Create a test project
-        p2_name = data_utils.rand_name(cls.__name__)
+        p2_name = data_utils.rand_name(
+            cls.__name__, prefix=CONF.resource_name_prefix)
         p2_domain_id = CONF.identity.default_domain_id
         cls.p2 = cls.projects_client.create_project(
             p2_name, domain_id=p2_domain_id)['project']
diff --git a/tempest/api/identity/admin/v3/test_list_users.py b/tempest/api/identity/admin/v3/test_list_users.py
index 7bd0bcf..3884989 100644
--- a/tempest/api/identity/admin/v3/test_list_users.py
+++ b/tempest/api/identity/admin/v3/test_list_users.py
@@ -45,14 +45,15 @@
     @classmethod
     def resource_setup(cls):
         super(UsersV3TestJSON, cls).resource_setup()
-        alt_user = data_utils.rand_name('test_user')
+        prefix = CONF.resource_name_prefix
+        alt_user = data_utils.rand_name(name='test_user', prefix=prefix)
         alt_password = data_utils.rand_password()
         cls.alt_email = alt_user + '@testmail.tm'
         # Create a domain
         cls.domain = cls.create_domain()
         # Create user with Domain
         cls.users = list()
-        u1_name = data_utils.rand_name('test_user')
+        u1_name = data_utils.rand_name(name='test_user', prefix=prefix)
         cls.domain_enabled_user = cls.users_client.create_user(
             name=u1_name, password=alt_password,
             email=cls.alt_email, domain_id=cls.domain['id'])['user']
@@ -60,7 +61,7 @@
                                     cls.domain_enabled_user['id'])
         cls.users.append(cls.domain_enabled_user)
         # Create default not enabled user
-        u2_name = data_utils.rand_name('test_user')
+        u2_name = data_utils.rand_name(name='test_user', prefix=prefix)
         cls.non_domain_enabled_user = cls.users_client.create_user(
             name=u2_name, password=alt_password,
             email=cls.alt_email, enabled=False)['user']
diff --git a/tempest/api/identity/admin/v3/test_oauth_consumers.py b/tempest/api/identity/admin/v3/test_oauth_consumers.py
index 7a85f84..0c474c0 100644
--- a/tempest/api/identity/admin/v3/test_oauth_consumers.py
+++ b/tempest/api/identity/admin/v3/test_oauth_consumers.py
@@ -14,11 +14,14 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions
 
+CONF = config.CONF
+
 
 class OAUTHConsumersV3Test(base.BaseIdentityV3AdminTest):
     # NOTE: force_tenant_isolation is true in the base class by default but
@@ -28,7 +31,8 @@
 
     def _create_consumer(self):
         """Creates a consumer with a random description."""
-        description = data_utils.rand_name('test_create_consumer')
+        description = data_utils.rand_name(
+            name='test_create_consumer', prefix=CONF.resource_name_prefix)
         consumer = self.oauth_consumers_client.create_consumer(
             description)['consumer']
         # cleans up created consumers after tests
@@ -70,7 +74,8 @@
         # create a new consumer to update
         consumer = self._create_consumer()
         # create new description
-        new_description = data_utils.rand_name('test_update_consumer')
+        new_description = data_utils.rand_name(
+            name='test_update_consumer', prefix=CONF.resource_name_prefix)
         # update consumer
         self.oauth_consumers_client.update_consumer(consumer['id'],
                                                     new_description)
diff --git a/tempest/api/identity/admin/v3/test_policies.py b/tempest/api/identity/admin/v3/test_policies.py
index fb81d0a..2d3775a 100644
--- a/tempest/api/identity/admin/v3/test_policies.py
+++ b/tempest/api/identity/admin/v3/test_policies.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class PoliciesTestJSON(base.BaseIdentityV3AdminTest):
     """Test keystone policies"""
@@ -30,8 +33,10 @@
         policy_ids = list()
         fetched_ids = list()
         for _ in range(3):
-            blob = data_utils.rand_name('BlobName')
-            policy_type = data_utils.rand_name('PolicyType')
+            blob = data_utils.rand_name(
+                name='BlobName', prefix=CONF.resource_name_prefix)
+            policy_type = data_utils.rand_name(
+                name='PolicyType', prefix=CONF.resource_name_prefix)
             policy = self.policies_client.create_policy(
                 blob=blob, type=policy_type)['policy']
             # Delete the Policy at the end of this method
@@ -48,8 +53,9 @@
     @decorators.idempotent_id('e544703a-2f03-4cf2-9b0f-350782fdb0d3')
     def test_create_update_delete_policy(self):
         """Test to update keystone policy"""
-        blob = data_utils.rand_name('BlobName')
-        policy_type = data_utils.rand_name('PolicyType')
+        prefix = CONF.resource_name_prefix
+        blob = data_utils.rand_name(name='BlobName', prefix=prefix)
+        policy_type = data_utils.rand_name(name='PolicyType', prefix=prefix)
         policy = self.policies_client.create_policy(blob=blob,
                                                     type=policy_type)['policy']
         self.addCleanup(self._delete_policy, policy['id'])
@@ -59,7 +65,7 @@
         self.assertEqual(blob, policy['blob'])
         self.assertEqual(policy_type, policy['type'])
         # Update policy
-        update_type = data_utils.rand_name('UpdatedPolicyType')
+        update_type = data_utils.rand_name('UpdatedPolicyType', prefix=prefix)
         data = self.policies_client.update_policy(
             policy['id'], type=update_type)['policy']
         self.assertIn('type', data)
diff --git a/tempest/api/identity/admin/v3/test_project_tags.py b/tempest/api/identity/admin/v3/test_project_tags.py
index eed60af..2cc7257 100644
--- a/tempest/api/identity/admin/v3/test_project_tags.py
+++ b/tempest/api/identity/admin/v3/test_project_tags.py
@@ -40,7 +40,7 @@
         project = self.setup_test_project()
 
         # Create a tag for testing.
-        tag = data_utils.rand_name('tag')
+        tag = data_utils.rand_name('tag', prefix=CONF.resource_name_prefix)
         # NOTE(felipemonteiro): The response body for create is empty.
         self.project_tags_client.update_project_tag(project['id'], tag)
 
@@ -49,7 +49,8 @@
             project['id'], tag)
 
         # Verify that updating the project tags works.
-        tags_to_update = [data_utils.rand_name('tag') for _ in range(3)]
+        tags_to_update = [data_utils.rand_name(
+            'tag', prefix=CONF.resource_name_prefix) for _ in range(3)]
         updated_tags = self.project_tags_client.update_all_project_tags(
             project['id'], tags_to_update)['tags']
         self.assertEqual(sorted(tags_to_update), sorted(updated_tags))
diff --git a/tempest/api/identity/admin/v3/test_projects.py b/tempest/api/identity/admin/v3/test_projects.py
index be1216a..3b0052c 100644
--- a/tempest/api/identity/admin/v3/test_projects.py
+++ b/tempest/api/identity/admin/v3/test_projects.py
@@ -33,7 +33,8 @@
     @decorators.idempotent_id('0ecf465c-0dc4-4532-ab53-91ffeb74d12d')
     def test_project_create_with_description(self):
         """Test creating project with a description"""
-        project_desc = data_utils.rand_name('desc')
+        project_desc = data_utils.rand_name(
+            name='desc', prefix=CONF.resource_name_prefix)
         project = self.setup_test_project(description=project_desc)
         project_id = project['id']
         desc1 = project['description']
@@ -48,7 +49,8 @@
     def test_project_create_with_domain(self):
         """Test creating project with a domain"""
         domain = self.setup_test_domain()
-        project_name = data_utils.rand_name('project')
+        project_name = data_utils.rand_name(
+            name='project', prefix=CONF.resource_name_prefix)
         project = self.setup_test_project(
             name=project_name, domain_id=domain['id'])
         project_id = project['id']
@@ -64,7 +66,8 @@
         domain = self.setup_test_domain()
         domain_id = domain['id']
 
-        root_project_name = data_utils.rand_name('root_project')
+        root_project_name = data_utils.rand_name(
+            name='root_project', prefix=CONF.resource_name_prefix)
         root_project = self.setup_test_project(
             name=root_project_name, domain_id=domain_id)
 
@@ -76,7 +79,8 @@
         self.assertEqual(domain_id, parent_id)
 
         # Create a project using root_project_id as parent_id
-        project_name = data_utils.rand_name('project')
+        project_name = data_utils.rand_name(
+            name='project', prefix=CONF.resource_name_prefix)
         project = self.setup_test_project(
             name=project_name, domain_id=domain_id, parent_id=root_project_id)
         parent_id = project['parent_id']
@@ -127,12 +131,14 @@
     @decorators.idempotent_id('f608f368-048c-496b-ad63-d286c26dab6b')
     def test_project_update_name(self):
         """Test updating name attribute of a project"""
-        p_name1 = data_utils.rand_name('project')
+        p_name1 = data_utils.rand_name(
+            name='project', prefix=CONF.resource_name_prefix)
         project = self.setup_test_project(name=p_name1)
 
         resp1_name = project['name']
 
-        p_name2 = data_utils.rand_name('project2')
+        p_name2 = data_utils.rand_name(
+            name='project2', prefix=CONF.resource_name_prefix)
         body = self.projects_client.update_project(project['id'],
                                                    name=p_name2)['project']
         resp2_name = body['name']
@@ -148,11 +154,13 @@
     @decorators.idempotent_id('f138b715-255e-4a7d-871d-351e1ef2e153')
     def test_project_update_desc(self):
         """Test updating description attribute of a project"""
-        p_desc = data_utils.rand_name('desc')
+        p_desc = data_utils.rand_name(
+            name='desc', prefix=CONF.resource_name_prefix)
         project = self.setup_test_project(description=p_desc)
         resp1_desc = project['description']
 
-        p_desc2 = data_utils.rand_name('desc2')
+        p_desc2 = data_utils.rand_name(
+            name='desc2', prefix=CONF.resource_name_prefix)
         body = self.projects_client.update_project(
             project['id'], description=p_desc2)['project']
         resp2_desc = body['description']
@@ -197,7 +205,8 @@
         project = self.setup_test_project()
 
         # Create a User
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         u_desc = u_name + 'description'
         u_email = u_name + '@testmail.tm'
         u_password = data_utils.rand_password()
diff --git a/tempest/api/identity/admin/v3/test_projects_negative.py b/tempest/api/identity/admin/v3/test_projects_negative.py
index 79e3d29..68dd5cb 100644
--- a/tempest/api/identity/admin/v3/test_projects_negative.py
+++ b/tempest/api/identity/admin/v3/test_projects_negative.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class ProjectsNegativeTestJSON(base.BaseIdentityV3AdminTest):
     """Negative tests of projects"""
@@ -54,7 +57,8 @@
     @decorators.idempotent_id('874c3e84-d174-4348-a16b-8c01f599561b')
     def test_project_create_duplicate(self):
         """Project names should be unique"""
-        project_name = data_utils.rand_name('project-dup')
+        project_name = data_utils.rand_name(
+            name='project-dup', prefix=CONF.resource_name_prefix)
         self.setup_test_project(name=project_name)
 
         self.assertRaises(lib_exc.Conflict,
@@ -64,7 +68,8 @@
     @decorators.idempotent_id('8fba9de2-3e1f-4e77-812a-60cb68f8df13')
     def test_create_project_by_unauthorized_user(self):
         """Non-admin user should not be authorized to create a project"""
-        project_name = data_utils.rand_name('project')
+        project_name = data_utils.rand_name(
+            name='project', prefix=CONF.resource_name_prefix)
         self.assertRaises(
             lib_exc.Forbidden, self.non_admin_projects_client.create_project,
             project_name)
diff --git a/tempest/api/identity/admin/v3/test_regions.py b/tempest/api/identity/admin/v3/test_regions.py
index 63e456e..870a406 100644
--- a/tempest/api/identity/admin/v3/test_regions.py
+++ b/tempest/api/identity/admin/v3/test_regions.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class RegionsTestJSON(base.BaseIdentityV3AdminTest):
     """Test regions"""
@@ -37,7 +40,8 @@
         super(RegionsTestJSON, cls).resource_setup()
         cls.setup_regions = list()
         for _ in range(2):
-            r_description = data_utils.rand_name('description')
+            r_description = data_utils.rand_name(
+                name='description', prefix=CONF.resource_name_prefix)
             region = cls.client.create_region(
                 description=r_description)['region']
             cls.addClassResourceCleanup(
@@ -48,7 +52,8 @@
     def test_create_update_get_delete_region(self):
         """Test creating, updating, getting and updating region"""
         # Create region
-        r_description = data_utils.rand_name('description')
+        r_description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         region = self.client.create_region(
             description=r_description,
             parent_region_id=self.setup_regions[0]['id'])['region']
@@ -62,7 +67,8 @@
         self.assertEqual(self.setup_regions[0]['id'],
                          region['parent_region_id'])
         # Update region with new description and parent ID
-        r_alt_description = data_utils.rand_name('description')
+        r_alt_description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         region = self.client.update_region(
             region['id'],
             description=r_alt_description,
@@ -86,7 +92,8 @@
     def test_create_region_with_specific_id(self):
         """Test creating region with specific id"""
         r_region_id = data_utils.rand_uuid()
-        r_description = data_utils.rand_name('description')
+        r_description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         region = self.client.create_region(
             region_id=r_region_id, description=r_description)['region']
         self.addCleanup(self.client.delete_region, region['id'])
@@ -109,7 +116,8 @@
     def test_list_regions_filter_by_parent_region_id(self):
         """Test listing regions filtered by parent region id"""
         # Add a sub-region to one of the existing test regions
-        r_description = data_utils.rand_name('description')
+        r_description = data_utils.rand_name(
+            name='description', prefix=CONF.resource_name_prefix)
         region = self.client.create_region(
             description=r_description,
             parent_region_id=self.setup_regions[0]['id'])['region']
diff --git a/tempest/api/identity/admin/v3/test_roles.py b/tempest/api/identity/admin/v3/test_roles.py
index e5137f4..ab96027 100644
--- a/tempest/api/identity/admin/v3/test_roles.py
+++ b/tempest/api/identity/admin/v3/test_roles.py
@@ -35,31 +35,34 @@
     @classmethod
     def resource_setup(cls):
         super(RolesV3TestJSON, cls).resource_setup()
+        prefix = CONF.resource_name_prefix
         cls.roles = list()
         for _ in range(3):
-            role_name = data_utils.rand_name(name='role')
+            role_name = data_utils.rand_name(name='role', prefix=prefix)
             role = cls.roles_client.create_role(name=role_name)['role']
             cls.addClassResourceCleanup(cls.roles_client.delete_role,
                                         role['id'])
             cls.roles.append(role)
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(name='user', prefix=prefix)
         u_desc = '%s description' % u_name
         u_email = '%s@testmail.tm' % u_name
         cls.u_password = data_utils.rand_password()
         cls.domain = cls.create_domain()
         cls.project = cls.projects_client.create_project(
-            data_utils.rand_name('project'),
-            description=data_utils.rand_name('project-desc'),
+            data_utils.rand_name(name='project', prefix=prefix),
+            description=data_utils.rand_name(
+                name='project-desc', prefix=prefix),
             domain_id=cls.domain['id'])['project']
         cls.addClassResourceCleanup(cls.projects_client.delete_project,
                                     cls.project['id'])
         cls.group_body = cls.groups_client.create_group(
-            name=data_utils.rand_name('Group'), project_id=cls.project['id'],
+            name=data_utils.rand_name(name='Group', prefix=prefix),
+            project_id=cls.project['id'],
             domain_id=cls.domain['id'])['group']
         cls.addClassResourceCleanup(cls.groups_client.delete_group,
                                     cls.group_body['id'])
         cls.role = cls.roles_client.create_role(
-            name=data_utils.rand_name('Role'))['role']
+            name=data_utils.rand_name(name='Role', prefix=prefix))['role']
         cls.addClassResourceCleanup(cls.roles_client.delete_role,
                                     cls.role['id'])
         if not CONF.identity_feature_enabled.immutable_user_source:
@@ -78,13 +81,15 @@
     @decorators.idempotent_id('18afc6c0-46cf-4911-824e-9989cc056c3a')
     def test_role_create_update_show_list(self):
         """Test creating, updating, showing and listing a role"""
-        r_name = data_utils.rand_name('Role')
+        r_name = data_utils.rand_name(
+            name='Role', prefix=CONF.resource_name_prefix)
         role = self.roles_client.create_role(name=r_name)['role']
         self.addCleanup(self.roles_client.delete_role, role['id'])
         self.assertIn('name', role)
         self.assertEqual(role['name'], r_name)
 
-        new_name = data_utils.rand_name('NewRole')
+        new_name = data_utils.rand_name(
+            name='NewRole', prefix=CONF.resource_name_prefix)
         updated_role = self.roles_client.update_role(role['id'],
                                                      name=new_name)['role']
         self.assertIn('name', updated_role)
@@ -371,7 +376,8 @@
     def test_domain_roles_create_delete(self):
         """Test creating, listing and deleting domain roles"""
         domain_role = self.roles_client.create_role(
-            name=data_utils.rand_name('domain_role'),
+            name=data_utils.rand_name(
+                name='domain_role', prefix=CONF.resource_name_prefix),
             domain_id=self.domain['id'])['role']
         self.addCleanup(
             test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/api/identity/admin/v3/test_services.py b/tempest/api/identity/admin/v3/test_services.py
index fb3b03e..b67e175 100644
--- a/tempest/api/identity/admin/v3/test_services.py
+++ b/tempest/api/identity/admin/v3/test_services.py
@@ -14,10 +14,13 @@
 #    under the License.
 
 from tempest.api.identity import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class ServicesTestJSON(base.BaseIdentityV3AdminTest):
     """Test keystone services"""
@@ -33,10 +36,11 @@
     @decorators.idempotent_id('5193aad5-bcb7-411d-85b0-b3b61b96ef06')
     def test_create_update_get_service(self):
         """Test creating, updating and getting of keystone service"""
+        prefix = CONF.resource_name_prefix
         # Creating a Service
-        name = data_utils.rand_name('service')
-        serv_type = data_utils.rand_name('type')
-        desc = data_utils.rand_name('description')
+        name = data_utils.rand_name(name='service', prefix=prefix)
+        serv_type = data_utils.rand_name(name='type', prefix=prefix)
+        desc = data_utils.rand_name(name='description', prefix=prefix)
         create_service = self.services_client.create_service(
             type=serv_type, name=name, description=desc)['service']
         self.addCleanup(self._del_service, create_service['id'])
@@ -49,7 +53,7 @@
         # Update description
         s_id = create_service['id']
         resp1_desc = create_service['description']
-        s_desc2 = data_utils.rand_name('desc2')
+        s_desc2 = data_utils.rand_name(name='desc2', prefix=prefix)
         update_service = self.services_client.update_service(
             s_id, description=s_desc2)['service']
         resp2_desc = update_service['description']
@@ -66,8 +70,10 @@
     @decorators.idempotent_id('d1dcb1a1-2b6b-4da8-bbb8-5532ef6e8269')
     def test_create_service_without_description(self):
         """Create a keystone service only with name and type"""
-        name = data_utils.rand_name('service')
-        serv_type = data_utils.rand_name('type')
+        name = data_utils.rand_name(
+            name='service', prefix=CONF.resource_name_prefix)
+        serv_type = data_utils.rand_name(
+            name='type', prefix=CONF.resource_name_prefix)
         service = self.services_client.create_service(
             type=serv_type, name=name)['service']
         self.addCleanup(self.services_client.delete_service, service['id'])
@@ -80,8 +86,12 @@
         service_ids = list()
         service_types = list()
         for _ in range(3):
-            name = data_utils.rand_name(self.__class__.__name__ + '-Service')
-            serv_type = data_utils.rand_name(self.__class__.__name__ + '-Type')
+            name = data_utils.rand_name(
+                self.__class__.__name__ + '-Service',
+                prefix=CONF.resource_name_prefix)
+            serv_type = data_utils.rand_name(
+                self.__class__.__name__ + '-Type',
+                prefix=CONF.resource_name_prefix)
             create_service = self.services_client.create_service(
                 type=serv_type, name=name)['service']
             self.addCleanup(self.services_client.delete_service,
diff --git a/tempest/api/identity/admin/v3/test_tokens.py b/tempest/api/identity/admin/v3/test_tokens.py
index e191979..d0a8748 100644
--- a/tempest/api/identity/admin/v3/test_tokens.py
+++ b/tempest/api/identity/admin/v3/test_tokens.py
@@ -42,11 +42,13 @@
                                      domain_id=CONF.identity.default_domain_id)
 
         # Create a couple projects
-        project1_name = data_utils.rand_name(name=self.__class__.__name__)
+        project1_name = data_utils.rand_name(
+            name=self.__class__.__name__, prefix=CONF.resource_name_prefix)
         project1 = self.setup_test_project(
             name=project1_name, domain_id=CONF.identity.default_domain_id)
 
-        project2_name = data_utils.rand_name(name=self.__class__.__name__)
+        project2_name = data_utils.rand_name(
+            name=self.__class__.__name__, prefix=CONF.resource_name_prefix)
         project2 = self.setup_test_project(
             name=project2_name, domain_id=CONF.identity.default_domain_id)
         self.addCleanup(self.projects_client.delete_project, project2['id'])
diff --git a/tempest/api/identity/admin/v3/test_trusts.py b/tempest/api/identity/admin/v3/test_trusts.py
index 580e304..5bd6756 100644
--- a/tempest/api/identity/admin/v3/test_trusts.py
+++ b/tempest/api/identity/admin/v3/test_trusts.py
@@ -53,9 +53,10 @@
         super(TrustsV3TestJSON, self).tearDown()
 
     def create_trustor_and_roles(self):
+        prefix = CONF.resource_name_prefix
         # create a project that trusts will be granted on
         trustor_project_name = data_utils.rand_name(
-            name=self.__class__.__name__)
+            name=self.__class__.__name__, prefix=prefix)
         project = self.projects_client.create_project(
             trustor_project_name,
             domain_id=CONF.identity.default_domain_id)['project']
@@ -64,7 +65,7 @@
         self.assertIsNotNone(self.trustor_project_id)
 
         # Create a trustor User
-        trustor_username = data_utils.rand_name('user')
+        trustor_username = data_utils.rand_name(name='user', prefix=prefix)
         u_desc = trustor_username + 'description'
         u_email = trustor_username + '@testmail.xx'
         trustor_password = data_utils.rand_password()
@@ -79,8 +80,10 @@
         self.trustor_user_id = user['id']
 
         # And two roles, one we'll delegate and one we won't
-        self.delegated_role = data_utils.rand_name('DelegatedRole')
-        self.not_delegated_role = data_utils.rand_name('NotDelegatedRole')
+        self.delegated_role = data_utils.rand_name(
+            name='DelegatedRole', prefix=prefix)
+        self.not_delegated_role = data_utils.rand_name(
+            name='NotDelegatedRole', prefix=prefix)
 
         role = self.roles_client.create_role(name=self.delegated_role)['role']
         self.addCleanup(self.roles_client.delete_role, role['id'])
diff --git a/tempest/api/identity/admin/v3/test_users.py b/tempest/api/identity/admin/v3/test_users.py
index 31cbbac..9bcbba5 100644
--- a/tempest/api/identity/admin/v3/test_users.py
+++ b/tempest/api/identity/admin/v3/test_users.py
@@ -40,8 +40,9 @@
     @decorators.idempotent_id('b537d090-afb9-4519-b95d-270b0708e87e')
     def test_user_update(self):
         """Test case to check if updating of user attributes is successful"""
+        prefix = CONF.resource_name_prefix
         # Creating first user
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(name='user', prefix=prefix)
         u_desc = u_name + 'description'
         u_email = u_name + '@testmail.tm'
         u_password = data_utils.rand_password()
@@ -55,7 +56,7 @@
         project = self.setup_test_project()
 
         # Updating user details with new values
-        update_kwargs = {'name': data_utils.rand_name('user2'),
+        update_kwargs = {'name': data_utils.rand_name('user2', prefix=prefix),
                          'description': data_utils.rand_name('desc2'),
                          'project_id': project['id'],
                          'email': 'user2@testmail.tm',
@@ -75,7 +76,8 @@
     def test_update_user_password(self):
         """Test updating user password"""
         # Creating User to check password updation
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         original_password = data_utils.rand_password()
         user = self.users_client.create_user(
             name=u_name, password=original_password)['user']
@@ -105,7 +107,8 @@
         fetched_project_ids = list()
         u_project = self.setup_test_project()
         # Create a user.
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         u_desc = u_name + 'description'
         u_email = u_name + '@testmail.tm'
         u_password = data_utils.rand_password()
diff --git a/tempest/api/identity/admin/v3/test_users_negative.py b/tempest/api/identity/admin/v3/test_users_negative.py
index 1cba945..f55d2d4 100644
--- a/tempest/api/identity/admin/v3/test_users_negative.py
+++ b/tempest/api/identity/admin/v3/test_users_negative.py
@@ -29,7 +29,8 @@
     @decorators.idempotent_id('e75f006c-89cc-477b-874d-588e4eab4b17')
     def test_create_user_for_non_existent_domain(self):
         """Attempt to create a user in a non-existent domain should fail"""
-        u_name = data_utils.rand_name('user')
+        u_name = data_utils.rand_name(
+            name='user', prefix=CONF.resource_name_prefix)
         u_email = u_name + '@testmail.tm'
         u_password = data_utils.rand_password()
         self.assertRaises(lib_exc.NotFound, self.users_client.create_user,
diff --git a/tempest/api/identity/base.py b/tempest/api/identity/base.py
index 5722f0e..c9e0e1c 100644
--- a/tempest/api/identity/base.py
+++ b/tempest/api/identity/base.py
@@ -71,7 +71,8 @@
         if kwargs.get('password', None) is None:
             kwargs['password'] = data_utils.rand_password()
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name('test_user')
+            kwargs['name'] = data_utils.rand_name(
+                name='test_user', prefix=CONF.resource_name_prefix)
         if 'email' not in kwargs:
             kwargs['email'] = kwargs['name'] + '@testmail.tm'
 
@@ -84,7 +85,8 @@
 
     def setup_test_role(self, name=None, domain_id=None):
         """Set up a test role."""
-        params = {'name': name or data_utils.rand_name('test_role')}
+        params = {'name': name or data_utils.rand_name(
+            name='test_role', prefix=CONF.resource_name_prefix)}
         if domain_id:
             params['domain_id'] = domain_id
 
@@ -161,9 +163,12 @@
     def setup_test_tenant(self, **kwargs):
         """Set up a test tenant."""
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name('test_tenant')
+            kwargs['name'] = data_utils.rand_name(
+                name='test_tenant',
+                prefix=CONF.resource_name_prefix)
         if 'description' not in kwargs:
-            kwargs['description'] = data_utils.rand_name('desc')
+            kwargs['description'] = data_utils.rand_name(
+                name='desc', prefix=CONF.resource_name_prefix)
         tenant = self.projects_client.create_tenant(**kwargs)['tenant']
         # Delete the tenant at the end of the test
         self.addCleanup(
@@ -249,9 +254,11 @@
     def create_domain(cls, **kwargs):
         """Create a domain."""
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name('test_domain')
+            kwargs['name'] = data_utils.rand_name(
+                name='test_domain', prefix=CONF.resource_name_prefix)
         if 'description' not in kwargs:
-            kwargs['description'] = data_utils.rand_name('desc')
+            kwargs['description'] = data_utils.rand_name(
+                name='desc', prefix=CONF.resource_name_prefix)
         domain = cls.domains_client.create_domain(**kwargs)['domain']
         cls.addClassResourceCleanup(test_utils.call_and_ignore_notfound_exc,
                                     cls.delete_domain, domain['id'])
@@ -274,9 +281,11 @@
     def setup_test_project(self, **kwargs):
         """Set up a test project."""
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name('test_project')
+            kwargs['name'] = data_utils.rand_name(
+                name='test_project', prefix=CONF.resource_name_prefix)
         if 'description' not in kwargs:
-            kwargs['description'] = data_utils.rand_name('test_description')
+            kwargs['description'] = data_utils.rand_name(
+                name='test_description', prefix=CONF.resource_name_prefix)
         project = self.projects_client.create_project(**kwargs)['project']
         # Delete the project at the end of the test
         self.addCleanup(
@@ -297,10 +306,12 @@
         """Set up a test group."""
         if 'name' not in kwargs:
             kwargs['name'] = data_utils.rand_name(
-                self.__class__.__name__ + '_test_project')
+                self.__class__.__name__ + '_test_project',
+                prefix=CONF.resource_name_prefix)
         if 'description' not in kwargs:
             kwargs['description'] = data_utils.rand_name(
-                self.__class__.__name__ + '_test_description')
+                self.__class__.__name__ + '_test_description',
+                prefix=CONF.resource_name_prefix)
         group = self.groups_client.create_group(**kwargs)['group']
         self.addCleanup(
             test_utils.call_and_ignore_notfound_exc,
@@ -324,7 +335,8 @@
         cls.project_id = cls.os_primary.credentials.project_id
 
     def create_application_credential(self, name=None, **kwargs):
-        name = name or data_utils.rand_name('application_credential')
+        name = name or data_utils.rand_name(
+            name='application_credential', prefix=CONF.resource_name_prefix)
         application_credential = (
             self.non_admin_app_creds_client.create_application_credential(
                 self.user_id, name=name, **kwargs))['application_credential']
diff --git a/tempest/api/identity/v3/test_access_rules.py b/tempest/api/identity/v3/test_access_rules.py
index 64a6959..f816a09 100644
--- a/tempest/api/identity/v3/test_access_rules.py
+++ b/tempest/api/identity/v3/test_access_rules.py
@@ -48,7 +48,9 @@
         cls.ac = cls.non_admin_app_creds_client
         cls.app_cred = cls.ac.create_application_credential(
             cls.user_id,
-            name=data_utils.rand_name('application_credential'),
+            name=data_utils.rand_name(
+                name='application_credential',
+                prefix=CONF.resource_name_prefix),
             access_rules=access_rules
         )['application_credential']
         cls.addClassResourceCleanup(
@@ -77,7 +79,9 @@
         ]
         app_cred = self.ac.create_application_credential(
             self.user_id,
-            name=data_utils.rand_name('application_credential'),
+            name=data_utils.rand_name(
+                name='application_credential',
+                prefix=CONF.resource_name_prefix),
             access_rules=access_rules
         )['application_credential']
         self.addCleanup(
diff --git a/tempest/api/image/base.py b/tempest/api/image/base.py
index 7bae712..89d5f91 100644
--- a/tempest/api/image/base.py
+++ b/tempest/api/image/base.py
@@ -12,6 +12,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import io
 import time
 
 from tempest import config
@@ -51,7 +52,9 @@
         """Wrapper that returns a test image."""
 
         if 'name' not in kwargs:
-            name = data_utils.rand_name(cls.__name__ + "-image")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=cls.__name__ + "-image")
             kwargs['name'] = name
 
         image = cls.client.create_image(**kwargs)
@@ -83,7 +86,8 @@
                          description='Tempest', protected=False,
                          **kwargs):
         if not namespace_name:
-            namespace_name = data_utils.rand_name('test-ns')
+            namespace_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='test-ns')
         kwargs.setdefault('display_name', namespace_name)
         namespace = self.namespaces_client.create_namespace(
             namespace=namespace_name, visibility=visibility,
@@ -92,6 +96,36 @@
                         namespace_name)
         return namespace
 
+    def create_and_stage_image(self, all_stores=False):
+        """Create Image & stage image file for glance-direct import method."""
+        image_name = data_utils.rand_name('test-image')
+        container_format = CONF.image.container_formats[0]
+        disk_format = CONF.image.disk_formats[0]
+        image = self.create_image(name=image_name,
+                                  container_format=container_format,
+                                  disk_format=disk_format,
+                                  visibility='private')
+        self.assertEqual('queued', image['status'])
+
+        self.client.stage_image_file(
+            image['id'],
+            io.BytesIO(data_utils.random_bytes()))
+        # Check image status is 'uploading'
+        body = self.client.show_image(image['id'])
+        self.assertEqual(image['id'], body['id'])
+        self.assertEqual('uploading', body['status'])
+
+        if all_stores:
+            stores_list = ','.join([store['id']
+                                    for store in self.available_stores
+                                    if store.get('read-only') != 'true'])
+        else:
+            stores = [store['id'] for store in self.available_stores
+                      if store.get('read-only') != 'true']
+            stores_list = stores[::max(1, len(stores) - 1)]
+
+        return body, stores_list
+
     @classmethod
     def get_available_stores(cls):
         stores = []
@@ -200,7 +234,9 @@
         return image_ids
 
     def _create_image(self):
-        name = data_utils.rand_name(self.__class__.__name__ + '-image')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-image')
         image = self.client.create_image(name=name,
                                          container_format='bare',
                                          disk_format='raw')
diff --git a/tempest/api/image/v2/admin/test_image_caching.py b/tempest/api/image/v2/admin/test_image_caching.py
index 11dcc80..75369c9 100644
--- a/tempest/api/image/v2/admin/test_image_caching.py
+++ b/tempest/api/image/v2/admin/test_image_caching.py
@@ -57,7 +57,9 @@
     def image_create_and_upload(self, upload=True, **kwargs):
         """Wrapper that returns a test image."""
         if 'name' not in kwargs:
-            name = data_utils.rand_name(self.__name__ + "-image")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__name__ + "-image")
             kwargs['name'] = name
 
         params = dict(kwargs)
diff --git a/tempest/api/image/v2/admin/test_image_task.py b/tempest/api/image/v2/admin/test_image_task.py
index 9439e91..6437a3c 100644
--- a/tempest/api/image/v2/admin/test_image_task.py
+++ b/tempest/api/image/v2/admin/test_image_task.py
@@ -61,7 +61,8 @@
         i = 0
         tasks = list()
         while i < len(disk_format):
-            image_name = data_utils.rand_name("task_image")
+            image_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name="task_image")
             image_property = {"container_format": "bare",
                               "disk_format": disk_format[0],
                               "visibility": "public",
@@ -126,8 +127,12 @@
     @decorators.idempotent_id("ad6450c6-7060-4ee7-a2d1-41c2604b446c")
     @decorators.attr(type=['negative'])
     def test_task_create_fake_image_location(self):
+        kwargs = {
+            'prefix': CONF.resource_name_prefix,
+            'name': 'dummy-img-file'
+        }
         http_fake_url = ''.join(
-            ["http://", data_utils.rand_name('dummy-img-file'), ".qcow2"])
+            ["http://", data_utils.rand_name(**kwargs), ".qcow2"])
         task = self._prepare_image_tasks_param(
             image_from_format=['qcow2'],
             disk_format=['qcow2'],
diff --git a/tempest/api/image/v2/admin/test_images.py b/tempest/api/image/v2/admin/test_images.py
index ce50c5d..2b1c4fb 100644
--- a/tempest/api/image/v2/admin/test_images.py
+++ b/tempest/api/image/v2/admin/test_images.py
@@ -63,7 +63,9 @@
     @decorators.idempotent_id('f6ab4aa0-035e-4664-9f2d-c57c6df50605')
     def test_list_public_image(self):
         """Test create image as admin and list public image as none admin"""
-        name = data_utils.rand_name(self.__class__.__name__ + '-Image')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Image')
         image = self.admin_client.create_image(
             name=name,
             container_format='bare',
@@ -107,7 +109,8 @@
             raise self.skipException('Either copy-image import method or '
                                      'multistore is not available')
         uuid = data_utils.rand_uuid()
-        image_name = data_utils.rand_name('copy-image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='copy-image')
         container_format = CONF.image.container_formats[0]
         disk_format = CONF.image.disk_formats[0]
         image = self.create_image(name=image_name,
@@ -176,3 +179,59 @@
         self.assertRaises(lib_exc.Forbidden,
                           self.admin_client.update_image, image['id'], [
                               dict(remove='/locations/0')])
+
+
+class MultiStoresImagesTest(base.BaseV2ImageAdminTest, base.BaseV2ImageTest):
+    """Test importing and deleting image in multiple stores"""
+    @classmethod
+    def skip_checks(cls):
+        super(MultiStoresImagesTest, cls).skip_checks()
+        if not CONF.image_feature_enabled.import_image:
+            skip_msg = (
+                "%s skipped as image import is not available" % cls.__name__)
+            raise cls.skipException(skip_msg)
+
+    @classmethod
+    def resource_setup(cls):
+        super(MultiStoresImagesTest, cls).resource_setup()
+        cls.available_import_methods = \
+            cls.client.info_import()['import-methods']['value']
+        if not cls.available_import_methods:
+            raise cls.skipException('Server does not support '
+                                    'any import method')
+
+        # NOTE(pdeore): Skip if glance-direct import method and mutlistore
+        # are not enabled/configured, or only one store is configured in
+        # multiple stores setup.
+        cls.available_stores = cls.get_available_stores()
+        if ('glance-direct' not in cls.available_import_methods or
+                not len(cls.available_stores) > 1):
+            raise cls.skipException(
+                'Either glance-direct import method not present in %s or '
+                'None or only one store is '
+                'configured %s' % (cls.available_import_methods,
+                                   cls.available_stores))
+
+    @decorators.idempotent_id('1ecec683-41d4-4470-a0df-54969ec74514')
+    def test_delete_image_from_specific_store(self):
+        """Test delete image from specific store"""
+        # Import image to available stores
+        image, stores = self.create_and_stage_image(all_stores=True)
+        self.client.image_import(image['id'],
+                                 method='glance-direct',
+                                 all_stores=True)
+        self.addCleanup(self.admin_client.delete_image, image['id'])
+        waiters.wait_for_image_imported_to_stores(
+            self.client,
+            image['id'], stores)
+        observed_image = self.client.show_image(image['id'])
+
+        # Image will be deleted from first store
+        first_image_store_deleted = (observed_image['stores'].split(","))[0]
+        self.admin_client.delete_image_from_store(
+            observed_image['id'], first_image_store_deleted)
+        waiters.wait_for_image_deleted_from_store(
+            self.admin_client,
+            observed_image,
+            stores,
+            first_image_store_deleted)
diff --git a/tempest/api/image/v2/admin/test_images_metadefs_namespace_objects.py b/tempest/api/image/v2/admin/test_images_metadefs_namespace_objects.py
index 9222920..f244ebc 100644
--- a/tempest/api/image/v2/admin/test_images_metadefs_namespace_objects.py
+++ b/tempest/api/image/v2/admin/test_images_metadefs_namespace_objects.py
@@ -11,16 +11,21 @@
 #    under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class MetadataNamespaceObjectsTest(base.BaseV2ImageAdminTest):
     """Test the Metadata definition namespace objects basic functionality"""
 
     def _create_namespace_object(self, namespace):
-        object_name = data_utils.rand_name(self.__class__.__name__ + '-object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-object')
         namespace_object = self.namespace_objects_client.\
             create_namespace_object(namespace['namespace'], name=object_name)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -36,7 +41,8 @@
         # Create a namespace object
         body = self._create_namespace_object(namespace)
         # Update a namespace object
-        up_object_name = data_utils.rand_name('update-object')
+        up_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='update-object')
         body = self.namespace_objects_client.update_namespace_object(
             namespace['namespace'], body['name'],
             name=up_object_name)
diff --git a/tempest/api/image/v2/admin/test_images_metadefs_namespace_properties.py b/tempest/api/image/v2/admin/test_images_metadefs_namespace_properties.py
index 10dfba1..5e0d28d 100644
--- a/tempest/api/image/v2/admin/test_images_metadefs_namespace_properties.py
+++ b/tempest/api/image/v2/admin/test_images_metadefs_namespace_properties.py
@@ -11,9 +11,12 @@
 #    under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class MetadataNamespacePropertiesTest(base.BaseV2ImageAdminTest):
     """Test the Metadata definition namespace property basic functionality"""
@@ -31,7 +34,8 @@
         body = self.resource_types_client.create_resource_type_association(
             namespace['namespace'], name=resource_name)
         # Create a property
-        property_title = data_utils.rand_name('property')
+        property_title = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='property')
         body = self.namespace_properties_client.create_namespace_property(
             namespace=namespace['namespace'], title=property_title,
             name=resource_name, type="string", enum=enum)
@@ -41,7 +45,9 @@
             namespace['namespace'], resource_name)
         self.assertEqual(resource_name, body['name'])
         # Update namespace property
-        update_property_title = data_utils.rand_name('update-property')
+        update_property_title = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='update-property')
         body = self.namespace_properties_client.update_namespace_properties(
             namespace['namespace'], resource_name,
             title=update_property_title, type="string",
diff --git a/tempest/api/image/v2/admin/test_images_metadefs_namespace_tags.py b/tempest/api/image/v2/admin/test_images_metadefs_namespace_tags.py
index 9e88e03..361bb60 100644
--- a/tempest/api/image/v2/admin/test_images_metadefs_namespace_tags.py
+++ b/tempest/api/image/v2/admin/test_images_metadefs_namespace_tags.py
@@ -11,10 +11,13 @@
 #    under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class MetadataNamespaceTagsTest(base.BaseV2ImageAdminTest):
     """Test the Metadata definition namespace tags basic functionality"""
@@ -68,7 +71,8 @@
         namespace = self.create_namespace()
         self._create_namespace_tags(namespace)
         # Create a tag
-        tag_name = data_utils.rand_name('tag_name')
+        tag_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='tag_name')
         self.namespace_tags_client.create_namespace_tag(
             namespace=namespace['namespace'], tag_name=tag_name)
 
@@ -76,7 +80,8 @@
             namespace['namespace'], tag_name)
         self.assertEqual(tag_name, body['name'])
         # Update tag definition
-        update_tag_definition = data_utils.rand_name('update-tag')
+        update_tag_definition = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='update-tag')
         body = self.namespace_tags_client.update_namespace_tag(
             namespace['namespace'], tag_name=tag_name,
             name=update_tag_definition)
diff --git a/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py b/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py
index c411aa9..be6d01a 100644
--- a/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py
+++ b/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py
@@ -14,11 +14,14 @@
 #    under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class MetadataNamespacesTest(base.BaseV2ImageAdminTest):
     """Test the Metadata definition Namespaces basic functionality"""
@@ -30,7 +33,8 @@
         body = self.resource_types_client.list_resource_types()
         resource_name = body['resource_types'][0]['name']
         name = [{'name': resource_name}]
-        namespace_name = data_utils.rand_name('namespace')
+        namespace_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='namespace')
         # create the metadef namespace
         body = self.namespaces_client.create_namespace(
             namespace=namespace_name,
diff --git a/tempest/api/image/v2/test_images.py b/tempest/api/image/v2/test_images.py
index 977ad82..e468e32 100644
--- a/tempest/api/image/v2/test_images.py
+++ b/tempest/api/image/v2/test_images.py
@@ -53,7 +53,8 @@
     def _create_image(self, disk_format=None, container_format=None):
         # Create image
         uuid = '00000000-1111-2222-3333-444455556666'
-        image_name = data_utils.rand_name('image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         container_format = container_format or CONF.image.container_formats[0]
         disk_format = disk_format or CONF.image.disk_formats[0]
         image = self.create_image(name=image_name,
@@ -343,36 +344,6 @@
                 'configured %s' % (cls.available_import_methods,
                                    cls.available_stores))
 
-    def _create_and_stage_image(self, all_stores=False):
-        """Create Image & stage image file for glance-direct import method."""
-        image_name = data_utils.rand_name('test-image')
-        container_format = CONF.image.container_formats[0]
-        disk_format = CONF.image.disk_formats[0]
-        image = self.create_image(name=image_name,
-                                  container_format=container_format,
-                                  disk_format=disk_format,
-                                  visibility='private')
-        self.assertEqual('queued', image['status'])
-
-        self.client.stage_image_file(
-            image['id'],
-            io.BytesIO(data_utils.random_bytes()))
-        # Check image status is 'uploading'
-        body = self.client.show_image(image['id'])
-        self.assertEqual(image['id'], body['id'])
-        self.assertEqual('uploading', body['status'])
-
-        if all_stores:
-            stores_list = ','.join([store['id']
-                                    for store in self.available_stores
-                                    if store.get('read-only') != 'true'])
-        else:
-            stores = [store['id'] for store in self.available_stores
-                      if store.get('read-only') != 'true']
-            stores_list = stores[::max(1, len(stores) - 1)]
-
-        return body, stores_list
-
     @decorators.idempotent_id('bf04ff00-3182-47cb-833a-f1c6767b47fd')
     def test_glance_direct_import_image_to_all_stores(self):
         """Test image is imported in all available stores
@@ -380,7 +351,7 @@
         Create image, import image to all available stores using glance-direct
         import method and verify that import succeeded.
         """
-        image, stores = self._create_and_stage_image(all_stores=True)
+        image, stores = self.create_and_stage_image(all_stores=True)
 
         self.client.image_import(
             image['id'], method='glance-direct', all_stores=True)
@@ -395,7 +366,7 @@
         Create image, import image to specified store(s) using glance-direct
         import method and verify that import succeeded.
         """
-        image, stores = self._create_and_stage_image()
+        image, stores = self.create_and_stage_image()
         self.client.image_import(image['id'], method='glance-direct',
                                  stores=stores)
 
@@ -416,7 +387,8 @@
         """
 
         uuid = '00000000-1111-2222-3333-444455556666'
-        image_name = data_utils.rand_name('image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         container_format = CONF.image.container_formats[0]
         disk_format = CONF.image.disk_formats[0]
         image = self.create_image(name=image_name,
@@ -464,7 +436,8 @@
     def test_delete_image(self):
         """Test deleting an image by image_id"""
         # Create image
-        image_name = data_utils.rand_name('image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         container_format = CONF.image.container_formats[0]
         disk_format = CONF.image.disk_formats[0]
         image = self.create_image(name=image_name,
@@ -485,7 +458,8 @@
     def test_update_image(self):
         """Test updating an image by image_id"""
         # Create image
-        image_name = data_utils.rand_name('image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         container_format = CONF.image.container_formats[0]
         disk_format = CONF.image.disk_formats[0]
         image = self.create_image(name=image_name,
@@ -495,7 +469,8 @@
         self.assertEqual('queued', image['status'])
 
         # Update Image
-        new_image_name = data_utils.rand_name('new-image')
+        new_image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='new-image')
         self.client.update_image(image['id'], [
             dict(replace='/name', value=new_image_name)])
 
@@ -509,7 +484,8 @@
     def test_deactivate_reactivate_image(self):
         """Test deactivating and reactivating an image"""
         # Create image
-        image_name = data_utils.rand_name('image')
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='image')
         image = self.create_image(name=image_name,
                                   container_format='bare',
                                   disk_format='raw',
@@ -568,7 +544,9 @@
         """
         size = random.randint(1024, 4096)
         image_file = io.BytesIO(data_utils.random_bytes(size))
-        tags = [data_utils.rand_name('tag'), data_utils.rand_name('tag')]
+        prefix = CONF.resource_name_prefix
+        tags = [data_utils.rand_name(prefix=prefix, name='tag'),
+                data_utils.rand_name(prefix=prefix, name='tag')]
         image = cls.create_image(container_format=container_format,
                                  disk_format=disk_format,
                                  visibility='private',
diff --git a/tempest/api/image/v2/test_images_tags.py b/tempest/api/image/v2/test_images_tags.py
index 163063c..12e6c8e 100644
--- a/tempest/api/image/v2/test_images_tags.py
+++ b/tempest/api/image/v2/test_images_tags.py
@@ -13,9 +13,12 @@
 # under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ImagesTagsTest(base.BaseV2ImageTest):
     """Test image tags"""
@@ -26,7 +29,8 @@
         image = self.create_image(container_format='bare',
                                   disk_format='raw',
                                   visibility='private')
-        tag = data_utils.rand_name('tag')
+        tag = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='tag')
         self.addCleanup(self.client.delete_image, image['id'])
 
         # Creating image tag and verify it.
diff --git a/tempest/api/image/v2/test_images_tags_negative.py b/tempest/api/image/v2/test_images_tags_negative.py
index 2db4a74..9d74aa4 100644
--- a/tempest/api/image/v2/test_images_tags_negative.py
+++ b/tempest/api/image/v2/test_images_tags_negative.py
@@ -13,10 +13,13 @@
 # under the License.
 
 from tempest.api.image import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class ImagesTagsNegativeTest(base.BaseV2ImageTest):
     """Negative tests of image tags"""
@@ -25,7 +28,8 @@
     @decorators.idempotent_id('8cd30f82-6f9a-4c6e-8034-c1b51fba43d9')
     def test_update_tags_for_non_existing_image(self):
         """Update image tag with non existing image"""
-        tag = data_utils.rand_name('tag')
+        tag = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='tag')
         non_exist_image = data_utils.rand_uuid()
         self.assertRaises(lib_exc.NotFound, self.client.add_image_tag,
                           non_exist_image, tag)
@@ -38,7 +42,8 @@
                                   disk_format='raw',
                                   visibility='private'
                                   )
-        tag = data_utils.rand_name('non-exist-tag')
+        tag = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='non-exist-tag')
         self.addCleanup(self.client.delete_image, image['id'])
         self.assertRaises(lib_exc.NotFound, self.client.delete_image_tag,
                           image['id'], tag)
diff --git a/tempest/api/network/admin/test_external_network_extension.py b/tempest/api/network/admin/test_external_network_extension.py
index 0cec316..8d71a27 100644
--- a/tempest/api/network/admin/test_external_network_extension.py
+++ b/tempest/api/network/admin/test_external_network_extension.py
@@ -31,7 +31,8 @@
         cls.network = cls.create_network()
 
     def _create_network(self, external=True):
-        post_body = {'name': data_utils.rand_name('network-')}
+        post_body = {'name': data_utils.rand_name(
+            name='network-', prefix=CONF.resource_name_prefix)}
         if external:
             post_body['router:external'] = external
         body = self.admin_networks_client.create_network(**post_body)
diff --git a/tempest/api/network/admin/test_external_networks_negative.py b/tempest/api/network/admin/test_external_networks_negative.py
index 92731f6..ef10ee0 100644
--- a/tempest/api/network/admin/test_external_networks_negative.py
+++ b/tempest/api/network/admin/test_external_networks_negative.py
@@ -54,6 +54,8 @@
         # create a port which will internally create an instance-ip
         self.assertRaises(lib_exc.Conflict,
                           self.admin_ports_client.create_port,
-                          name=data_utils.rand_name(self.__class__.__name__),
+                          name=data_utils.rand_name(
+                              self.__class__.__name__,
+                              prefix=CONF.resource_name_prefix),
                           network_id=CONF.network.public_network_id,
                           fixed_ips=fixed_ips)
diff --git a/tempest/api/network/admin/test_metering_extensions.py b/tempest/api/network/admin/test_metering_extensions.py
index a60cd48..919aaf2 100644
--- a/tempest/api/network/admin/test_metering_extensions.py
+++ b/tempest/api/network/admin/test_metering_extensions.py
@@ -14,10 +14,13 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class MeteringTestJSON(base.BaseAdminNetworkTest):
     """Tests the following operations in the Neutron API:
@@ -37,7 +40,8 @@
     def resource_setup(cls):
         super(MeteringTestJSON, cls).resource_setup()
         description = "metering label created by tempest"
-        name = data_utils.rand_name("metering-label")
+        name = data_utils.rand_name(
+            name="metering-label", prefix=CONF.resource_name_prefix)
         cls.metering_label = cls.create_metering_label(name, description)
         remote_ip_prefix = ("10.0.0.0/24" if cls._ip_version == 4
                             else "fd02::/64")
@@ -101,7 +105,8 @@
     def test_create_delete_metering_label_with_filters(self):
         """Verifies creating and deleting metering label with filters"""
         # Creates a label
-        name = data_utils.rand_name('metering-label-')
+        name = data_utils.rand_name(
+            name='metering-label-', prefix=CONF.resource_name_prefix)
         description = "label created by tempest"
         body = self.admin_metering_labels_client.create_metering_label(
             name=name, description=description)
diff --git a/tempest/api/network/admin/test_ports.py b/tempest/api/network/admin/test_ports.py
index 5f9f29f..3158749 100644
--- a/tempest/api/network/admin/test_ports.py
+++ b/tempest/api/network/admin/test_ports.py
@@ -45,7 +45,9 @@
         """Test creating port with extended attribute"""
         post_body = {"network_id": self.network['id'],
                      "binding:host_id": self.host_id,
-                     "name": data_utils.rand_name(self.__class__.__name__)}
+                     "name": data_utils.rand_name(
+            self.__class__.__name__,
+            prefix=CONF.resource_name_prefix)}
         body = self.admin_ports_client.create_port(**post_body)
         port = body['port']
         self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@@ -62,7 +64,9 @@
     def test_update_port_binding_ext_attr(self):
         """Test updating port's extended attribute"""
         post_body = {"network_id": self.network['id'],
-                     "name": data_utils.rand_name(self.__class__.__name__)}
+                     "name": data_utils.rand_name(
+            self.__class__.__name__,
+            prefix=CONF.resource_name_prefix)}
         body = self.admin_ports_client.create_port(**post_body)
         port = body['port']
         self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@@ -83,7 +87,9 @@
         """Test updating and listing port's extended attribute"""
         # Create a new port
         post_body = {"network_id": self.network['id'],
-                     "name": data_utils.rand_name(self.__class__.__name__)}
+                     "name": data_utils.rand_name(
+            self.__class__.__name__,
+            prefix=CONF.resource_name_prefix)}
         body = self.admin_ports_client.create_port(**post_body)
         port = body['port']
         self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
@@ -113,7 +119,8 @@
     def test_show_port_binding_ext_attr(self):
         """Test showing port's extended attribute"""
         body = self.admin_ports_client.create_port(
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             network_id=self.network['id'])
         port = body['port']
         self.addCleanup(self.admin_ports_client.wait_for_resource_deletion,
diff --git a/tempest/api/network/admin/test_routers.py b/tempest/api/network/admin/test_routers.py
index 90e0917..216b15d 100644
--- a/tempest/api/network/admin/test_routers.py
+++ b/tempest/api/network/admin/test_routers.py
@@ -54,16 +54,17 @@
 
     @decorators.idempotent_id('e54dd3a3-4352-4921-b09d-44369ae17397')
     def test_create_router_setting_project_id(self):
+        prefix = CONF.resource_name_prefix
         """Test creating router from admin user setting project_id."""
-        project = data_utils.rand_name('test_tenant_')
-        description = data_utils.rand_name('desc_')
+        project = data_utils.rand_name(name='test_tenant_', prefix=prefix)
+        description = data_utils.rand_name(name='desc_', prefix=prefix)
         project = identity.identity_utils(self.os_admin).create_project(
             name=project, description=description)
         project_id = project['id']
         self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                         project_id)
 
-        name = data_utils.rand_name('router-')
+        name = data_utils.rand_name(name='router-', prefix=prefix)
         create_body = self.admin_routers_client.create_router(
             name=name, project_id=project_id)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -89,7 +90,8 @@
                           'The public_network_id option must be specified.')
     def test_create_router_with_snat_explicit(self):
         """Test creating router with specified enable_snat value"""
-        name = data_utils.rand_name('snat-router')
+        name = data_utils.rand_name(
+            'snat-router', prefix=CONF.resource_name_prefix)
         # Create a router enabling snat attributes
         enable_snat_states = [False, True]
         for enable_snat in enable_snat_states:
@@ -226,7 +228,8 @@
         """Test creating router setting gateway with fixed ip"""
         # At first create an external network and then use that
         # to create address and delete
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network_1 = self.admin_networks_client.create_network(
             name=network_name, **{'router:external': True})['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -237,7 +240,8 @@
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.admin_subnets_client.delete_subnet, subnet['id'])
         port = self.admin_ports_client.create_port(
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             network_id=network_1['id'])['port']
         self.admin_ports_client.delete_port(port_id=port['id'])
         fixed_ip = {
diff --git a/tempest/api/network/admin/test_routers_dvr.py b/tempest/api/network/admin/test_routers_dvr.py
index 291581c..f19857d 100644
--- a/tempest/api/network/admin/test_routers_dvr.py
+++ b/tempest/api/network/admin/test_routers_dvr.py
@@ -17,10 +17,13 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class RoutersTestDVR(base.BaseAdminNetworkTest):
 
@@ -41,7 +44,8 @@
     @classmethod
     def resource_setup(cls):
         super(RoutersTestDVR, cls).resource_setup()
-        name = data_utils.rand_name('pretest-check')
+        name = data_utils.rand_name(
+            name='pretest-check', prefix=CONF.resource_name_prefix)
         router = cls.admin_routers_client.create_router(name=name)
         cls.admin_routers_client.delete_router(router['router']['id'])
         if 'distributed' not in router['router']:
@@ -60,7 +64,8 @@
         The router is created and the "distributed" attribute is
         set to True
         """
-        name = data_utils.rand_name('router')
+        name = data_utils.rand_name(
+            name='router', prefix=CONF.resource_name_prefix)
         router = self.admin_routers_client.create_router(name=name,
                                                          distributed=True)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -81,7 +86,8 @@
         set to False, thus making it a "Centralized Virtual Router"
         as opposed to a "Distributed Virtual Router"
         """
-        name = data_utils.rand_name('router')
+        name = data_utils.rand_name(
+            name='router', prefix=CONF.resource_name_prefix)
         router = self.admin_routers_client.create_router(name=name,
                                                          distributed=False)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -105,7 +111,8 @@
         set to False. Once the router is updated, the distributed
         attribute will be set to True
         """
-        name = data_utils.rand_name('router')
+        name = data_utils.rand_name(
+            name='router', prefix=CONF.resource_name_prefix)
         project_id = self.routers_client.project_id
         # router needs to be in admin state down in order to be upgraded to DVR
         # l3ha routers are not upgradable to dvr, make it explicitly non ha
diff --git a/tempest/api/network/admin/test_routers_negative.py b/tempest/api/network/admin/test_routers_negative.py
index 914c046..2a07f16 100644
--- a/tempest/api/network/admin/test_routers_negative.py
+++ b/tempest/api/network/admin/test_routers_negative.py
@@ -45,7 +45,8 @@
         """Test creating router with gateway set to used ip should fail"""
         # At first create a address from public_network_id
         port = self.admin_ports_client.create_port(
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             network_id=CONF.network.public_network_id)['port']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.admin_ports_client.delete_port,
diff --git a/tempest/api/network/base.py b/tempest/api/network/base.py
index 696d68d..99742cc 100644
--- a/tempest/api/network/base.py
+++ b/tempest/api/network/base.py
@@ -104,7 +104,7 @@
     def create_network(cls, network_name=None, **kwargs):
         """Wrapper utility that returns a test network."""
         network_name = network_name or data_utils.rand_name(
-            cls.__name__ + '-test-network')
+            cls.__name__ + '-test-network', prefix=CONF.resource_name_prefix)
 
         body = cls.networks_client.create_network(name=network_name, **kwargs)
         network = body['network']
@@ -161,7 +161,8 @@
     @classmethod
     def create_port(cls, network, **kwargs):
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name(cls.__name__)
+            kwargs['name'] = data_utils.rand_name(
+                cls.__name__, prefix=CONF.resource_name_prefix)
         """Wrapper utility that returns a test port."""
         body = cls.ports_client.create_port(network_id=network['id'],
                                             **kwargs)
@@ -182,7 +183,7 @@
                       external_network_id=None, enable_snat=None,
                       **kwargs):
         router_name = router_name or data_utils.rand_name(
-            cls.__name__ + "-router")
+            cls.__name__ + "-router", prefix=CONF.resource_name_prefix)
 
         ext_gw_info = {}
         if external_network_id:
diff --git a/tempest/api/network/base_security_groups.py b/tempest/api/network/base_security_groups.py
index 32f2cdd..a1bb68d 100644
--- a/tempest/api/network/base_security_groups.py
+++ b/tempest/api/network/base_security_groups.py
@@ -14,15 +14,19 @@
 #    under the License.
 
 from tempest.api.network import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 
+CONF = config.CONF
+
 
 class BaseSecGroupTest(base.BaseNetworkTest):
 
     def _create_security_group(self):
         # Create a security group
-        name = data_utils.rand_name('secgroup-')
+        name = data_utils.rand_name(
+            name='secgroup-', prefix=CONF.resource_name_prefix)
         group_create_body = (
             self.security_groups_client.create_security_group(name=name))
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/api/network/test_allowed_address_pair.py b/tempest/api/network/test_allowed_address_pair.py
index bf9eae6..5c28e96 100644
--- a/tempest/api/network/test_allowed_address_pair.py
+++ b/tempest/api/network/test_allowed_address_pair.py
@@ -15,10 +15,13 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class AllowedAddressPairTestJSON(base.BaseNetworkTest):
     """Tests the Neutron Allowed Address Pair API extension
@@ -60,7 +63,8 @@
                                   'mac_address': self.mac_address}]
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             allowed_address_pairs=allowed_address_pairs)
         port_id = body['port']['id']
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
@@ -80,7 +84,8 @@
         # Create a port without allowed address pair
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         port_id = body['port']['id']
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         port_id)
@@ -126,7 +131,8 @@
         """Update allowed address pair port with multiple ip and mac"""
         resp = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         newportid = resp['port']['id']
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         newportid)
diff --git a/tempest/api/network/test_extra_dhcp_options.py b/tempest/api/network/test_extra_dhcp_options.py
index bc6418a..36578b1 100644
--- a/tempest/api/network/test_extra_dhcp_options.py
+++ b/tempest/api/network/test_extra_dhcp_options.py
@@ -15,10 +15,13 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
     """Tests the following operations with the Extra DHCP Options:
@@ -61,7 +64,8 @@
         """Test creating a port with Extra DHCP Options and list those"""
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             extra_dhcp_opts=self.extra_dhcp_opts)
         port_id = body['port']['id']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -77,7 +81,8 @@
     @decorators.idempotent_id('9a6aebf4-86ee-4f47-b07a-7f7232c55607')
     def test_update_show_port_with_extra_dhcp_options(self):
         """Test updating port with extra DHCP options and show that port"""
-        name = data_utils.rand_name('new-port-name')
+        name = data_utils.rand_name(
+            name='new-port-name', prefix=CONF.resource_name_prefix)
         self.ports_client.update_port(
             self.port['id'],
             name=name,
diff --git a/tempest/api/network/test_floating_ips.py b/tempest/api/network/test_floating_ips.py
index 64f6e80..e39ad08 100644
--- a/tempest/api/network/test_floating_ips.py
+++ b/tempest/api/network/test_floating_ips.py
@@ -153,7 +153,8 @@
         # Create a port
         port = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         created_port = port['port']
         floating_ip = self.floating_ips_client.update_floatingip(
             created_floating_ip['id'],
@@ -183,7 +184,8 @@
             self.floating_ips_client.delete_floatingip,
             created_floating_ip['id'])
         self.assertEqual(created_floating_ip['router_id'], self.router['id'])
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network2 = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(
@@ -258,7 +260,8 @@
         # Create port
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             fixed_ips=fixed_ips)
         port = body['port']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/api/network/test_networks.py b/tempest/api/network/test_networks.py
index caaf964..fd93779 100644
--- a/tempest/api/network/test_networks.py
+++ b/tempest/api/network/test_networks.py
@@ -468,8 +468,11 @@
     def test_bulk_create_delete_network(self):
         """Verify creating and deleting multiple networks in one request"""
         # Creates 2 networks in one request
-        network_list = [{'name': data_utils.rand_name('network-')},
-                        {'name': data_utils.rand_name('network-')}]
+        network_list = [
+            {'name': data_utils.rand_name(
+                'network-', prefix=CONF.resource_name_prefix)},
+            {'name': data_utils.rand_name(
+                'network-', prefix=CONF.resource_name_prefix)}]
         body = self.networks_client.create_bulk_networks(networks=network_list)
         created_networks = body['networks']
         self.addCleanup(self._delete_networks, created_networks)
@@ -489,7 +492,9 @@
         cidrs = [subnet_cidr
                  for subnet_cidr in self.cidr.subnet(self.mask_bits)]
 
-        names = [data_utils.rand_name('subnet-') for i in range(len(networks))]
+        names = [data_utils.rand_name(
+            name='subnet-', prefix=CONF.resource_name_prefix)
+            for i in range(len(networks))]
         subnets_list = []
         for i in range(len(names)):
             p1 = {
@@ -516,7 +521,9 @@
         """Verify creating and deleting multiple ports in one request"""
         networks = [self.create_network(), self.create_network()]
         # Creates 2 ports in one request
-        names = [data_utils.rand_name('port-') for i in range(len(networks))]
+        names = [data_utils.rand_name(
+            name='port-', prefix=CONF.resource_name_prefix)
+            for i in range(len(networks))]
         port_list = []
         state = [True, False]
         for i in range(len(names)):
diff --git a/tempest/api/network/test_networks_negative.py b/tempest/api/network/test_networks_negative.py
index 0525484..6c91df0 100644
--- a/tempest/api/network/test_networks_negative.py
+++ b/tempest/api/network/test_networks_negative.py
@@ -15,10 +15,13 @@
 #    under the License.
 
 from tempest.api.network import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class NetworksNegativeTestJSON(base.BaseNetworkTest):
     """Negative tests of network"""
@@ -89,7 +92,9 @@
         self.assertRaises(lib_exc.NotFound,
                           self.ports_client.create_port,
                           network_id=non_exist_net_id,
-                          name=data_utils.rand_name(self.__class__.__name__))
+                          name=data_utils.rand_name(
+                              self.__class__.__name__,
+                              prefix=CONF.resource_name_prefix))
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('cf8eef21-4351-4f53-adcd-cc5cb1e76b92')
diff --git a/tempest/api/network/test_ports.py b/tempest/api/network/test_ports.py
index 190f7e0..02faa59 100644
--- a/tempest/api/network/test_ports.py
+++ b/tempest/api/network/test_ports.py
@@ -21,11 +21,14 @@
 from tempest.api.network import base_security_groups as sec_base
 from tempest.common import custom_matchers
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions
 
+CONF = config.CONF
+
 
 class PortsTestJSON(sec_base.BaseSecGroupTest):
     """Test the following operations for ports:
@@ -59,7 +62,7 @@
 
     def _create_network(self, network_name=None, **kwargs):
         network_name = network_name or data_utils.rand_name(
-            self.__class__.__name__)
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network = self.networks_client.create_network(
             name=network_name, **kwargs)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -74,7 +77,8 @@
         # Verify port creation
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         port = body['port']
         # Schedule port deletion with verification upon test completion
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
@@ -131,7 +135,8 @@
                             **allocation_pools)
         body = self.ports_client.create_port(
             network_id=net_id,
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         body['port']['id'])
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -190,14 +195,16 @@
         # Create two ports
         port_1 = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         port_1['port']['id'])
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.ports_client.delete_port, port_1['port']['id'])
         port_2 = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         port_2['port']['id'])
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -251,7 +258,8 @@
         fixed_ips = [{'subnet_id': subnet['id'], 'ip_address': ip_address_1}]
         port_1 = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             fixed_ips=fixed_ips)
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         port_1['port']['id'])
@@ -260,7 +268,8 @@
         fixed_ips = [{'subnet_id': subnet['id'], 'ip_address': ip_address_2}]
         port_2 = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             fixed_ips=fixed_ips)
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         port_2['port']['id'])
@@ -319,7 +328,8 @@
                         self.routers_client.delete_router, router['id'])
         port = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         # Add router interface to port created above
         self.routers_client.add_router_interface(router['id'],
                                                  port_id=port['port']['id'])
@@ -393,14 +403,16 @@
             security_groups_list.append(group_create_body['security_group']
                                         ['id'])
         # Create a port
-        sec_grp_name = data_utils.rand_name('secgroup')
+        sec_grp_name = data_utils.rand_name(
+            name='secgroup', prefix=CONF.resource_name_prefix)
         security_group = sec_grps_client.create_security_group(
             name=sec_grp_name)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.security_groups_client.delete_security_group,
                         security_group['security_group']['id'])
         post_body = {
-            "name": data_utils.rand_name(self.__class__.__name__),
+            "name": data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             "security_groups": [security_group['security_group']['id']],
             "network_id": self.network['id'],
             "admin_state_up": True,
@@ -416,7 +428,8 @@
         subnet_2 = self.create_subnet(self.network)
         fixed_ip_2 = [{'subnet_id': subnet_2['id']}]
         update_body = {
-            "name": data_utils.rand_name(self.__class__.__name__),
+            "name": data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix),
             "admin_state_up": False,
             "fixed_ips": fixed_ip_2,
             "security_groups": security_groups_list}
@@ -446,7 +459,8 @@
         the port's fixed ips.
         """
         self._update_port_with_security_groups(
-            [data_utils.rand_name('secgroup')])
+            [data_utils.rand_name('secgroup',
+                                  prefix=CONF.resource_name_prefix)])
 
     @decorators.idempotent_id('edf6766d-3d40-4621-bc6e-2521a44c257d')
     @testtools.skipUnless(
@@ -460,8 +474,10 @@
         the port's fixed ips.
         """
         self._update_port_with_security_groups(
-            [data_utils.rand_name('secgroup'),
-             data_utils.rand_name('secgroup')])
+            [data_utils.rand_name('secgroup',
+                                  prefix=CONF.resource_name_prefix),
+             data_utils.rand_name('secgroup',
+                                  prefix=CONF.resource_name_prefix)])
 
     @decorators.idempotent_id('13e95171-6cbd-489c-9d7c-3f9c58215c18')
     def test_create_show_delete_port_user_defined_mac(self):
@@ -469,7 +485,8 @@
         # Create a port for a legal mac
         body = self.ports_client.create_port(
             network_id=self.network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         old_port = body['port']
         free_mac_address = old_port['mac_address']
         self.ports_client.delete_port(old_port['id'])
@@ -477,7 +494,8 @@
         body = self.ports_client.create_port(
             network_id=self.network['id'],
             mac_address=free_mac_address,
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         self.addCleanup(self.ports_client.wait_for_resource_deletion,
                         body['port']['id'])
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/api/network/test_routers.py b/tempest/api/network/test_routers.py
index c03a8a2..0dd7c70 100644
--- a/tempest/api/network/test_routers.py
+++ b/tempest/api/network/test_routers.py
@@ -56,7 +56,9 @@
     def test_create_show_list_update_delete_router(self):
         """Test create/show/list/update/delete of a router"""
         # Create a router
-        router_name = data_utils.rand_name(self.__class__.__name__ + '-router')
+        router_name = data_utils.rand_name(
+            self.__class__.__name__ + '-router',
+            prefix=CONF.resource_name_prefix)
         router = self.create_router(
             router_name,
             admin_state_up=False,
@@ -90,7 +92,8 @@
     @decorators.idempotent_id('b42e6e39-2e37-49cc-a6f4-8467e940900a')
     def test_add_remove_router_interface_with_subnet_id(self):
         """Test adding and removing router interface with subnet id"""
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -117,7 +120,8 @@
     @decorators.idempotent_id('2b7d2f37-6748-4d78-92e5-1d590234f0d5')
     def test_add_remove_router_interface_with_port_id(self):
         """Test adding and removing router interface with port id"""
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -128,7 +132,8 @@
         self.addCleanup(self.delete_router, router)
         port_body = self.ports_client.create_port(
             network_id=network['id'],
-            name=data_utils.rand_name(self.__class__.__name__))
+            name=data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix))
         # add router interface to port created above
         interface = self.routers_client.add_router_interface(
             router['id'],
@@ -165,7 +170,8 @@
         # Update router extra route, second ip of the range is
         # used as next hop
         for i in range(routes_num):
-            network_name = data_utils.rand_name(self.__class__.__name__)
+            network_name = data_utils.rand_name(
+                self.__class__.__name__, prefix=CONF.resource_name_prefix)
             network = self.networks_client.create_network(
                 name=network_name)['network']
             self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -235,12 +241,14 @@
     @decorators.idempotent_id('802c73c9-c937-4cef-824b-2191e24a6aab')
     def test_add_multiple_router_interfaces(self):
         """Test adding multiple router interfaces"""
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network01 = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.networks_client.delete_network, network01['id'])
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network02 = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -266,7 +274,8 @@
     @decorators.idempotent_id('96522edf-b4b5-45d9-8443-fa11c26e6eff')
     def test_router_interface_port_update_with_fixed_ip(self):
         """Test updating router interface port's fixed ip"""
-        network_name = data_utils.rand_name(self.__class__.__name__)
+        network_name = data_utils.rand_name(
+            self.__class__.__name__, prefix=CONF.resource_name_prefix)
         network = self.networks_client.create_network(
             name=network_name)['network']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/api/network/test_routers_negative.py b/tempest/api/network/test_routers_negative.py
index 10a2706..50ba977 100644
--- a/tempest/api/network/test_routers_negative.py
+++ b/tempest/api/network/test_routers_negative.py
@@ -15,10 +15,13 @@
 
 from tempest.api.network import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class RoutersNegativeTest(base.BaseNetworkTest):
     """Negative tests of routers"""
@@ -65,9 +68,11 @@
     def test_add_router_interfaces_on_overlapping_subnets_returns_400(self):
         """Test adding router interface which is on overlapping subnets"""
         network01 = self.create_network(
-            network_name=data_utils.rand_name('router-network01-'))
+            network_name=data_utils.rand_name(
+                name='router-network01-', prefix=CONF.resource_name_prefix))
         network02 = self.create_network(
-            network_name=data_utils.rand_name('router-network02-'))
+            network_name=data_utils.rand_name(
+                name='router-network02-', prefix=CONF.resource_name_prefix))
         subnet01 = self.create_subnet(network01)
         subnet02 = self.create_subnet(network02)
         interface = self.routers_client.add_router_interface(
@@ -96,7 +101,8 @@
     @decorators.idempotent_id('c2a70d72-8826-43a7-8208-0209e6360c47')
     def test_show_non_existent_router_returns_404(self):
         """Test showing non existent router"""
-        router = data_utils.rand_name('non_exist_router')
+        router = data_utils.rand_name(
+            name='non_exist_router', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.NotFound, self.routers_client.show_router,
                           router)
 
@@ -104,7 +110,8 @@
     @decorators.idempotent_id('b23d1569-8b0c-4169-8d4b-6abd34fad5c7')
     def test_update_non_existent_router_returns_404(self):
         """Test updating non existent router"""
-        router = data_utils.rand_name('non_exist_router')
+        router = data_utils.rand_name(
+            name='non_exist_router', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.NotFound, self.routers_client.update_router,
                           router, name="new_name")
 
@@ -112,7 +119,8 @@
     @decorators.idempotent_id('c7edc5ad-d09d-41e6-a344-5c0c31e2e3e4')
     def test_delete_non_existent_router_returns_404(self):
         """Test deleting non existent router"""
-        router = data_utils.rand_name('non_exist_router')
+        router = data_utils.rand_name(
+            name='non_exist_router', prefix=CONF.resource_name_prefix)
         self.assertRaises(lib_exc.NotFound, self.routers_client.delete_router,
                           router)
 
diff --git a/tempest/api/network/test_security_groups.py b/tempest/api/network/test_security_groups.py
index 532ef65..c7f6b8f 100644
--- a/tempest/api/network/test_security_groups.py
+++ b/tempest/api/network/test_security_groups.py
@@ -15,10 +15,13 @@
 
 from tempest.api.network import base_security_groups as base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class SecGroupTest(base.BaseSecGroupTest):
     """Test security groups"""
@@ -91,7 +94,8 @@
             secgroup_list.append(secgroup['id'])
         self.assertIn(group_create_body['security_group']['id'], secgroup_list)
         # Update the security group
-        new_name = data_utils.rand_name('security-')
+        new_name = data_utils.rand_name(
+            'security-', prefix=CONF.resource_name_prefix)
         new_description = data_utils.rand_name('security-description')
         update_body = self.security_groups_client.update_security_group(
             group_create_body['security_group']['id'],
diff --git a/tempest/api/network/test_subnetpools_extensions.py b/tempest/api/network/test_subnetpools_extensions.py
index 48603ed..689844b 100644
--- a/tempest/api/network/test_subnetpools_extensions.py
+++ b/tempest/api/network/test_subnetpools_extensions.py
@@ -50,7 +50,8 @@
     @decorators.idempotent_id('62595970-ab1c-4b7f-8fcc-fddfe55e9811')
     def test_create_list_show_update_delete_subnetpools(self):
         """Test create/list/show/update/delete of subnet pools"""
-        subnetpool_name = data_utils.rand_name('subnetpools')
+        subnetpool_name = data_utils.rand_name(
+            name='subnetpools', prefix=CONF.resource_name_prefix)
         # create subnet pool
         prefix = CONF.network.default_network
         body = self.subnetpools_client.create_subnetpool(name=subnetpool_name,
@@ -64,7 +65,8 @@
         body = self.subnetpools_client.show_subnetpool(subnetpool_id)
         self.assertEqual(subnetpool_name, body["subnetpool"]["name"])
         # update the subnet pool
-        subnetpool_name = data_utils.rand_name('subnetpools_update')
+        subnetpool_name = data_utils.rand_name(
+            name='subnetpools_update', prefix=CONF.resource_name_prefix)
         body = self.subnetpools_client.update_subnetpool(subnetpool_id,
                                                          name=subnetpool_name)
         self.assertEqual(subnetpool_name, body["subnetpool"]["name"])
diff --git a/tempest/api/network/test_tags.py b/tempest/api/network/test_tags.py
index 5219c34..bd3e360 100644
--- a/tempest/api/network/test_tags.py
+++ b/tempest/api/network/test_tags.py
@@ -52,7 +52,8 @@
     @decorators.idempotent_id('ee76bfaf-ac94-4d74-9ecc-4bbd4c583cb1')
     def test_create_list_show_update_delete_tags(self):
         """Validate that creating a tag on a network resource works"""
-        tag_name = data_utils.rand_name(self.__class__.__name__ + '-Tag')
+        tag_name = data_utils.rand_name(
+            self.__class__.__name__ + '-Tag', prefix=CONF.resource_name_prefix)
         self.tags_client.create_tag('networks', self.network['id'], tag_name)
         self.addCleanup(self.tags_client.delete_all_tags, 'networks',
                         self.network['id'])
@@ -66,7 +67,8 @@
 
         # Generate 3 new tag names.
         replace_tags = [data_utils.rand_name(
-            self.__class__.__name__ + '-Tag') for _ in range(3)]
+            self.__class__.__name__ + '-Tag',
+            prefix=CONF.resource_name_prefix) for _ in range(3)]
 
         # Replace the current tag with the 3 new tags and validate that the
         # network resource has the 3 new tags.
@@ -132,7 +134,8 @@
         cls.port = cls.create_port(cls.network)
         cls.router = cls.create_router()
 
-        subnetpool_name = data_utils.rand_name(cls.__name__ + '-Subnetpool')
+        subnetpool_name = data_utils.rand_name(
+            cls.__name__ + '-Subnetpool', prefix=CONF.resource_name_prefix)
         prefix = CONF.network.default_network
         cls.subnetpool = cls.subnetpools_client.create_subnetpool(
             name=subnetpool_name, prefixes=prefix)['subnetpool']
@@ -145,7 +148,9 @@
         tag_names = []
 
         for resource in self.SUPPORTED_RESOURCES:
-            tag_name = data_utils.rand_name(self.__class__.__name__ + '-Tag')
+            tag_name = data_utils.rand_name(
+                self.__class__.__name__ + '-Tag',
+                prefix=CONF.resource_name_prefix)
             tag_names.append(tag_name)
             resource_object = getattr(self, resource[:-1])
 
@@ -188,7 +193,8 @@
         for resource in self.SUPPORTED_RESOURCES:
             # Generate 3 new tag names.
             replace_tags = [data_utils.rand_name(
-                self.__class__.__name__ + '-Tag') for _ in range(3)]
+                self.__class__.__name__ + '-Tag',
+                prefix=CONF.resource_name_prefix) for _ in range(3)]
 
             # Replace the current tag with the 3 new tags and validate that the
             # current resource has the 3 new tags.
diff --git a/tempest/api/object_storage/base.py b/tempest/api/object_storage/base.py
index 8adbe7d..58e71a5 100644
--- a/tempest/api/object_storage/base.py
+++ b/tempest/api/object_storage/base.py
@@ -78,7 +78,8 @@
     @classmethod
     def create_container(cls):
         # wrapper that returns a test container
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         cls.container_client.update_container(container_name)
         cls.containers.append(container_name)
 
@@ -89,7 +90,8 @@
                       data=None, metadata=None):
         # wrapper that returns a test object
         if object_name is None:
-            object_name = data_utils.rand_name(name='TestObject')
+            object_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='TestObject')
         if data is None:
             data = data_utils.random_bytes()
 
diff --git a/tempest/api/object_storage/test_account_quotas.py b/tempest/api/object_storage/test_account_quotas.py
index 6854bbe..0a40237 100644
--- a/tempest/api/object_storage/test_account_quotas.py
+++ b/tempest/api/object_storage/test_account_quotas.py
@@ -81,7 +81,8 @@
     @utils.requires_ext(extension='account_quotas', service='object')
     def test_upload_valid_object(self):
         """Test uploading valid object"""
-        object_name = data_utils.rand_name(name="TestObject")
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name="TestObject")
         data = data_utils.arbitrary_string()
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
diff --git a/tempest/api/object_storage/test_account_services.py b/tempest/api/object_storage/test_account_services.py
index b7a413e..75414c0 100644
--- a/tempest/api/object_storage/test_account_services.py
+++ b/tempest/api/object_storage/test_account_services.py
@@ -42,7 +42,9 @@
     def resource_setup(cls):
         super(AccountTest, cls).resource_setup()
         for i in range(ord('a'), ord('f') + 1):
-            name = data_utils.rand_name(name='%s-' % bytes((i,)))
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='%s-' % bytes((i,)))
             cls.container_client.update_container(name)
             cls.addClassResourceCleanup(object_storage.delete_containers,
                                         [name],
diff --git a/tempest/api/object_storage/test_container_acl.py b/tempest/api/object_storage/test_container_acl.py
index 0259373..9dafbf0 100644
--- a/tempest/api/object_storage/test_container_acl.py
+++ b/tempest/api/object_storage/test_container_acl.py
@@ -50,7 +50,8 @@
                 create_update_metadata_prefix=''))
         self.assertHeaders(resp_meta, 'Container', 'POST')
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.os_roles_operator.object_client.create_object(
             self.container_name, object_name, 'data')
         self.assertHeaders(resp, 'Object', 'PUT')
@@ -84,7 +85,8 @@
             auth_data=self.os_roles_operator_alt.object_client.auth_provider.
             auth_data)
         # Trying to write the object with rights
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.os_roles_operator.object_client.create_object(
             self.container_name,
             object_name, 'data', headers={})
diff --git a/tempest/api/object_storage/test_container_acl_negative.py b/tempest/api/object_storage/test_container_acl_negative.py
index 347c79e..49c2ed0 100644
--- a/tempest/api/object_storage/test_container_acl_negative.py
+++ b/tempest/api/object_storage/test_container_acl_negative.py
@@ -39,7 +39,8 @@
 
     def setUp(self):
         super(ObjectACLsNegativeTest, self).setUp()
-        self.container_name = data_utils.rand_name(name='TestContainer')
+        self.container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         self.container_client.update_container(self.container_name)
         self.containers.append(self.container_name)
 
@@ -54,7 +55,8 @@
         """Test writing object without using credentials"""
         # trying to create object with empty headers
         # X-Auth-Token is not provided
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         self.object_client.auth_provider.set_alt_auth_data(
             request_part='headers',
             auth_data=None
@@ -68,7 +70,8 @@
     def test_delete_object_without_using_creds(self):
         """Test deleting object without using credentials"""
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         self.object_client.create_object(self.container_name, object_name,
                                          'data')
         # trying to delete object with empty headers
@@ -86,7 +89,8 @@
     def test_write_object_with_non_authorized_user(self):
         """Test writing object with non-authorized user"""
         # User provided token is forbidden. ACL are not set
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         # trying to create object with non-authorized user
         self.object_client.auth_provider.set_alt_auth_data(
             request_part='headers',
@@ -101,7 +105,8 @@
     def test_read_object_with_non_authorized_user(self):
         """Test reading object with non-authorized user"""
         # User provided token is forbidden. ACL are not set
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.object_client.create_object(
             self.container_name, object_name, 'data')
         self.assertHeaders(resp, 'Object', 'PUT')
@@ -119,7 +124,8 @@
     def test_delete_object_with_non_authorized_user(self):
         """Test deleting object with non-authorized user"""
         # User provided token is forbidden. ACL are not set
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.object_client.create_object(
             self.container_name, object_name, 'data')
         self.assertHeaders(resp, 'Object', 'PUT')
@@ -144,7 +150,8 @@
                 create_update_metadata_prefix=''))
         self.assertHeaders(resp_meta, 'Container', 'POST')
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, 'data')
         self.assertHeaders(resp, 'Object', 'PUT')
@@ -173,7 +180,8 @@
             request_part='headers',
             auth_data=self.test_auth_data
         )
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         self.assertRaises(lib_exc.Forbidden,
                           self.object_client.create_object,
                           self.container_name,
@@ -199,7 +207,8 @@
             request_part='headers',
             auth_data=self.test_auth_data
         )
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         self.assertRaises(lib_exc.Forbidden,
                           self.object_client.create_object,
                           self.container_name,
@@ -221,7 +230,8 @@
                 create_update_metadata_prefix=''))
         self.assertHeaders(resp_meta, 'Container', 'POST')
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, 'data')
         self.assertHeaders(resp, 'Object', 'PUT')
diff --git a/tempest/api/object_storage/test_container_quotas.py b/tempest/api/object_storage/test_container_quotas.py
index fb67fb4..f055d19 100644
--- a/tempest/api/object_storage/test_container_quotas.py
+++ b/tempest/api/object_storage/test_container_quotas.py
@@ -16,10 +16,12 @@
 from tempest.api.object_storage import base
 from tempest.common import utils
 from tempest.common import waiters
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
 QUOTA_BYTES = 10
 QUOTA_COUNT = 3
 
@@ -55,7 +57,8 @@
     @decorators.attr(type="smoke")
     def test_upload_valid_object(self):
         """Attempts to uploads an object smaller than the bytes quota."""
-        object_name = data_utils.rand_name(name="TestObject")
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name="TestObject")
         data = data_utils.arbitrary_string(QUOTA_BYTES)
 
         nbefore = self._get_bytes_used()
@@ -72,7 +75,8 @@
     @decorators.attr(type="smoke")
     def test_upload_large_object(self):
         """Attempts to upload an object larger than the bytes quota."""
-        object_name = data_utils.rand_name(name="TestObject")
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name="TestObject")
         data = data_utils.arbitrary_string(QUOTA_BYTES + 1)
 
         nbefore = self._get_bytes_used()
@@ -90,7 +94,8 @@
     def test_upload_too_many_objects(self):
         """Attempts to upload many objects that exceeds the count limit."""
         for _ in range(QUOTA_COUNT):
-            name = data_utils.rand_name(name="TestObject")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name="TestObject")
             self.object_client.create_object(self.container_name, name, "")
             waiters.wait_for_object_create(self.object_client,
                                            self.container_name,
diff --git a/tempest/api/object_storage/test_container_services.py b/tempest/api/object_storage/test_container_services.py
index 085b8ab..e2bbc26 100644
--- a/tempest/api/object_storage/test_container_services.py
+++ b/tempest/api/object_storage/test_container_services.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.object_storage import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ContainerTest(base.BaseObjectTest):
     """Test containers"""
@@ -30,7 +33,8 @@
     @decorators.idempotent_id('92139d73-7819-4db1-85f8-3f2f22a8d91f')
     def test_create_container(self):
         """Test creating container"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         resp, _ = self.container_client.update_container(container_name)
         self.containers.append(container_name)
         self.assertHeaders(resp, 'Container', 'PUT')
@@ -38,7 +42,8 @@
     @decorators.idempotent_id('49f866ed-d6af-4395-93e7-4187eb56d322')
     def test_create_container_overwrite(self):
         """Test overwriting container with the same name"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         self.container_client.update_container(container_name)
         self.containers.append(container_name)
 
@@ -48,7 +53,8 @@
     @decorators.idempotent_id('c2ac4d59-d0f5-40d5-ba19-0635056d48cd')
     def test_create_container_with_metadata_key(self):
         """Test creating container with the blank value of metadata"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         headers = {'X-Container-Meta-test-container-meta': ''}
         resp, _ = self.container_client.update_container(
             container_name,
@@ -65,7 +71,8 @@
     @decorators.idempotent_id('e1e8df32-7b22-44e1-aa08-ccfd8d446b58')
     def test_create_container_with_metadata_value(self):
         """Test creating container with metadata value"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
 
         # metadata name using underscores should be converted to hyphens
         headers = {'X-Container-Meta-test_container_meta': 'Meta1'}
@@ -84,7 +91,8 @@
     @decorators.idempotent_id('24d16451-1c0c-4e4f-b59c-9840a3aba40e')
     def test_create_container_with_remove_metadata_key(self):
         """Test creating container with the blank value of remove metadata"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         headers = {'X-Container-Meta-test-container-meta': 'Meta1'}
         self.container_client.update_container(container_name, **headers)
         self.containers.append(container_name)
@@ -102,7 +110,8 @@
     @decorators.idempotent_id('8a21ebad-a5c7-4e29-b428-384edc8cd156')
     def test_create_container_with_remove_metadata_value(self):
         """Test creating container with remove metadata"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         headers = {'X-Container-Meta-test-container-meta': 'Meta1'}
         self.container_client.update_container(container_name, **headers)
         self.containers.append(container_name)
@@ -151,7 +160,8 @@
     def test_list_container_contents_with_delimiter(self):
         """Test getting container contents list using delimiter param"""
         container_name = self.create_container()
-        object_name = data_utils.rand_name(name='TestObject/')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject/')
         self.create_object(container_name, object_name)
 
         params = {'delimiter': '/'}
@@ -247,7 +257,8 @@
     def test_list_container_contents_with_path(self):
         """Test getting container contents list using path param"""
         container_name = self.create_container()
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         object_name = 'Swift/' + object_name
         self.create_object(container_name, object_name)
 
@@ -305,7 +316,8 @@
 
         Send one request of adding and deleting metadata.
         """
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         metadata_1 = {'X-Container-Meta-test-container-meta1': 'Meta1'}
         self.container_client.update_container(container_name, **metadata_1)
         self.containers.append(container_name)
@@ -346,7 +358,8 @@
     @decorators.idempotent_id('3a5ce7d4-6e4b-47d0-9d87-7cd42c325094')
     def test_update_container_metadata_with_delete_metadata(self):
         """Test updating container metadata using delete metadata"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         metadata = {'X-Container-Meta-test-container-meta1': 'Meta1'}
         self.container_client.update_container(container_name, **metadata)
         self.containers.append(container_name)
@@ -380,7 +393,8 @@
     @decorators.idempotent_id('a2e36378-6f1f-43f4-840a-ffd9cfd61914')
     def test_update_container_metadata_with_delete_metadata_key(self):
         """Test updating container metadata with a blank value of metadata"""
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         headers = {'X-Container-Meta-test-container-meta1': 'Meta1'}
         self.container_client.update_container(container_name, **headers)
         self.containers.append(container_name)
diff --git a/tempest/api/object_storage/test_container_services_negative.py b/tempest/api/object_storage/test_container_services_negative.py
index 51c711f..63d97a3 100644
--- a/tempest/api/object_storage/test_container_services_negative.py
+++ b/tempest/api/object_storage/test_container_services_negative.py
@@ -66,7 +66,8 @@
     def test_create_container_metadata_name_exceeds_max_length(self):
         """Test creating container with metadata name longer than max"""
         max_length = self.constraints['max_meta_name_length']
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         metadata_name = 'X-Container-Meta-' + data_utils.arbitrary_string(
             size=max_length + 1)
         metadata = {metadata_name: 'penguin'}
@@ -84,7 +85,8 @@
     def test_create_container_metadata_value_exceeds_max_length(self):
         """Test creating container with metadata value longer than max"""
         max_length = self.constraints['max_meta_value_length']
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         metadata_value = data_utils.arbitrary_string(size=max_length + 1)
         metadata = {'X-Container-Meta-animal': metadata_value}
         ex = self.assertRaises(
@@ -101,7 +103,8 @@
     def test_create_container_metadata_exceeds_overall_metadata_count(self):
         """Test creating container with metadata exceeding default count"""
         max_count = self.constraints['max_meta_count']
-        container_name = data_utils.rand_name(name='TestContainer')
+        container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         metadata = {}
         for i in range(max_count + 1):
             metadata['X-Container-Meta-animal-' + str(i)] = 'penguin'
diff --git a/tempest/api/object_storage/test_container_sync.py b/tempest/api/object_storage/test_container_sync.py
index 9b1d3c7..e2c9d54 100644
--- a/tempest/api/object_storage/test_container_sync.py
+++ b/tempest/api/object_storage/test_container_sync.py
@@ -69,9 +69,13 @@
             int(container_sync_timeout / cls.container_sync_interval)
 
         # define container and object clients
-        cls.clients[data_utils.rand_name(name='TestContainerSync')] = \
+        cls.clients[data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='TestContainerSync')] = \
             (cls.container_client, cls.object_client)
-        cls.clients[data_utils.rand_name(name='TestContainerSync')] = \
+        cls.clients[data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='TestContainerSync')] = \
             (cls.container_client_alt, cls.object_client_alt)
         for cont_name, client in cls.clients.items():
             client[0].create_container(cont_name)
@@ -92,7 +96,9 @@
             headers = make_headers(cont[1], cont_client[1])
             cont_client[0].put(str(cont[0]), body=None, headers=headers)
             # create object in container
-            object_name = data_utils.rand_name(name='TestSyncObject')
+            object_name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='TestSyncObject')
             data = object_name[::-1].encode()  # Raw data, we need bytes
             obj_client[0].create_object(cont[0], object_name, data)
             self.objects.append(object_name)
diff --git a/tempest/api/object_storage/test_object_formpost.py b/tempest/api/object_storage/test_object_formpost.py
index 39e895e..3231c0a 100644
--- a/tempest/api/object_storage/test_object_formpost.py
+++ b/tempest/api/object_storage/test_object_formpost.py
@@ -19,9 +19,12 @@
 
 from tempest.api.object_storage import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class ObjectFormPostTest(base.BaseObjectTest):
     """Test object post with form"""
@@ -33,7 +36,8 @@
     def resource_setup(cls):
         super(ObjectFormPostTest, cls).resource_setup()
         cls.container_name = cls.create_container()
-        cls.object_name = data_utils.rand_name(name='ObjectTemp')
+        cls.object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='ObjectTemp')
 
         cls.key = 'Meta'
         cls.metadata = {'Temp-URL-Key': cls.key}
diff --git a/tempest/api/object_storage/test_object_formpost_negative.py b/tempest/api/object_storage/test_object_formpost_negative.py
index 971a223..c15ce1b 100644
--- a/tempest/api/object_storage/test_object_formpost_negative.py
+++ b/tempest/api/object_storage/test_object_formpost_negative.py
@@ -19,10 +19,13 @@
 
 from tempest.api.object_storage import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 
+CONF = config.CONF
+
 
 class ObjectFormPostNegativeTest(base.BaseObjectTest):
     """Negative tests of object post with form"""
@@ -34,7 +37,8 @@
     def resource_setup(cls):
         super(ObjectFormPostNegativeTest, cls).resource_setup()
         cls.container_name = cls.create_container()
-        cls.object_name = data_utils.rand_name(name='ObjectTemp')
+        cls.object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='ObjectTemp')
 
         cls.key = 'Meta'
         cls.metadata = {'Temp-URL-Key': cls.key}
diff --git a/tempest/api/object_storage/test_object_services.py b/tempest/api/object_storage/test_object_services.py
index 61b9136..8110915 100644
--- a/tempest/api/object_storage/test_object_services.py
+++ b/tempest/api/object_storage/test_object_services.py
@@ -43,7 +43,8 @@
 
     def _upload_segments(self):
         # create object
-        object_name = data_utils.rand_name(name='LObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='LObject')
         data = data_utils.arbitrary_string()
         segments = 10
         data_segments = [data + str(i) for i in range(segments)]
@@ -56,7 +57,8 @@
         return object_name, data_segments
 
     def _copy_object_2d(self, src_object_name, metadata=None):
-        dst_object_name = data_utils.rand_name(name='TestObject')
+        dst_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         resp, _ = self.object_client.copy_object_2d_way(self.container_name,
                                                         src_object_name,
                                                         dst_object_name,
@@ -81,12 +83,14 @@
     def test_create_object(self):
         """Test creating object and checking the object's uploaded content"""
         # create object
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
         # create another object
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
@@ -100,7 +104,8 @@
     @decorators.idempotent_id('5daebb1d-f0d5-4dc9-b541-69672eff00b0')
     def test_create_object_with_content_disposition(self):
         """Test creating object with content-disposition"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata = {}
         metadata['content-disposition'] = 'inline'
@@ -122,7 +127,8 @@
     @decorators.idempotent_id('605f8317-f945-4bee-ae91-013f1da8f0a0')
     def test_create_object_with_content_encoding(self):
         """Test creating object with content-encoding"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
 
         # put compressed string
         data_before = b'x' * 2000
@@ -149,7 +155,8 @@
     @decorators.idempotent_id('73820093-0503-40b1-a478-edf0e69c7d1f')
     def test_create_object_with_etag(self):
         """Test creating object with Etag"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         create_md5 = md5(data, usedforsecurity=False).hexdigest()
         metadata = {'Etag': create_md5}
@@ -168,7 +175,8 @@
     @decorators.idempotent_id('84dafe57-9666-4f6d-84c8-0814d37923b8')
     def test_create_object_with_expect_continue(self):
         """Test creating object with expect_continue"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
 
         status, _ = self.object_client.create_object_continue(
@@ -184,7 +192,8 @@
     @decorators.idempotent_id('4f84422a-e2f2-4403-b601-726a4220b54e')
     def test_create_object_with_transfer_encoding(self):
         """Test creating object with transfer_encoding"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes(1024)
         resp, _ = self.object_client.create_object(
             self.container_name,
@@ -205,14 +214,16 @@
 
         The previous added metadata will be cleared.
         """
-        object_name_base = data_utils.rand_name(name='TestObject')
+        object_name_base = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata_1 = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
                                          object_name_base,
                                          data,
                                          metadata=metadata_1)
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         metadata_2 = {'X-Copy-From': '%s/%s' % (self.container_name,
                                                 object_name_base),
                       'X-Fresh-Metadata': 'true'}
@@ -231,7 +242,8 @@
     @decorators.idempotent_id('1c7ed3e4-2099-406b-b843-5301d4811baf')
     def test_create_object_with_x_object_meta(self):
         """Test creating object with x-object-meta"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata = {'X-Object-Meta-test-meta': 'Meta'}
         resp, _ = self.object_client.create_object(
@@ -250,7 +262,8 @@
     @decorators.idempotent_id('e4183917-33db-4153-85cc-4dacbb938865')
     def test_create_object_with_x_object_metakey(self):
         """Test creating object with the blank value of metadata"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata = {'X-Object-Meta-test-meta': ''}
         resp, _ = self.object_client.create_object(
@@ -272,7 +285,8 @@
 
         The metadata will be removed from the object.
         """
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata_add = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
@@ -299,7 +313,8 @@
         Creating object with blank metadata 'X-Remove-Object-Meta-test-meta',
         metadata 'x-object-meta-test-meta' will be removed from the object.
         """
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata_add = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
@@ -322,7 +337,8 @@
     @decorators.idempotent_id('17738d45-03bd-4d45-9e0b-7b2f58f98687')
     def test_delete_object(self):
         """Test deleting object"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
@@ -353,7 +369,8 @@
     @decorators.idempotent_id('48650ed0-c189-4e1e-ad6b-1d4770c6e134')
     def test_update_object_metadata_with_remove_metadata(self):
         """Test updating object metadata with remove metadata"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         create_metadata = {'X-Object-Meta-test-meta1': 'Meta1'}
         self.object_client.create_object(self.container_name,
@@ -381,7 +398,8 @@
         request, both operations will succeed.
         """
         # creation and deletion of metadata with one request
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         create_metadata = {'X-Object-Meta-test-meta1': 'Meta1'}
         self.object_client.create_object(self.container_name,
@@ -450,7 +468,8 @@
     @decorators.idempotent_id('9a88dca4-b684-425b-806f-306cd0e57e42')
     def test_update_object_metadata_with_x_remove_object_metakey(self):
         """Test updating object metadata with blank remove metadata value"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.arbitrary_string()
         create_metadata = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
@@ -474,7 +493,8 @@
     @decorators.idempotent_id('9a447cf6-de06-48de-8226-a8c6ed31caf2')
     def test_list_object_metadata(self):
         """Test listing object metadata"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
@@ -556,7 +576,8 @@
     @decorators.idempotent_id('005f9bf6-e06d-41ec-968e-96c78e0b1d82')
     def test_get_object_with_metadata(self):
         """Test getting object with metadata"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         metadata = {'X-Object-Meta-test-meta': 'Meta'}
         self.object_client.create_object(self.container_name,
@@ -575,7 +596,8 @@
     @decorators.idempotent_id('05a1890e-7db9-4a6c-90a8-ce998a2bddfa')
     def test_get_object_with_range(self):
         """Test getting object with range"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes(100)
         self.object_client.create_object(self.container_name,
                                          object_name,
@@ -636,7 +658,8 @@
     @decorators.idempotent_id('c05b4013-e4de-47af-be84-e598062b16fc')
     def test_get_object_with_if_match(self):
         """Test getting object with if_match"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes(10)
         create_md5 = md5(data, usedforsecurity=False).hexdigest()
         create_metadata = {'Etag': create_md5}
@@ -656,7 +679,8 @@
     @decorators.idempotent_id('be133639-e5d2-4313-9b1f-2d59fc054a16')
     def test_get_object_with_if_modified_since(self):
         """Test getting object with if_modified_since"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         time_now = time.time()
         self.object_client.create_object(self.container_name,
@@ -676,7 +700,8 @@
     @decorators.idempotent_id('641500d5-1612-4042-a04d-01fc4528bc30')
     def test_get_object_with_if_none_match(self):
         """Test getting object with if_none_match"""
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         data = data_utils.random_bytes()
         create_md5 = md5(data, usedforsecurity=False).hexdigest()
         create_metadata = {'Etag': create_md5}
@@ -727,13 +752,15 @@
     def test_copy_object_in_same_container(self):
         """Test copying object to another object in same container"""
         # create source object
-        src_object_name = data_utils.rand_name(name='SrcObject')
+        src_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='SrcObject')
         src_data = data_utils.random_bytes(size=len(src_object_name) * 2)
         resp, _ = self.object_client.create_object(self.container_name,
                                                    src_object_name,
                                                    src_data)
         # create destination object
-        dst_object_name = data_utils.rand_name(name='DstObject')
+        dst_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='DstObject')
         dst_data = data_utils.random_bytes(size=len(dst_object_name) * 3)
         resp, _ = self.object_client.create_object(self.container_name,
                                                    dst_object_name,
@@ -784,12 +811,14 @@
     def test_copy_object_2d_way(self):
         """Test copying object's data to the new object using COPY"""
         # create source object
-        src_object_name = data_utils.rand_name(name='SrcObject')
+        src_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='SrcObject')
         src_data = data_utils.random_bytes(size=len(src_object_name) * 2)
         resp, _ = self.object_client.create_object(self.container_name,
                                                    src_object_name, src_data)
         # create destination object
-        dst_object_name = data_utils.rand_name(name='DstObject')
+        dst_object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='DstObject')
         dst_data = data_utils.random_bytes(size=len(dst_object_name) * 3)
         resp, _ = self.object_client.create_object(self.container_name,
                                                    dst_object_name, dst_data)
@@ -809,22 +838,28 @@
     def test_copy_object_across_containers(self):
         """Test copying object to another container"""
         # create a container to use as a source container
-        src_container_name = data_utils.rand_name(name='TestSourceContainer')
+        src_container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='TestSourceContainer')
         self.container_client.update_container(src_container_name)
         self.containers.append(src_container_name)
         # create a container to use as a destination container
         dst_container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
             name='TestDestinationContainer')
         self.container_client.update_container(dst_container_name)
         self.containers.append(dst_container_name)
         # create object in source container
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         data = data_utils.random_bytes(size=len(object_name) * 2)
         resp, _ = self.object_client.create_object(src_container_name,
                                                    object_name, data)
         # set object metadata
-        meta_key = data_utils.rand_name(name='test')
-        meta_value = data_utils.rand_name(name='MetaValue')
+        meta_key = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='test')
+        meta_value = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='MetaValue')
         orig_metadata = {'X-Object-Meta-' + meta_key: meta_value}
         resp, _ = self.object_client.create_or_update_object_metadata(
             src_container_name,
@@ -924,7 +959,8 @@
     def test_object_upload_in_segments(self):
         """Test uploading object in segments"""
         # create object
-        object_name = data_utils.rand_name(name='LObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='LObject')
         data = data_utils.arbitrary_string()
         segments = 10
         data_segments = [data + str(i) for i in range(segments)]
@@ -1014,7 +1050,8 @@
 
     def setUp(self):
         super(PublicObjectTest, self).setUp()
-        self.container_name = data_utils.rand_name(name='TestContainer')
+        self.container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestContainer')
         self.container_client.update_container(self.container_name)
         self.containers.append(self.container_name)
 
@@ -1039,7 +1076,8 @@
         self.assertHeaders(resp_meta, 'Container', 'POST')
 
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         data = data_utils.random_bytes(size=len(object_name))
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
@@ -1079,7 +1117,8 @@
         self.assertHeaders(resp_meta, 'Container', 'POST')
 
         # create object
-        object_name = data_utils.rand_name(name='Object')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Object')
         data = data_utils.random_bytes(size=len(object_name))
         resp, _ = self.object_client.create_object(self.container_name,
                                                    object_name, data)
diff --git a/tempest/api/object_storage/test_object_slo.py b/tempest/api/object_storage/test_object_slo.py
index 22d12ce..b8e0b55 100644
--- a/tempest/api/object_storage/test_object_slo.py
+++ b/tempest/api/object_storage/test_object_slo.py
@@ -17,9 +17,11 @@
 from oslo_utils.secretutils import md5
 from tempest.api.object_storage import base
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
 # Each segment, except for the final one, must be at least 1 megabyte
 MIN_SEGMENT_SIZE = 1024 * 1024
 
@@ -47,7 +49,8 @@
 
     def _create_manifest(self):
         # Create a manifest file for SLO uploading
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         object_name_base_1 = object_name + '_01'
         object_name_base_2 = object_name + '_02'
         data_size = MIN_SEGMENT_SIZE
@@ -80,7 +83,8 @@
         manifest = self._create_manifest()
 
         params = {'multipart-manifest': 'put'}
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         self._create_object(self.container_name,
                             object_name,
                             manifest,
@@ -109,7 +113,8 @@
         manifest = self._create_manifest()
 
         params = {'multipart-manifest': 'put'}
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         resp = self._create_object(self.container_name,
                                    object_name,
                                    manifest,
diff --git a/tempest/api/object_storage/test_object_temp_url_negative.py b/tempest/api/object_storage/test_object_temp_url_negative.py
index 712697e..d63a3cb 100644
--- a/tempest/api/object_storage/test_object_temp_url_negative.py
+++ b/tempest/api/object_storage/test_object_temp_url_negative.py
@@ -67,7 +67,8 @@
             self.key)
 
         # create object
-        self.object_name = data_utils.rand_name(name='ObjectTemp')
+        self.object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='ObjectTemp')
         content = data_utils.arbitrary_string(size=len(self.object_name),
                                               base_text=self.object_name)
         self.object_client.create_object(self.container_name,
diff --git a/tempest/api/object_storage/test_object_version.py b/tempest/api/object_storage/test_object_version.py
index 2a1f63e..02b3be7 100644
--- a/tempest/api/object_storage/test_object_version.py
+++ b/tempest/api/object_storage/test_object_version.py
@@ -52,7 +52,9 @@
         6. delete object version 1
         """
         # create container
-        vers_container_name = data_utils.rand_name(name='TestVersionContainer')
+        vers_container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='TestVersionContainer')
         resp, _ = self.container_client.update_container(vers_container_name)
         self.addCleanup(object_storage.delete_containers,
                         [vers_container_name],
@@ -61,7 +63,9 @@
         self.assertHeaders(resp, 'Container', 'PUT')
         self.assertContainer(vers_container_name, '0', '0', 'Missing Header')
 
-        base_container_name = data_utils.rand_name(name='TestBaseContainer')
+        base_container_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='TestBaseContainer')
         headers = {'X-versions-Location': vers_container_name}
         resp, _ = self.container_client.update_container(
             base_container_name,
@@ -73,7 +77,8 @@
         self.assertHeaders(resp, 'Container', 'PUT')
         self.assertContainer(base_container_name, '0', '0',
                              vers_container_name)
-        object_name = data_utils.rand_name(name='TestObject')
+        object_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='TestObject')
         # create object
         data_1 = data_utils.random_bytes()
         resp, _ = self.object_client.create_object(base_container_name,
diff --git a/tempest/api/volume/admin/test_group_snapshots.py b/tempest/api/volume/admin/test_group_snapshots.py
index 8af8435..d059926 100644
--- a/tempest/api/volume/admin/test_group_snapshots.py
+++ b/tempest/api/volume/admin/test_group_snapshots.py
@@ -35,7 +35,8 @@
     def _create_group_snapshot(self, **kwargs):
         if 'name' not in kwargs:
             kwargs['name'] = data_utils.rand_name(
-                self.__class__.__name__ + '-Group_Snapshot')
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-Group_Snapshot')
 
         group_snapshot = self.group_snapshots_client.create_group_snapshot(
             **kwargs)['group_snapshot']
@@ -93,7 +94,8 @@
 
         # Create volume is instance level, can not be deleted before group.
         # Volume delete handled by delete_group method, cleanup method.
-        params = {'name': data_utils.rand_name("volume"),
+        prefix = CONF.resource_name_prefix
+        params = {'name': data_utils.rand_name(prefix=prefix, name="volume"),
                   'volume_type': volume_type['id'],
                   'group_id': grp['id'],
                   'size': CONF.volume.volume_size}
@@ -102,7 +104,8 @@
             self.volumes_client, vol['id'], 'available')
 
         # Create group snapshot
-        group_snapshot_name = data_utils.rand_name('group_snapshot')
+        group_snapshot_name = data_utils.rand_name(prefix=prefix,
+                                                   name='group_snapshot')
         group_snapshot = self._create_group_snapshot(
             group_id=grp['id'], name=group_snapshot_name)
         snapshots = self.snapshots_client.list_snapshots(
@@ -161,7 +164,8 @@
 
         # Create volume is instance level, can not be deleted before group.
         # Volume delete handled by delete_group method, cleanup method.
-        params = {'name': data_utils.rand_name("volume"),
+        prefix = CONF.resource_name_prefix
+        params = {'name': data_utils.rand_name(prefix=prefix, name="volume"),
                   'volume_type': volume_type['id'],
                   'group_id': grp['id'],
                   'size': CONF.volume.volume_size}
@@ -170,7 +174,8 @@
             self.volumes_client, vol['id'], 'available')
 
         # Create group_snapshot
-        group_snapshot_name = data_utils.rand_name('group_snapshot')
+        group_snapshot_name = data_utils.rand_name(prefix=prefix,
+                                                   name='group_snapshot')
         group_snapshot = self._create_group_snapshot(
             group_id=grp['id'], name=group_snapshot_name)
         self.assertEqual(group_snapshot_name, group_snapshot['name'])
@@ -182,7 +187,7 @@
                     self.snapshots_client, snap['id'], 'available')
 
         # Create Group from Group snapshot
-        grp_name2 = data_utils.rand_name('Group_from_snap')
+        grp_name2 = data_utils.rand_name(prefix=prefix, name='Group_from_snap')
         grp2 = self.groups_client.create_group_from_source(
             group_snapshot_id=group_snapshot['id'], name=grp_name2)['group']
         self.addCleanup(self.delete_group, grp2['id'])
@@ -219,7 +224,7 @@
         # Create a volume group
         grp = self.create_group(group_type=group_type['id'],
                                 volume_types=[volume_type['id']])
-
+        prefix = CONF.resource_name_prefix
         # Note: When dealing with consistency groups all volumes must
         # reside on the same backend. Adding volumes to the same consistency
         # group from multiple backends isn't supported. In order to ensure all
@@ -229,7 +234,8 @@
         for _ in range(2):
             # Create volume is instance level, can't be deleted before group.
             # Volume delete handled by delete_group method, cleanup method.
-            params = {'name': data_utils.rand_name("volume"),
+            params = {'name': data_utils.rand_name(prefix=prefix,
+                                                   name="volume"),
                       'volume_type': volume_type['id'],
                       'group_id': grp['id'],
                       'size': CONF.volume.volume_size}
@@ -287,9 +293,10 @@
         group = self.create_group(group_type=group_type['id'],
                                   volume_types=[volume_type['id']])
 
+        prefix = CONF.resource_name_prefix
         # Create volume is instance level, can not be deleted before group.
         # Volume delete handled by delete_group method, cleanup method.
-        params = {'name': data_utils.rand_name("volume"),
+        params = {'name': data_utils.rand_name(prefix=prefix, name="volume"),
                   'volume_type': volume_type['id'],
                   'group_id': group['id'],
                   'size': CONF.volume.volume_size}
diff --git a/tempest/api/volume/admin/test_group_types.py b/tempest/api/volume/admin/test_group_types.py
index 406af27..03ff340 100644
--- a/tempest/api/volume/admin/test_group_types.py
+++ b/tempest/api/volume/admin/test_group_types.py
@@ -14,9 +14,12 @@
 #    under the License.
 
 from tempest.api.volume import base
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class GroupTypesTest(base.BaseVolumeAdminTest):
     """Test group types"""
@@ -27,8 +30,12 @@
     @decorators.idempotent_id('dd71e5f9-393e-4d4f-90e9-fa1b8d278864')
     def test_group_type_create_list_update_show_delete(self):
         """Test create/list/update/show/delete group type"""
-        name = data_utils.rand_name(self.__class__.__name__ + '-group-type')
-        description = data_utils.rand_name("group-type-description")
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-group-type')
+        description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="group-type-description")
         group_specs = {"consistent_group_snapshot_enabled": "<is> False"}
         params = {'name': name,
                   'description': description,
@@ -50,7 +57,8 @@
 
         update_params = {
             'name': data_utils.rand_name(
-                self.__class__.__name__ + '-updated-group-type'),
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-updated-group-type'),
             'description': 'updated-group-type-desc'
         }
         updated_group_type = self.admin_group_types_client.update_group_type(
@@ -75,8 +83,10 @@
     @decorators.idempotent_id('3d5e5cec-72b4-4511-b135-7cc2b7a053ae')
     def test_group_type_list_by_optional_params(self):
         """Test list group type sort/public"""
-        type_a_name = "a_{}".format(data_utils.rand_name('group-type'))
-        type_b_name = "b_{}".format(data_utils.rand_name('group-type'))
+        type_a_name = "a_{}".format(data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='group-type'))
+        type_b_name = "b_{}".format(data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='group-type'))
         self.create_group_type(name=type_a_name, **{'is_public': True})
         self.create_group_type(name=type_b_name, **{'is_public': False})
 
diff --git a/tempest/api/volume/admin/test_groups.py b/tempest/api/volume/admin/test_groups.py
index 094f142..8f74769 100644
--- a/tempest/api/volume/admin/test_groups.py
+++ b/tempest/api/volume/admin/test_groups.py
@@ -38,20 +38,23 @@
         group_type = self.create_group_type()
 
         # Create group
-        grp1_name = data_utils.rand_name('Group1')
+        grp1_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Group1')
         grp1 = self.create_group(group_type=group_type['id'],
                                  volume_types=[volume_type['id']],
                                  name=grp1_name)
         grp1_id = grp1['id']
 
-        grp2_name = data_utils.rand_name('Group2')
+        grp2_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='Group2')
         grp2 = self.create_group(group_type=group_type['id'],
                                  volume_types=[volume_type['id']],
                                  name=grp2_name)
         grp2_id = grp2['id']
 
         # Create volume
-        vol1_name = data_utils.rand_name("volume")
+        vol1_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name="volume")
         params = {'name': vol1_name,
                   'volume_type': volume_type['id'],
                   'group_id': grp1['id'],
@@ -108,11 +111,13 @@
         grp = self.create_group(group_type=group_type['id'],
                                 volume_types=[volume_type['id']])
 
+        prefix = CONF.resource_name_prefix
         # Create volume is instance level, can not be deleted before group.
         # Volume delete handled by delete_group method, cleanup method.
         grp_vols = []
         for _ in range(2):
-            params = {'name': data_utils.rand_name("volume"),
+            params = {'name': data_utils.rand_name(prefix=prefix,
+                                                   name="volume"),
                       'volume_type': volume_type['id'],
                       'group_id': grp['id'],
                       'size': CONF.volume.volume_size}
@@ -177,9 +182,10 @@
         grp = self.create_group(group_type=group_type['id'],
                                 volume_types=[volume_type['id']])
 
+        prefix = CONF.resource_name_prefix
         # Create volume is instance level, can not be deleted before group.
         # Volume delete handled by delete_group method, cleanup method.
-        params = {'name': data_utils.rand_name("volume"),
+        params = {'name': data_utils.rand_name(prefix=prefix, name="volume"),
                   'volume_type': volume_type['id'],
                   'group_id': grp['id'],
                   'size': CONF.volume.volume_size}
@@ -188,7 +194,7 @@
             self.volumes_client, vol['id'], 'available')
 
         # Create Group from Group
-        grp_name2 = data_utils.rand_name('Group_from_grp')
+        grp_name2 = data_utils.rand_name(prefix=prefix, name='Group_from_grp')
         grp2 = self.groups_client.create_group_from_source(
             source_group_id=grp['id'], name=grp_name2)['group']
         self.addCleanup(self.delete_group, grp2['id'])
diff --git a/tempest/api/volume/admin/test_multi_backend.py b/tempest/api/volume/admin/test_multi_backend.py
index 83733bd..028bf1a 100644
--- a/tempest/api/volume/admin/test_multi_backend.py
+++ b/tempest/api/volume/admin/test_multi_backend.py
@@ -54,8 +54,12 @@
     @classmethod
     def _create_type_and_volume(cls, backend_name_key, with_prefix):
         # Volume/Type creation
-        type_name = data_utils.rand_name(cls.__name__ + '-Type')
-        vol_name = data_utils.rand_name(cls.__name__ + '-Volume')
+        type_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-Type')
+        vol_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=cls.__name__ + '-Volume')
         spec_key_with_prefix = "capabilities:volume_backend_name"
         spec_key_without_prefix = "volume_backend_name"
         if with_prefix:
diff --git a/tempest/api/volume/admin/test_qos.py b/tempest/api/volume/admin/test_qos.py
index e31c0ef..83f7e21 100644
--- a/tempest/api/volume/admin/test_qos.py
+++ b/tempest/api/volume/admin/test_qos.py
@@ -14,9 +14,12 @@
 
 from tempest.api.volume import base
 from tempest.common import waiters
+from tempest import config
 from tempest.lib.common.utils import data_utils as utils
 from tempest.lib import decorators
 
+CONF = config.CONF
+
 
 class QosSpecsTestJSON(base.BaseVolumeAdminTest):
     """Test the Cinder QoS-specs.
@@ -30,7 +33,8 @@
         super(QosSpecsTestJSON, cls).resource_setup()
         # Create admin qos client
         # Create a test shared qos-specs for tests
-        cls.qos_name = utils.rand_name(cls.__name__ + '-QoS')
+        cls.qos_name = utils.rand_name(
+            cls.__name__ + '-QoS', prefix=CONF.resource_name_prefix)
         cls.qos_consumer = 'front-end'
 
         cls.created_qos = cls.create_test_qos_specs(cls.qos_name,
@@ -38,7 +42,8 @@
                                                     read_iops_sec='2000')
 
     def _create_delete_test_qos_with_given_consumer(self, consumer):
-        name = utils.rand_name(self.__class__.__name__ + '-qos')
+        name = utils.rand_name(
+            self.__class__.__name__ + '-qos', prefix=CONF.resource_name_prefix)
         qos = {'name': name, 'consumer': consumer}
         body = self.create_test_qos_specs(name, consumer)
         for key in ['name', 'consumer']:
diff --git a/tempest/api/volume/admin/test_snapshot_manage.py b/tempest/api/volume/admin/test_snapshot_manage.py
index 478bd16..aed1010 100644
--- a/tempest/api/volume/admin/test_snapshot_manage.py
+++ b/tempest/api/volume/admin/test_snapshot_manage.py
@@ -77,10 +77,12 @@
         self.assertNotIn(snapshot['id'], [v['id'] for v in all_snapshots])
 
         # Manage the snapshot
-        name = data_utils.rand_name(self.__class__.__name__ +
-                                    '-Managed-Snapshot')
-        description = data_utils.rand_name(self.__class__.__name__ +
-                                           '-Managed-Snapshot-Description')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Managed-Snapshot')
+        description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Managed-Snapshot-Description')
         metadata = {"manage-snap-meta1": "value1",
                     "manage-snap-meta2": "value2",
                     "manage-snap-meta3": "value3"}
diff --git a/tempest/api/volume/admin/test_user_messages.py b/tempest/api/volume/admin/test_user_messages.py
index 00b7f3a..3443b87 100644
--- a/tempest/api/volume/admin/test_user_messages.py
+++ b/tempest/api/volume/admin/test_user_messages.py
@@ -29,12 +29,16 @@
 
     def _create_user_message(self):
         """Trigger a 'no valid host' situation to generate a message."""
-        bad_protocol = data_utils.rand_name('storage_protocol')
-        bad_vendor = data_utils.rand_name('vendor_name')
+        bad_protocol = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='storage_protocol')
+        bad_vendor = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='vendor_name')
         extra_specs = {'storage_protocol': bad_protocol,
                        'vendor_name': bad_vendor}
         vol_type_name = data_utils.rand_name(
-            self.__class__.__name__ + '-volume-type')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-volume-type')
         bogus_type = self.create_volume_type(
             name=vol_type_name, extra_specs=extra_specs)
         params = {'volume_type': bogus_type['id'],
diff --git a/tempest/api/volume/admin/test_volume_manage.py b/tempest/api/volume/admin/test_volume_manage.py
index 1e4e7cb..609ec15 100644
--- a/tempest/api/volume/admin/test_volume_manage.py
+++ b/tempest/api/volume/admin/test_volume_manage.py
@@ -58,7 +58,8 @@
 
         # Manage volume
         new_vol_name = data_utils.rand_name(
-            self.__class__.__name__ + '-volume')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-volume')
         new_vol_ref = {
             'name': new_vol_name,
             'host': org_vol_info['os-vol-host-attr:host'],
diff --git a/tempest/api/volume/admin/test_volume_quota_classes.py b/tempest/api/volume/admin/test_volume_quota_classes.py
index f482788..fb2adc7 100644
--- a/tempest/api/volume/admin/test_volume_quota_classes.py
+++ b/tempest/api/volume/admin/test_volume_quota_classes.py
@@ -21,9 +21,11 @@
 from tempest.api.volume import base
 from tempest.common import identity
 from tempest.common import tempest_fixtures as fixtures
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 
+CONF = config.CONF
 LOG = logging.getLogger(__name__)
 QUOTA_KEYS = ['gigabytes', 'snapshots', 'volumes', 'backups',
               'backup_gigabytes', 'per_volume_gigabytes']
@@ -96,8 +98,11 @@
                         matchers.ContainsAll(update_kwargs.items()))
 
         # Verify a new project's default quotas.
-        project_name = data_utils.rand_name('quota_class_tenant')
-        description = data_utils.rand_name('desc_')
+        project_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='quota_class_tenant')
+        description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='desc_')
         project_id = identity.identity_utils(self.os_admin).create_project(
             name=project_name, description=description)['id']
         self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
diff --git a/tempest/api/volume/admin/test_volume_types.py b/tempest/api/volume/admin/test_volume_types.py
index 98ae83b..5b17afb 100644
--- a/tempest/api/volume/admin/test_volume_types.py
+++ b/tempest/api/volume/admin/test_volume_types.py
@@ -36,7 +36,9 @@
     def test_volume_crud_with_volume_type_and_extra_specs(self):
         """Test create/update/get/delete volume with volume_type"""
         volume_types = list()
-        vol_name = data_utils.rand_name(self.__class__.__name__ + '-volume')
+        vol_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-volume')
         proto = CONF.volume.storage_protocol
         vendor = CONF.volume.vendor_name
         extra_specs = {"storage_protocol": proto,
@@ -82,8 +84,12 @@
     @decorators.idempotent_id('4e955c3b-49db-4515-9590-0c99f8e471ad')
     def test_volume_type_create_get_delete(self):
         """Test create/get/delete volume type"""
-        name = data_utils.rand_name(self.__class__.__name__ + '-volume-type')
-        description = data_utils.rand_name("volume-type-description")
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-volume-type')
+        description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="volume-type-description")
         proto = CONF.volume.storage_protocol
         vendor = CONF.volume.vendor_name
         extra_specs = {"storage_protocol": proto,
@@ -183,8 +189,12 @@
         volume_type = self.create_volume_type()
 
         # New volume type details
-        name = data_utils.rand_name("volume-type")
-        description = data_utils.rand_name("volume-type-description")
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="volume-type")
+        description = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="volume-type-description")
         is_public = not volume_type['is_public']
 
         # Update volume type details
diff --git a/tempest/api/volume/admin/test_volumes_backup.py b/tempest/api/volume/admin/test_volumes_backup.py
index 835cc1d..c1f753a 100644
--- a/tempest/api/volume/admin/test_volumes_backup.py
+++ b/tempest/api/volume/admin/test_volumes_backup.py
@@ -59,7 +59,9 @@
         """
         volume = self.create_volume()
         # Create backup
-        backup_name = data_utils.rand_name(self.__class__.__name__ + '-Backup')
+        backup_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Backup')
         backup = self.create_backup(volume_id=volume['id'], name=backup_name)
         waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 volume['id'], 'available')
@@ -124,7 +126,8 @@
         volume = self.create_volume()
         # Create a backup
         backup_name = data_utils.rand_name(
-            self.__class__.__name__ + '-Backup')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Backup')
         backup = self.create_backup(volume_id=volume['id'], name=backup_name)
         waiters.wait_for_volume_resource_status(self.volumes_client,
                                                 volume['id'], 'available')
diff --git a/tempest/api/volume/base.py b/tempest/api/volume/base.py
index b9e1e58..7a08545 100644
--- a/tempest/api/volume/base.py
+++ b/tempest/api/volume/base.py
@@ -120,7 +120,9 @@
             kwargs['size'] = max(kwargs['size'], min_disk)
 
         if 'name' not in kwargs:
-            name = data_utils.rand_name(self.__name__ + '-Volume')
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__name__ + '-Volume')
             kwargs['name'] = name
 
         if CONF.volume.volume_type and 'volume_type' not in kwargs:
@@ -166,7 +168,9 @@
     def create_snapshot(self, volume_id=1, **kwargs):
         """Wrapper utility that returns a test snapshot."""
         if 'name' not in kwargs:
-            name = data_utils.rand_name(self.__name__ + '-Snapshot')
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__name__ + '-Snapshot')
             kwargs['name'] = name
 
         snapshot = self.snapshots_client.create_snapshot(
@@ -187,14 +191,18 @@
         if object_client is None:
             object_client = self.object_client
         if 'name' not in kwargs:
-            name = data_utils.rand_name(self.__class__.__name__ + '-Backup')
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-Backup')
             kwargs['name'] = name
 
         if CONF.volume.backup_driver == "swift":
             if 'container' not in kwargs:
                 cont_name = self.__class__.__name__ + '-backup-container'
-                cont = data_utils.rand_name(cont_name)
-                kwargs['container'] = cont
+                cont = data_utils.rand_name(
+                    prefix=CONF.resource_name_prefix,
+                    name=cont_name)
+                kwargs['container'] = cont.lower()
 
             self.addCleanup(object_storage.delete_containers,
                             kwargs['container'], container_client,
@@ -246,7 +254,9 @@
     def create_server(self, wait_until='ACTIVE', **kwargs):
         name = kwargs.pop(
             'name',
-            data_utils.rand_name(self.__class__.__name__ + '-instance'))
+            data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-instance'))
 
         if wait_until == 'SSHABLE' and not kwargs.get('validation_resources'):
             # If we were asked for SSHABLE but were not provided with the
@@ -274,7 +284,8 @@
     def create_group(self, **kwargs):
         if 'name' not in kwargs:
             kwargs['name'] = data_utils.rand_name(
-                self.__class__.__name__ + '-Group')
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-Group')
 
         group = self.groups_client.create_group(**kwargs)['group']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
@@ -337,7 +348,9 @@
     @cleanup_order
     def create_test_qos_specs(self, name=None, consumer=None, **kwargs):
         """create a test Qos-Specs."""
-        name = name or data_utils.rand_name(self.__name__ + '-QoS')
+        name = name or data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__name__ + '-QoS')
         consumer = consumer or 'front-end'
         qos_specs = self.admin_volume_qos_client.create_qos(
             name=name, consumer=consumer, **kwargs)['qos_specs']
@@ -347,7 +360,9 @@
     @cleanup_order
     def create_volume_type(self, name=None, **kwargs):
         """Create a test volume-type"""
-        name = name or data_utils.rand_name(self.__name__ + '-volume-type')
+        name = name or data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__name__ + '-volume-type')
         volume_type = self.admin_volume_types_client.create_volume_type(
             name=name, **kwargs)['volume_type']
         self.cleanup(self.clear_volume_type, volume_type['id'])
@@ -377,7 +392,8 @@
     def create_group_type(self, name=None, **kwargs):
         """Create a test group-type"""
         name = name or data_utils.rand_name(
-            self.__class__.__name__ + '-group-type')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-group-type')
         group_type = self.admin_group_types_client.create_group_type(
             name=name, **kwargs)['group_type']
         self.addCleanup(self.admin_group_types_client.delete_group_type,
diff --git a/tempest/api/volume/test_volumes_actions.py b/tempest/api/volume/test_volumes_actions.py
index 5b50bfa..150677d 100644
--- a/tempest/api/volume/test_volumes_actions.py
+++ b/tempest/api/volume/test_volumes_actions.py
@@ -109,7 +109,8 @@
         # it is shared with the other tests. After it is uploaded in Glance,
         # there is no way to delete it from Cinder, so we delete it from Glance
         # using the Glance images_client and from Cinder via tearDownClass.
-        image_name = data_utils.rand_name(self.__class__.__name__ + '-Image')
+        image_name = data_utils.rand_name(self.__class__.__name__ + '-Image',
+                                          prefix=CONF.resource_name_prefix)
         body = self.volumes_client.upload_volume(
             self.volume['id'], image_name=image_name,
             disk_format=CONF.volume.disk_format)['os-volume_upload_image']
diff --git a/tempest/api/volume/test_volumes_backup.py b/tempest/api/volume/test_volumes_backup.py
index c775292..bfe962a 100644
--- a/tempest/api/volume/test_volumes_backup.py
+++ b/tempest/api/volume/test_volumes_backup.py
@@ -74,11 +74,15 @@
         # Create a backup
         kwargs = {}
         kwargs["name"] = data_utils.rand_name(
-            self.__class__.__name__ + '-Backup')
-        kwargs["description"] = data_utils.rand_name("backup-description")
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Backup')
+        kwargs["description"] = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name="backup-description")
         if CONF.volume.backup_driver == "swift":
             kwargs["container"] = data_utils.rand_name(
-                self.__class__.__name__ + '-Backup-container')
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-backup-container').lower()
         backup = self.create_backup(volume_id=volume['id'], **kwargs)
         self.assertEqual(kwargs["name"], backup['name'])
         waiters.wait_for_volume_resource_status(self.volumes_client,
@@ -128,7 +132,8 @@
         self.attach_volume(server['id'], volume['id'])
         # Create backup using force flag
         backup_name = data_utils.rand_name(
-            self.__class__.__name__ + '-Backup')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Backup')
         backup = self.create_backup(volume_id=volume['id'],
                                     name=backup_name, force=True)
         waiters.wait_for_volume_resource_status(self.volumes_client,
@@ -191,8 +196,12 @@
 
         # Update backup and assert response body for update_backup method
         update_kwargs = {
-            'name': data_utils.rand_name(self.__class__.__name__ + '-Backup'),
-            'description': data_utils.rand_name("volume-backup-description")
+            'name': data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + '-Backup'),
+            'description': data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name="volume-backup-description")
         }
         update_backup = self.backups_client.update_backup(
             backup['id'], **update_kwargs)['backup']
diff --git a/tempest/api/volume/test_volumes_get.py b/tempest/api/volume/test_volumes_get.py
index 2009970..9b79f38 100644
--- a/tempest/api/volume/test_volumes_get.py
+++ b/tempest/api/volume/test_volumes_get.py
@@ -31,7 +31,9 @@
 
     def _volume_create_get_update_delete(self, **kwargs):
         # Create a volume, Get it's details and Delete the volume
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         metadata = {'Type': 'Test'}
         # Create a volume
         kwargs['name'] = v_name
@@ -71,7 +73,8 @@
         self.volumes_client.update_volume(volume['id'], **params)
         # Test volume update when display_name is new
         new_v_name = data_utils.rand_name(
-            self.__class__.__name__ + '-new-Volume')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-new-Volume')
         new_desc = 'This is the new description of volume'
         params = {'name': new_v_name,
                   'description': new_desc}
@@ -94,7 +97,9 @@
         # Test volume create when display_name is none and display_description
         # contains specific characters,
         # then test volume update if display_name is duplicated
-        new_v_desc = data_utils.rand_name('@#$%^* description')
+        new_v_desc = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='@#$%^* description')
         params = {'description': new_v_desc,
                   'availability_zone': volume['availability_zone'],
                   'size': CONF.volume.volume_size}
diff --git a/tempest/api/volume/test_volumes_negative.py b/tempest/api/volume/test_volumes_negative.py
index d9b8430..d8480df 100644
--- a/tempest/api/volume/test_volumes_negative.py
+++ b/tempest/api/volume/test_volumes_negative.py
@@ -39,7 +39,9 @@
 
     def create_image(self):
         # Create image
-        image_name = data_utils.rand_name(self.__class__.__name__ + "-image")
+        image_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + "-image")
         image = self.images_client.create_image(
             name=image_name,
             container_format=CONF.image.container_formats[0],
@@ -133,8 +135,11 @@
     @decorators.idempotent_id('e66e40d6-65e6-4e75-bdc7-636792fa152d')
     def test_update_volume_with_invalid_volume_id(self):
         """Test updating volume with invalid volume id should fail"""
-        self.assertRaises(lib_exc.NotFound, self.volumes_client.update_volume,
-                          volume_id=data_utils.rand_name('invalid'), name="n")
+        self.assertRaises(
+            lib_exc.NotFound, self.volumes_client.update_volume,
+            volume_id=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name='invalid'), name="n")
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('72aeca85-57a5-4c1f-9057-f320f9ea575b')
@@ -147,8 +152,10 @@
     @decorators.idempotent_id('30799cfd-7ee4-446c-b66c-45b383ed211b')
     def test_get_invalid_volume_id(self):
         """Test getting volume with invalid volume id should fail"""
-        self.assertRaises(lib_exc.NotFound, self.volumes_client.show_volume,
-                          data_utils.rand_name('invalid'))
+        self.assertRaises(
+            lib_exc.NotFound, self.volumes_client.show_volume,
+            data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='invalid'))
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('c6c3db06-29ad-4e91-beb0-2ab195fe49e3')
@@ -161,8 +168,10 @@
     @decorators.idempotent_id('1f035827-7c32-4019-9240-b4ec2dbd9dfd')
     def test_delete_invalid_volume_id(self):
         """Test deleting volume with invalid volume id should fail"""
-        self.assertRaises(lib_exc.NotFound, self.volumes_client.delete_volume,
-                          data_utils.rand_name('invalid'))
+        self.assertRaises(
+            lib_exc.NotFound, self.volumes_client.delete_volume,
+            data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name='invalid'))
 
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('441a1550-5d44-4b30-af0f-a6d402f52026')
@@ -268,7 +277,9 @@
     @decorators.idempotent_id('0f4aa809-8c7b-418f-8fb3-84c7a5dfc52f')
     def test_list_volumes_with_nonexistent_name(self):
         """Test listing volumes with non existent name should get nothing"""
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         params = {'name': v_name}
         fetched_volume = self.volumes_client.list_volumes(
             params=params)['volumes']
@@ -281,7 +292,9 @@
 
         Listing volume details with non existent name should get nothing.
         """
-        v_name = data_utils.rand_name(self.__class__.__name__ + '-Volume')
+        v_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-Volume')
         params = {'name': v_name}
         fetched_volume = \
             self.volumes_client.list_volumes(
diff --git a/tempest/api/volume/test_volumes_snapshots.py b/tempest/api/volume/test_volumes_snapshots.py
index 95521e7..35afffd 100644
--- a/tempest/api/volume/test_volumes_snapshots.py
+++ b/tempest/api/volume/test_volumes_snapshots.py
@@ -132,7 +132,8 @@
 
         # Updates snapshot with new values
         new_s_name = data_utils.rand_name(
-            self.__class__.__name__ + '-new-snap')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-new-snap')
         new_desc = 'This is the new description of snapshot.'
         params = {'name': new_s_name,
                   'description': new_desc}
diff --git a/tempest/api/volume/test_volumes_snapshots_negative.py b/tempest/api/volume/test_volumes_snapshots_negative.py
index 9c36dc6..364c5a8 100644
--- a/tempest/api/volume/test_volumes_snapshots_negative.py
+++ b/tempest/api/volume/test_volumes_snapshots_negative.py
@@ -32,7 +32,9 @@
     @decorators.idempotent_id('e3e466af-70ab-4f4b-a967-ab04e3532ea7')
     def test_create_snapshot_with_nonexistent_volume_id(self):
         """Test creating snapshot from non existent volume should fail"""
-        s_name = data_utils.rand_name(self.__class__.__name__ + '-snap')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-snap')
         self.assertRaises(lib_exc.NotFound,
                           self.snapshots_client.create_snapshot,
                           volume_id=data_utils.rand_uuid(),
@@ -43,7 +45,9 @@
     def test_create_snapshot_without_passing_volume_id(self):
         """Test creating snapshot without passing volume_id should fail"""
         # Create a snapshot without passing volume id
-        s_name = data_utils.rand_name(self.__class__.__name__ + '-snap')
+        s_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-snap')
         self.assertRaises(lib_exc.NotFound,
                           self.snapshots_client.create_snapshot,
                           volume_id=None, display_name=s_name)
diff --git a/tempest/common/compute.py b/tempest/common/compute.py
index 1c0110f..a8aafe9 100644
--- a/tempest/common/compute.py
+++ b/tempest/common/compute.py
@@ -196,7 +196,8 @@
     """
 
     if name is None:
-        name = data_utils.rand_name(__name__ + "-instance")
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=__name__ + "-instance")
     if flavor is None:
         flavor = CONF.compute.flavor_ref
     if image_id is None:
@@ -245,7 +246,8 @@
             kwargs['user_data'] = script_b64
 
     if volume_backed:
-        volume_name = data_utils.rand_name(__name__ + '-volume')
+        volume_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=__name__ + '-volume')
         volumes_client = clients.volumes_client_latest
         params = {'name': volume_name,
                   'imageRef': image_id,
diff --git a/tempest/common/waiters.py b/tempest/common/waiters.py
index d3be6fd..ddc6047 100644
--- a/tempest/common/waiters.py
+++ b/tempest/common/waiters.py
@@ -311,6 +311,36 @@
     raise lib_exc.TimeoutException(message)
 
 
+def wait_for_image_deleted_from_store(client, image, available_stores,
+                                      image_store_deleted):
+    """Waits for an image to be deleted from specific store.
+
+    API will not allow deletion of the last location for an image.
+    This return image if image deleted from store.
+    """
+
+    # Check if image have last store location
+    if len(available_stores) == 1:
+        exc_cls = lib_exc.OtherRestClientException
+        message = ('Delete from last store location not allowed'
+                   % (image, image_store_deleted))
+        raise exc_cls(message)
+    start = int(time.time())
+    while int(time.time()) - start < client.build_timeout:
+        image = client.show_image(image['id'])
+        image_stores = image['stores'].split(",")
+        if image_store_deleted not in image_stores:
+            return
+        time.sleep(client.build_interval)
+    message = ('Failed to delete %s from requested store location: %s '
+               'within the required time: (%s s)' %
+               (image, image_store_deleted, client.build_timeout))
+    caller = test_utils.find_test_caller()
+    if caller:
+        message = '(%s) %s' % (caller, message)
+    raise exc_cls(message)
+
+
 def wait_for_volume_resource_status(client, resource_id, status,
                                     server_id=None, servers_client=None):
     """Waits for a volume resource to reach a given status.
diff --git a/tempest/config.py b/tempest/config.py
index a27c987..893148b 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -1338,6 +1338,13 @@
  $ stestr run --pdb TEST_ID
 or
  $ python -m testtools.run TEST_ID"""),
+    cfg.StrOpt('resource_name_prefix',
+               default='tempest',
+               help="Define the prefix name for the resources created by "
+                    "tempest. Tempest cleanup CLI will use this config option "
+                    "to cleanup only the resources that match the prefix. "
+                    "Make sure this prefix does not match with the resource "
+                    "name you do not want Tempest cleanup CLI to delete."),
 ]
 
 _opts = [
diff --git a/tempest/lib/services/image/v2/images_client.py b/tempest/lib/services/image/v2/images_client.py
index 8460b57..0608d47 100644
--- a/tempest/lib/services/image/v2/images_client.py
+++ b/tempest/lib/services/image/v2/images_client.py
@@ -292,3 +292,15 @@
         resp, _ = self.delete(url)
         self.expected_success(204, resp.status)
         return rest_client.ResponseBody(resp)
+
+    def delete_image_from_store(self, image_id, store_name):
+        """Delete image from store
+
+        For a full list of available parameters,
+        please refer to the official API reference:
+        https://docs.openstack.org/api-ref/image/v2/#delete-image-from-store
+        """
+        url = 'stores/%s/%s' % (store_name, image_id)
+        resp, _ = self.delete(url)
+        self.expected_success(204, resp.status)
+        return rest_client.ResponseBody(resp)
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 0450d94..7c986cc 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -16,7 +16,11 @@
 
 import copy
 import os
+import re
+import shutil
 import subprocess
+import tarfile
+import tempfile
 
 import netaddr
 
@@ -155,7 +159,8 @@
         if not client:
             client = self.ports_client
         name = data_utils.rand_name(
-            kwargs.pop('namestart', self.__class__.__name__))
+            prefix=CONF.resource_name_prefix,
+            name=kwargs.pop('namestart', self.__class__.__name__))
         if CONF.network.port_vnic_type and 'binding:vnic_type' not in kwargs:
             kwargs['binding:vnic_type'] = CONF.network.port_vnic_type
         if CONF.network.port_profile and 'binding:profile' not in kwargs:
@@ -183,7 +188,9 @@
         if not client:
             client = self.keypairs_client
         if not kwargs.get('name'):
-            kwargs['name'] = data_utils.rand_name(self.__class__.__name__)
+            kwargs['name'] = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__)
         # We don't need to create a keypair by pubkey in scenario
         body = client.create_keypair(**kwargs)
         self.addCleanup(client.delete_keypair, kwargs['name'])
@@ -246,7 +253,9 @@
             clients = self.os_primary
 
         if name is None:
-            name = data_utils.rand_name(self.__class__.__name__ + "-server")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + "-server")
 
         vnic_type = kwargs.pop('vnic_type', CONF.network.port_vnic_type)
         profile = kwargs.pop('port_profile', CONF.network.port_profile)
@@ -370,7 +379,9 @@
             min_disk = image.get('min_disk')
             size = max(size, min_disk)
         if name is None:
-            name = data_utils.rand_name(self.__class__.__name__ + "-volume")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + "-volume")
         kwargs.update({'name': name,
                        'snapshot_id': snapshot_id,
                        'imageRef': imageRef,
@@ -420,7 +431,8 @@
         """
 
         name = name or data_utils.rand_name(
-            self.__class__.__name__ + "-backup")
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + "-backup")
         args = {'name': name,
                 'description': description,
                 'force': force,
@@ -496,7 +508,8 @@
         """
 
         name = name or data_utils.rand_name(
-            self.__class__.__name__ + '-snapshot')
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-snapshot')
         snapshot = self.snapshots_client.create_snapshot(
             volume_id=volume_id,
             force=force,
@@ -557,8 +570,11 @@
             client = self.os_admin.volume_types_client_latest
         if not name:
             class_name = self.__class__.__name__
-            name = data_utils.rand_name(class_name + '-volume-type')
-        randomized_name = data_utils.rand_name('scenario-type-' + name)
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=class_name + '-volume-type')
+        randomized_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='scenario-type-' + name)
 
         LOG.debug("Creating a volume type: %s on backend %s",
                   randomized_name, backend_name)
@@ -613,7 +629,8 @@
             client = self.security_groups_client
         if not project_id:
             project_id = client.project_id
-        sg_name = data_utils.rand_name(namestart)
+        sg_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=namestart)
         sg_desc = sg_name + " description"
         sg_dict = dict(name=sg_name,
                        description=sg_desc)
@@ -782,7 +799,8 @@
                   img_properties)
         if img_properties is None:
             img_properties = {}
-        name = data_utils.rand_name('%s-' % name)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='%s-' % name)
         params = {
             'name': name,
             'container_format': img_container_format,
@@ -793,6 +811,60 @@
         if img_properties:
             params.update(img_properties)
         params.update(kwargs)
+
+        # This code is basically copying the devstack code that extracts and
+        # uploads split kernel/ramdisk images.
+        if tarfile.is_tarfile(img_path):
+            extract_dir = os.path.join(tempfile.gettempdir(), 'images', name)
+            self.addCleanup(shutil.rmtree, extract_dir)
+            os.makedirs(extract_dir)
+            with tarfile.open(img_path) as tar:
+                tar.extractall(extract_dir, filter='data')
+            filenames = os.listdir(extract_dir)
+            for fname in filenames:
+                if re.search(r'(.*-vmlinuz.*|aki-.*/image$)', fname):
+                    kernel_img_path = os.path.join(extract_dir, fname)
+                elif re.search(r'(.*-initrd.*|ari-.*/image$)', fname):
+                    ramdisk_img_path = os.path.join(extract_dir, fname)
+                elif re.search(f'(.*\\.img$|ami-.*/image$)', fname):
+                    img_path = os.path.join(extract_dir, fname)
+            # Create the kernel image.
+            kparams = {
+                'name': name + '-kernel',
+                'container_format': 'aki',
+                'disk_format': 'aki',
+                'visibility': 'private'
+            }
+            body = self.image_client.create_image(**kparams)
+            image = body['image'] if 'image' in body else body
+            kernel_id = image['id']
+            self.addCleanup(self.image_client.delete_image, kernel_id)
+            self.assertEqual("queued", image['status'])
+            with open(kernel_img_path, 'rb') as image_file:
+                self.image_client.store_image_file(kernel_id, image_file)
+            LOG.debug("image:%s", kernel_id)
+            # Create the ramdisk image.
+            rparams = {
+                'name': name + '-ramdisk',
+                'container_format': 'ari',
+                'disk_format': 'ari',
+                'visibility': 'private'
+            }
+            body = self.image_client.create_image(**rparams)
+            image = body['image'] if 'image' in body else body
+            ramdisk_id = image['id']
+            self.addCleanup(self.image_client.delete_image, ramdisk_id)
+            self.assertEqual("queued", image['status'])
+            with open(ramdisk_img_path, 'rb') as image_file:
+                self.image_client.store_image_file(ramdisk_id, image_file)
+            LOG.debug("image:%s", ramdisk_id)
+            # Set the kernel_id, ramdisk_id, container format, disk format for
+            # the split image.
+            params['kernel_id'] = kernel_id
+            params['ramdisk_id'] = ramdisk_id
+            params['container_format'] = 'ami'
+            params['disk_format'] = 'ami'
+
         body = self.image_client.create_image(**params)
         image = body['image'] if 'image' in body else body
         self.addCleanup(self.image_client.delete_image, image['id'])
@@ -833,7 +905,9 @@
         # Compute client
         _images_client = self.compute_images_client
         if name is None:
-            name = data_utils.rand_name(self.__class__.__name__ + 'snapshot')
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__ + 'snapshot')
         LOG.debug("Creating a snapshot image for server: %s", server['name'])
         image = _images_client.create_image(server['id'], name=name, **kwargs)
         # microversion 2.45 and above returns image_id
@@ -1264,7 +1338,8 @@
         name = kwargs.pop('name', None)
         if not name:
             namestart = self.__class__.__name__ + '-volume-origin'
-            name = data_utils.rand_name(namestart)
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name=namestart)
         return self.create_volume(name=name, imageRef=image_id, **kwargs)
 
 
@@ -1294,7 +1369,8 @@
             networks_client = self.networks_client
         if not project_id:
             project_id = networks_client.project_id
-        name = data_utils.rand_name(namestart)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=namestart)
         network_kwargs = dict(name=name, project_id=project_id)
         if net_dict:
             network_kwargs.update(net_dict)
@@ -1352,7 +1428,8 @@
                                         ip_version, subnets_client, **kwargs):
 
             subnet = dict(
-                name=data_utils.rand_name(namestart),
+                name=data_utils.rand_name(
+                    prefix=CONF.resource_name_prefix, name=namestart),
                 network_id=network['id'],
                 project_id=network['project_id'],
                 ip_version=ip_version,
@@ -1540,7 +1617,8 @@
             name = kwargs.pop('name', None)
             if not name:
                 namestart = self.__class__.__name__ + '-router'
-                name = data_utils.rand_name(namestart)
+                name = data_utils.rand_name(
+                    prefix=CONF.resource_name_prefix, name=namestart)
 
             ext_gw_info = kwargs.pop('external_gateway_info', None)
             if not ext_gw_info:
@@ -1698,7 +1776,7 @@
     def create_container(self, container_name=None):
         """Creates container"""
         name = container_name or data_utils.rand_name(
-            'swift-scenario-container')
+            prefix=CONF.resource_name_prefix, name='swift-scenario-container')
         self.container_client.update_container(name)
         # look for the container to assure it is created
         self.list_and_check_container_objects(name)
@@ -1715,7 +1793,8 @@
 
     def upload_object_to_container(self, container_name, obj_name=None):
         """Uploads object to container"""
-        obj_name = obj_name or data_utils.rand_name('swift-scenario-object')
+        obj_name = obj_name or data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='swift-scenario-object')
         obj_data = data_utils.random_bytes()
         self.object_client.create_object(container_name, obj_name, obj_data)
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
diff --git a/tempest/scenario/test_network_qos_placement.py b/tempest/scenario/test_network_qos_placement.py
index 0b2cfcb..dbbc314 100644
--- a/tempest/scenario/test_network_qos_placement.py
+++ b/tempest/scenario/test_network_qos_placement.py
@@ -113,7 +113,8 @@
         self, name_prefix, min_kbps, direction="ingress"
     ):
         policy = self.qos_client.create_qos_policy(
-            name=data_utils.rand_name(name_prefix),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name=name_prefix),
             shared=True)['policy']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.qos_client.delete_qos_policy, policy['id'])
@@ -600,7 +601,7 @@
 
     def _create_qos_policy_with_bw_and_pps_rules(self, min_kbps, min_kpps):
         policy = self.qos_client.create_qos_policy(
-            name=data_utils.rand_name(),
+            name=data_utils.rand_name(prefix=CONF.resource_name_prefix),
             shared=True
         )['policy']
         self.addCleanup(
@@ -660,10 +661,11 @@
 
     def _create_port_with_qos_policy(self, policy):
         port = self.ports_client.create_port(
-            name=data_utils.rand_name(self.__class__.__name__),
+            name=data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__class__.__name__),
             network_id=self.network['id'],
-            qos_policy_id=policy['id'] if policy else None,
-        )['port']
+            qos_policy_id=policy['id'] if policy else None)['port']
         self.addCleanup(
             test_utils.call_and_ignore_notfound_exc,
             self.ports_client.delete_port, port['id']
diff --git a/tempest/scenario/test_security_groups_basic_ops.py b/tempest/scenario/test_security_groups_basic_ops.py
index 2fc5f32..752b854 100644
--- a/tempest/scenario/test_security_groups_basic_ops.py
+++ b/tempest/scenario/test_security_groups_basic_ops.py
@@ -300,7 +300,8 @@
                    tenant=tenant.creds.tenant_name,
                    num=i
             )
-            name = data_utils.rand_name(name)
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix, name=name)
             server = self._create_server(name, tenant,
                                          [tenant.security_groups['default']])
             tenant.servers.append(server)
@@ -312,7 +313,8 @@
         secgroups = tenant.security_groups.values()
         name = 'server-{tenant}-access_point'.format(
             tenant=tenant.creds.tenant_name)
-        name = data_utils.rand_name(name)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=name)
         server = self._create_server(name, tenant,
                                      security_groups=secgroups)
         tenant.access_point = server
@@ -555,7 +557,8 @@
         name = 'server-{tenant}-gen-1'.format(
                tenant=new_tenant.creds.tenant_name
         )
-        name = data_utils.rand_name(name)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=name)
         server = self._create_server(name, new_tenant,
                                      [new_tenant.security_groups['default']])
 
@@ -624,7 +627,8 @@
         name = 'server-{tenant}-gen-1'.format(
                tenant=new_tenant.creds.tenant_name
         )
-        name = data_utils.rand_name(name)
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=name)
         server = self._create_server(name, new_tenant,
                                      [new_tenant.security_groups['default']])
 
@@ -668,7 +672,8 @@
         tenant = self.primary_tenant
         self._create_tenant_network(tenant, port_security_enabled=False)
         self.assertFalse(tenant.network['port_security_enabled'])
-        name = data_utils.rand_name('server-smoke')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='server-smoke')
         sec_groups = []
         server = self._create_server(name, tenant, sec_groups)
         server_id = server['id']
diff --git a/tempest/scenario/test_unified_limits.py b/tempest/scenario/test_unified_limits.py
index 22256b4..6e194f9 100644
--- a/tempest/scenario/test_unified_limits.py
+++ b/tempest/scenario/test_unified_limits.py
@@ -71,7 +71,9 @@
         """Wrapper that returns a test image."""
 
         if 'name' not in kwargs:
-            name = data_utils.rand_name(self.__name__ + "-image")
+            name = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.__name__ + "-image")
             kwargs['name'] = name
 
         params = dict(kwargs)
diff --git a/tempest/scenario/test_volume_boot_pattern.py b/tempest/scenario/test_volume_boot_pattern.py
index 6ebee48..5e28ecd 100644
--- a/tempest/scenario/test_volume_boot_pattern.py
+++ b/tempest/scenario/test_volume_boot_pattern.py
@@ -187,8 +187,9 @@
     def test_image_defined_boot_from_volume(self):
         # create an instance from image-backed volume
         volume_origin = self.create_volume_from_image()
-        name = data_utils.rand_name(self.__class__.__name__ +
-                                    '-volume-backed-server')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-volume-backed-server')
         instance1 = self.boot_instance_from_resource(
             source_id=volume_origin['id'],
             source_type='volume',
@@ -205,8 +206,9 @@
         # about the volume snapshot. The compute service will use this to
         # create a volume from the volume snapshot and use that as the root
         # disk for the server.
-        name = data_utils.rand_name(self.__class__.__name__ +
-                                    '-image-snapshot-server')
+        name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name=self.__class__.__name__ + '-image-snapshot-server')
         instance2 = self.create_server(image_id=image['id'], name=name,
                                        wait_until='SSHABLE')
 
diff --git a/tempest/scenario/test_volume_migrate_attached.py b/tempest/scenario/test_volume_migrate_attached.py
index 5005346..f34bfd6 100644
--- a/tempest/scenario/test_volume_migrate_attached.py
+++ b/tempest/scenario/test_volume_migrate_attached.py
@@ -96,10 +96,7 @@
         waiters.wait_for_volume_retype(self.volumes_client,
                                        volume_id, new_volume_type)
 
-    @decorators.attr(type='slow')
-    @decorators.idempotent_id('deadd2c2-beef-4dce-98be-f86765ff311b')
-    @utils.services('compute', 'volume')
-    def test_volume_retype_attached(self):
+    def _test_volume_retype_attached(self, dev_name=None):
         LOG.info("Creating keypair and security group")
         keypair = self.create_keypair()
         security_group = self.create_security_group()
@@ -108,18 +105,30 @@
         LOG.info("Creating Volume types")
         source_type, dest_type = self._create_volume_types()
 
-        # create an instance from volume
-        LOG.info("Booting instance from volume")
-        volume_id = self.create_volume(imageRef=CONF.compute.image_ref,
-                                       volume_type=source_type['name'])['id']
+        if dev_name is None:
+            # create an instance from volume
+            LOG.info("Booting instance from volume")
+            volume_id = self.create_volume(
+                imageRef=CONF.compute.image_ref,
+                volume_type=source_type['name'])['id']
 
-        instance = self._boot_instance_from_volume(volume_id, keypair,
-                                                   security_group)
+            instance = self._boot_instance_from_volume(volume_id, keypair,
+                                                       security_group)
+        else:
+            LOG.info("Booting instance from image and attaching data volume")
+            key_name = keypair['name']
+            security_groups = [{'name': security_group['name']}]
+            instance = self.create_server(key_name=key_name,
+                                          security_groups=security_groups)
+            volume = self.create_volume(volume_type=source_type['name'])
+            volume_id = volume['id']
+            volume = self.nova_volume_attach(instance, volume)
 
         # write content to volume on instance
         LOG.info("Setting timestamp in instance %s", instance['id'])
         ip_instance = self.get_server_ip(instance)
         timestamp = self.create_timestamp(ip_instance,
+                                          dev_name=dev_name,
                                           private_key=keypair['private_key'],
                                           server=instance)
 
@@ -134,6 +143,7 @@
         LOG.info("Getting timestamp in postmigrated instance %s",
                  instance['id'])
         timestamp2 = self.get_timestamp(ip_instance,
+                                        dev_name=dev_name,
                                         private_key=keypair['private_key'],
                                         server=instance)
         self.assertEqual(timestamp, timestamp2)
@@ -152,10 +162,35 @@
             instance['id'])['volumeAttachments']
         self.assertEqual(volume_id, attached_volumes[0]['id'])
 
+        # Reboot the instance and verify it boots successfully
+        LOG.info("Hard rebooting instance %s", instance['id'])
+        self.servers_client.reboot_server(instance['id'], type='HARD')
+        waiters.wait_for_server_status(
+            self.servers_client, instance['id'], 'ACTIVE')
+
+        # check the content of written file to verify the instance is working
+        # after being rebooted
+        LOG.info("Getting timestamp in postmigrated rebooted instance %s",
+                 instance['id'])
+        timestamp2 = self.get_timestamp(ip_instance,
+                                        dev_name=dev_name,
+                                        private_key=keypair['private_key'],
+                                        server=instance)
+        self.assertEqual(timestamp, timestamp2)
+
     @decorators.attr(type='slow')
-    @decorators.idempotent_id('fe47b1ed-640e-4e3b-a090-200e25607362')
+    @decorators.idempotent_id('deadd2c2-beef-4dce-98be-f86765ff311b')
     @utils.services('compute', 'volume')
-    def test_volume_migrate_attached(self):
+    def test_volume_retype_attached(self):
+        self._test_volume_retype_attached()
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('122e070c-a5b2-470c-af2b-81e9dbefb9e8')
+    @utils.services('compute', 'volume')
+    def test_volume_retype_attached_data_volume(self):
+        self._test_volume_retype_attached(dev_name='vdb')
+
+    def _test_volume_migrate_attached(self, dev_name=None):
         LOG.info("Creating keypair and security group")
         keypair = self.create_keypair()
         security_group = self.create_security_group()
@@ -163,16 +198,26 @@
         LOG.info("Creating volume")
         # Create a unique volume type to avoid using the backend default
         migratable_type = self.create_volume_type()['name']
-        volume_id = self.create_volume(imageRef=CONF.compute.image_ref,
-                                       volume_type=migratable_type)['id']
-        volume = self.admin_volumes_client.show_volume(volume_id)
 
-        LOG.info("Booting instance from volume")
-        instance = self._boot_instance_from_volume(volume_id, keypair,
-                                                   security_group)
+        if dev_name is None:
+            volume_id = self.create_volume(imageRef=CONF.compute.image_ref,
+                                           volume_type=migratable_type)['id']
+            LOG.info("Booting instance from volume")
+            instance = self._boot_instance_from_volume(volume_id, keypair,
+                                                       security_group)
+        else:
+            LOG.info("Booting instance from image and attaching data volume")
+            key_name = keypair['name']
+            security_groups = [{'name': security_group['name']}]
+            instance = self.create_server(key_name=key_name,
+                                          security_groups=security_groups)
+            volume = self.create_volume(volume_type=migratable_type)
+            volume_id = volume['id']
+            volume = self.nova_volume_attach(instance, volume)
 
         # Identify the source and destination hosts for the migration
-        src_host = volume['volume']['os-vol-host-attr:host']
+        volume = self.admin_volumes_client.show_volume(volume_id)['volume']
+        src_host = volume['os-vol-host-attr:host']
 
         # Select the first c-vol host that isn't hosting the volume as the dest
         # host['host_name'] should take the format of host@backend.
@@ -186,6 +231,7 @@
 
         ip_instance = self.get_server_ip(instance)
         timestamp = self.create_timestamp(ip_instance,
+                                          dev_name=dev_name,
                                           private_key=keypair['private_key'],
                                           server=instance)
 
@@ -202,6 +248,7 @@
         LOG.info("Getting timestamp in postmigrated instance %s",
                  instance['id'])
         timestamp2 = self.get_timestamp(ip_instance,
+                                        dev_name=dev_name,
                                         private_key=keypair['private_key'],
                                         server=instance)
         self.assertEqual(timestamp, timestamp2)
@@ -216,3 +263,31 @@
             instance['id'])['volumeAttachments']
         attached_volume_id = attached_volumes[0]['id']
         self.assertEqual(volume_id, attached_volume_id)
+
+        # Reboot the instance and verify it boots successfully
+        LOG.info("Hard rebooting instance %s", instance['id'])
+        self.servers_client.reboot_server(instance['id'], type='HARD')
+        waiters.wait_for_server_status(
+            self.servers_client, instance['id'], 'ACTIVE')
+
+        # check the content of written file to verify the instance is working
+        # after being rebooted
+        LOG.info("Getting timestamp in postmigrated rebooted instance %s",
+                 instance['id'])
+        timestamp2 = self.get_timestamp(ip_instance,
+                                        dev_name=dev_name,
+                                        private_key=keypair['private_key'],
+                                        server=instance)
+        self.assertEqual(timestamp, timestamp2)
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('fe47b1ed-640e-4e3b-a090-200e25607362')
+    @utils.services('compute', 'volume')
+    def test_volume_migrate_attached(self):
+        self._test_volume_migrate_attached()
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('1b8661cb-db93-4110-860b-201295027b78')
+    @utils.services('compute', 'volume')
+    def test_volume_migrate_attached_data_volume(self):
+        self._test_volume_migrate_attached(dev_name='vdb')
diff --git a/tempest/serial_tests/api/admin/test_aggregates.py b/tempest/serial_tests/api/admin/test_aggregates.py
index 2ca91aa..cedeec0 100644
--- a/tempest/serial_tests/api/admin/test_aggregates.py
+++ b/tempest/serial_tests/api/admin/test_aggregates.py
@@ -63,7 +63,9 @@
 
     def _create_test_aggregate(self, **kwargs):
         if 'name' not in kwargs:
-            kwargs['name'] = data_utils.rand_name(self.aggregate_name_prefix)
+            kwargs['name'] = data_utils.rand_name(
+                prefix=CONF.resource_name_prefix,
+                name=self.aggregate_name_prefix)
         aggregate = self.client.create_aggregate(**kwargs)['aggregate']
         self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                         self.client.delete_aggregate, aggregate['id'])
@@ -87,7 +89,8 @@
     @decorators.idempotent_id('5873a6f8-671a-43ff-8838-7ce430bb6d0b')
     def test_aggregate_create_delete_with_az(self):
         """Test create/delete aggregate with availability_zone"""
-        az_name = data_utils.rand_name(self.az_name_prefix)
+        az_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.az_name_prefix)
         aggregate = self._create_test_aggregate(availability_zone=az_name)
         self.assertEqual(az_name, aggregate['availability_zone'])
 
@@ -125,8 +128,10 @@
     @decorators.idempotent_id('4d2b2004-40fa-40a1-aab2-66f4dab81beb')
     def test_aggregate_create_update_with_az(self):
         """Test create/update aggregate with availability_zone"""
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
-        az_name = data_utils.rand_name(self.az_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.aggregate_name_prefix)
+        az_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.az_name_prefix)
         aggregate = self._create_test_aggregate(
             name=aggregate_name, availability_zone=az_name)
 
@@ -153,7 +158,8 @@
     def test_aggregate_add_remove_host(self):
         """Test adding host to and removing host from aggregate"""
         self.useFixture(fixtures.LockFixture('availability_zone'))
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.aggregate_name_prefix)
         aggregate = self._create_test_aggregate(name=aggregate_name)
 
         body = (self.client.add_host(aggregate['id'], host=self.host)
@@ -177,7 +183,8 @@
         Add a host to the given aggregate and list.
         """
         self.useFixture(fixtures.LockFixture('availability_zone'))
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.aggregate_name_prefix)
         aggregate = self._create_test_aggregate(name=aggregate_name)
 
         self.client.add_host(aggregate['id'], host=self.host)
@@ -199,7 +206,8 @@
         Add a host to the given aggregate and get details.
         """
         self.useFixture(fixtures.LockFixture('availability_zone'))
-        aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.aggregate_name_prefix)
         aggregate = self._create_test_aggregate(name=aggregate_name)
 
         self.client.add_host(aggregate['id'], host=self.host)
@@ -215,7 +223,8 @@
     def test_aggregate_add_host_create_server_with_az(self):
         """Test adding a host to the given aggregate and creating a server"""
         self.useFixture(fixtures.LockFixture('availability_zone'))
-        az_name = data_utils.rand_name(self.az_name_prefix)
+        az_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.az_name_prefix)
         aggregate = self._create_test_aggregate(availability_zone=az_name)
 
         # Find a host that has not been added to other availability zone,
@@ -269,7 +278,8 @@
         # Checking create aggregate API response schema
         aggregate = self._create_test_aggregate()
 
-        new_aggregate_name = data_utils.rand_name(self.aggregate_name_prefix)
+        new_aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name=self.aggregate_name_prefix)
         # Checking update aggregate API response schema
         self.client.update_aggregate(aggregate['id'], name=new_aggregate_name)
         # Checking show aggregate API response schema
diff --git a/tempest/serial_tests/scenario/test_aggregates_basic_ops.py b/tempest/serial_tests/scenario/test_aggregates_basic_ops.py
index ba31d84..a831fe5 100644
--- a/tempest/serial_tests/scenario/test_aggregates_basic_ops.py
+++ b/tempest/serial_tests/scenario/test_aggregates_basic_ops.py
@@ -15,10 +15,13 @@
 
 from tempest.common import tempest_fixtures as fixtures
 from tempest.common import utils
+from tempest import config
 from tempest.lib.common.utils import data_utils
 from tempest.lib import decorators
 from tempest.scenario import manager
 
+CONF = config.CONF
+
 
 @decorators.serial
 class TestAggregatesBasicOps(manager.ScenarioTest):
@@ -119,7 +122,8 @@
     def test_aggregate_basic_ops(self):
         self.useFixture(fixtures.LockFixture('availability_zone'))
         az = 'foo_zone'
-        aggregate_name = data_utils.rand_name('aggregate-scenario')
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix, name='aggregate-scenario')
         aggregate = self._create_aggregate(name=aggregate_name,
                                            availability_zone=az)
 
@@ -131,7 +135,9 @@
         self._check_aggregate_details(aggregate, aggregate_name, az, [host],
                                       metadata)
 
-        aggregate_name = data_utils.rand_name('renamed-aggregate-scenario')
+        aggregate_name = data_utils.rand_name(
+            prefix=CONF.resource_name_prefix,
+            name='renamed-aggregate-scenario')
         # Updating the name alone. The az must be specified again otherwise
         # the tempest client would send None in the put body
         aggregate = self._update_aggregate(aggregate, aggregate_name, az)
diff --git a/tempest/tests/lib/services/image/v2/test_images_client.py b/tempest/tests/lib/services/image/v2/test_images_client.py
index 27a50a9..01861a2 100644
--- a/tempest/tests/lib/services/image/v2/test_images_client.py
+++ b/tempest/tests/lib/services/image/v2/test_images_client.py
@@ -146,6 +146,36 @@
         ]
     }
 
+    FAKE_DELETE_IMAGE_FROM_STORE = {
+        "id": "e485aab9-0907-4973-921c-bb6da8a8fcf8",
+        "name": u"\u2740(*\xb4\u25e2`*)\u2740",
+        "status": "active",
+        "visibility": "public",
+        "size": 2254249,
+        "checksum": "2cec138d7dae2aa59038ef8c9aec2390",
+        "tags": [
+            "fedora",
+            "beefy"
+        ],
+        "created_at": "2012-08-10T19:23:50Z",
+        "updated_at": "2012-08-12T11:11:33Z",
+        "self": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
+        "file": "/v2/images/da3b75d9-3f4a-40e7-8a2c-bfab23927"
+                "dea/file",
+        "schema": "/v2/schemas/image",
+        "owner": None,
+        "min_ram": None,
+        "min_disk": None,
+        "disk_format": None,
+        "virtual_size": None,
+        "container_format": None,
+        "os_hash_algo": "sha512",
+        "os_hash_value": "ef7d1ed957ffafefb324d50ebc6685ed03d0e645d",
+        "os_hidden": False,
+        "protected": False,
+        "stores": ["store-1", "store-2"],
+    }
+
     FAKE_TAG_NAME = "fake tag"
 
     def setUp(self):
@@ -294,3 +324,12 @@
             self.FAKE_SHOW_IMAGE_TASKS,
             True,
             image_id="e485aab9-0907-4973-921c-bb6da8a8fcf8")
+
+    def test_delete_image_from_store(self):
+        self.check_service_client_function(
+            self.client.delete_image_from_store,
+            'tempest.lib.common.rest_client.RestClient.delete',
+            {},
+            image_id=self.FAKE_DELETE_IMAGE_FROM_STORE["id"],
+            store_name=self.FAKE_DELETE_IMAGE_FROM_STORE["stores"][0],
+            status=204)
diff --git a/tools/generate-tempest-plugins-list.py b/tools/generate-tempest-plugins-list.py
index 0b6b342..2e8ced5 100644
--- a/tools/generate-tempest-plugins-list.py
+++ b/tools/generate-tempest-plugins-list.py
@@ -75,7 +75,6 @@
     'x/networking-l2gw-tempest-plugin'
     'x/novajoin-tempest-plugin'
     'x/ranger-tempest-plugin'
-    'x/tap-as-a-service-tempest-plugin'
     'x/trio2o'
     # No changes are merging in this
     # https://review.opendev.org/q/project:x%252Fnetworking-fortinet