From f4fd8f6e31dcc177b56d1e618cdefef728d09157 Mon Sep 17 00:00:00 2001 From: Shashank Kumar Shankar Date: Mon, 17 Oct 2016 18:26:01 +0000 Subject: Introduce Neutron DHCP agent commands to OSC This patch introduces neutron dhcp-agent related commands to OpenStack client. The equivalent neutron commands implemented in OSC: neutron: dhcp-agent-list-hosting-net OSC: network agent list --network neutron: dhcp-agent-network-add OSC: network agent add network neutron: dhcp-agent-network-remove OSC: network agent remove network neutron: net-list-on-dhcp-agent OSC: network list --agent Change-Id: I77a933f4b3ce875c63cef5b6a32aee78fd844b03 --- openstackclient/network/v2/network.py | 44 ++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 11 deletions(-) (limited to 'openstackclient/network/v2/network.py') diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py index 3aa8ec84..3e0bb776 100644 --- a/openstackclient/network/v2/network.py +++ b/openstackclient/network/v2/network.py @@ -60,12 +60,10 @@ def _get_network_columns(item): def _get_columns(item): - columns = list(item.keys()) - if 'tenant_id' in columns: - columns.remove('tenant_id') - if 'project_id' not in columns: - columns.append('project_id') - return tuple(sorted(columns)) + column_map = { + 'tenant_id': 'project_id', + } + return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map) def _get_attrs(client_manager, parsed_args): @@ -305,9 +303,9 @@ class CreateNetwork(common.NetworkAndComputeShowOne): def take_action_compute(self, client, parsed_args): attrs = _get_attrs_compute(self.app.client_manager, parsed_args) obj = client.networks.create(**attrs) - columns = _get_columns(obj._info) + display_columns, columns = _get_columns(obj._info) data = utils.get_dict_properties(obj._info, columns) - return (columns, data) + return (display_columns, data) class DeleteNetwork(common.NetworkAndComputeDelete): @@ -420,7 +418,11 @@ class ListNetwork(common.NetworkAndComputeLister): help=_("List networks according to VLAN ID for VLAN networks " "or Tunnel ID for GENEVE/GRE/VXLAN networks") ) - + parser.add_argument( + '--agent', + metavar='', + dest='agent_id', + help=_('List networks hosted by agent (ID only)')) return parser def take_action_network(self, client, parsed_args): @@ -450,6 +452,26 @@ class ListNetwork(common.NetworkAndComputeLister): 'Router Type', 'Availability Zones', ) + elif parsed_args.agent_id: + columns = ( + 'id', + 'name', + 'subnet_ids' + ) + column_headers = ( + 'ID', + 'Name', + 'Subnets', + ) + client = self.app.client_manager.network + dhcp_agent = client.get_agent(parsed_args.agent_id) + data = client.dhcp_agent_hosting_networks(dhcp_agent) + + return (column_headers, + (utils.get_item_properties( + s, columns, + formatters=_formatters, + ) for s in data)) else: columns = ( 'id', @@ -665,6 +687,6 @@ class ShowNetwork(common.NetworkAndComputeShowOne): client.networks, parsed_args.network, ) - columns = _get_columns(obj._info) + display_columns, columns = _get_columns(obj._info) data = utils.get_dict_properties(obj._info, columns) - return (columns, data) + return (display_columns, data) -- cgit v1.2.1