From f01874ddc66c066a3fbdb1745f871813612d5a79 Mon Sep 17 00:00:00 2001 From: liusheng Date: Wed, 15 Mar 2017 16:15:38 +0800 Subject: [PATCH] Add "event trait description" command This command allow users to list the trait type definitions of a specified event_type. Change-Id: Iea178629289f28edd5164aa32cd5d172a5aca28c --- pankoclient/osc/v2/events.py | 21 ++++++++++++++++++++ pankoclient/tests/unit/fakes.py | 2 ++ pankoclient/tests/unit/osc/v2/test_events.py | 19 ++++++++++++++++++ pankoclient/v2/client.py | 2 ++ pankoclient/v2/events.py | 12 +++++++++++ setup.cfg | 1 + 6 files changed, 57 insertions(+) diff --git a/pankoclient/osc/v2/events.py b/pankoclient/osc/v2/events.py index 46c4a79..dabaffd 100644 --- a/pankoclient/osc/v2/events.py +++ b/pankoclient/osc/v2/events.py @@ -131,3 +131,24 @@ class EventTraitList(command.Lister): columns = ('name', 'value', 'type') return (columns, (utils.get_item_properties(t, columns) for t in event_traits)) + + +class EventTraitDescription(command.Lister): + """List trait info for an event type.""" + + def get_parser(self, prog_name): + parser = super(EventTraitDescription, self).get_parser(prog_name) + parser.add_argument( + 'type_name', + metavar='', + help='Type of the event for which traits definitions will be ' + 'shown.' + ) + return parser + + def take_action(self, parsed_args): + ac = self.app.client_manager.event + event_traits = ac.event_trait_description.list(parsed_args.type_name) + columns = ('name', 'type') + return (columns, + (utils.get_item_properties(t, columns) for t in event_traits)) diff --git a/pankoclient/tests/unit/fakes.py b/pankoclient/tests/unit/fakes.py index 5811eb5..b1b3381 100644 --- a/pankoclient/tests/unit/fakes.py +++ b/pankoclient/tests/unit/fakes.py @@ -59,6 +59,8 @@ class FakeTestEventV2Client(object): self.fake_http_client) self.event_type = events.EventTypeManager(self.fake_http_client) self.event_trait = events.EventTraitsManager(self.fake_http_client) + self.event_trait_description = events.EventTraitDescriptionManager( + self.fake_http_client) class FakeHTTPClient(object): diff --git a/pankoclient/tests/unit/osc/v2/test_events.py b/pankoclient/tests/unit/osc/v2/test_events.py index 515332c..eeadbf4 100644 --- a/pankoclient/tests/unit/osc/v2/test_events.py +++ b/pankoclient/tests/unit/osc/v2/test_events.py @@ -54,3 +54,22 @@ class TestEventTraitsList(test_base.TestEventV2): expected_url = '/v2/event_types/%s/traits/%s' % ( parsed_args.type_name, parsed_args.trait_name) mock_list.assert_called_once_with(expected_url) + + +@mock.patch.object(events_mgr.EventTraitDescriptionManager, '_list') +class TestEventTraitDescription(test_base.TestEventV2): + def setUp(self): + super(TestEventTraitDescription, self).setUp() + self.cmd = events.EventTraitDescription(self.app, None) + + def test_event_type_traits_description(self, mock_list): + arglist = [ + 'event_type1', + ] + verifylist = [ + ('type_name', 'event_type1'), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + self.cmd.take_action(parsed_args) + expected_url = '/v2/event_types/%s/traits/' % parsed_args.type_name + mock_list.assert_called_once_with(expected_url) diff --git a/pankoclient/v2/client.py b/pankoclient/v2/client.py index aaa870b..c0bccf6 100644 --- a/pankoclient/v2/client.py +++ b/pankoclient/v2/client.py @@ -28,3 +28,5 @@ class Client(object): self.event = events.EventManager(self.http_client) self.event_type = events.EventTypeManager(self.http_client) self.event_trait = events.EventTraitsManager(self.http_client) + self.event_trait_description = events.EventTraitDescriptionManager( + self.http_client) diff --git a/pankoclient/v2/events.py b/pankoclient/v2/events.py index 25d0024..5bea17b 100644 --- a/pankoclient/v2/events.py +++ b/pankoclient/v2/events.py @@ -27,6 +27,10 @@ class EventTrait(base.Resource): pass +class TraitDescription(base.Resource): + pass + + class EventManager(base.ManagerWithFind): resource_class = Event @@ -75,3 +79,11 @@ class EventTraitsManager(base.ManagerWithFind): def list(self, event_type, trait_name): url = '/v2/event_types/%s/traits/%s' % (event_type, trait_name) return self._list(url) + + +class EventTraitDescriptionManager(base.ManagerWithFind): + resource_class = TraitDescription + + def list(self, event_type): + url = '/v2/event_types/%s/traits/' % event_type + return self._list(url) diff --git a/setup.cfg b/setup.cfg index 6b6f584..95bcc5f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,6 +35,7 @@ openstack.event.v2 = event show = pankoclient.osc.v2.events:EventShow event type list = pankoclient.osc.v2.events:EventTypeList event trait list = pankoclient.osc.v2.events:EventTraitList + event trait description = pankoclient.osc.v2.events:EventTraitDescription [build_sphinx] source-dir = doc/source