Remove py3kcompat module
Update common apiclient from Oslo for that. I've updated to oslo-incubator of commit 04a1abe59ac39890f57d2eed57d3d1b12bb5d757 List of changes: 04a1abe Revert "Removed set_loaded() method from Resource class" 86707cd Remove None for dict.get() 6650435 Fix usage of dict.keys in apiclient.exceptions 35dc1d7 py3kcompat: remove Change-Id: I4334c941531e12faabcf023a836c6ad850b3b4cc
This commit is contained in:
parent
3777496afb
commit
548c248be2
@ -27,9 +27,9 @@ import abc
|
|||||||
import copy
|
import copy
|
||||||
|
|
||||||
import six
|
import six
|
||||||
|
from six.moves.urllib import parse
|
||||||
|
|
||||||
from tuskarclient.openstack.common.apiclient import exceptions
|
from tuskarclient.openstack.common.apiclient import exceptions
|
||||||
from tuskarclient.openstack.common.py3kcompat import urlutils
|
|
||||||
from tuskarclient.openstack.common import strutils
|
from tuskarclient.openstack.common import strutils
|
||||||
|
|
||||||
|
|
||||||
@ -328,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)
|
||||||
|
|
||||||
@ -367,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)
|
||||||
@ -457,17 +457,22 @@ 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.
|
"""Support for lazy loading details.
|
||||||
self._loaded = True
|
|
||||||
|
Some clients, such as novaclient have the option to lazy load the
|
||||||
|
details, details which can be loaded with this function.
|
||||||
|
"""
|
||||||
|
# set_loaded() first ... so if we have to bail, we know we tried.
|
||||||
|
self.set_loaded(True)
|
||||||
if not hasattr(self.manager, 'get'):
|
if not hasattr(self.manager, 'get'):
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -485,9 +490,11 @@ 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):
|
||||||
|
self._loaded = val
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return copy.deepcopy(self._info)
|
return copy.deepcopy(self._info)
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -28,9 +28,9 @@ import json
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
import six
|
import six
|
||||||
|
from six.moves.urllib import parse
|
||||||
|
|
||||||
from tuskarclient.openstack.common.apiclient import client
|
from tuskarclient.openstack.common.apiclient import client
|
||||||
from tuskarclient.openstack.common.py3kcompat import urlutils
|
|
||||||
|
|
||||||
|
|
||||||
def assert_has_keys(dct, required=[], optional=[]):
|
def assert_has_keys(dct, required=[], optional=[]):
|
||||||
@ -79,7 +79,7 @@ class FakeHTTPClient(client.HTTPClient):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.callstack = []
|
self.callstack = []
|
||||||
self.fixtures = kwargs.pop("fixtures", None) or {}
|
self.fixtures = kwargs.pop("fixtures", None) or {}
|
||||||
if not args and not "auth_plugin" in kwargs:
|
if not args and "auth_plugin" not in kwargs:
|
||||||
args = (None, )
|
args = (None, )
|
||||||
super(FakeHTTPClient, self).__init__(*args, **kwargs)
|
super(FakeHTTPClient, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
@ -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('.', '_')
|
||||||
|
@ -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.
|
|
||||||
#
|
|
@ -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
|
|
Loading…
x
Reference in New Issue
Block a user