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