Merge "Add list_next for pagination"
This commit is contained in:
commit
de70f047dd
@ -15,12 +15,39 @@
|
||||
|
||||
from monascaclient.apiclient import base
|
||||
|
||||
from six.moves.urllib import parse
|
||||
from six.moves.urllib_parse import unquote
|
||||
|
||||
|
||||
class MonascaManager(base.BaseManager):
|
||||
|
||||
def __init__(self, client, **kwargs):
|
||||
super(MonascaManager, self).__init__(client)
|
||||
|
||||
def _parse_body(self, body):
|
||||
if type(body) is dict:
|
||||
self.next = None
|
||||
for link in body['links']:
|
||||
if link['rel'] == 'next':
|
||||
self.next = link['href']
|
||||
return body['elements']
|
||||
else:
|
||||
return body
|
||||
|
||||
def _list(self, path, dim_key=None, **kwargs):
|
||||
"""Get a list of metrics."""
|
||||
url_str = self.base_url + path
|
||||
newheaders = self.get_headers()
|
||||
if dim_key and dim_key in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs[dim_key])
|
||||
kwargs[dim_key] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str += '?%s' % parse.urlencode(kwargs, True)
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return self._parse_body(body)
|
||||
|
||||
def get_headers(self):
|
||||
headers = self.client.credentials_headers()
|
||||
return headers
|
||||
@ -37,3 +64,10 @@ class MonascaManager(base.BaseManager):
|
||||
dim_str = k
|
||||
dim_list.append(dim_str)
|
||||
return ','.join(dim_list)
|
||||
|
||||
def list_next(self):
|
||||
if hasattr(self, 'next') and self.next:
|
||||
self.next = unquote(self.next)
|
||||
path = self.next.split(self.base_url, 1)[-1]
|
||||
return self._list(path)
|
||||
return None
|
||||
|
@ -13,8 +13,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from monascaclient.apiclient import base
|
||||
from monascaclient.common import monasca_manager
|
||||
|
||||
@ -47,18 +45,7 @@ class AlarmDefinitionsManager(monasca_manager.MonascaManager):
|
||||
|
||||
def list(self, **kwargs):
|
||||
"""Get a list of alarm definitions."""
|
||||
url_str = self.base_url
|
||||
newheaders = self.get_headers()
|
||||
if 'dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['dimensions'])
|
||||
kwargs['dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('', 'dimensions', **kwargs)
|
||||
|
||||
def delete(self, **kwargs):
|
||||
"""Delete a specific alarm definition."""
|
||||
|
@ -39,18 +39,7 @@ class AlarmsManager(monasca_manager.MonascaManager):
|
||||
|
||||
def list(self, **kwargs):
|
||||
"""Get a list of alarms."""
|
||||
url_str = self.base_url
|
||||
newheaders = self.get_headers()
|
||||
if 'metric_dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['metric_dimensions'])
|
||||
kwargs['metric_dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('', 'metric_dimensions', **kwargs)
|
||||
|
||||
def delete(self, **kwargs):
|
||||
"""Delete a specific alarm."""
|
||||
|
@ -15,8 +15,6 @@
|
||||
|
||||
from copy import deepcopy
|
||||
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from monascaclient.apiclient import base
|
||||
from monascaclient.common import monasca_manager
|
||||
|
||||
@ -51,82 +49,24 @@ class MetricsManager(monasca_manager.MonascaManager):
|
||||
|
||||
def list(self, **kwargs):
|
||||
"""Get a list of metrics."""
|
||||
url_str = self.base_url
|
||||
newheaders = self.get_headers()
|
||||
if 'dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['dimensions'])
|
||||
kwargs['dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('', 'dimensions', **kwargs)
|
||||
|
||||
def list_names(self, **kwargs):
|
||||
"""Get a list of metric names."""
|
||||
url_str = self.base_url + '/names'
|
||||
newheaders = self.get_headers()
|
||||
if 'dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['dimensions'])
|
||||
kwargs['dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('/names', 'dimensions', **kwargs)
|
||||
|
||||
def list_measurements(self, **kwargs):
|
||||
"""Get a list of measurements based on metric definition filters."""
|
||||
url_str = self.base_url + '/measurements'
|
||||
newheaders = self.get_headers()
|
||||
if 'dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['dimensions'])
|
||||
kwargs['dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('/measurements', 'dimensions', **kwargs)
|
||||
|
||||
def list_statistics(self, **kwargs):
|
||||
"""Get a list of measurement statistics based on metric def filters."""
|
||||
url_str = self.base_url + '/statistics'
|
||||
newheaders = self.get_headers()
|
||||
if 'dimensions' in kwargs:
|
||||
dimstr = self.get_dimensions_url_string(kwargs['dimensions'])
|
||||
kwargs['dimensions'] = dimstr
|
||||
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('/statistics', 'dimensions', **kwargs)
|
||||
|
||||
def list_dimension_names(self, **kwargs):
|
||||
"""Get a list of metric dimension names."""
|
||||
url_str = self.base_url + '/dimensions/names'
|
||||
new_headers = self.get_headers()
|
||||
if kwargs:
|
||||
url_str += '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=new_headers)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('/dimensions/names', **kwargs)
|
||||
|
||||
def list_dimension_values(self, **kwargs):
|
||||
"""Get a list of metric dimension values."""
|
||||
url_str = self.base_url + '/dimensions/names/values'
|
||||
new_headers = self.get_headers()
|
||||
if kwargs:
|
||||
url_str += '?%s' % parse.urlencode(kwargs, True)
|
||||
# print url_str
|
||||
resp, body = self.client.json_request(
|
||||
'GET', url_str, headers=new_headers)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('/dimensions/names/values', **kwargs)
|
||||
|
@ -15,8 +15,6 @@
|
||||
|
||||
from copy import deepcopy
|
||||
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from monascaclient.apiclient import base
|
||||
from monascaclient.common import monasca_manager
|
||||
|
||||
@ -49,14 +47,7 @@ class NotificationsManager(monasca_manager.MonascaManager):
|
||||
|
||||
def list(self, **kwargs):
|
||||
"""Get a list of notifications."""
|
||||
newheaders = self.get_headers()
|
||||
url_str = self.base_url
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
|
||||
resp, body = self.client.json_request('GET', url_str,
|
||||
headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('', **kwargs)
|
||||
|
||||
def delete(self, **kwargs):
|
||||
"""Delete a notification."""
|
||||
|
@ -13,8 +13,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from six.moves.urllib import parse
|
||||
|
||||
from monascaclient.apiclient import base
|
||||
from monascaclient.common import monasca_manager
|
||||
|
||||
@ -31,11 +29,4 @@ class NotificationTypesManager(monasca_manager.MonascaManager):
|
||||
|
||||
def list(self, **kwargs):
|
||||
"""Get a list of notifications."""
|
||||
newheaders = self.get_headers()
|
||||
url_str = self.base_url
|
||||
if kwargs:
|
||||
url_str = url_str + '?%s' % parse.urlencode(kwargs, True)
|
||||
|
||||
resp, body = self.client.json_request('GET', url_str,
|
||||
headers=newheaders)
|
||||
return body['elements'] if type(body) is dict else body
|
||||
return self._list('', **kwargs)
|
||||
|
Loading…
Reference in New Issue
Block a user