Return complete response from limits,migration client

Currently compute limits and migration client returns Response by
removing top key from Response.
For example-
 return service_client.ResponseBody(resp, body['limits'])

As service clients are in direction to move to Tempest-lib, all
service clients should return Response without any truncation.
One good example is Resource pagination links which are lost with current
way of return value. Resource pagination links are present in parallel
(not inside) to top key of Response.

This patch makes compute limits and migration client to return complete
Response body.

Change-Id: Ice3665e91ff34409f6f105303213303d1fca1816
Implements: blueprint method-return-value-and-move-service-clients-to-lib
diff --git a/tempest/api/compute/admin/test_live_migration.py b/tempest/api/compute/admin/test_live_migration.py
index d6bc6f5..ef88231 100644
--- a/tempest/api/compute/admin/test_live_migration.py
+++ b/tempest/api/compute/admin/test_live_migration.py
@@ -111,7 +111,8 @@
 
         self._migrate_server_to(server_id, target_host)
         waiters.wait_for_server_status(self.servers_client, server_id, state)
-        migration_list = self.admin_migration_client.list_migrations()
+        migration_list = (self.admin_migration_client.list_migrations()
+                          ['migrations'])
 
         msg = ("Live Migration failed. Migrations list for Instance "
                "%s: [" % server_id)
diff --git a/tempest/api/compute/admin/test_migrations.py b/tempest/api/compute/admin/test_migrations.py
index 5af7406..c993bb8 100644
--- a/tempest/api/compute/admin/test_migrations.py
+++ b/tempest/api/compute/admin/test_migrations.py
@@ -49,7 +49,7 @@
         waiters.wait_for_server_status(self.servers_client,
                                        server_id, 'ACTIVE')
 
-        body = self.client.list_migrations()
+        body = self.client.list_migrations()['migrations']
 
         instance_uuids = [x['instance_uuid'] for x in body]
         self.assertIn(server_id, instance_uuids)
diff --git a/tempest/api/compute/admin/test_quotas_negative.py b/tempest/api/compute/admin/test_quotas_negative.py
index 8dcd0b2..0a9d41e 100644
--- a/tempest/api/compute/admin/test_quotas_negative.py
+++ b/tempest/api/compute/admin/test_quotas_negative.py
@@ -112,7 +112,7 @@
         default_sg_quota = quota_set['security_groups']
 
         # Set the quota to number of used security groups
-        sg_quota = self.limits_client.show_limits()['absolute'][
+        sg_quota = self.limits_client.show_limits()['limits']['absolute'][
             'totalSecurityGroupsUsed']
 
         quota_set =\
diff --git a/tempest/api/compute/limits/test_absolute_limits.py b/tempest/api/compute/limits/test_absolute_limits.py
index 0029bb9..69811f4 100644
--- a/tempest/api/compute/limits/test_absolute_limits.py
+++ b/tempest/api/compute/limits/test_absolute_limits.py
@@ -27,7 +27,7 @@
     @test.idempotent_id('b54c66af-6ab6-4cf0-a9e5-a0cb58d75e0b')
     def test_absLimits_get(self):
         # To check if all limits are present in the response
-        limits = self.client.show_limits()
+        limits = self.client.show_limits()['limits']
         absolute_limits = limits['absolute']
         expected_elements = ['maxImageMeta', 'maxPersonality',
                              'maxPersonalitySize',
diff --git a/tempest/api/compute/limits/test_absolute_limits_negative.py b/tempest/api/compute/limits/test_absolute_limits_negative.py
index cbd2004..5755f5b 100644
--- a/tempest/api/compute/limits/test_absolute_limits_negative.py
+++ b/tempest/api/compute/limits/test_absolute_limits_negative.py
@@ -38,7 +38,7 @@
     def test_max_image_meta_exceed_limit(self):
         # We should not create vm with image meta over maxImageMeta limit
         # Get max limit value
-        limits = self.client.show_limits()
+        limits = self.client.show_limits()['limits']
         max_meta = limits['absolute']['maxImageMeta']
 
         # No point in running this test if there is no limit.
diff --git a/tempest/api/compute/servers/test_server_personality.py b/tempest/api/compute/servers/test_server_personality.py
index b3cc072..a7fc235 100644
--- a/tempest/api/compute/servers/test_server_personality.py
+++ b/tempest/api/compute/servers/test_server_personality.py
@@ -34,7 +34,7 @@
         # number of files are injected into the server.
         file_contents = 'This is a test file.'
         personality = []
-        limits = self.user_client.show_limits()
+        limits = self.user_client.show_limits()['limits']
         max_file_limit = limits['absolute']['maxPersonality']
         if max_file_limit == -1:
             raise self.skipException("No limit for personality files")
@@ -52,7 +52,7 @@
         # Server should be created successfully if maximum allowed number of
         # files is injected into the server during creation.
         file_contents = 'This is a test file.'
-        limits = self.user_client.show_limits()
+        limits = self.user_client.show_limits()['limits']
         max_file_limit = limits['absolute']['maxPersonality']
         if max_file_limit == -1:
             raise self.skipException("No limit for personality files")
diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py
index 26e4569..5ad33c8 100644
--- a/tempest/cmd/cleanup_service.py
+++ b/tempest/cmd/cleanup_service.py
@@ -372,7 +372,7 @@
 
     def dry_run(self):
         client = self.limits_client
-        quotas = client.show_limits()
+        quotas = client.show_limits()['limits']
         self.data['compute_quotas'] = quotas['absolute']
 
 
diff --git a/tempest/services/compute/json/limits_client.py b/tempest/services/compute/json/limits_client.py
index 4287619..b64b4a5 100644
--- a/tempest/services/compute/json/limits_client.py
+++ b/tempest/services/compute/json/limits_client.py
@@ -25,4 +25,4 @@
         resp, body = self.get("limits")
         body = json.loads(body)
         self.validate_response(schema.get_limit, resp, body)
-        return service_client.ResponseBody(resp, body['limits'])
+        return service_client.ResponseBody(resp, body)
diff --git a/tempest/services/compute/json/migrations_client.py b/tempest/services/compute/json/migrations_client.py
index 06c8f13..b302539 100644
--- a/tempest/services/compute/json/migrations_client.py
+++ b/tempest/services/compute/json/migrations_client.py
@@ -31,4 +31,4 @@
         resp, body = self.get(url)
         body = json.loads(body)
         self.validate_response(schema.list_migrations, resp, body)
-        return service_client.ResponseBodyList(resp, body['migrations'])
+        return service_client.ResponseBody(resp, body)
diff --git a/tempest/tests/services/compute/test_limits_client.py b/tempest/tests/services/compute/test_limits_client.py
index 4086210..099d5ca 100644
--- a/tempest/tests/services/compute/test_limits_client.py
+++ b/tempest/tests/services/compute/test_limits_client.py
@@ -31,27 +31,33 @@
             fake_auth, 'compute', 'regionOne')
 
     def _test_show_limits(self, bytes_body=False):
-        expected = {"rate": [],
-                    "absolute": {"maxServerMeta": 128,
-                                 "maxPersonality": 5,
-                                 "totalServerGroupsUsed": 0,
-                                 "maxImageMeta": 128,
-                                 "maxPersonalitySize": 10240,
-                                 "maxServerGroups": 10,
-                                 "maxSecurityGroupRules": 20,
-                                 "maxTotalKeypairs": 100,
-                                 "totalCoresUsed": 0,
-                                 "totalRAMUsed": 0,
-                                 "totalInstancesUsed": 0,
-                                 "maxSecurityGroups": 10,
-                                 "totalFloatingIpsUsed": 0,
-                                 "maxTotalCores": 20,
-                                 "totalSecurityGroupsUsed": 0,
-                                 "maxTotalFloatingIps": 10,
-                                 "maxTotalInstances": 10,
-                                 "maxTotalRAMSize": 51200,
-                                 "maxServerGroupMembers": 10}}
-        serialized_body = json.dumps({"limits": expected})
+        expected = {
+            "limits": {
+                "rate": [],
+                "absolute": {
+                    "maxServerMeta": 128,
+                    "maxPersonality": 5,
+                    "totalServerGroupsUsed": 0,
+                    "maxImageMeta": 128,
+                    "maxPersonalitySize": 10240,
+                    "maxServerGroups": 10,
+                    "maxSecurityGroupRules": 20,
+                    "maxTotalKeypairs": 100,
+                    "totalCoresUsed": 0,
+                    "totalRAMUsed": 0,
+                    "totalInstancesUsed": 0,
+                    "maxSecurityGroups": 10,
+                    "totalFloatingIpsUsed": 0,
+                    "maxTotalCores": 20,
+                    "totalSecurityGroupsUsed": 0,
+                    "maxTotalFloatingIps": 10,
+                    "maxTotalInstances": 10,
+                    "maxTotalRAMSize": 51200,
+                    "maxServerGroupMembers": 10
+                }
+            }
+        }
+        serialized_body = json.dumps(expected)
         if bytes_body:
             serialized_body = serialized_body.encode('utf-8')