Merge "Change admin project to separate project for each admin user"
diff --git a/_modules/runtest/conditions.py b/_modules/runtest/conditions.py
index 05fe24e..5eb4763 100644
--- a/_modules/runtest/conditions.py
+++ b/_modules/runtest/conditions.py
@@ -1,4 +1,9 @@
-import jsonpath_rw as jsonpath
+try:
+    import jsonpath_rw as jsonpath
+except ImportError:
+    jsonpath = None
+from salt import exceptions
+
 import operator
 
 
@@ -19,6 +24,10 @@
 class BaseRule(object):
 
     def __init__(self, field, op, val, multiple='first'):
+        if not jsonpath:
+            raise exceptions.SaltInvocationError(
+                "Cannot load jsonpath_rw. Please check your environment "
+                "configuration.")
         self.field = field
         self.op = op
         self.value = val
diff --git a/_modules/runtest/tempest_sections/base_section.py b/_modules/runtest/tempest_sections/base_section.py
index 5e2ea3a..b2c12ca 100644
--- a/_modules/runtest/tempest_sections/base_section.py
+++ b/_modules/runtest/tempest_sections/base_section.py
@@ -1,6 +1,11 @@
 
 import abc
-import jsonpath_rw as jsonpath
+
+try:
+    import jsonpath_rw as jsonpath
+except ImportError:
+    jsonpath = None
+from salt import exceptions
 
 import salt
 
@@ -9,6 +14,10 @@
 class BaseSection(object):
 
     def __init__(self, pillar, runtest_opts):
+        if not jsonpath:
+            raise exceptions.SaltInvocationError(
+                "Cannot load jsonpath_rw. Please check your environment "
+                "configuration.")
         super(BaseSection, self).__init__()
         self.pillar = pillar
         self.runtest_opts = runtest_opts
diff --git a/_modules/runtest/tempest_sections/compute_feature_enabled.py b/_modules/runtest/tempest_sections/compute_feature_enabled.py
index 3fd36f8..5c41682 100644
--- a/_modules/runtest/tempest_sections/compute_feature_enabled.py
+++ b/_modules/runtest/tempest_sections/compute_feature_enabled.py
@@ -9,6 +9,7 @@
     options = [
         'api_extensions',
         'attach_encrypted_volume',
+        'barbican_integration_enabled',
         'block_migrate_cinder_iscsi',
         'block_migration_for_live_migration',
         'change_password',
@@ -54,6 +55,16 @@
         return False
 
     @property
+    def barbican_integration_enabled(self):
+        c = conditions.BaseRule('nova.controller.enabled', 'eq', True)
+        integration = self.get_item_when_condition_match(
+            'nova.controller.barbican.enabled', c)
+        if integration:
+            return True
+        else:
+            return False
+
+    @property
     def block_migrate_cinder_iscsi(self):
         c = conditions.BaseRule('cinder.volume.enabled', 'eq', True)
         backends = self.get_item_when_condition_match(
diff --git a/_modules/runtest/tempest_sections/tungsten_plugin.py b/_modules/runtest/tempest_sections/tungsten_plugin.py
index 2b86029..7d52ac7 100644
--- a/_modules/runtest/tempest_sections/tungsten_plugin.py
+++ b/_modules/runtest/tempest_sections/tungsten_plugin.py
@@ -11,6 +11,7 @@
         'service_name',
         'endpoint_type',
         'catalog_type',
+        'contrail_version',
     ]
 
     @property
@@ -29,5 +30,12 @@
             c = conditions.BaseRule('keystone.client.enabled', 'eq', True)
             return self.get_item_when_condition_match(
                 'keystone.client.server.identity.service.opencontrail.type', c)
-        else:
-            pass
+
+    @property
+    def contrail_version(self):
+        contrail_enabled = conditions.BaseRule('*.opencontrail.control.enabled',
+                                               'eq', True, multiple='any')
+        if contrail_enabled.check(self.pillar):
+            c = conditions.BaseRule('opencontrail.control.enabled', 'eq', True)
+            return self.get_item_when_condition_match(
+                'opencontrail.control.version', c)
diff --git a/metadata/service/tempest/artifactory.yml b/metadata/service/tempest/artifactory.yml
index 19806d7..31daa93 100644
--- a/metadata/service/tempest/artifactory.yml
+++ b/metadata/service/tempest/artifactory.yml
@@ -2,6 +2,7 @@
   _param:
     artifactory_user: artifactory_user
     artifactory_password: artifactory_password
+    runtest_artifact_collector_artifactory_endpoint: /oscore-local/${_param:cluster_domain}/${linux:system:name}
   runtest:
     artifact_collector:
       enabled: true
@@ -12,7 +13,7 @@
        host: artifactory.mcp.mirantis.net
        port: 443
        proto: https
-       endpoint: /oscore-local/${_param:cluster_domain}/${linux:system:name}
+       endpoint: ${_param:runtest_artifact_collector_artifactory_endpoint}
       artifacts:
         sys_logs:
           path: /var/log