cloud: Remove '_ShadeAdapter'
Very few things require the JSON conversion functionality this provides nowadays (few TODO items outstanding). We can finally remove it. Change-Id: Iaff2a67913c47d6f807fe8d332ad98d0581823b0 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
@@ -62,15 +62,12 @@ The `openstack.cloud` layer has some specific rules:
|
||||
Returned Resources
|
||||
------------------
|
||||
|
||||
Complex objects returned to the caller must be a `munch.Munch` type. The
|
||||
`openstack.proxy._ShadeAdapter` class makes resources into `munch.Munch`.
|
||||
Complex objects returned to the caller must be a `openstack.resource.Resource`
|
||||
type.
|
||||
|
||||
All objects should be normalized. It is shade's purpose in life to make
|
||||
All objects should be normalized. It is openstacksdk's purpose in life to make
|
||||
OpenStack consistent for end users, and this means not trusting the clouds
|
||||
to return consistent objects. There should be a normalize function in
|
||||
`openstack/cloud/_normalize.py` that is applied to objects before returning
|
||||
them to the user. See :doc:`../user/model` for further details on object model
|
||||
requirements.
|
||||
to return consistent objects. The `Resource` object should do this for us.
|
||||
|
||||
Fields should not be in the normalization contract if we cannot commit to
|
||||
providing them to all users.
|
||||
|
@@ -396,7 +396,7 @@ class _OpenStackCloudMixin:
|
||||
request_max_version = '{version}.latest'.format(
|
||||
version=config_major
|
||||
)
|
||||
adapter = proxy._ShadeAdapter(
|
||||
adapter = proxy.Proxy(
|
||||
session=self.session,
|
||||
service_type=self.config.get_service_type(service_type),
|
||||
service_name=self.config.get_service_name(service_type),
|
||||
@@ -414,7 +414,7 @@ class _OpenStackCloudMixin:
|
||||
if adapter.get_endpoint():
|
||||
return adapter
|
||||
|
||||
adapter = proxy._ShadeAdapter(
|
||||
adapter = proxy.Proxy(
|
||||
session=self.session,
|
||||
service_type=self.config.get_service_type(service_type),
|
||||
service_name=self.config.get_service_name(service_type),
|
||||
@@ -457,7 +457,7 @@ class _OpenStackCloudMixin:
|
||||
def _get_raw_client(
|
||||
self, service_type, api_version=None, endpoint_override=None
|
||||
):
|
||||
return proxy._ShadeAdapter(
|
||||
return proxy.Proxy(
|
||||
session=self.session,
|
||||
service_type=self.config.get_service_type(service_type),
|
||||
service_name=self.config.get_service_name(service_type),
|
||||
|
@@ -16,8 +16,10 @@ import collections
|
||||
import time
|
||||
|
||||
from openstack.cloud import meta
|
||||
from openstack import proxy
|
||||
|
||||
|
||||
# TODO(stephenfin): Convert to use proxy
|
||||
def get_events(cloud, stack_id, event_args, marker=None, limit=None):
|
||||
# TODO(mordred) FIX THIS ONCE assert_calls CAN HANDLE QUERY STRINGS
|
||||
params = collections.OrderedDict()
|
||||
@@ -29,8 +31,11 @@ def get_events(cloud, stack_id, event_args, marker=None, limit=None):
|
||||
if limit:
|
||||
event_args['limit'] = limit
|
||||
|
||||
data = cloud._orchestration_client.get(
|
||||
'/stacks/{id}/events'.format(id=stack_id), params=params
|
||||
data = proxy._json_response(
|
||||
cloud._orchestration_client.get(
|
||||
'/stacks/{id}/events'.format(id=stack_id),
|
||||
params=params,
|
||||
)
|
||||
)
|
||||
events = meta.get_and_munchify('events', data)
|
||||
|
||||
|
@@ -107,7 +107,7 @@ class Proxy(adapter.Adapter, Generic[T]):
|
||||
kwargs.setdefault(
|
||||
'retriable_status_codes', self.retriable_status_codes
|
||||
)
|
||||
super(Proxy, self).__init__(session=session, *args, **kwargs)
|
||||
super().__init__(session=session, *args, **kwargs)
|
||||
self._statsd_client = statsd_client
|
||||
self._statsd_prefix = statsd_prefix
|
||||
self._prometheus_counter = prometheus_counter
|
||||
@@ -173,7 +173,7 @@ class Proxy(adapter.Adapter, Generic[T]):
|
||||
# Get from cache or execute and cache
|
||||
response = conn._cache.get_or_create(
|
||||
key=key,
|
||||
creator=super(Proxy, self).request,
|
||||
creator=super().request,
|
||||
creator_args=(
|
||||
[url, method],
|
||||
dict(
|
||||
@@ -190,7 +190,7 @@ class Proxy(adapter.Adapter, Generic[T]):
|
||||
# asked for cache bypass
|
||||
self._invalidate_cache(conn, key_prefix)
|
||||
# Pass through the API request bypassing cache
|
||||
response = super(Proxy, self).request(
|
||||
response = super().request(
|
||||
url,
|
||||
method,
|
||||
connect_retries=connect_retries,
|
||||
@@ -815,6 +815,8 @@ class Proxy(adapter.Adapter, Generic[T]):
|
||||
return False
|
||||
|
||||
|
||||
# TODO(stephenfin): Remove this and all users. Use of this generally indicates
|
||||
# a missing Resource type.
|
||||
def _json_response(response, result_key=None, error_message=None):
|
||||
"""Temporary method to use to bridge from ShadeAdapter to SDK calls."""
|
||||
exceptions.raise_from_response(response, error_message=error_message)
|
||||
@@ -832,11 +834,3 @@ def _json_response(response, result_key=None, error_message=None):
|
||||
except JSONDecodeError:
|
||||
return response
|
||||
return result_json
|
||||
|
||||
|
||||
class _ShadeAdapter(Proxy):
|
||||
"""Wrapper for shade methods that expect json unpacking."""
|
||||
|
||||
def request(self, url, method, error_message=None, **kwargs):
|
||||
response = super(_ShadeAdapter, self).request(url, method, **kwargs)
|
||||
return _json_response(response, error_message=error_message)
|
||||
|
Reference in New Issue
Block a user