diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-02-03 21:01:17 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-02-03 21:01:17 +0000 |
| commit | 65f8845ea8eb67c4bd6731cf5733bc3071811dc2 (patch) | |
| tree | 877245449d22e35018e5396b154ec1c336a5b1ec /openstackclient/network | |
| parent | 66df8d1413004bbb2d225ff199767dab8696fd45 (diff) | |
| parent | 981621e9845934c109c5e4abd9b2ab6828744346 (diff) | |
| download | python-openstackclient-65f8845ea8eb67c4bd6731cf5733bc3071811dc2.tar.gz | |
Merge "Add "os port show" command"
Diffstat (limited to 'openstackclient/network')
| -rw-r--r-- | openstackclient/network/v2/port.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py index 0d5b183e..46cb031f 100644 --- a/openstackclient/network/v2/port.py +++ b/openstackclient/network/v2/port.py @@ -14,6 +14,42 @@ """Port action implementations""" from openstackclient.common import command +from openstackclient.common import utils + + +def _format_admin_state(state): + return 'UP' if state else 'DOWN' + + +_formatters = { + 'admin_state_up': _format_admin_state, + 'allowed_address_pairs': utils.format_list_of_dicts, + 'binding_profile': utils.format_dict, + 'binding_vif_details': utils.format_dict, + 'dns_assignment': utils.format_list_of_dicts, + 'extra_dhcp_opts': utils.format_list_of_dicts, + 'fixed_ips': utils.format_list_of_dicts, + 'security_groups': utils.format_list, +} + + +def _get_columns(item): + columns = item.keys() + if 'tenant_id' in columns: + columns.remove('tenant_id') + columns.append('project_id') + binding_columns = [ + 'binding:host_id', + 'binding:profile', + 'binding:vif_details', + 'binding:vif_type', + 'binding:vnic_type', + ] + for binding_column in binding_columns: + if binding_column in columns: + columns.remove(binding_column) + columns.append(binding_column.replace('binding:', 'binding_', 1)) + return sorted(columns) class DeletePort(command.Command): @@ -35,3 +71,23 @@ class DeletePort(command.Command): for port in parsed_args.port: res = client.find_port(port) client.delete_port(res) + + +class ShowPort(command.ShowOne): + """Display port details""" + + def get_parser(self, prog_name): + parser = super(ShowPort, self).get_parser(prog_name) + parser.add_argument( + 'port', + metavar="<port>", + help="Port to display (name or ID)" + ) + return parser + + def take_action(self, parsed_args): + client = self.app.client_manager.network + obj = client.find_port(parsed_args.port, ignore_missing=False) + columns = _get_columns(obj) + data = utils.get_item_properties(obj, columns, formatters=_formatters) + return (tuple(columns), data) |
