diff --git a/common/clients.py b/common/clients.py
index a0e2ee0..965b6ab 100644
--- a/common/clients.py
+++ b/common/clients.py
@@ -10,6 +10,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import os
+
 import cinderclient.client
 import heatclient.client
 import keystoneclient.exceptions
@@ -41,15 +43,20 @@
         self.volume_client = self._get_volume_client()
 
     def _get_orchestration_client(self):
-        keystone = self._get_identity_client()
         region = self.conf.region
-        token = keystone.auth_token
+        endpoint = os.environ.get('HEAT_URL')
+        if os.environ.get('OS_NO_CLIENT_AUTH') == 'True':
+            token = None
+        else:
+            keystone = self._get_identity_client()
+            token = keystone.auth_token
         try:
-            endpoint = keystone.service_catalog.url_for(
-                attr='region',
-                filter_value=region,
-                service_type='orchestration',
-                endpoint_type='publicURL')
+            if endpoint is None:
+                endpoint = keystone.service_catalog.url_for(
+                    attr='region',
+                    filter_value=region,
+                    service_type='orchestration',
+                    endpoint_type='publicURL')
         except keystoneclient.exceptions.EndpointNotFound:
             return None
         else:
diff --git a/common/test.py b/common/test.py
index 1278c86..43336a9 100644
--- a/common/test.py
+++ b/common/test.py
@@ -10,6 +10,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import fixtures
 import logging
 import os
 import random
@@ -28,6 +29,7 @@
 from heat_integrationtests.common import remote_client
 
 LOG = logging.getLogger(__name__)
+_LOG_FORMAT = "%(levelname)8s [%(name)s] %(message)s"
 
 
 def call_until_true(func, duration, sleep_for):
@@ -81,6 +83,7 @@
         self.compute_client = self.manager.compute_client
         self.network_client = self.manager.network_client
         self.volume_client = self.manager.volume_client
+        self.useFixture(fixtures.FakeLogger(format=_LOG_FORMAT))
 
     def status_timeout(self, things, thing_id, expected_status,
                        error_status='ERROR',
diff --git a/scenario/test_volumes.py b/scenario/test_volumes.py
index a654f86..fe9ec03 100644
--- a/scenario/test_volumes.py
+++ b/scenario/test_volumes.py
@@ -12,7 +12,7 @@
 
 import logging
 import six
-from testtools.testcase import skip
+from testtools import testcase
 
 from cinderclient import exceptions as cinder_exceptions
 
@@ -77,7 +77,8 @@
         self._wait_for_stack_status(stack_identifier, 'CREATE_COMPLETE')
         return stack, stack_identifier
 
-    @skip('Skipped until failure rate can be reduced ref bug #1382300')
+    @testcase.skip('Skipped until failure rate '
+                   'can be reduced ref bug #1382300')
     def test_cinder_volume_create_backup_restore(self):
         """Ensure the 'Snapshot' deletion policy works.
 
