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
	 Eoghan Glynn
					Eoghan Glynn