Merge remote-tracking branch 'origin/feature/qos' into merge-branch

Change-Id: I7f2342d62634f5b4af3a083cc1aaff46efe28519
diff --git a/neutron/tests/tempest/services/identity/v3/json/identity_client.py b/neutron/tests/tempest/services/identity/v3/json/identity_client.py
index f8dd4f7..a7db46a 100644
--- a/neutron/tests/tempest/services/identity/v3/json/identity_client.py
+++ b/neutron/tests/tempest/services/identity/v3/json/identity_client.py
@@ -14,7 +14,8 @@
 #    under the License.
 
 import json
-import urllib
+
+from six.moves.urllib import parse
 
 from neutron.tests.tempest.common import service_client
 
@@ -95,7 +96,7 @@
         """Get the list of users."""
         url = 'users'
         if params:
-            url += '?%s' % urllib.urlencode(params)
+            url += '?%s' % parse.urlencode(params)
         resp, body = self.get(url)
         self.expected_success(200, resp.status)
         body = json.loads(body)
@@ -134,7 +135,7 @@
     def list_projects(self, params=None):
         url = "projects"
         if params:
-            url += '?%s' % urllib.urlencode(params)
+            url += '?%s' % parse.urlencode(params)
         resp, body = self.get(url)
         self.expected_success(200, resp.status)
         body = json.loads(body)
diff --git a/neutron/tests/tempest/services/identity/v3/json/region_client.py b/neutron/tests/tempest/services/identity/v3/json/region_client.py
index e173aa5..d2fa53b 100644
--- a/neutron/tests/tempest/services/identity/v3/json/region_client.py
+++ b/neutron/tests/tempest/services/identity/v3/json/region_client.py
@@ -14,7 +14,8 @@
 #    under the License.
 
 import json
-import urllib
+
+from six.moves.urllib import parse
 
 from neutron.tests.tempest.common import service_client
 
@@ -64,7 +65,7 @@
         """List regions."""
         url = 'regions'
         if params:
-            url += '?%s' % urllib.urlencode(params)
+            url += '?%s' % parse.urlencode(params)
         resp, body = self.get(url)
         self.expected_success(200, resp.status)
         body = json.loads(body)
diff --git a/neutron/tests/tempest/services/network/json/network_client.py b/neutron/tests/tempest/services/network/json/network_client.py
index 82271f7..54f264c 100644
--- a/neutron/tests/tempest/services/network/json/network_client.py
+++ b/neutron/tests/tempest/services/network/json/network_client.py
@@ -12,8 +12,8 @@
 
 import json
 import time
-import urllib
 
+from six.moves.urllib import parse
 from tempest_lib.common.utils import misc
 from tempest_lib import exceptions as lib_exc
 
@@ -98,7 +98,7 @@
         def _list(**filters):
             uri = self.get_uri(plural_name)
             if filters:
-                uri += '?' + urllib.urlencode(filters, doseq=1)
+                uri += '?' + parse.urlencode(filters, doseq=1)
             resp, body = self.get(uri)
             result = {plural_name: self.deserialize_list(body)}
             self.expected_success(200, resp.status)
@@ -124,7 +124,7 @@
             plural = self.pluralize(resource_name)
             uri = '%s/%s' % (self.get_uri(plural), resource_id)
             if fields:
-                uri += '?' + urllib.urlencode(fields, doseq=1)
+                uri += '?' + parse.urlencode(fields, doseq=1)
             resp, body = self.get(uri)
             body = self.deserialize_single(body)
             self.expected_success(200, resp.status)
diff --git a/neutron/tests/tempest/test.py b/neutron/tests/tempest/test.py
index 4bb1960..d95174b 100644
--- a/neutron/tests/tempest/test.py
+++ b/neutron/tests/tempest/test.py
@@ -20,13 +20,13 @@
 import re
 import sys
 import time
-import urllib
 import uuid
 
 import fixtures
 from oslo_log import log as logging
 from oslo_utils import importutils
 import six
+from six.moves.urllib import parse
 import testscenarios
 import testtools
 
@@ -590,7 +590,7 @@
         if not json_dict:
             return url, None
         elif method in ["GET", "HEAD", "PUT", "DELETE"]:
-            return "%s?%s" % (url, urllib.urlencode(json_dict)), None
+            return "%s?%s" % (url, parse.urlencode(json_dict)), None
         else:
             return url, json.dumps(json_dict)