diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-06-24 18:40:19 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-06-24 18:40:19 +0000 |
commit | 3e0f36341600c5a3bee371557c766b0592b3ddc6 (patch) | |
tree | 74455ea86a84d90ea0f6c5b3c69c6d0c7bce6c5f | |
parent | e5cd3b26b7b4dbf86b9665a459db50f4be93dd34 (diff) | |
parent | b8a3fe54c06c7e04314d39da80b5964a589356f0 (diff) | |
download | python-ceilometerclient-3e0f36341600c5a3bee371557c766b0592b3ddc6.tar.gz |
Merge "Add methods to resource classes"
-rw-r--r-- | ceilometerclient/tests/v2/test_alarms.py | 38 | ||||
-rw-r--r-- | ceilometerclient/tests/v2/test_events.py | 45 | ||||
-rw-r--r-- | ceilometerclient/tests/v2/test_resources.py | 11 | ||||
-rw-r--r-- | ceilometerclient/v2/alarms.py | 16 | ||||
-rw-r--r-- | ceilometerclient/v2/events.py | 5 | ||||
-rw-r--r-- | ceilometerclient/v2/resources.py | 5 | ||||
-rw-r--r-- | ceilometerclient/v2/shell.py | 5 |
7 files changed, 105 insertions, 20 deletions
diff --git a/ceilometerclient/tests/v2/test_alarms.py b/ceilometerclient/tests/v2/test_alarms.py index 13d04d1..ad6a811 100644 --- a/ceilometerclient/tests/v2/test_alarms.py +++ b/ceilometerclient/tests/v2/test_alarms.py @@ -201,6 +201,10 @@ fixtures = { {}, UPDATED_ALARM, ), + 'DELETE': ( + {}, + None, + ), }, '/v2/alarms/alarm-id/state': { @@ -343,6 +347,40 @@ class AlarmManagerTest(testtools.TestCase): self.assertEqual(self.api.calls, expect) self.assertTrue(deleted is None) + def test_get_from_alarm_class(self): + alarm = self.mgr.get(alarm_id='alarm-id') + self.assertTrue(alarm) + alarm.get() + expect = [ + ('GET', '/v2/alarms/alarm-id', {}, None), + ('GET', '/v2/alarms/alarm-id', {}, None) + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual('alarm-id', alarm.alarm_id) + self.assertEqual(alarm.threshold_rule, alarm.rule) + + def test_get_state_from_alarm_class(self): + alarm = self.mgr.get(alarm_id='alarm-id') + self.assertTrue(alarm) + state = alarm.get_state() + expect = [ + ('GET', '/v2/alarms/alarm-id', {}, None), + ('GET', '/v2/alarms/alarm-id/state', {}, None) + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual('alarm', state) + + def test_delete_from_alarm_class(self): + alarm = self.mgr.get(alarm_id='alarm-id') + self.assertTrue(alarm) + deleted = alarm.delete() + expect = [ + ('GET', '/v2/alarms/alarm-id', {}, None), + ('DELETE', '/v2/alarms/alarm-id', {}, None) + ] + self.assertEqual(expect, self.api.calls) + self.assertTrue(deleted is None) + def _do_test_get_history(self, q, url): history = self.mgr.get_history(q=q, alarm_id='alarm-id') expect = [('GET', url, {}, None)] diff --git a/ceilometerclient/tests/v2/test_events.py b/ceilometerclient/tests/v2/test_events.py index 96cf7f5..4935d8b 100644 --- a/ceilometerclient/tests/v2/test_events.py +++ b/ceilometerclient/tests/v2/test_events.py @@ -22,22 +22,22 @@ fixtures = { {}, [ { + 'message_id': '1', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', - 'traits': {'trait_A': 'abc', - 'message_id': '1'}, + 'traits': {'trait_A': 'abc'}, }, { + 'message_id': '2', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', - 'traits': {'trait_A': 'def', - 'message_id': '2'}, + 'traits': {'trait_A': 'def'}, }, { + 'message_id': '3', 'event_type': 'Bar', 'generated': '1970-01-01T00:00:00', - 'traits': {'trait_B': 'bartrait', - 'message_id': '3'}, + 'traits': {'trait_B': 'bartrait'}, }, ] ), @@ -48,18 +48,18 @@ fixtures = { {}, [ { + 'message_id': '1', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'abc', - 'hostname': 'localhost', - 'message_id': '1'}, + 'hostname': 'localhost'}, }, { + 'message_id': '2', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'def', - 'hostname': 'localhost', - 'message_id': '2'}, + 'hostname': 'localhost'}, } ] ), @@ -70,18 +70,18 @@ fixtures = { {}, [ { + 'message_id': '1', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'abc', - 'hostname': 'foreignhost', - 'message_id': '1'}, + 'hostname': 'foreignhost'}, }, { + 'message_id': '2', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'def', - 'hostname': 'foreignhost', - 'message_id': '2'}, + 'hostname': 'foreignhost'}, } ] ), @@ -93,12 +93,12 @@ fixtures = { {}, [ { + 'message_id': '1', 'event_type': 'Bar', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'abc', 'hostname': 'localhost', - 'num_cpus': '5', - 'message_id': '1'}, + 'num_cpus': '5'}, }, ] ), @@ -109,10 +109,10 @@ fixtures = { 'GET': ( {}, { + 'message_id': '2', 'event_type': 'Foo', 'generated': '1970-01-01T00:00:00', 'traits': {'trait_A': 'def', - 'message_id': '2', 'intTrait': '42'}, } ), @@ -186,3 +186,14 @@ class EventManagerTest(utils.BaseTestCase): ] self.assertEqual(self.api.calls, expect) self.assertEqual(len(events), 1) + + def test_get_from_event_class(self): + event = self.mgr.get(2) + self.assertTrue(event) + event.get() + expect = [ + ('GET', '/v2/events/2', {}, None), + ('GET', '/v2/events/2', {}, None), + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual('Foo', event.event_type) diff --git a/ceilometerclient/tests/v2/test_resources.py b/ceilometerclient/tests/v2/test_resources.py index 13a29fe..d62ce40 100644 --- a/ceilometerclient/tests/v2/test_resources.py +++ b/ceilometerclient/tests/v2/test_resources.py @@ -104,3 +104,14 @@ class ResourceManagerTest(utils.BaseTestCase): self.assertEqual(self.api.calls, expect) self.assertEqual(len(resources), 1) self.assertEqual(resources[0].resource_id, 'a') + + def test_get_from_resource_class(self): + resource = self.mgr.get(resource_id='a') + self.assertTrue(resource) + resource.get() + expect = [ + ('GET', '/v2/resources/a', {}, None), + ('GET', '/v2/resources/a', {}, None), + ] + self.assertEqual(expect, self.api.calls) + self.assertEqual('a', resource.resource_id) diff --git a/ceilometerclient/v2/alarms.py b/ceilometerclient/v2/alarms.py index 50fa1e4..7c46fb2 100644 --- a/ceilometerclient/v2/alarms.py +++ b/ceilometerclient/v2/alarms.py @@ -19,6 +19,7 @@ import warnings from ceilometerclient.common import base from ceilometerclient.common import utils +from ceilometerclient import exc from ceilometerclient.v2 import options @@ -48,8 +49,16 @@ class Alarm(base.Resource): # that look like the Alarm storage object if k == 'rule': k = '%s_rule' % self.type + if k == 'id': + return self.alarm_id return super(Alarm, self).__getattr__(k) + def delete(self): + return self.manager.delete(self.alarm_id) + + def get_state(self): + return self.manager.get_state(self.alarm_id) + class AlarmChange(base.Resource): def __repr__(self): @@ -74,6 +83,13 @@ class AlarmManager(base.Manager): return self._list(self._path(alarm_id), expect_single=True)[0] except IndexError: return None + except exc.HTTPNotFound: + # When we try to get deleted alarm HTTPNotFound occurs + # or when alarm doesn't exists this exception don't must + # go deeper because cleanUp() (method which remove all + # created things like instance, alarm, etc.) at scenario + # tests doesn't know how to process it + return None @classmethod def _compat_legacy_alarm_kwargs(cls, kwargs, create=False): diff --git a/ceilometerclient/v2/events.py b/ceilometerclient/v2/events.py index bf96d4c..32380d6 100644 --- a/ceilometerclient/v2/events.py +++ b/ceilometerclient/v2/events.py @@ -20,6 +20,11 @@ class Event(base.Resource): def __repr__(self): return "<Event %s>" % self._info + def __getattr__(self, k): + if k == 'id': + return self.message_id + return super(Event, self).__getattr__(k) + class EventManager(base.Manager): resource_class = Event diff --git a/ceilometerclient/v2/resources.py b/ceilometerclient/v2/resources.py index 897033e..99e6fd5 100644 --- a/ceilometerclient/v2/resources.py +++ b/ceilometerclient/v2/resources.py @@ -21,6 +21,11 @@ class Resource(base.Resource): def __repr__(self): return "<Resource %s>" % self._info + def __getattr__(self, k): + if k == 'id': + return self.resource_id + return super(Resource, self).__getattr__(k) + class ResourceManager(base.Manager): resource_class = Resource diff --git a/ceilometerclient/v2/shell.py b/ceilometerclient/v2/shell.py index 9be9b02..9a42b0f 100644 --- a/ceilometerclient/v2/shell.py +++ b/ceilometerclient/v2/shell.py @@ -322,9 +322,8 @@ def _display_alarm(alarm): help='ID of the alarm to show.') def do_alarm_show(cc, args={}): '''Show an alarm.''' - try: - alarm = cc.alarms.get(args.alarm_id) - except exc.HTTPNotFound: + alarm = cc.alarms.get(args.alarm_id) + if alarm is None: raise exc.CommandError('Alarm not found: %s' % args.alarm_id) else: _display_alarm(alarm) |