Merge "Remove now useless build_url method"

This commit is contained in:
Jenkins 2015-09-21 13:56:54 +00:00 committed by Gerrit Code Review
commit da688fec09
5 changed files with 45 additions and 66 deletions

View File

@ -18,12 +18,13 @@ from gnocchiclient.v1 import base
class ArchivePolicyManager(base.Manager):
url = "v1/archive_policy/"
def list(self):
"""List archive policies
"""
url = self.client._build_url("archive_policy")
return self.client.api.get(url).json()
return self.client.api.get(self.url).json()
def get(self, name):
"""Get an archive policy
@ -31,8 +32,7 @@ class ArchivePolicyManager(base.Manager):
:param name: Name of the archive policy
:type name: str
"""
url = self.client._build_url("archive_policy/%s" % name)
return self.client.api.get(url).json()
return self.client.api.get(self.url + name).json()
def create(self, archive_policy):
"""Create an archive policy
@ -41,9 +41,8 @@ class ArchivePolicyManager(base.Manager):
:type archive_policy: dict
"""
url = self.client._build_url("archive_policy/")
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
self.url, headers={'Content-Type': "application/json"},
data=jsonutils.dumps(archive_policy)).json()
def delete(self, name):
@ -52,5 +51,4 @@ class ArchivePolicyManager(base.Manager):
:param name: Name of the archive policy
:type name: str
"""
url = self.client._build_url("archive_policy/%s" % name)
self.client.api.delete(url)
self.client.api.delete(self.url + name)

View File

@ -17,13 +17,13 @@ from gnocchiclient.v1 import base
class ArchivePolicyRuleManager(base.Manager):
url = "v1/archive_policy_rule/"
def list(self):
"""List archive policy rules
"""
url = self.client._build_url("archive_policy_rule")
return self.client.api.get(url).json()
return self.client.api.get(self.url).json()
def get(self, name):
"""Get an archive policy rules
@ -31,17 +31,14 @@ class ArchivePolicyRuleManager(base.Manager):
:param name: Name of the archive policy rule
:type name: str
"""
url = self.client._build_url("archive_policy_rule/%s"
% name)
return self.client.api.get(url).json()
return self.client.api.get(self.url + name).json()
def create(self, archive_policy_rule):
"""Create an archive policy rule
"""
url = self.client._build_url("archive_policy_rule/")
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
self.url, headers={'Content-Type': "application/json"},
data=jsonutils.dumps(archive_policy_rule)).json()
def delete(self, name):
@ -50,6 +47,4 @@ class ArchivePolicyRuleManager(base.Manager):
:param name: Name of the archive policy rule
:type name: str
"""
url = self.client._build_url("archive_policy_rule/%s"
% name)
self.client.api.delete(url)
self.client.api.delete(self.url + name)

View File

@ -26,8 +26,6 @@ class Client(object):
:type session: :py:class:`keystoneauth.adapter.Adapter`
"""
_VERSION = "v1"
def __init__(self, session=None):
"""Initialize a new client for the Gnocchi v1 API.
@ -38,6 +36,3 @@ class Client(object):
self.archive_policy_rule = (
archive_policy_rule.ArchivePolicyRuleManager(self))
self.metric = metric.MetricManager(self)
def _build_url(self, url_suffix):
return "%s/%s" % (self._VERSION, url_suffix)

View File

@ -21,13 +21,14 @@ from gnocchiclient.v1 import base
class MetricManager(base.Manager):
metric_url = "v1/metric/"
resource_url = "v1/resource/generic/%s/metric/"
def list(self):
"""List archive metrics
"""
url = self.client._build_url("metric")
return self.client.api.get(url).json()
return self.client.api.get(self.metric_url).json()
@staticmethod
def _ensure_metric_is_uuid(metric, attribute="resource_id"):
@ -48,10 +49,9 @@ class MetricManager(base.Manager):
"""
if resource_id is None:
self._ensure_metric_is_uuid(metric)
url = self.client._build_url("metric/%s" % metric)
url = self.metric_url + metric
else:
url = self.client._build_url("resource/generic/%s/metric/%s" % (
resource_id, metric))
url = (self.resource_url % resource_id) + metric
return self.client.api.get(url).json()
def create(self, metric, resource_id=None, metric_name=None):
@ -64,9 +64,8 @@ class MetricManager(base.Manager):
:type resource_id: str
"""
if resource_id is None and metric_name is None:
url = self.client._build_url("metric")
metric = self.client.api.post(
url, headers={'Content-Type': "application/json"},
self.metric_url, headers={'Content-Type': "application/json"},
data=jsonutils.dumps(metric)).json()
# FIXME(sileht): create and get have a
# different output: LP#1497171
@ -76,11 +75,10 @@ class MetricManager(base.Manager):
raise TypeError("resource_id and metric_name are "
"mutually required")
else:
url = self.client._build_url("resource/generic/%s/metric" %
resource_id)
metric = {metric_name: metric}
metric = self.client.api.post(
url, headers={'Content-Type': "application/json"},
self.resource_url % resource_id,
headers={'Content-Type': "application/json"},
data=jsonutils.dumps(metric))
return self.get(metric_name, resource_id)
@ -95,10 +93,9 @@ class MetricManager(base.Manager):
"""
if resource_id is None:
self._ensure_metric_is_uuid(metric)
url = self.client._build_url("metric/%s" % metric)
url = self.metric_url + metric
else:
url = self.client._build_url("resource/generic/%s/metric/%s" % (
resource_id, metric))
url = self.resource_url % resource_id + metric
self.client.api.delete(url)
def add_measures(self, metric, measures, resource_id=None):
@ -114,11 +111,9 @@ class MetricManager(base.Manager):
"""
if resource_id is None:
self._ensure_metric_is_uuid(metric)
url = self.client._build_url("metric/%s/measures" % metric)
url = self.metric_url + metric + "/measures"
else:
url = self.client._build_url(
"resource/generic/%s/metric/%s/measures" % (
resource_id, metric))
url = self.resource_url % resource_id + metric + "/measures"
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
data=jsonutils.dumps(measures))
@ -152,11 +147,9 @@ class MetricManager(base.Manager):
params.update(kwargs)
if resource_id is None:
self._ensure_metric_is_uuid(metric)
url = self.client._build_url("metric/%s/measures" % metric)
url = self.metric_url + metric + "/measures"
else:
url = self.client._build_url(
"resource/generic/%s/metric/%s/measures" % (
resource_id, metric))
url = self.resource_url % resource_id + metric + "/measures"
return self.client.api.get(url, params=params).json()
def aggregation(self, metrics, query=None,
@ -191,12 +184,11 @@ class MetricManager(base.Manager):
for metric in metrics:
self._ensure_metric_is_uuid(metric)
params['metric'] = metrics
url = self.client._build_url("aggregation/metric")
return self.client.api.get(url, params=params).json()
return self.client.api.get("v1/aggregation/metric",
params=params).json()
else:
url = self.client._build_url(
"aggregation/resource/generic/metric/%s?%s" % (
metrics, utils.dict_to_querystring(params)))
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
"v1/aggregation/resource/generic/metric/%s?%s" % (
metrics, utils.dict_to_querystring(params)),
headers={'Content-Type': "application/json"},
data=jsonutils.dumps(query)).json()

View File

@ -30,10 +30,15 @@ def _get_pagination_options(details=False, history=False,
options.append("marker=%s" % urllib_parse.quote(marker))
for sort in sorts or []:
options.append("sort=%s" % urllib_parse.quote(sort))
return "&".join(options)
if options:
return "?%s" % "&".join(options)
else:
return ""
class ResourceManager(base.Manager):
url = "v1/resource/"
def list(self, resource_type="generic", details=False, history=False,
limit=None, marker=None, sorts=None):
"""List resources
@ -53,8 +58,7 @@ class ResourceManager(base.Manager):
:type sorts: list of str
"""
qs = _get_pagination_options(details, history, limit, marker, sorts)
url = self.client._build_url("resource/%s?%s" % (resource_type, qs))
return self.client.api.get(url).json()
return self.client.api.get(self.url + resource_type + qs).json()
def get(self, resource_type, resource_id, history=False):
"""Get a resource
@ -67,8 +71,7 @@ class ResourceManager(base.Manager):
:type history: bool
"""
history = "/history" if history else ""
url = self.client._build_url("resource/%s/%s%s" % (
resource_type, resource_id, history))
url = self.url + "%s/%s%s" % (resource_type, resource_id, history)
return self.client.api.get(url).json()
def history(self, resource_type, resource_id, details=False,
@ -90,8 +93,7 @@ class ResourceManager(base.Manager):
:type sorts: list of str
"""
qs = _get_pagination_options(details, False, limit, marker, sorts)
url = self.client._build_url("resource/%s/%s/history?%s" % (
resource_type, resource_id, qs))
url = "%s%s/%s/history?%s" % (self.url, resource_type, resource_id, qs)
return self.client.api.get(url).json()
def create(self, resource_type, resource):
@ -102,9 +104,9 @@ class ResourceManager(base.Manager):
:param resource: Attribute of the resource
:type resource: dict
"""
url = self.client._build_url("resource/%s" % resource_type)
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
self.url + resource_type,
headers={'Content-Type': "application/json"},
data=jsonutils.dumps(resource)).json()
def update(self, resource_type, resource_id, resource):
@ -118,10 +120,9 @@ class ResourceManager(base.Manager):
:type resource: dict
"""
url = self.client._build_url("resource/%s/%s" % (resource_type,
resource_id))
return self.client.api.patch(
url, headers={'Content-Type': "application/json"},
self.url + resource_type + "/" + resource_id,
headers={'Content-Type': "application/json"},
data=jsonutils.dumps(resource)).json()
def delete(self, resource_id):
@ -130,8 +131,7 @@ class ResourceManager(base.Manager):
:param resource_id: ID of the resource
:type resource_id: str
"""
url = self.client._build_url("resource/generic/%s" % (resource_id))
self.client.api.delete(url)
self.client.api.delete(self.url + "generic/" + resource_id)
def search(self, resource_type="generic", query=None, details=False,
history=False, limit=None, marker=None, sorts=None):
@ -160,8 +160,7 @@ class ResourceManager(base.Manager):
query = query or {}
qs = _get_pagination_options(details, False, limit, marker, sorts)
url = self.client._build_url(
"search/resource/%s?%s" % (resource_type, qs))
url = "v1/search/resource/%s?%s" % (resource_type, qs)
return self.client.api.post(
url, headers={'Content-Type': "application/json"},
data=jsonutils.dumps(query)).json()