summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorllg8212 <lilinguo@huawei.com>2014-02-15 10:17:29 +0800
committerllg8212 <lilinguo@huawei.com>2014-02-27 14:56:26 +0800
commit06af7dff2b3818fa3e2c30b38265e8f5c7093a6f (patch)
tree39718df5fc43f0314a49a93cbd0c7a39c1575686
parent3a6d47c1540e9e5b75be064a2273eb52831192ec (diff)
downloadpython-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__.py2
-rw-r--r--keystoneclient/openstack/common/apiclient/auth.py2
-rw-r--r--keystoneclient/openstack/common/apiclient/base.py22
-rw-r--r--keystoneclient/openstack/common/apiclient/exceptions.py23
-rw-r--r--keystoneclient/openstack/common/apiclient/fake_client.py4
-rw-r--r--keystoneclient/openstack/common/py3kcompat/__init__.py16
-rw-r--r--keystoneclient/openstack/common/py3kcompat/urlutils.py65
-rw-r--r--openstack-common.conf1
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