Create a method to format urls
There have been some issues with formatting URLs, so before tackling those issues, I wanted to generalize the formatting. Change-Id: I78f9aca63e508b38b95514b65cb9bf76374651fb
This commit is contained in:
@@ -38,7 +38,7 @@ class ServerIP(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def list(cls, session, path_args=None, **params):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.get(url, service=cls.service, params=params)
|
||||
ray = []
|
||||
for network_label, addresses in six.iteritems(resp.body['addresses']):
|
||||
|
||||
@@ -14,7 +14,6 @@ import six
|
||||
|
||||
from openstack.compute import compute_service
|
||||
from openstack import resource
|
||||
from openstack import utils
|
||||
|
||||
|
||||
class ServerMeta(resource.Resource):
|
||||
@@ -40,8 +39,7 @@ class ServerMeta(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def create_by_id(cls, session, attrs, resource_id=None, path_args=None):
|
||||
url = cls.base_path % path_args
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
body = {cls.resource_key: {attrs['key']: attrs['value']}}
|
||||
resp = session.put(url, service=cls.service, json=body).body
|
||||
return {'key': resource_id,
|
||||
@@ -50,8 +48,7 @@ class ServerMeta(resource.Resource):
|
||||
@classmethod
|
||||
def get_data_by_id(cls, session, resource_id, path_args=None,
|
||||
include_headers=False):
|
||||
url = cls.base_path % path_args
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
resp = session.get(url, service=cls.service).body
|
||||
return {'key': resource_id,
|
||||
'value': resp[cls.resource_key][resource_id]}
|
||||
@@ -62,8 +59,7 @@ class ServerMeta(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def delete_by_id(cls, session, resource_id, path_args=None):
|
||||
url = cls.base_path % path_args
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
session.delete(url, service=cls.service, accept=None)
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -34,7 +34,7 @@ class ServerMetadata(resource.Resource):
|
||||
no_id = attrs.copy()
|
||||
no_id.pop('server_id')
|
||||
body = {"metadata": no_id}
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.put(url, service=cls.service, json=body).body
|
||||
attrs = resp["metadata"].copy()
|
||||
attrs['server_id'] = resource_id
|
||||
@@ -43,7 +43,7 @@ class ServerMetadata(resource.Resource):
|
||||
@classmethod
|
||||
def get_data_by_id(cls, session, resource_id, path_args=None,
|
||||
include_headers=False):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.get(url, service=cls.service).body
|
||||
return resp[cls.resource_key]
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ class User(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def create_by_id(cls, session, attrs, r_id=None, path_args=None):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
# Create expects an array of users
|
||||
body = {'users': [attrs]}
|
||||
resp = session.post(url, service=cls.service, json=body).body
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
from openstack.image import image_service
|
||||
from openstack.image.v2 import image
|
||||
from openstack import resource
|
||||
from openstack import utils
|
||||
|
||||
|
||||
class Tag(resource.Resource):
|
||||
@@ -37,8 +36,7 @@ class Tag(resource.Resource):
|
||||
|
||||
:return: ``None``
|
||||
"""
|
||||
url = utils.urljoin(self.base_path %
|
||||
{"image": self.image.id}, tag)
|
||||
url = self._get_url({"image": self.image.id}, tag)
|
||||
session.put(url, service=self.service, accept=None)
|
||||
|
||||
def delete(self, session, tag):
|
||||
@@ -50,6 +48,5 @@ class Tag(resource.Resource):
|
||||
|
||||
:return: ``None``
|
||||
"""
|
||||
url = utils.urljoin(self.base_path %
|
||||
{"image": self.image.id}, tag)
|
||||
url = self._get_url({"image": self.image.id}, tag)
|
||||
session.delete(url, service=self.service, accept=None)
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
from openstack.object_store import object_store_service
|
||||
from openstack import resource
|
||||
from openstack import utils
|
||||
|
||||
|
||||
class Container(resource.Resource):
|
||||
@@ -113,7 +112,7 @@ class Container(resource.Resource):
|
||||
|
||||
:return: A ``dict`` representing the response headers.
|
||||
"""
|
||||
url = utils.urljoin(cls.base_path, resource_id)
|
||||
url = cls._get_url(None, resource_id)
|
||||
headers = attrs.get(resource.HEADERS, dict())
|
||||
return session.post(url, service=cls.service, accept=None,
|
||||
headers=headers).headers
|
||||
@@ -131,7 +130,7 @@ class Container(resource.Resource):
|
||||
|
||||
:return: A ``dict`` representing the response headers.
|
||||
"""
|
||||
url = utils.urljoin(cls.base_path, resource_id)
|
||||
url = cls._get_url(None, resource_id)
|
||||
headers = attrs.get(resource.HEADERS, dict())
|
||||
return session.put(url, service=cls.service, accept=None,
|
||||
headers=headers).headers
|
||||
|
||||
@@ -481,6 +481,16 @@ class Resource(collections.MutableMapping):
|
||||
|
||||
return converted
|
||||
|
||||
@classmethod
|
||||
def _get_url(cls, path_args=None, resource_id=None):
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
if resource_id is not None:
|
||||
url = utils.urljoin(url, resource_id)
|
||||
return url
|
||||
|
||||
@classmethod
|
||||
def create_by_id(cls, session, attrs, resource_id=None, path_args=None):
|
||||
"""Create a remote resource from its attributes.
|
||||
@@ -511,15 +521,11 @@ class Resource(collections.MutableMapping):
|
||||
else:
|
||||
body = attrs
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
args = {'json': body}
|
||||
if headers:
|
||||
args[HEADERS] = headers
|
||||
if resource_id:
|
||||
url = utils.urljoin(url, resource_id)
|
||||
resp = session.put(url, service=cls.service, **args).body
|
||||
else:
|
||||
resp = session.post(url, service=cls.service, **args).body
|
||||
@@ -567,11 +573,7 @@ class Resource(collections.MutableMapping):
|
||||
if not cls.allow_retrieve:
|
||||
raise exceptions.MethodNotSupported(cls, 'retrieve')
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
response = session.get(url, service=cls.service)
|
||||
body = response.body
|
||||
|
||||
@@ -643,11 +645,7 @@ class Resource(collections.MutableMapping):
|
||||
if not cls.allow_head:
|
||||
raise exceptions.MethodNotSupported(cls, 'head')
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
|
||||
data = session.head(url, service=cls.service, accept=None).headers
|
||||
|
||||
@@ -719,11 +717,7 @@ class Resource(collections.MutableMapping):
|
||||
else:
|
||||
body = attrs
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
args = {'json': body}
|
||||
if headers:
|
||||
args[HEADERS] = headers
|
||||
@@ -782,11 +776,7 @@ class Resource(collections.MutableMapping):
|
||||
if not cls.allow_delete:
|
||||
raise exceptions.MethodNotSupported(cls, 'delete')
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = utils.urljoin(url, resource_id)
|
||||
url = cls._get_url(path_args, resource_id)
|
||||
session.delete(url, service=cls.service, accept=None)
|
||||
|
||||
def delete(self, session):
|
||||
@@ -897,10 +887,7 @@ class Resource(collections.MutableMapping):
|
||||
if marker:
|
||||
filters['marker'] = marker
|
||||
|
||||
if path_args:
|
||||
url = cls.base_path % path_args
|
||||
else:
|
||||
url = cls.base_path
|
||||
url = cls._get_url(path_args)
|
||||
if filters:
|
||||
url = '%s?%s' % (url, url_parse.urlencode(filters))
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ class AlarmChange(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def list(cls, session, path_args=None, **params):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.get(url, service=cls.service, params=params)
|
||||
|
||||
changes = []
|
||||
|
||||
@@ -38,7 +38,7 @@ class Sample(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def list(cls, session, path_args=None, **params):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.get(url, service=cls.service, params=params)
|
||||
|
||||
changes = []
|
||||
@@ -47,7 +47,7 @@ class Sample(resource.Resource):
|
||||
return changes
|
||||
|
||||
def create(self, session):
|
||||
url = self.base_path % {'meter': self.meter}
|
||||
url = self._get_url(self)
|
||||
# telemetry expects a list of samples
|
||||
resp = session.post(url, service=self.service, json=[self._attrs])
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ class Statistics(resource.Resource):
|
||||
|
||||
@classmethod
|
||||
def list(cls, session, path_args=None, **params):
|
||||
url = cls.base_path % path_args
|
||||
url = cls._get_url(path_args)
|
||||
resp = session.get(url, service=cls.service, params=params)
|
||||
stats = []
|
||||
for stat in resp.body:
|
||||
|
||||
Reference in New Issue
Block a user