diff --git a/heat_tempest_plugin/common/remote_client.py b/heat_tempest_plugin/common/remote_client.py
index f23622b..aa652be 100644
--- a/heat_tempest_plugin/common/remote_client.py
+++ b/heat_tempest_plugin/common/remote_client.py
@@ -15,9 +15,9 @@
 import socket
 import time
 
+import io
 from oslo_log import log as logging
 import paramiko
-import six
 
 from heat_tempest_plugin.common import exceptions
 
@@ -31,9 +31,9 @@
         self.host = host
         self.username = username
         self.password = password
-        if isinstance(pkey, six.string_types):
+        if isinstance(pkey, str):
             pkey = paramiko.RSAKey.from_private_key(
-                six.moves.cStringIO(str(pkey)))
+                io.cStringIO(str(pkey)))
         self.pkey = pkey
         self.look_for_keys = look_for_keys
         self.key_filename = key_filename
@@ -151,7 +151,7 @@
         network = self.conf.network_for_ssh
         ip_version = self.conf.ip_version_for_ssh
         ssh_channel_timeout = self.conf.ssh_channel_timeout
-        if isinstance(server, six.string_types):
+        if isinstance(server, str):
             ip_address = server
         else:
             addresses = server['addresses'][network]
diff --git a/heat_tempest_plugin/common/test.py b/heat_tempest_plugin/common/test.py
index e5ed9d0..475d416 100644
--- a/heat_tempest_plugin/common/test.py
+++ b/heat_tempest_plugin/common/test.py
@@ -21,10 +21,9 @@
 from neutronclient.common import exceptions as network_exceptions
 from oslo_log import log as logging
 from oslo_utils import timeutils
-import six
-from six.moves import urllib
 import testscenarios
 import testtools
+import urllib
 
 from heat_tempest_plugin.common import exceptions
 from heat_tempest_plugin.common import remote_client
@@ -67,7 +66,7 @@
 
 
 def rand_name(name=''):
-    randbits = six.text_type(random.randint(1, 0x7fffffff))
+    randbits = str(random.randint(1, 0x7fffffff))
     if name:
         return name + '-' + randbits
     else:
@@ -109,6 +108,22 @@
     return decorator
 
 
+def requires_service(service):
+    '''Decorator for tests requiring a specific service being available.
+
+    The decorated test will be skipped when a service is not available. This
+    based on the [service_available] options implemented in tempest
+    '''
+    def decorator(test_method):
+        if not getattr(config.CONF.service_available, service, True):
+            skipper = testtools.skip(
+                "%s service not available, skipping test." % service)
+            return skipper(test_method)
+        else:
+            return test_method
+    return decorator
+
+
 def requires_service_type(service_type):
     '''Decorator for tests requiring a specific service being available.
 
@@ -125,7 +140,7 @@
                 service_type, conf.region, conf.endpoint_type)
         except kc_exceptions.EndpointNotFound:
             skipper = testtools.skip(
-                "%s service not available, skipping test." % service_type)
+                "%s service type not available, skipping test." % service_type)
             return skipper(test_method)
         else:
             return test_method
@@ -204,7 +219,7 @@
         self.setup_clients(self.conf, True)
 
     def get_remote_client(self, server_or_ip, username, private_key=None):
-        if isinstance(server_or_ip, six.string_types):
+        if isinstance(server_or_ip, str):
             ip = server_or_ip
         else:
             network_name_for_ssh = self.conf.network_for_ssh
diff --git a/heat_tempest_plugin/tests/api/test_heat_api.py b/heat_tempest_plugin/tests/api/test_heat_api.py
index 9720fe3..24e6059 100644
--- a/heat_tempest_plugin/tests/api/test_heat_api.py
+++ b/heat_tempest_plugin/tests/api/test_heat_api.py
@@ -20,7 +20,6 @@
 from gabbi import driver
 import keystoneauth1
 from oslo_log import log as logging
-import six
 from tempest import config
 
 from heat_tempest_plugin.common import test
@@ -101,7 +100,7 @@
                                        test_loader_name=__name__)
     except TypeError as ex:
         err_msg = "got an unexpected keyword argument 'cert_validate'"
-        if err_msg in six.text_type(ex):
+        if err_msg in str(ex):
             api_tests = driver.build_tests(test_dir, loader,
                                            url=endpoint, host="",
                                            fixture_module=fixtures,
diff --git a/heat_tempest_plugin/tests/functional/test_preview.py b/heat_tempest_plugin/tests/functional/test_preview.py
index f1a6d72..d984272 100644
--- a/heat_tempest_plugin/tests/functional/test_preview.py
+++ b/heat_tempest_plugin/tests/functional/test_preview.py
@@ -11,7 +11,6 @@
 #    under the License.
 
 from heatclient import exc
-import six
 from tempest.lib import decorators
 
 from heat_tempest_plugin.tests.functional import functional_base
@@ -133,7 +132,7 @@
 
         self.assertIn('Property error: : resources.two.properties.value: '
                       ': The Parameter (missing) was not provided.',
-                      six.text_type(excp))
+                      str(excp))
 
     @decorators.idempotent_id('0449113c-ff90-4f2b-8825-27ea35c1983f')
     def test_nested_pass(self):
diff --git a/heat_tempest_plugin/tests/functional/test_remote_stack.py b/heat_tempest_plugin/tests/functional/test_remote_stack.py
index 6c5268c..f9409d1 100644
--- a/heat_tempest_plugin/tests/functional/test_remote_stack.py
+++ b/heat_tempest_plugin/tests/functional/test_remote_stack.py
@@ -12,7 +12,6 @@
 
 
 from heatclient import exc
-import six
 from tempest.lib import decorators
 
 from heat_tempest_plugin.common import test
@@ -146,7 +145,7 @@
                      'at region "DARKHOLE" due to '
                      '"(?:public|internal|admin)(?:URL)? endpoint for '
                      'orchestration service in DARKHOLE region not found"')
-        self.assertRegex(six.text_type(ex), error_msg)
+        self.assertRegex(str(ex), error_msg)
 
     @decorators.idempotent_id('b2190dfc-d223-4595-b168-6c42b0f3a3e5')
     def test_stack_resource_validation_fail(self):
@@ -159,7 +158,7 @@
                      'endpoint at region "%s" due to '
                      '"ERROR: The template section is '
                      'invalid: resource"') % self.conf.region
-        self.assertEqual(error_msg, six.text_type(ex))
+        self.assertEqual(error_msg, str(ex))
 
     @decorators.idempotent_id('141f0478-121b-4e61-bde7-d5551bfd1fc2')
     def test_stack_update(self):
diff --git a/heat_tempest_plugin/tests/functional/test_template_validate.py b/heat_tempest_plugin/tests/functional/test_template_validate.py
index e41f952..46ad4a2 100644
--- a/heat_tempest_plugin/tests/functional/test_template_validate.py
+++ b/heat_tempest_plugin/tests/functional/test_template_validate.py
@@ -11,8 +11,6 @@
 #    under the License.
 
 
-import six
-
 from heatclient import exc
 from tempest.lib import decorators
 
@@ -169,7 +167,7 @@
         ex = self.assertRaises(exc.HTTPBadRequest,
                                self.client.stacks.validate,
                                template=fail_template)
-        self.assertIn('The template version is invalid', six.text_type(ex))
+        self.assertIn('The template version is invalid', str(ex))
 
     @decorators.idempotent_id('6a6472d2-71fa-4ebe-a2b6-20878838555b')
     def test_template_validate_parameter_groups(self):
diff --git a/heat_tempest_plugin/tests/scenario/test_base_resources.py b/heat_tempest_plugin/tests/scenario/test_base_resources.py
index 44de5b1..c9ed342 100644
--- a/heat_tempest_plugin/tests/scenario/test_base_resources.py
+++ b/heat_tempest_plugin/tests/scenario/test_base_resources.py
@@ -17,6 +17,7 @@
 from heat_tempest_plugin.tests.scenario import scenario_base
 
 
+@test.requires_service('cinder')
 class BasicResourcesTest(scenario_base.ScenarioTestsBase):
 
     def setUp(self):
diff --git a/heat_tempest_plugin/tests/scenario/test_remote_deeply_nested.py b/heat_tempest_plugin/tests/scenario/test_remote_deeply_nested.py
index ef05285..5ed428b 100644
--- a/heat_tempest_plugin/tests/scenario/test_remote_deeply_nested.py
+++ b/heat_tempest_plugin/tests/scenario/test_remote_deeply_nested.py
@@ -10,7 +10,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import six
 import uuid
 
 from heat_tempest_plugin.tests.scenario import scenario_base
@@ -33,7 +32,7 @@
 
         stack = self.client.stacks.get(stack_id)
         router_id = self._stack_output(stack, 'router')
-        self.assertIsInstance(router_id, six.string_types)
+        self.assertIsInstance(router_id, str)
         uuid.UUID(router_id)
 
         self._stack_delete(stack_id)
diff --git a/heat_tempest_plugin/tests/scenario/test_server_software_config.py b/heat_tempest_plugin/tests/scenario/test_server_software_config.py
index 7da2853..1f2499b 100644
--- a/heat_tempest_plugin/tests/scenario/test_server_software_config.py
+++ b/heat_tempest_plugin/tests/scenario/test_server_software_config.py
@@ -11,7 +11,6 @@
 #    under the License.
 
 from heatclient.common import template_utils
-import six
 from tempest.lib import decorators
 
 from heat_tempest_plugin.tests.scenario import scenario_base
@@ -89,7 +88,7 @@
         # config isn't re-triggered
         complete_deployments = dict((d['name'], d) for d in
                                     complete_server_metadata['deployments'])
-        for k, v in six.iteritems(deployments):
+        for k, v in deployments.items():
             self.assertEqual(v, complete_deployments[k])
 
         stack = self.client.stacks.get(sid)
diff --git a/heat_tempest_plugin/tests/scenario/test_volumes.py b/heat_tempest_plugin/tests/scenario/test_volumes.py
index 3a179a9..11184da 100644
--- a/heat_tempest_plugin/tests/scenario/test_volumes.py
+++ b/heat_tempest_plugin/tests/scenario/test_volumes.py
@@ -14,7 +14,6 @@
 from cinderclient import exceptions as cinder_exceptions
 import copy
 from oslo_log import log as logging
-import six
 from tempest.lib import decorators
 
 from heat_tempest_plugin.common import exceptions
@@ -25,6 +24,7 @@
 
 
 @test.requires_service_feature('volume', 'backup')
+@test.requires_service('cinder')
 class VolumeBackupRestoreIntegrationTest(scenario_base.ScenarioTestsBase):
     """Class is responsible for testing of volume backup."""
 
@@ -44,7 +44,7 @@
     def _outputs_verify(self, stack, expected_status='available'):
         self.assertEqual(expected_status,
                          self._stack_output(stack, 'status'))
-        self.assertEqual(six.text_type(self.volume_size),
+        self.assertEqual(str(self.volume_size),
                          self._stack_output(stack, 'size'))
         self.assertEqual(self.volume_description,
                          self._stack_output(stack, 'display_description'))
