diff --git a/tempest/api/network/test_subnetpools_extensions.py b/tempest/api/network/test_subnetpools_extensions.py
index d027132..c6cc8e2 100644
--- a/tempest/api/network/test_subnetpools_extensions.py
+++ b/tempest/api/network/test_subnetpools_extensions.py
@@ -30,7 +30,7 @@
         Lists subnet pool.
         Show subnet pool details.
 
-    v2.0 of the Neutron API is assumed. It is assumed that subnetpools
+    v2.0 of the Neutron API is assumed. It is assumed that subnet_allocation
     options mentioned in the [network-feature-enabled] section and
     default_network option mentioned in the [network] section of
     etc/tempest.conf:
@@ -40,8 +40,8 @@
     @classmethod
     def skip_checks(cls):
         super(SubnetPoolsTestJSON, cls).skip_checks()
-        if not test.is_extension_enabled('subnetpools', 'network'):
-            msg = "subnet pools extension not enabled."
+        if not test.is_extension_enabled('subnet_allocation', 'network'):
+            msg = "subnet_allocation extension not enabled."
             raise cls.skipException(msg)
 
     @test.attr(type='smoke')
diff --git a/tempest/config.py b/tempest/config.py
index c3c6eda..ea151ae 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -962,7 +962,7 @@
 
 DataProcessingFeaturesGroup = [
     cfg.ListOpt('plugins',
-                default=["vanilla", "hdp"],
+                default=["vanilla", "cdh"],
                 deprecated_group="data_processing-feature-enabled",
                 help="List of enabled data processing plugins")
 ]
diff --git a/tempest/lib/api_schema/response/compute/v2_1/servers.py b/tempest/lib/api_schema/response/compute/v2_1/servers.py
index 485c51a..3289f04 100644
--- a/tempest/lib/api_schema/response/compute/v2_1/servers.py
+++ b/tempest/lib/api_schema/response/compute/v2_1/servers.py
@@ -267,12 +267,13 @@
     'type': 'object',
     'properties': {
         'id': {'type': 'string'},
-        'device': {'type': 'string'},
+        'device': {'type': ['string', 'null']},
         'volumeId': {'type': 'string'},
         'serverId': {'type': ['integer', 'string']}
     },
     'additionalProperties': False,
-    'required': ['id', 'device', 'volumeId', 'serverId']
+    # 'device' is optional in response.
+    'required': ['id', 'volumeId', 'serverId']
 }
 
 attach_volume = {
diff --git a/tempest/lib/auth.py b/tempest/lib/auth.py
index e269fd1..2d20a0b 100644
--- a/tempest/lib/auth.py
+++ b/tempest/lib/auth.py
@@ -325,13 +325,24 @@
 
         parts = urlparse.urlparse(_base_url)
         if filters.get('api_version', None) is not None:
+            version_path = '/%s' % filters['api_version']
             path = re.sub(r'(^|/)+v\d+(?:\.\d+)?',
-                          '/' + filters['api_version'],
+                          version_path,
                           parts.path,
                           count=1)
-            _base_url = _base_url.replace(parts.path, path)
+            _base_url = urlparse.urlunparse((parts.scheme,
+                                             parts.netloc,
+                                             path or version_path,
+                                             parts.params,
+                                             parts.query,
+                                             parts.fragment))
         if filters.get('skip_path', None) is not None and parts.path != '':
-            _base_url = _base_url.replace(parts.path, "/")
+            _base_url = urlparse.urlunparse((parts.scheme,
+                                             parts.netloc,
+                                             '/',
+                                             parts.params,
+                                             parts.query,
+                                             parts.fragment))
 
         return _base_url
 
@@ -447,13 +458,24 @@
 
         parts = urlparse.urlparse(_base_url)
         if filters.get('api_version', None) is not None:
+            version_path = '/%s' % filters['api_version']
             path = re.sub(r'(^|/)+v\d+(?:\.\d+)?',
-                          '/' + filters['api_version'],
+                          version_path,
                           parts.path,
                           count=1)
-            _base_url = _base_url.replace(parts.path, path)
+            _base_url = urlparse.urlunparse((parts.scheme,
+                                             parts.netloc,
+                                             path or version_path,
+                                             parts.params,
+                                             parts.query,
+                                             parts.fragment))
         if filters.get('skip_path', None) is not None:
-            _base_url = _base_url.replace(parts.path, "/")
+            _base_url = urlparse.urlunparse((parts.scheme,
+                                             parts.netloc,
+                                             '/',
+                                             parts.params,
+                                             parts.query,
+                                             parts.fragment))
 
         return _base_url
 
