Add support for getting individual alarms.
Include the *_actions attributes in the CLI output. Change-Id: I19e2e7b9c60b56c0c84687694365ef3614dd0e44
This commit is contained in:
@@ -31,3 +31,10 @@ class AlarmManager(base.Manager):
|
|||||||
def list(self, q=None):
|
def list(self, q=None):
|
||||||
path = '/v2/alarms'
|
path = '/v2/alarms'
|
||||||
return self._list(options.build_url(path, q))
|
return self._list(options.build_url(path, q))
|
||||||
|
|
||||||
|
def get(self, alarm_id):
|
||||||
|
path = '/v2/alarms/%s' % alarm_id
|
||||||
|
try:
|
||||||
|
return self._list(path, expect_single=True)[0]
|
||||||
|
except IndexError:
|
||||||
|
return None
|
||||||
|
|||||||
@@ -98,6 +98,25 @@ def do_alarm_list(cc, args={}):
|
|||||||
sortby=0)
|
sortby=0)
|
||||||
|
|
||||||
|
|
||||||
|
@utils.arg('-a', '--alarm_id', metavar='<ALARM_ID>',
|
||||||
|
help='ID of the alarm to show.')
|
||||||
|
def do_alarm_show(cc, args={}):
|
||||||
|
'''Show an alarm'''
|
||||||
|
if args.alarm_id is None:
|
||||||
|
raise exc.CommandError('Alarm ID not provided (-a <alarm id>)')
|
||||||
|
try:
|
||||||
|
resource = cc.alarms.get(args.alarm_id)
|
||||||
|
except exc.HTTPNotFound:
|
||||||
|
raise exc.CommandError('Alarm not found: %s' % args.alarm_id)
|
||||||
|
else:
|
||||||
|
fields = ['name', 'description', 'counter_name', 'period',
|
||||||
|
'evaluation_periods', 'threshold', 'comparison_operator',
|
||||||
|
'state', 'enabled', 'alarm_id', 'user_id', 'project_id',
|
||||||
|
'alarm_actions', 'ok_actions', 'insufficient_data_actions']
|
||||||
|
data = dict([(f, getattr(resource, f, '')) for f in fields])
|
||||||
|
utils.print_dict(data, wrap=72)
|
||||||
|
|
||||||
|
|
||||||
@utils.arg('-q', '--query', metavar='<QUERY>',
|
@utils.arg('-q', '--query', metavar='<QUERY>',
|
||||||
help='key[op]value; list.')
|
help='key[op]value; list.')
|
||||||
def do_resource_list(cc, args={}):
|
def do_resource_list(cc, args={}):
|
||||||
|
|||||||
@@ -50,6 +50,13 @@ fixtures = {
|
|||||||
[AN_ALARM],
|
[AN_ALARM],
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
'/v2/alarms/alarm-id':
|
||||||
|
{
|
||||||
|
'GET': (
|
||||||
|
{},
|
||||||
|
AN_ALARM,
|
||||||
|
),
|
||||||
|
},
|
||||||
'/v2/alarms?q.op=&q.op=&q.value=project-id&q.value=SwiftObjectAlarm'
|
'/v2/alarms?q.op=&q.op=&q.value=project-id&q.value=SwiftObjectAlarm'
|
||||||
'&q.field=project_id&q.field=name':
|
'&q.field=project_id&q.field=name':
|
||||||
{
|
{
|
||||||
@@ -92,3 +99,12 @@ class AlarmManagerTest(unittest.TestCase):
|
|||||||
self.assertEqual(self.api.calls, expect)
|
self.assertEqual(self.api.calls, expect)
|
||||||
self.assertEqual(len(alarms), 1)
|
self.assertEqual(len(alarms), 1)
|
||||||
self.assertEqual(alarms[0].alarm_id, 'alarm-id')
|
self.assertEqual(alarms[0].alarm_id, 'alarm-id')
|
||||||
|
|
||||||
|
def test_get(self):
|
||||||
|
alarm = self.mgr.get(alarm_id='alarm-id')
|
||||||
|
expect = [
|
||||||
|
('GET', '/v2/alarms/alarm-id', {}, None),
|
||||||
|
]
|
||||||
|
self.assertEqual(self.api.calls, expect)
|
||||||
|
self.assertTrue(alarm)
|
||||||
|
self.assertEqual(alarm.alarm_id, 'alarm-id')
|
||||||
|
|||||||
Reference in New Issue
Block a user