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):
|
||||
path = '/v2/alarms'
|
||||
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)
|
||||
|
||||
|
||||
@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>',
|
||||
help='key[op]value; list.')
|
||||
def do_resource_list(cc, args={}):
|
||||
|
||||
@@ -50,6 +50,13 @@ fixtures = {
|
||||
[AN_ALARM],
|
||||
),
|
||||
},
|
||||
'/v2/alarms/alarm-id':
|
||||
{
|
||||
'GET': (
|
||||
{},
|
||||
AN_ALARM,
|
||||
),
|
||||
},
|
||||
'/v2/alarms?q.op=&q.op=&q.value=project-id&q.value=SwiftObjectAlarm'
|
||||
'&q.field=project_id&q.field=name':
|
||||
{
|
||||
@@ -92,3 +99,12 @@ class AlarmManagerTest(unittest.TestCase):
|
||||
self.assertEqual(self.api.calls, expect)
|
||||
self.assertEqual(len(alarms), 1)
|
||||
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