From e274a23dfcb1df7a67081eaa04c9d3aa142bf4d9 Mon Sep 17 00:00:00 2001 From: Kui Shi Date: Sat, 19 Oct 2013 22:37:07 +0800 Subject: [PATCH] Import urlutils from openstack common Import urlutils for compatability issue Remove obsolete code of Python 2.5 support Partial implement: blueprint py33-support Change-Id: I53515aa0f6f5c936e0d1a4f44b0ebf4998c59492 --- heatclient/common/http.py | 8 +-- .../openstack/common/py3kcompat/__init__.py | 17 +++++++ .../openstack/common/py3kcompat/urlutils.py | 51 +++++++++++++++++++ openstack-common.conf | 1 + 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 heatclient/openstack/common/py3kcompat/__init__.py create mode 100644 heatclient/openstack/common/py3kcompat/urlutils.py diff --git a/heatclient/common/http.py b/heatclient/common/http.py index 403a1231..c9fa89cf 100644 --- a/heatclient/common/http.py +++ b/heatclient/common/http.py @@ -17,8 +17,8 @@ import copy import logging import os import socket -import urlparse +from heatclient.openstack.common.py3kcompat import urlutils from six.moves import http_client as httplib try: @@ -33,9 +33,9 @@ except ImportError: import simplejson as json # Python 2.5 compat fix -if not hasattr(urlparse, 'parse_qsl'): +if not hasattr(urlutils, 'parse_qsl'): import cgi - urlparse.parse_qsl = cgi.parse_qsl + urlutils.parse_qsl = cgi.parse_qsl from heatclient import exc @@ -61,7 +61,7 @@ class HTTPClient(object): @staticmethod def get_connection_params(endpoint, **kwargs): - parts = urlparse.urlparse(endpoint) + parts = urlutils.urlparse(endpoint) _args = (parts.hostname, parts.port, parts.path) _kwargs = {'timeout': float(kwargs.get('timeout', 600))} diff --git a/heatclient/openstack/common/py3kcompat/__init__.py b/heatclient/openstack/common/py3kcompat/__init__.py new file mode 100644 index 00000000..be894cf5 --- /dev/null +++ b/heatclient/openstack/common/py3kcompat/__init__.py @@ -0,0 +1,17 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright 2013 Canonical Ltd. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# diff --git a/heatclient/openstack/common/py3kcompat/urlutils.py b/heatclient/openstack/common/py3kcompat/urlutils.py new file mode 100644 index 00000000..8459c3b4 --- /dev/null +++ b/heatclient/openstack/common/py3kcompat/urlutils.py @@ -0,0 +1,51 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright 2013 Canonical Ltd. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +""" +Python2/Python3 compatibility layer for OpenStack +""" + +import six + +if six.PY3: + # python3 + import urllib.parse + + urlencode = urllib.parse.urlencode + urljoin = urllib.parse.urljoin + quote = urllib.parse.quote + parse_qsl = urllib.parse.parse_qsl + unquote = urllib.parse.unquote + urlparse = urllib.parse.urlparse + urlsplit = urllib.parse.urlsplit + urlunsplit = urllib.parse.urlunsplit +else: + # python2 + import urllib + import urlparse + + urlencode = urllib.urlencode + quote = urllib.quote + unquote = urllib.unquote + + parse = urlparse + parse_qsl = parse.parse_qsl + urljoin = parse.urljoin + urlparse = parse.urlparse + urlsplit = parse.urlsplit + urlunsplit = parse.urlunsplit diff --git a/openstack-common.conf b/openstack-common.conf index 6fb5f268..6f9a0c6d 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -2,6 +2,7 @@ # The list of modules to copy from openstack-common modules=importutils +module=py3kcompat # The base module to hold the copy of openstack.common base=heatclient