From 7a13c3ce9689e652f0a59f5217bf4f46ec094f97 Mon Sep 17 00:00:00 2001 From: Nguyen Hai Date: Sat, 24 Feb 2018 02:24:34 +0900 Subject: [PATCH] Complete Event osc commands Please see the results here: http://paste.openstack.org/show/683041/ Change-Id: Ib6b35b5757fb63465e0f587e47c122313b909720 Implements: blueprint tacker-support-python-openstackclient --- setup.cfg | 2 + tackerclient/osc/v1/events/__init__.py | 0 tackerclient/osc/v1/events/events.py | 116 +++++++++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 tackerclient/osc/v1/events/__init__.py create mode 100644 tackerclient/osc/v1/events/events.py diff --git a/setup.cfg b/setup.cfg index 398b5817..02081012 100644 --- a/setup.cfg +++ b/setup.cfg @@ -55,6 +55,8 @@ openstack.tackerclient.v1 = ns_descriptor_list = tackerclient.osc.v1.nfvo.nsd:ListNSD ns_descriptor_show = tackerclient.osc.v1.nfvo.nsd:ShowNSD ns_descriptor_template_show = tackerclient.osc.v1.nfvo.nsd:ShowTemplateNSD + nfv_event_show = tackerclient.osc.v1.events.events:ShowEvent + nfv_event_list = tackerclient.osc.v1.events.events:ListEvent [build_sphinx] diff --git a/tackerclient/osc/v1/events/__init__.py b/tackerclient/osc/v1/events/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tackerclient/osc/v1/events/events.py b/tackerclient/osc/v1/events/events.py new file mode 100644 index 00000000..9f75b73c --- /dev/null +++ b/tackerclient/osc/v1/events/events.py @@ -0,0 +1,116 @@ +# Copyright 2018 OpenStack Foundation +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# + +from osc_lib.command import command +from osc_lib import utils + +from tackerclient.i18n import _ +from tackerclient.osc import sdk_utils +from tackerclient.osc import utils as tacker_osc_utils +from tackerclient.tacker import v1_0 as tackerV10 + +_attr_map = ( + ('id', 'ID', tacker_osc_utils.LIST_BOTH), + ('resource_type', 'Resource Type', tacker_osc_utils.LIST_BOTH), + ('resource_id', 'Resource ID', tacker_osc_utils.LIST_BOTH), + ('resource_state', 'Resource State', tacker_osc_utils.LIST_BOTH), + ('event_type', 'Event Type', tacker_osc_utils.LIST_BOTH), + ('timestamp', 'Timestamp', tacker_osc_utils.LIST_BOTH), + ('event_details', 'Event Details', tacker_osc_utils.LIST_LONG_ONLY), +) + +_EVENT = "event" + +events_path = '/events' + + +def _get_columns(item): + column_map = {} + return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map) + + +class ShowEvent(command.ShowOne): + _description = _("Show event given the event id.") + + def get_parser(self, prog_name): + parser = super(ShowEvent, self).get_parser(prog_name) + parser.add_argument( + _EVENT, + metavar="ID", + help=_("ID of event to display") + ) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.tackerclient + obj_id = tackerV10.find_resourceid_by_name_or_id( + client, _EVENT, parsed_args.event) + obj = client.show_event(obj_id) + display_columns, columns = _get_columns(obj[_EVENT]) + data = utils.get_item_properties( + sdk_utils.DictModel(obj[_EVENT]), + columns,) + return (display_columns, data) + + +class ListEvent(command.Lister): + _description = _("List events of resources.") + + def get_parser(self, prog_name): + parser = super(ListEvent, self).get_parser(prog_name) + parser.add_argument( + '--id', + help=_("id of the event to look up.")) + parser.add_argument( + '--resource-type', + help=_("resource type of the events to look up.")) + parser.add_argument( + '--resource-id', + help=_("resource id of the events to look up.")) + parser.add_argument( + '--resource-state', + help=_("resource state of the events to look up.")) + parser.add_argument( + '--event-type', + help=_("event type of the events to look up.")) + parser.add_argument( + '--long', + action='store_true', + help=_("List additional fields in output")) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.tackerclient + _params = {} + if parsed_args.id: + _params['id'] = parsed_args.id + if parsed_args.resource_id: + _params['resource_id'] = parsed_args.resource_id + if parsed_args.resource_state: + _params['resource_state'] = parsed_args.resource_id + if parsed_args.event_type: + _params['event_type'] = parsed_args.event_type + if parsed_args.resource_type: + _params['resource_type'] = parsed_args.resource_type + events = client.list('events', events_path, True, **_params) + data = {} + data['events'] = events['events'] + headers, columns = tacker_osc_utils.get_column_definitions( + _attr_map, long_listing=parsed_args.long) + return (headers, + (utils.get_dict_properties( + s, columns, + ) for s in data[_EVENT + 's']))