Merge "Fix no attribute 'is_dvr_router' error in test_l3_agent_scheduler"
diff --git a/tempest/api/compute/admin/test_networks.py b/tempest/api/compute/admin/test_networks.py
index 477dc61..981a5c9 100644
--- a/tempest/api/compute/admin/test_networks.py
+++ b/tempest/api/compute/admin/test_networks.py
@@ -47,7 +47,7 @@
         else:
             configured_network = networks
         configured_network = configured_network[0]
-        network = self.client.get_network(configured_network['id'])
+        network = self.client.show_network(configured_network['id'])
         self.assertEqual(configured_network['label'], network['label'])
 
     @test.idempotent_id('df3d1046-6fa5-4b2c-ad0c-cfa46a351cb9')
diff --git a/tempest/api/compute/limits/test_absolute_limits.py b/tempest/api/compute/limits/test_absolute_limits.py
index 06a77cc..0029bb9 100644
--- a/tempest/api/compute/limits/test_absolute_limits.py
+++ b/tempest/api/compute/limits/test_absolute_limits.py
@@ -27,7 +27,8 @@
     @test.idempotent_id('b54c66af-6ab6-4cf0-a9e5-a0cb58d75e0b')
     def test_absLimits_get(self):
         # To check if all limits are present in the response
-        absolute_limits = self.client.show_limits()
+        limits = self.client.show_limits()
+        absolute_limits = limits['absolute']
         expected_elements = ['maxImageMeta', 'maxPersonality',
                              'maxPersonalitySize',
                              'maxServerMeta', 'maxTotalCores',
diff --git a/tempest/api/compute/limits/test_absolute_limits_negative.py b/tempest/api/compute/limits/test_absolute_limits_negative.py
index bdbe3f1..cbd2004 100644
--- a/tempest/api/compute/limits/test_absolute_limits_negative.py
+++ b/tempest/api/compute/limits/test_absolute_limits_negative.py
@@ -38,7 +38,8 @@
     def test_max_image_meta_exceed_limit(self):
         # We should not create vm with image meta over maxImageMeta limit
         # Get max limit value
-        max_meta = self.client.get_specific_absolute_limit('maxImageMeta')
+        limits = self.client.show_limits()
+        max_meta = limits['absolute']['maxImageMeta']
 
         # No point in running this test if there is no limit.
         if int(max_meta) == -1:
diff --git a/tempest/api/compute/servers/test_server_personality.py b/tempest/api/compute/servers/test_server_personality.py
index 3a019b4..b3cc072 100644
--- a/tempest/api/compute/servers/test_server_personality.py
+++ b/tempest/api/compute/servers/test_server_personality.py
@@ -34,8 +34,8 @@
         # number of files are injected into the server.
         file_contents = 'This is a test file.'
         personality = []
-        max_file_limit = \
-            self.user_client.get_specific_absolute_limit("maxPersonality")
+        limits = self.user_client.show_limits()
+        max_file_limit = limits['absolute']['maxPersonality']
         if max_file_limit == -1:
             raise self.skipException("No limit for personality files")
         for i in range(0, int(max_file_limit) + 1):
@@ -52,8 +52,8 @@
         # 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.'
-        max_file_limit = \
-            self.user_client.get_specific_absolute_limit("maxPersonality")
+        limits = self.user_client.show_limits()
+        max_file_limit = limits['absolute']['maxPersonality']
         if max_file_limit == -1:
             raise self.skipException("No limit for personality files")
         person = []
diff --git a/tempest/api/object_storage/test_object_expiry.py b/tempest/api/object_storage/test_object_expiry.py
index fec6873..b263050 100644
--- a/tempest/api/object_storage/test_object_expiry.py
+++ b/tempest/api/object_storage/test_object_expiry.py
@@ -56,18 +56,33 @@
         # we want to ensure that we will sleep long enough for things to
         # actually expire, so figure out how many secs in the future that is.
         sleepy_time = int(resp['x-delete-at']) - int(time.time())
-
+        sleepy_time = sleepy_time if sleepy_time > 0 else 0
         resp, body = self.object_client.get_object(self.container_name,
                                                    self.object_name)
         self.assertHeaders(resp, 'Object', 'GET')
         self.assertIn('x-delete-at', resp)
 
-        # add a couple of seconds for safety.
-        time.sleep(sleepy_time + 3)
+        # add several seconds for safety.
+        time.sleep(sleepy_time)
+
+        # Checking whether object still exists for several seconds:
+        # sometimes object is not deleted immediately, so we are making
+        # get calls for an approximately 1 minute in a total. Get calls
+        # can take 3s each sometimes so we are making the requests in
+        # exponential periodicity
+        for i in range(1, 6):
+            time.sleep(2 ** i)
+            try:
+                self.object_client.get_object(self.container_name,
+                                              self.object_name)
+            except lib_exc.NotFound:
+                break
 
         # object should not be there anymore
-        self.assertRaises(lib_exc.NotFound, self.object_client.get_object,
-                          self.container_name, self.object_name)
+        self.assertRaises(lib_exc.NotFound,
+                          self.object_client.get_object,
+                          self.container_name,
+                          self.object_name)
 
     @test.idempotent_id('fb024a42-37f3-4ba5-9684-4f40a7910b41')
     def test_get_object_after_expiry_time(self):
diff --git a/tempest/cmd/cleanup_service.py b/tempest/cmd/cleanup_service.py
index 4dc03f9..8ec4670 100644
--- a/tempest/cmd/cleanup_service.py
+++ b/tempest/cmd/cleanup_service.py
@@ -378,7 +378,7 @@
     def dry_run(self):
         client = self.limits_client
         quotas = client.show_limits()
-        self.data['compute_quotas'] = quotas
+        self.data['compute_quotas'] = quotas['absolute']
 
 
 # Begin network service classes
diff --git a/tempest/common/fixed_network.py b/tempest/common/fixed_network.py
index 18386ce..de44c4d 100644
--- a/tempest/common/fixed_network.py
+++ b/tempest/common/fixed_network.py
@@ -40,7 +40,8 @@
     if not name:
         raise exceptions.InvalidConfiguration()
 
-    networks = compute_networks_client.list_networks(name=name)
+    networks = compute_networks_client.list_networks()
+    networks = [n for n in networks if n['label'] == name]
 
     # Check that a network exists, else raise an InvalidConfigurationException
     if len(networks) == 1:
diff --git a/tempest/services/compute/json/limits_client.py b/tempest/services/compute/json/limits_client.py
index 347467d..1454b73 100644
--- a/tempest/services/compute/json/limits_client.py
+++ b/tempest/services/compute/json/limits_client.py
@@ -25,13 +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']['absolute'])
-
-    def get_specific_absolute_limit(self, absolute_limit):
-        resp, body = self.get("limits")
-        body = json.loads(body)
-        self.validate_response(schema.get_limit, resp, body)
-        if absolute_limit not in body['limits']['absolute']:
-            return None
-        else:
-            return body['limits']['absolute'][absolute_limit]
+        return service_client.ResponseBody(resp, body['limits'])
diff --git a/tempest/services/compute/json/networks_client.py b/tempest/services/compute/json/networks_client.py
index 0ae0920..e641787 100644
--- a/tempest/services/compute/json/networks_client.py
+++ b/tempest/services/compute/json/networks_client.py
@@ -20,17 +20,13 @@
 
 class NetworksClientJSON(service_client.ServiceClient):
 
-    def list_networks(self, name=None):
+    def list_networks(self):
         resp, body = self.get("os-networks")
         body = json.loads(body)
         self.expected_success(200, resp.status)
-        if name:
-            networks = [n for n in body['networks'] if n['label'] == name]
-        else:
-            networks = body['networks']
-        return service_client.ResponseBodyList(resp, networks)
+        return service_client.ResponseBodyList(resp, body['networks'])
 
-    def get_network(self, network_id):
+    def show_network(self, network_id):
         resp, body = self.get("os-networks/%s" % str(network_id))
         body = json.loads(body)
         self.expected_success(200, resp.status)
diff --git a/tempest/tests/common/test_accounts.py b/tempest/tests/common/test_accounts.py
index 596e811..e713969 100644
--- a/tempest/tests/common/test_accounts.py
+++ b/tempest/tests/common/test_accounts.py
@@ -299,7 +299,8 @@
         test_accounts_class = accounts.Accounts('v2', 'test_name')
         with mock.patch('tempest.services.compute.json.networks_client.'
                         'NetworksClientJSON.list_networks',
-                        return_value=[{'name': 'network-2', 'id': 'fake-id'}]):
+                        return_value=[{'name': 'network-2', 'id': 'fake-id',
+                                       'label': 'network-2'}]):
             creds = test_accounts_class.get_creds_by_roles(['role-7'])
         self.assertTrue(isinstance(creds, cred_provider.TestResources))
         network = creds.network