diff --git a/_modules/runtest/tempest_sections/compute_feature_enabled.py b/_modules/runtest/tempest_sections/compute_feature_enabled.py
index fe81fe1..70d5242 100644
--- a/_modules/runtest/tempest_sections/compute_feature_enabled.py
+++ b/_modules/runtest/tempest_sections/compute_feature_enabled.py
@@ -46,9 +46,11 @@
     def attach_encrypted_volume(self):
         compute_check = conditions.BaseRule('*.nova.compute.enabled', 'eq', True)
         cinder_check = conditions.BaseRule('*.cinder.controller.enabled', 'eq', True)
-        if compute_check.check(self.pillar) and cinder_check.check(self.pillar):
+        barbican_check = conditions.BaseRule('*.barbican.server.enabled', 'eq', True)
+        if compute_check.check(self.pillar) and cinder_check.check(self.pillar) and barbican_check.check(self.pillar):
             c = conditions.BaseRule('nova.controller.enabled', 'eq', True)
             return self.get_item_when_condition_match('nova.controller.barbican.enabled', c)
+        return False
 
     @property
     def block_migrate_cinder_iscsi(self):
diff --git a/_modules/runtest/tempest_sections/service_available.py b/_modules/runtest/tempest_sections/service_available.py
index 64fd929..a205f53 100644
--- a/_modules/runtest/tempest_sections/service_available.py
+++ b/_modules/runtest/tempest_sections/service_available.py
@@ -1,5 +1,6 @@
-
 import base_section
+from runtest import conditions
+
 
 class ServiceAvailable(base_section.BaseSection):
 
@@ -24,8 +25,6 @@
         'keystone',
     ]
 
-
-
     def _is_service_enabled(self, service):
         """Check if service is enabled in specific environment.
 
@@ -106,7 +105,12 @@
 
     @property
     def swift(self):
-        return self._is_service_enabled('swift')
+        radosgw = conditions.BaseRule('*.ceph.radosgw.enabled', 'eq',
+                                      True).check(self.pillar)
+        if radosgw:
+            return True
+        else:
+            return self._is_service_enabled('swift')
 
     @property
     def horizon(self):
@@ -114,4 +118,4 @@
 
     @property
     def keystone(self):
-        return self._is_service_enabled('keystone')
\ No newline at end of file
+        return self._is_service_enabled('keystone')
diff --git a/_modules/runtest/tempest_sections/volume.py b/_modules/runtest/tempest_sections/volume.py
index 8a2ef73..df24023 100644
--- a/_modules/runtest/tempest_sections/volume.py
+++ b/_modules/runtest/tempest_sections/volume.py
@@ -72,7 +72,21 @@
 
     @property
     def storage_protocol(self):
-        pass
+        c = conditions.BaseRule('cinder.volume.enabled', 'eq', True)
+        backends = self.get_item_when_condition_match(
+            'cinder.controller.backend', c)
+        if not backends:
+            return
+
+        # TODO: Add more backends here
+        protocol_map = {'ceph': 'ceph', 'lvm': 'ISCSI'}
+
+        # TODO: cinder support multibackends with different storage protocols,
+        # pick first we know about for now, but might be refactored in future.
+        for backend_name,backend in backends.iteritems():
+            res = backend['engine']
+            if res:
+              return res
 
     @property
     def vendor_name(self):
