From 1e32ace8d4fd38bc68a589981f5ada5ee2d4c39b Mon Sep 17 00:00:00 2001 From: Namrata Sitlani Date: Fri, 16 Dec 2016 12:40:56 +0000 Subject: [PATCH] Add OSC Plugin for openstack appcontainer show This change implements the "openstack appcontainer show" command Based on existing zun command: zun show Partially Implements:blueprint zun-osc-plugin Change-Id: Ib03be2f3c41f48cfff9972a51f38f1ff401ae5c8 --- setup.cfg | 3 +++ zunclient/osc/v1/__init__.py | 0 zunclient/osc/v1/containers.py | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 zunclient/osc/v1/__init__.py create mode 100644 zunclient/osc/v1/containers.py diff --git a/setup.cfg b/setup.cfg index 59ab40f2..de5eb6c3 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,6 +31,9 @@ console_scripts = openstack.cli.extension = container = zunclient.osc.plugin +openstack.container.v1 = + appcontainer_show = zunclient.osc.v1.containers:ShowContainer + [build_sphinx] source-dir = doc/source build-dir = doc/build diff --git a/zunclient/osc/v1/__init__.py b/zunclient/osc/v1/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/zunclient/osc/v1/containers.py b/zunclient/osc/v1/containers.py new file mode 100644 index 00000000..584c6dec --- /dev/null +++ b/zunclient/osc/v1/containers.py @@ -0,0 +1,47 @@ +# 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. + +import logging + +from osc_lib.command import command +from osc_lib import utils + + +def _container_columns(container): + del container._info['links'] + return container._info.keys() + + +def _get_client(obj, parsed_args): + obj.log.debug("take_action(%s)" % parsed_args) + return obj.app.client_manager.container + + +class ShowContainer(command.ShowOne): + """Show a container""" + + log = logging.getLogger(__name__ + ".ShowContainer") + + def get_parser(self, prog_name): + parser = super(ShowContainer, self).get_parser(prog_name) + parser.add_argument( + 'container', + metavar='', + help='ID or name of the container to show.') + return parser + + def take_action(self, parsed_args): + client = _get_client(self, parsed_args) + container = parsed_args.container + container = client.containers.get(container) + columns = _container_columns(container) + return columns, utils.get_item_properties(container, columns)