Remove dependent module py3kcompat

Sync commit of removing py3kcompat from oslo

Change-Id: Icb7740a3652c26f0c1da3688aae7fb5b10b5c3e2
Closes-Bug: #1280033
This commit is contained in:
llg8212
2014-02-15 10:17:29 +08:00
parent 3a6d47c154
commit 06af7dff2b
8 changed files with 36 additions and 99 deletions

View File

@@ -0,0 +1,2 @@
import six
six.add_move(six.MovedModule('mox', 'mox', 'mox3.mox'))

View File

@@ -76,7 +76,7 @@ def load_plugin_from_args(args):
alphabetical order. alphabetical order.
:type args: argparse.Namespace :type args: argparse.Namespace
:raises: AuthorizationFailure :raises: AuthPluginOptionsMissing
""" """
auth_system = args.os_auth_system auth_system = args.os_auth_system
if auth_system: if auth_system:

View File

@@ -24,11 +24,12 @@ Base utilities to build API operation managers and objects on top of.
# pylint: disable=E1102 # pylint: disable=E1102
import abc import abc
import copy
import six import six
from six.moves.urllib import parse
from keystoneclient.openstack.common.apiclient import exceptions from keystoneclient.openstack.common.apiclient import exceptions
from keystoneclient.openstack.common.py3kcompat import urlutils
from keystoneclient.openstack.common import strutils from keystoneclient.openstack.common import strutils
@@ -327,7 +328,7 @@ class CrudManager(BaseManager):
return self._list( return self._list(
'%(base_url)s%(query)s' % { '%(base_url)s%(query)s' % {
'base_url': self.build_url(base_url=base_url, **kwargs), '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) self.collection_key)
@@ -366,7 +367,7 @@ class CrudManager(BaseManager):
rl = self._list( rl = self._list(
'%(base_url)s%(query)s' % { '%(base_url)s%(query)s' % {
'base_url': self.build_url(base_url=base_url, **kwargs), '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) self.collection_key)
num = len(rl) num = len(rl)
@@ -456,17 +457,17 @@ class Resource(object):
def __getattr__(self, k): def __getattr__(self, k):
if k not in self.__dict__: if k not in self.__dict__:
#NOTE(bcwaldon): disallow lazy-loading if already loaded once #NOTE(bcwaldon): disallow lazy-loading if already loaded once
if not self.is_loaded(): if not self.is_loaded:
self.get() self._get()
return self.__getattr__(k) return self.__getattr__(k)
raise AttributeError(k) raise AttributeError(k)
else: else:
return self.__dict__[k] return self.__dict__[k]
def get(self): def _get(self):
# set_loaded() first ... so if we have to bail, we know we tried. # set _loaded first ... so if we have to bail, we know we tried.
self.set_loaded(True) self._loaded = True
if not hasattr(self.manager, 'get'): if not hasattr(self.manager, 'get'):
return return
@@ -484,8 +485,9 @@ class Resource(object):
return self.id == other.id return self.id == other.id
return self._info == other._info return self._info == other._info
@property
def is_loaded(self): def is_loaded(self):
return self._loaded return self._loaded
def set_loaded(self, val): def to_dict(self):
self._loaded = val return copy.deepcopy(self._info)

View File

@@ -127,6 +127,11 @@ class HttpError(ClientException):
super(HttpError, self).__init__(formatted_string) super(HttpError, self).__init__(formatted_string)
class HTTPRedirection(HttpError):
"""HTTP Redirection."""
message = "HTTP Redirection"
class HTTPClientError(HttpError): class HTTPClientError(HttpError):
"""Client-side HTTP error. """Client-side HTTP error.
@@ -144,6 +149,16 @@ class HttpServerError(HttpError):
message = "HTTP Server Error" 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): class BadRequest(HTTPClientError):
"""HTTP 400 - Bad Request. """HTTP 400 - Bad Request.
@@ -425,10 +440,10 @@ def from_response(response, method, url):
except ValueError: except ValueError:
pass pass
else: else:
if hasattr(body, "keys"): if isinstance(body, dict):
error = body[body.keys()[0]] error = list(body.values())[0]
kwargs["message"] = error.get("message", None) kwargs["message"] = error.get("message")
kwargs["details"] = error.get("details", None) kwargs["details"] = error.get("details")
elif content_type.startswith("text/"): elif content_type.startswith("text/"):
kwargs["details"] = response.text kwargs["details"] = response.text

View File

@@ -28,9 +28,9 @@ import json
import requests import requests
import six import six
from six.moves.urllib import parse
from keystoneclient.openstack.common.apiclient import client from keystoneclient.openstack.common.apiclient import client
from keystoneclient.openstack.common.py3kcompat import urlutils
def assert_has_keys(dct, required=[], optional=[]): def assert_has_keys(dct, required=[], optional=[]):
@@ -147,7 +147,7 @@ class FakeHTTPClient(client.HTTPClient):
"text": fixture[1]}) "text": fixture[1]})
# Call the method # Call the method
args = urlutils.parse_qsl(urlutils.urlparse(url)[4]) args = parse.parse_qsl(parse.urlparse(url)[4])
kwargs.update(args) kwargs.update(args)
munged_url = url.rsplit('?', 1)[0] munged_url = url.rsplit('?', 1)[0]
munged_url = munged_url.strip('/').replace('/', '_').replace('.', '_') munged_url = munged_url.strip('/').replace('/', '_').replace('.', '_')

View File

@@ -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.
#

View File

@@ -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

View File

@@ -8,7 +8,6 @@ module=jsonutils
module=memorycache module=memorycache
module=strutils module=strutils
module=timeutils module=timeutils
module=py3kcompat
# The base module to hold the copy of openstack.common # The base module to hold the copy of openstack.common
base=keystoneclient base=keystoneclient