diff options
author | llg8212 <lilinguo@huawei.com> | 2014-02-15 10:17:29 +0800 |
---|---|---|
committer | llg8212 <lilinguo@huawei.com> | 2014-02-27 14:56:26 +0800 |
commit | 06af7dff2b3818fa3e2c30b38265e8f5c7093a6f (patch) | |
tree | 39718df5fc43f0314a49a93cbd0c7a39c1575686 | |
parent | 3a6d47c1540e9e5b75be064a2273eb52831192ec (diff) | |
download | python-keystoneclient-06af7dff2b3818fa3e2c30b38265e8f5c7093a6f.tar.gz |
Remove dependent module py3kcompat
Sync commit of removing py3kcompat from oslo
Change-Id: Icb7740a3652c26f0c1da3688aae7fb5b10b5c3e2
Closes-Bug: #1280033
-rw-r--r-- | keystoneclient/openstack/common/__init__.py | 2 | ||||
-rw-r--r-- | keystoneclient/openstack/common/apiclient/auth.py | 2 | ||||
-rw-r--r-- | keystoneclient/openstack/common/apiclient/base.py | 22 | ||||
-rw-r--r-- | keystoneclient/openstack/common/apiclient/exceptions.py | 23 | ||||
-rw-r--r-- | keystoneclient/openstack/common/apiclient/fake_client.py | 4 | ||||
-rw-r--r-- | keystoneclient/openstack/common/py3kcompat/__init__.py | 16 | ||||
-rw-r--r-- | keystoneclient/openstack/common/py3kcompat/urlutils.py | 65 | ||||
-rw-r--r-- | openstack-common.conf | 1 |
8 files changed, 36 insertions, 99 deletions
diff --git a/keystoneclient/openstack/common/__init__.py b/keystoneclient/openstack/common/__init__.py index e69de29..2a00f3b 100644 --- a/keystoneclient/openstack/common/__init__.py +++ b/keystoneclient/openstack/common/__init__.py @@ -0,0 +1,2 @@ +import six +six.add_move(six.MovedModule('mox', 'mox', 'mox3.mox')) diff --git a/keystoneclient/openstack/common/apiclient/auth.py b/keystoneclient/openstack/common/apiclient/auth.py index 606c7ca..68c7644 100644 --- a/keystoneclient/openstack/common/apiclient/auth.py +++ b/keystoneclient/openstack/common/apiclient/auth.py @@ -76,7 +76,7 @@ def load_plugin_from_args(args): alphabetical order. :type args: argparse.Namespace - :raises: AuthorizationFailure + :raises: AuthPluginOptionsMissing """ auth_system = args.os_auth_system if auth_system: diff --git a/keystoneclient/openstack/common/apiclient/base.py b/keystoneclient/openstack/common/apiclient/base.py index d2270b3..6014826 100644 --- a/keystoneclient/openstack/common/apiclient/base.py +++ b/keystoneclient/openstack/common/apiclient/base.py @@ -24,11 +24,12 @@ Base utilities to build API operation managers and objects on top of. # pylint: disable=E1102 import abc +import copy import six +from six.moves.urllib import parse from keystoneclient.openstack.common.apiclient import exceptions -from keystoneclient.openstack.common.py3kcompat import urlutils from keystoneclient.openstack.common import strutils @@ -327,7 +328,7 @@ class CrudManager(BaseManager): return self._list( '%(base_url)s%(query)s' % { 'base_url': self.build_url(base_url=base_url, **kwargs), - 'query': '?%s' % urlutils.urlencode(kwargs) if kwargs else '', + 'query': '?%s' % parse.urlencode(kwargs) if kwargs else '', }, self.collection_key) @@ -366,7 +367,7 @@ class CrudManager(BaseManager): rl = self._list( '%(base_url)s%(query)s' % { 'base_url': self.build_url(base_url=base_url, **kwargs), - 'query': '?%s' % urlutils.urlencode(kwargs) if kwargs else '', + 'query': '?%s' % parse.urlencode(kwargs) if kwargs else '', }, self.collection_key) num = len(rl) @@ -456,17 +457,17 @@ class Resource(object): def __getattr__(self, k): if k not in self.__dict__: #NOTE(bcwaldon): disallow lazy-loading if already loaded once - if not self.is_loaded(): - self.get() + if not self.is_loaded: + self._get() return self.__getattr__(k) raise AttributeError(k) else: return self.__dict__[k] - def get(self): - # set_loaded() first ... so if we have to bail, we know we tried. - self.set_loaded(True) + def _get(self): + # set _loaded first ... so if we have to bail, we know we tried. + self._loaded = True if not hasattr(self.manager, 'get'): return @@ -484,8 +485,9 @@ class Resource(object): return self.id == other.id return self._info == other._info + @property def is_loaded(self): return self._loaded - def set_loaded(self, val): - self._loaded = val + def to_dict(self): + return copy.deepcopy(self._info) diff --git a/keystoneclient/openstack/common/apiclient/exceptions.py b/keystoneclient/openstack/common/apiclient/exceptions.py index 4776d58..ada1344 100644 --- a/keystoneclient/openstack/common/apiclient/exceptions.py +++ b/keystoneclient/openstack/common/apiclient/exceptions.py @@ -127,6 +127,11 @@ class HttpError(ClientException): super(HttpError, self).__init__(formatted_string) +class HTTPRedirection(HttpError): + """HTTP Redirection.""" + message = "HTTP Redirection" + + class HTTPClientError(HttpError): """Client-side HTTP error. @@ -144,6 +149,16 @@ class HttpServerError(HttpError): message = "HTTP Server Error" +class MultipleChoices(HTTPRedirection): + """HTTP 300 - Multiple Choices. + + Indicates multiple options for the resource that the client may follow. + """ + + http_status = 300 + message = "Multiple Choices" + + class BadRequest(HTTPClientError): """HTTP 400 - Bad Request. @@ -425,10 +440,10 @@ def from_response(response, method, url): except ValueError: pass else: - if hasattr(body, "keys"): - error = body[body.keys()[0]] - kwargs["message"] = error.get("message", None) - kwargs["details"] = error.get("details", None) + if isinstance(body, dict): + error = list(body.values())[0] + kwargs["message"] = error.get("message") + kwargs["details"] = error.get("details") elif content_type.startswith("text/"): kwargs["details"] = response.text diff --git a/keystoneclient/openstack/common/apiclient/fake_client.py b/keystoneclient/openstack/common/apiclient/fake_client.py index 18aa372..9435959 100644 --- a/keystoneclient/openstack/common/apiclient/fake_client.py +++ b/keystoneclient/openstack/common/apiclient/fake_client.py @@ -28,9 +28,9 @@ import json import requests import six +from six.moves.urllib import parse from keystoneclient.openstack.common.apiclient import client -from keystoneclient.openstack.common.py3kcompat import urlutils def assert_has_keys(dct, required=[], optional=[]): @@ -147,7 +147,7 @@ class FakeHTTPClient(client.HTTPClient): "text": fixture[1]}) # Call the method - args = urlutils.parse_qsl(urlutils.urlparse(url)[4]) + args = parse.parse_qsl(parse.urlparse(url)[4]) kwargs.update(args) munged_url = url.rsplit('?', 1)[0] munged_url = munged_url.strip('/').replace('/', '_').replace('.', '_') diff --git a/keystoneclient/openstack/common/py3kcompat/__init__.py b/keystoneclient/openstack/common/py3kcompat/__init__.py deleted file mode 100644 index 97ae4e3..0000000 --- a/keystoneclient/openstack/common/py3kcompat/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -# -# 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/keystoneclient/openstack/common/py3kcompat/urlutils.py b/keystoneclient/openstack/common/py3kcompat/urlutils.py deleted file mode 100644 index 6200271..0000000 --- a/keystoneclient/openstack/common/py3kcompat/urlutils.py +++ /dev/null @@ -1,65 +0,0 @@ -# -# 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.error - import urllib.parse - import urllib.request - - urlencode = urllib.parse.urlencode - urljoin = urllib.parse.urljoin - quote = urllib.parse.quote - parse_qsl = urllib.parse.parse_qsl - unquote = urllib.parse.unquote - unquote_plus = urllib.parse.unquote_plus - urlparse = urllib.parse.urlparse - urlsplit = urllib.parse.urlsplit - urlunsplit = urllib.parse.urlunsplit - SplitResult = urllib.parse.SplitResult - - urlopen = urllib.request.urlopen - URLError = urllib.error.URLError - pathname2url = urllib.request.pathname2url -else: - # python2 - import urllib - import urllib2 - import urlparse - - urlencode = urllib.urlencode - quote = urllib.quote - unquote = urllib.unquote - unquote_plus = urllib.unquote_plus - - parse = urlparse - parse_qsl = parse.parse_qsl - urljoin = parse.urljoin - urlparse = parse.urlparse - urlsplit = parse.urlsplit - urlunsplit = parse.urlunsplit - SplitResult = parse.SplitResult - - urlopen = urllib2.urlopen - URLError = urllib2.URLError - pathname2url = urllib.pathname2url diff --git a/openstack-common.conf b/openstack-common.conf index fce2a75..45b4c85 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -8,7 +8,6 @@ module=jsonutils module=memorycache module=strutils module=timeutils -module=py3kcompat # The base module to hold the copy of openstack.common base=keystoneclient |