Merge "Add to runtest variables for vnc_console to compute-feature-enabled"
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):