diff --git a/setup.cfg b/setup.cfg index 68aa870b..ba546745 100644 --- a/setup.cfg +++ b/setup.cfg @@ -63,6 +63,7 @@ openstack.container.v1 = appcontainer_host_show = zunclient.osc.v1.hosts:ShowHost appcontainer_network_detach = zunclient.osc.v1.containers:NetworkDetach appcontainer_network_attach = zunclient.osc.v1.containers:NetworkAttach + appcontainer_network_list = zunclient.osc.v1.containers:NetworkList appcontainer_image_search = zunclient.osc.v1.images:SearchImage appcontainer_remove_security_group = zunclient.osc.v1.containers:RemoveSecurityGroup appcontainer_image_show = zunclient.osc.v1.images:ShowImage diff --git a/zunclient/osc/v1/containers.py b/zunclient/osc/v1/containers.py index 046e3daa..afc45751 100644 --- a/zunclient/osc/v1/containers.py +++ b/zunclient/osc/v1/containers.py @@ -1148,3 +1148,27 @@ class RebuildContainer(command.Command): except Exception as e: print("rebuild container %(container)s failed: %(e)s" % {'container': container, 'e': e}) + + +class NetworkList(command.Lister): + """List networks on a container""" + log = logging.getLogger(__name__ + ".ListNetworks") + + def get_parser(self, prog_name): + parser = super(NetworkList, self).get_parser(prog_name) + parser.add_argument( + 'container', + metavar='', + help='ID or name of the container to list networks.' + ) + return parser + + def take_action(self, parsed_args): + client = _get_client(self, parsed_args) + opts = {} + opts['container'] = parsed_args.container + opts = zun_utils.remove_null_parms(**opts) + networks = client.containers.network_list(**opts) + columns = ('net_id', 'subnet_id', 'port_id', 'version', 'ip_address') + return (columns, (utils.get_item_properties(network, columns) + for network in networks))