Merge "Add list_next for pagination"
This commit is contained in:
commit
de70f047dd
|
@ -15,12 +15,39 @@
|
||||||
|
|
||||||
from monascaclient.apiclient import base
|
from monascaclient.apiclient import base
|
||||||
|
|
||||||
|
from six.moves.urllib import parse
|
||||||
|
from six.moves.urllib_parse import unquote
|
||||||
|
|
||||||
|
|
||||||
class MonascaManager(base.BaseManager):
|
class MonascaManager(base.BaseManager):
|
||||||
|
|
||||||
def __init__(self, client, **kwargs):
|
def __init__(self, client, **kwargs):
|
||||||
super(MonascaManager, self).__init__(client)
|
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):
|
def get_headers(self):
|
||||||
headers = self.client.credentials_headers()
|
headers = self.client.credentials_headers()
|
||||||
return headers
|
return headers
|
||||||
|
@ -37,3 +64,10 @@ class MonascaManager(base.BaseManager):
|
||||||
dim_str = k
|
dim_str = k
|
||||||
dim_list.append(dim_str)
|
dim_list.append(dim_str)
|
||||||
return ','.join(dim_list)
|
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
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from six.moves.urllib import parse
|
|
||||||
|
|
||||||
from monascaclient.apiclient import base
|
from monascaclient.apiclient import base
|
||||||
from monascaclient.common import monasca_manager
|
from monascaclient.common import monasca_manager
|
||||||
|
|
||||||
|
@ -47,18 +45,7 @@ class AlarmDefinitionsManager(monasca_manager.MonascaManager):
|
||||||
|
|
||||||
def list(self, **kwargs):
|
def list(self, **kwargs):
|
||||||
"""Get a list of alarm definitions."""
|
"""Get a list of alarm definitions."""
|
||||||
url_str = self.base_url
|
return self._list('', 'dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def delete(self, **kwargs):
|
def delete(self, **kwargs):
|
||||||
"""Delete a specific alarm definition."""
|
"""Delete a specific alarm definition."""
|
||||||
|
|
|
@ -39,18 +39,7 @@ class AlarmsManager(monasca_manager.MonascaManager):
|
||||||
|
|
||||||
def list(self, **kwargs):
|
def list(self, **kwargs):
|
||||||
"""Get a list of alarms."""
|
"""Get a list of alarms."""
|
||||||
url_str = self.base_url
|
return self._list('', 'metric_dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def delete(self, **kwargs):
|
def delete(self, **kwargs):
|
||||||
"""Delete a specific alarm."""
|
"""Delete a specific alarm."""
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
|
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from six.moves.urllib import parse
|
|
||||||
|
|
||||||
from monascaclient.apiclient import base
|
from monascaclient.apiclient import base
|
||||||
from monascaclient.common import monasca_manager
|
from monascaclient.common import monasca_manager
|
||||||
|
|
||||||
|
@ -51,82 +49,24 @@ class MetricsManager(monasca_manager.MonascaManager):
|
||||||
|
|
||||||
def list(self, **kwargs):
|
def list(self, **kwargs):
|
||||||
"""Get a list of metrics."""
|
"""Get a list of metrics."""
|
||||||
url_str = self.base_url
|
return self._list('', 'dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def list_names(self, **kwargs):
|
def list_names(self, **kwargs):
|
||||||
"""Get a list of metric names."""
|
"""Get a list of metric names."""
|
||||||
url_str = self.base_url + '/names'
|
return self._list('/names', 'dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def list_measurements(self, **kwargs):
|
def list_measurements(self, **kwargs):
|
||||||
"""Get a list of measurements based on metric definition filters."""
|
"""Get a list of measurements based on metric definition filters."""
|
||||||
url_str = self.base_url + '/measurements'
|
return self._list('/measurements', 'dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def list_statistics(self, **kwargs):
|
def list_statistics(self, **kwargs):
|
||||||
"""Get a list of measurement statistics based on metric def filters."""
|
"""Get a list of measurement statistics based on metric def filters."""
|
||||||
url_str = self.base_url + '/statistics'
|
return self._list('/statistics', 'dimensions', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def list_dimension_names(self, **kwargs):
|
def list_dimension_names(self, **kwargs):
|
||||||
"""Get a list of metric dimension names."""
|
"""Get a list of metric dimension names."""
|
||||||
url_str = self.base_url + '/dimensions/names'
|
return self._list('/dimensions/names', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def list_dimension_values(self, **kwargs):
|
def list_dimension_values(self, **kwargs):
|
||||||
"""Get a list of metric dimension values."""
|
"""Get a list of metric dimension values."""
|
||||||
url_str = self.base_url + '/dimensions/names/values'
|
return self._list('/dimensions/names/values', **kwargs)
|
||||||
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
|
|
||||||
|
|
|
@ -15,8 +15,6 @@
|
||||||
|
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from six.moves.urllib import parse
|
|
||||||
|
|
||||||
from monascaclient.apiclient import base
|
from monascaclient.apiclient import base
|
||||||
from monascaclient.common import monasca_manager
|
from monascaclient.common import monasca_manager
|
||||||
|
|
||||||
|
@ -49,14 +47,7 @@ class NotificationsManager(monasca_manager.MonascaManager):
|
||||||
|
|
||||||
def list(self, **kwargs):
|
def list(self, **kwargs):
|
||||||
"""Get a list of notifications."""
|
"""Get a list of notifications."""
|
||||||
newheaders = self.get_headers()
|
return self._list('', **kwargs)
|
||||||
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
|
|
||||||
|
|
||||||
def delete(self, **kwargs):
|
def delete(self, **kwargs):
|
||||||
"""Delete a notification."""
|
"""Delete a notification."""
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from six.moves.urllib import parse
|
|
||||||
|
|
||||||
from monascaclient.apiclient import base
|
from monascaclient.apiclient import base
|
||||||
from monascaclient.common import monasca_manager
|
from monascaclient.common import monasca_manager
|
||||||
|
|
||||||
|
@ -31,11 +29,4 @@ class NotificationTypesManager(monasca_manager.MonascaManager):
|
||||||
|
|
||||||
def list(self, **kwargs):
|
def list(self, **kwargs):
|
||||||
"""Get a list of notifications."""
|
"""Get a list of notifications."""
|
||||||
newheaders = self.get_headers()
|
return self._list('', **kwargs)
|
||||||
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
|
|
||||||
|
|
Loading…
Reference in New Issue