Add support for getting individual alarms.

Include the *_actions attributes in the CLI output.

Change-Id: I19e2e7b9c60b56c0c84687694365ef3614dd0e44
This commit is contained in:
Eoghan Glynn
2013-05-15 16:10:32 +00:00
parent 382e62be8c
commit 173cfa50fd
3 changed files with 42 additions and 0 deletions

View File

@@ -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

View File

@@ -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={}):

View File

@@ -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')