Fix python3 Compatibility for urllib

The urllib module has been split into parts and renamed
in Python 3 to urllib.request, urllib.parse, and urllib.error [1].
This patch makes it work for both python2 and python3.

[1] https://docs.python.org/2/library/urllib.html

Change-Id: I36c6670acbe0f7aaf6d1ff17bcd392670f85b418
This commit is contained in:
yatin 2018-11-12 16:12:58 +05:30 committed by Xiyuan Wang
parent 70a2b1ab6b
commit d7b2ca5333

@ -15,7 +15,10 @@ import functools
from oslo_serialization import jsonutils
from oslo_utils import uuidutils
import swiftclient
import urllib
try: # Python3
from urllib.parse import quote_plus
except ImportError: # Python2
from urllib import quote_plus
from zaqar import storage
from zaqar.storage import errors
@ -82,7 +85,7 @@ class SubscriptionController(storage.Subscription):
utils._put_or_create_container(
self._client,
sub_container,
urllib.quote_plus(subscriber),
quote_plus(subscriber),
contents=slug,
headers={'x-delete-after': ttl, 'if-none-match': '*'})
except swiftclient.ClientException as exc:
@ -111,7 +114,7 @@ class SubscriptionController(storage.Subscription):
try:
self._client.put_object(
sub_container,
urllib.quote_plus(kwargs['subscriber']),
quote_plus(kwargs['subscriber']),
contents=subscription_id,
headers={'x-delete-after': ttl, 'if-none-match': '*'})
except swiftclient.ClientException as exc:
@ -119,7 +122,7 @@ class SubscriptionController(storage.Subscription):
raise errors.SubscriptionAlreadyExists()
raise
self._client.delete_object(sub_container,
urllib.quote_plus(data['subscriber']))
quote_plus(data['subscriber']))
data.update(kwargs)
self._client.put_object(container,
subscription_id,
@ -139,7 +142,7 @@ class SubscriptionController(storage.Subscription):
sub_container = utils._subscriber_container(queue, project)
try:
self._client.delete_object(sub_container,
urllib.quote_plus(data['subscriber']))
quote_plus(data['subscriber']))
except swiftclient.ClientException as exc:
if exc.http_status != 404:
raise
@ -153,7 +156,7 @@ class SubscriptionController(storage.Subscription):
def get_with_subscriber(self, queue, subscriber, project=None):
sub_container = utils._subscriber_container(queue, project)
headers, obj = self._client.get_object(sub_container,
urllib.quote_plus(subscriber))
quote_plus(subscriber))
return self.get(queue, obj, project)
def confirm(self, queue, subscription_id, project=None, confirmed=True):