add limit support
limit is now a mandatory condition when querying. this patch allows users to control this value. Change-Id: Ied5f80dc8cfe8b5f85e60fb8ca1d4a8f26663456 Closes-Bug: #1493511
This commit is contained in:
parent
d40487643e
commit
daed7e59c3
@ -32,6 +32,7 @@ from ceilometerclient.v2 import capabilities
|
||||
from ceilometerclient.v2 import event_types
|
||||
from ceilometerclient.v2 import events
|
||||
from ceilometerclient.v2 import meters
|
||||
from ceilometerclient.v2 import resources
|
||||
from ceilometerclient.v2 import samples
|
||||
from ceilometerclient.v2 import shell as ceilometer_shell
|
||||
from ceilometerclient.v2 import statistics
|
||||
@ -1160,6 +1161,7 @@ class ShellEventListCommandTest(utils.BaseTestCase):
|
||||
self.args = mock.Mock()
|
||||
self.args.query = None
|
||||
self.args.no_traits = None
|
||||
self.args.limit = None
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_event_list(self):
|
||||
@ -1346,6 +1348,7 @@ class ShellMeterListCommandTest(utils.BaseTestCase):
|
||||
self.cc = mock.Mock()
|
||||
self.cc.meters.list = mock.Mock()
|
||||
self.args = mock.MagicMock()
|
||||
self.args.limit = None
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_meter_list(self):
|
||||
@ -1353,7 +1356,7 @@ class ShellMeterListCommandTest(utils.BaseTestCase):
|
||||
self.cc.meters.list.return_value = [meter]
|
||||
|
||||
ceilometer_shell.do_meter_list(self.cc, self.args)
|
||||
self.cc.meters.list.assert_called_once_with(q=[])
|
||||
self.cc.meters.list.assert_called_once_with(q=[], limit=None)
|
||||
|
||||
self.assertEqual('''\
|
||||
+-------+-------+-------+-------------+---------+------------+
|
||||
@ -1364,6 +1367,39 @@ class ShellMeterListCommandTest(utils.BaseTestCase):
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
|
||||
class ShellResourceListCommandTest(utils.BaseTestCase):
|
||||
|
||||
RESOURCE = {
|
||||
"source": "openstack",
|
||||
"resource_id": "resource-id",
|
||||
"project_id": "project",
|
||||
"user_id": "user"
|
||||
}
|
||||
|
||||
def setUp(self):
|
||||
super(ShellResourceListCommandTest, self).setUp()
|
||||
self.cc = mock.Mock()
|
||||
self.cc.resources.list = mock.Mock()
|
||||
self.args = mock.MagicMock()
|
||||
self.args.limit = None
|
||||
|
||||
@mock.patch('sys.stdout', new=six.StringIO())
|
||||
def test_resource_list(self):
|
||||
resource = resources.Resource(mock.Mock(), self.RESOURCE)
|
||||
self.cc.resources.list.return_value = [resource]
|
||||
|
||||
ceilometer_shell.do_resource_list(self.cc, self.args)
|
||||
self.cc.resources.list.assert_called_once_with(q=[], limit=None)
|
||||
|
||||
self.assertEqual('''\
|
||||
+-------------+-----------+---------+------------+
|
||||
| Resource ID | Source | User ID | Project ID |
|
||||
+-------------+-----------+---------+------------+
|
||||
| resource-id | openstack | user | project |
|
||||
+-------------+-----------+---------+------------+
|
||||
''', sys.stdout.getvalue())
|
||||
|
||||
|
||||
class ShellEventTypeListCommandTest(utils.BaseTestCase):
|
||||
|
||||
EVENT_TYPE = {
|
||||
|
@ -29,9 +29,10 @@ class Event(base.Resource):
|
||||
class EventManager(base.Manager):
|
||||
resource_class = Event
|
||||
|
||||
def list(self, q=None):
|
||||
def list(self, q=None, limit=None):
|
||||
path = '/v2/events'
|
||||
return self._list(options.build_url(path, q))
|
||||
params = ['limit=%s' % limit] if limit else None
|
||||
return self._list(options.build_url(path, q, params))
|
||||
|
||||
def get(self, message_id):
|
||||
path = '/v2/events/%s'
|
||||
|
@ -25,6 +25,7 @@ class Meter(base.Resource):
|
||||
class MeterManager(base.Manager):
|
||||
resource_class = Meter
|
||||
|
||||
def list(self, q=None):
|
||||
def list(self, q=None, limit=None):
|
||||
path = '/v2/meters'
|
||||
return self._list(options.build_url(path, q))
|
||||
params = ['limit=%s' % limit] if limit else None
|
||||
return self._list(options.build_url(path, q, params))
|
||||
|
@ -30,9 +30,11 @@ class Resource(base.Resource):
|
||||
class ResourceManager(base.Manager):
|
||||
resource_class = Resource
|
||||
|
||||
def list(self, q=None, links=None):
|
||||
def list(self, q=None, links=None, limit=None):
|
||||
path = '/v2/resources'
|
||||
params = ['meter_links=%d' % (1 if links else 0)]
|
||||
if limit:
|
||||
params.append('limit=%s' % limit)
|
||||
return self._list(options.build_url(path, q, params))
|
||||
|
||||
def get(self, resource_id):
|
||||
|
@ -254,9 +254,12 @@ def do_sample_create(cc, args={}):
|
||||
@utils.arg('-q', '--query', metavar='<QUERY>',
|
||||
help='key[op]data_type::value; list. data_type is optional, '
|
||||
'but if supplied must be string, integer, float, or boolean.')
|
||||
@utils.arg('-l', '--limit', metavar='<NUMBER>',
|
||||
help='Maximum number of meters to return.')
|
||||
def do_meter_list(cc, args={}):
|
||||
"""List the user's meters."""
|
||||
meters = cc.meters.list(q=options.cli_to_array(args.query))
|
||||
meters = cc.meters.list(q=options.cli_to_array(args.query),
|
||||
limit=args.limit)
|
||||
field_labels = ['Name', 'Type', 'Unit', 'Resource ID', 'User ID',
|
||||
'Project ID']
|
||||
fields = ['name', 'type', 'unit', 'resource_id', 'user_id',
|
||||
@ -1050,9 +1053,12 @@ def do_alarm_history(cc, args={}):
|
||||
@utils.arg('-q', '--query', metavar='<QUERY>',
|
||||
help='key[op]data_type::value; list. data_type is optional, '
|
||||
'but if supplied must be string, integer, float, or boolean.')
|
||||
@utils.arg('-l', '--limit', metavar='<NUMBER>',
|
||||
help='Maximum number of resources to return.')
|
||||
def do_resource_list(cc, args={}):
|
||||
"""List the resources."""
|
||||
resources = cc.resources.list(q=options.cli_to_array(args.query))
|
||||
resources = cc.resources.list(q=options.cli_to_array(args.query),
|
||||
limit=args.limit)
|
||||
|
||||
field_labels = ['Resource ID', 'Source', 'User ID', 'Project ID']
|
||||
fields = ['resource_id', 'source', 'user_id', 'project_id']
|
||||
@ -1081,9 +1087,12 @@ def do_resource_show(cc, args={}):
|
||||
'or datetime.')
|
||||
@utils.arg('--no-traits', dest='no_traits', action='store_true',
|
||||
help='If specified, traits will not be printed.')
|
||||
@utils.arg('-l', '--limit', metavar='<NUMBER>',
|
||||
help='Maximum number of events to return.')
|
||||
def do_event_list(cc, args={}):
|
||||
"""List events."""
|
||||
events = cc.events.list(q=options.cli_to_array(args.query))
|
||||
events = cc.events.list(q=options.cli_to_array(args.query),
|
||||
limit=args.limit)
|
||||
field_labels = ['Message ID', 'Event Type', 'Generated', 'Traits']
|
||||
fields = ['message_id', 'event_type', 'generated', 'traits']
|
||||
if args.no_traits:
|
||||
|
Loading…
Reference in New Issue
Block a user