Move get_tenant_by_name to common part

get_tenant_by_name of keystone service client is just wrapper method
and it should be moved from the client for implementing it as library.

Partially implements blueprint consistent-service-method-names

Change-Id: Ic3f6c7aa4d69e296271c936f5ab9b188a29a2107
diff --git a/tempest/cmd/account_generator.py b/tempest/cmd/account_generator.py
index a90b0ce..c23b668 100755
--- a/tempest/cmd/account_generator.py
+++ b/tempest/cmd/account_generator.py
@@ -89,6 +89,7 @@
 from oslo_log import log as logging
 import yaml
 
+from tempest.common import identity
 from tempest import config
 from tempest import exceptions as exc
 from tempest.services.identity.v2.json import identity_client
@@ -188,7 +189,7 @@
     LOG.info('Tenants created')
     for u in resources['users']:
         try:
-            tenant = identity_admin.get_tenant_by_name(u['tenant'])
+            tenant = identity.get_tenant_by_name(identity_admin, u['tenant'])
         except tempest_lib.exceptions.NotFound:
             LOG.error("Tenant: %s - not found" % u['tenant'])
             continue
@@ -209,7 +210,7 @@
     LOG.info('Users created')
     if neutron_iso_networks:
         for u in resources['users']:
-            tenant = identity_admin.get_tenant_by_name(u['tenant'])
+            tenant = identity.get_tenant_by_name(identity_admin, u['tenant'])
             network_name, router_name = create_network_resources(
                 network_admin, networks_admin, subnets_admin, tenant['id'],
                 u['name'])
@@ -218,7 +219,7 @@
         LOG.info('Networks created')
     for u in resources['users']:
         try:
-            tenant = identity_admin.get_tenant_by_name(u['tenant'])
+            tenant = identity.get_tenant_by_name(identity_admin, u['tenant'])
         except tempest_lib.exceptions.NotFound:
             LOG.error("Tenant: %s - not found" % u['tenant'])
             continue
diff --git a/tempest/cmd/cleanup.py b/tempest/cmd/cleanup.py
index 239b4e9..09e3c9d 100644
--- a/tempest/cmd/cleanup.py
+++ b/tempest/cmd/cleanup.py
@@ -59,6 +59,7 @@
 from tempest import clients
 from tempest.cmd import cleanup_service
 from tempest.common import credentials_factory as credentials
+from tempest.common import identity
 from tempest import config
 
 SAVED_STATE_JSON = "saved_state.json"
@@ -177,7 +178,8 @@
     def _init_admin_ids(self):
         id_cl = self.admin_mgr.identity_client
 
-        tenant = id_cl.get_tenant_by_name(CONF.auth.admin_tenant_name)
+        tenant = identity.get_tenant_by_name(id_cl,
+                                             CONF.auth.admin_tenant_name)
         self.admin_tenant_id = tenant['id']
 
         user = id_cl.get_user_by_username(self.admin_tenant_id,
diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py
index d2f6c03..4bed0d9 100644
--- a/tempest/cmd/cleanup_service.py
+++ b/tempest/cmd/cleanup_service.py
@@ -17,6 +17,7 @@
 from oslo_log import log as logging
 
 from tempest.common import credentials_factory as credentials
+from tempest.common import identity
 from tempest import config
 from tempest import test
 
@@ -87,7 +88,7 @@
     id_cl = am.identity_client
 
     networks = net_cl.list_networks()
-    tenant = id_cl.get_tenant_by_name(tenant_name)
+    tenant = identity.get_tenant_by_name(id_cl, tenant_name)
     t_id = tenant['id']
     n_id = None
     for net in networks['networks']:
diff --git a/tempest/cmd/javelin.py b/tempest/cmd/javelin.py
index 97d431a..c2feb23 100755
--- a/tempest/cmd/javelin.py
+++ b/tempest/cmd/javelin.py
@@ -120,6 +120,7 @@
 from tempest_lib.services.compute import flavors_client
 import yaml
 
+from tempest.common import identity
 from tempest.common import waiters
 from tempest import config
 from tempest.services.compute.json import floating_ips_client
@@ -295,7 +296,7 @@
 def destroy_tenants(tenants):
     admin = keystone_admin()
     for tenant in tenants:
-        tenant_id = admin.identity.get_tenant_by_name(tenant)['id']
+        tenant_id = identity.get_tenant_by_name(admin.identity, tenant)['id']
         admin.identity.delete_tenant(tenant_id)
 
 ##############
@@ -347,7 +348,7 @@
     admin = keystone_admin()
     for u in users:
         try:
-            tenant = admin.identity.get_tenant_by_name(u['tenant'])
+            tenant = identity.get_tenant_by_name(admin.identity, u['tenant'])
         except lib_exc.NotFound:
             LOG.error("Tenant: %s - not found" % u['tenant'])
             continue
@@ -365,7 +366,8 @@
 def destroy_users(users):
     admin = keystone_admin()
     for user in users:
-        tenant_id = admin.identity.get_tenant_by_name(user['tenant'])['id']
+        tenant_id = identity.get_tenant_by_name(admin.identity,
+                                                user['tenant'])['id']
         user_id = admin.identity.get_user_by_username(tenant_id,
                                                       user['name'])['id']
         admin.identity.delete_user(user_id)
@@ -376,7 +378,7 @@
     LOG.info("Collecting users")
     admin = keystone_admin()
     for u in users:
-        tenant = admin.identity.get_tenant_by_name(u['tenant'])
+        tenant = identity.get_tenant_by_name(admin.identity, u['tenant'])
         u['tenant_id'] = tenant['id']
         USERS[u['name']] = u
         body = admin.identity.get_user_by_username(tenant['id'], u['name'])
diff --git a/tempest/common/identity.py b/tempest/common/identity.py
new file mode 100644
index 0000000..303f620
--- /dev/null
+++ b/tempest/common/identity.py
@@ -0,0 +1,24 @@
+# Copyright 2015 NEC Corporation
+# All Rights Reserved.
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from tempest_lib import exceptions as lib_exc
+
+
+def get_tenant_by_name(client, tenant_name):
+    tenants = client.list_tenants()['tenants']
+    for tenant in tenants:
+        if tenant['name'] == tenant_name:
+            return tenant
+    raise lib_exc.NotFound('No such tenant(%s) in %s' % (tenant_name, tenants))
diff --git a/tempest/services/identity/v2/json/identity_client.py b/tempest/services/identity/v2/json/identity_client.py
index b27f036..aef7884 100644
--- a/tempest/services/identity/v2/json/identity_client.py
+++ b/tempest/services/identity/v2/json/identity_client.py
@@ -119,13 +119,6 @@
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
 
-    def get_tenant_by_name(self, tenant_name):
-        tenants = self.list_tenants()['tenants']
-        for tenant in tenants:
-            if tenant['name'] == tenant_name:
-                return tenant
-        raise lib_exc.NotFound('No such tenant')
-
     def update_tenant(self, tenant_id, **kwargs):
         """Updates a tenant."""
         body = self.show_tenant(tenant_id)['tenant']
diff --git a/tempest/tests/cmd/test_javelin.py b/tempest/tests/cmd/test_javelin.py
index fc3d984..ea0b7a7 100644
--- a/tempest/tests/cmd/test_javelin.py
+++ b/tempest/tests/cmd/test_javelin.py
@@ -106,8 +106,9 @@
         self.assertFalse(mocked_function.called)
 
     def test_create_users(self):
-        self.fake_client.identity.get_tenant_by_name.return_value = \
-            self.fake_object['tenant']
+        self.useFixture(mockpatch.Patch(
+                        'tempest.common.identity.get_tenant_by_name',
+                        return_value=self.fake_object['tenant']))
         self.fake_client.identity.get_user_by_username.side_effect = \
             lib_exc.NotFound("user is not found")
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",
@@ -125,8 +126,9 @@
                                                 enabled=True)
 
     def test_create_user_missing_tenant(self):
-        self.fake_client.identity.get_tenant_by_name.side_effect = \
-            lib_exc.NotFound("tenant is not found")
+        self.useFixture(mockpatch.Patch(
+                        'tempest.common.identity.get_tenant_by_name',
+                        side_effect=lib_exc.NotFound("tenant is not found")))
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",
                                               return_value=self.fake_client))
 
@@ -289,8 +291,9 @@
 
         fake_tenant = self.fake_object['tenant']
         fake_auth = self.fake_client
-        fake_auth.identity.get_tenant_by_name.return_value = fake_tenant
-
+        self.useFixture(mockpatch.Patch(
+                        'tempest.common.identity.get_tenant_by_name',
+                        return_value=fake_tenant))
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",
                                               return_value=fake_auth))
         javelin.destroy_tenants([fake_tenant])
@@ -304,7 +307,8 @@
         fake_tenant = self.fake_object['tenant']
 
         fake_auth = self.fake_client
-        fake_auth.identity.get_tenant_by_name.return_value = fake_tenant
+        fake_auth.identity.list_tenants.return_value = \
+            {'tenants': [fake_tenant]}
         fake_auth.identity.get_user_by_username.return_value = fake_user
 
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",