Move get_user_by_username to common part

get_user_by_username 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: Ib44c0b2d085ef2b8f488d804c1c57e078323ce78
diff --git a/tempest/cmd/account_generator.py b/tempest/cmd/account_generator.py
index c23b668..613fb26 100755
--- a/tempest/cmd/account_generator.py
+++ b/tempest/cmd/account_generator.py
@@ -195,7 +195,8 @@
             continue
         while True:
             try:
-                identity_admin.get_user_by_username(tenant['id'], u['name'])
+                identity.get_user_by_username(identity_admin,
+                                              tenant['id'], u['name'])
             except tempest_lib.exceptions.NotFound:
                 identity_admin.create_user(
                     u['name'], u['pass'], tenant['id'],
@@ -224,8 +225,8 @@
             LOG.error("Tenant: %s - not found" % u['tenant'])
             continue
         try:
-            user = identity_admin.get_user_by_username(tenant['id'],
-                                                       u['name'])
+            user = identity.get_user_by_username(identity_admin,
+                                                 tenant['id'], u['name'])
         except tempest_lib.exceptions.NotFound:
             LOG.error("User: %s - not found" % u['user'])
             continue
diff --git a/tempest/cmd/cleanup.py b/tempest/cmd/cleanup.py
index 09e3c9d..9c852c5 100644
--- a/tempest/cmd/cleanup.py
+++ b/tempest/cmd/cleanup.py
@@ -182,8 +182,8 @@
                                              CONF.auth.admin_tenant_name)
         self.admin_tenant_id = tenant['id']
 
-        user = id_cl.get_user_by_username(self.admin_tenant_id,
-                                          CONF.auth.admin_username)
+        user = identity.get_user_by_username(id_cl, self.admin_tenant_id,
+                                             CONF.auth.admin_username)
         self.admin_id = user['id']
 
         roles = id_cl.list_roles()['roles']
diff --git a/tempest/cmd/javelin.py b/tempest/cmd/javelin.py
index c2feb23..cbaf756 100755
--- a/tempest/cmd/javelin.py
+++ b/tempest/cmd/javelin.py
@@ -353,7 +353,8 @@
             LOG.error("Tenant: %s - not found" % u['tenant'])
             continue
         try:
-            admin.identity.get_user_by_username(tenant['id'], u['name'])
+            identity.get_user_by_username(admin.identity,
+                                          tenant['id'], u['name'])
             LOG.warn("User '%s' already exists in this environment"
                      % u['name'])
         except lib_exc.NotFound:
@@ -368,8 +369,8 @@
     for user in users:
         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']
+        user_id = identity.get_user_by_username(admin.identity,
+                                                tenant_id, user['name'])['id']
         admin.identity.delete_user(user_id)
 
 
@@ -381,7 +382,8 @@
         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'])
+        body = identity.get_user_by_username(admin.identity,
+                                             tenant['id'], u['name'])
         USERS[u['name']]['id'] = body['id']
 
 
diff --git a/tempest/common/identity.py b/tempest/common/identity.py
index 303f620..2179363 100644
--- a/tempest/common/identity.py
+++ b/tempest/common/identity.py
@@ -22,3 +22,11 @@
         if tenant['name'] == tenant_name:
             return tenant
     raise lib_exc.NotFound('No such tenant(%s) in %s' % (tenant_name, tenants))
+
+
+def get_user_by_username(client, tenant_id, username):
+    users = client.list_tenant_users(tenant_id)['users']
+    for user in users:
+        if user['name'] == username:
+            return user
+    raise lib_exc.NotFound('No such user(%s) in %s' % (username, users))
diff --git a/tempest/services/identity/v2/json/identity_client.py b/tempest/services/identity/v2/json/identity_client.py
index aef7884..dad47b6 100644
--- a/tempest/services/identity/v2/json/identity_client.py
+++ b/tempest/services/identity/v2/json/identity_client.py
@@ -11,7 +11,6 @@
 #    under the License.
 
 from oslo_serialization import jsonutils as json
-from tempest_lib import exceptions as lib_exc
 
 from tempest.common import service_client
 
@@ -213,13 +212,6 @@
         body = json.loads(body)
         return service_client.ResponseBody(resp, body)
 
-    def get_user_by_username(self, tenant_id, username):
-        users = self.list_tenant_users(tenant_id)['users']
-        for user in users:
-            if user['name'] == username:
-                return user
-        raise lib_exc.NotFound('No such user')
-
     def create_service(self, name, type, **kwargs):
         """Create a service."""
         post_body = {
diff --git a/tempest/tests/cmd/test_javelin.py b/tempest/tests/cmd/test_javelin.py
index ea0b7a7..d328d56 100644
--- a/tempest/tests/cmd/test_javelin.py
+++ b/tempest/tests/cmd/test_javelin.py
@@ -109,8 +109,9 @@
         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.Patch(
+                        'tempest.common.identity.get_user_by_username',
+                        side_effect=lib_exc.NotFound("user is not found")))
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",
                                               return_value=self.fake_client))
 
@@ -309,8 +310,11 @@
         fake_auth = self.fake_client
         fake_auth.identity.list_tenants.return_value = \
             {'tenants': [fake_tenant]}
-        fake_auth.identity.get_user_by_username.return_value = fake_user
+        fake_auth.identity.list_users.return_value = {'users': [fake_user]}
 
+        self.useFixture(mockpatch.Patch(
+                        'tempest.common.identity.get_user_by_username',
+                        return_value=fake_user))
         self.useFixture(mockpatch.PatchObject(javelin, "keystone_admin",
                                               return_value=fake_auth))