2525
2626from openstackclient .i18n import _
2727from openstackclient .identity import common as identity_common
28+ from openstackclient .network import sdk_utils
2829
2930
3031LOG = logging .getLogger (__name__ )
@@ -36,34 +37,33 @@ def _format_admin_state(state):
3637
3738_formatters = {
3839 'admin_state_up' : _format_admin_state ,
40+ 'is_admin_state_up' : _format_admin_state ,
3941 'allowed_address_pairs' : utils .format_list_of_dicts ,
4042 'binding_profile' : utils .format_dict ,
4143 'binding_vif_details' : utils .format_dict ,
44+ 'binding:profile' : utils .format_dict ,
45+ 'binding:vif_details' : utils .format_dict ,
4246 'dns_assignment' : utils .format_list_of_dicts ,
4347 'extra_dhcp_opts' : utils .format_list_of_dicts ,
4448 'fixed_ips' : utils .format_list_of_dicts ,
49+ 'security_group_ids' : utils .format_list ,
4550 'security_groups' : utils .format_list ,
4651}
4752
4853
4954def _get_columns (item ):
50- columns = list (item .keys ())
51- if 'tenant_id' in columns :
52- columns .remove ('tenant_id' )
53- if 'project_id' not in columns :
54- columns .append ('project_id' )
55- binding_columns = [
56- 'binding:host_id' ,
57- 'binding:profile' ,
58- 'binding:vif_details' ,
59- 'binding:vif_type' ,
60- 'binding:vnic_type' ,
61- ]
62- for binding_column in binding_columns :
63- if binding_column in columns :
64- columns .remove (binding_column )
65- columns .append (binding_column .replace ('binding:' , 'binding_' , 1 ))
66- return tuple (sorted (columns ))
55+ column_map = {
56+ 'binding:host_id' : 'binding_host_id' ,
57+ 'binding:profile' : 'binding_profile' ,
58+ 'binding:vif_details' : 'binding_vif_details' ,
59+ 'binding:vif_type' : 'binding_vif_type' ,
60+ 'binding:vnic_type' : 'binding_vnic_type' ,
61+ 'is_admin_state_up' : 'admin_state_up' ,
62+ 'is_port_security_enabled' : 'port_security_enabled' ,
63+ 'security_group_ids' : 'security_groups' ,
64+ 'tenant_id' : 'project_id' ,
65+ }
66+ return sdk_utils .get_osc_show_columns_for_sdk_resource (item , column_map )
6767
6868
6969class JSONKeyValueAction (argparse .Action ):
@@ -244,6 +244,8 @@ def _add_updatable_args(parser):
244244 )
245245
246246
247+ # TODO(abhiraut): Use the SDK resource mapped attribute names once the
248+ # OSC minimum requirements include SDK 1.0.
247249class CreatePort (command .ShowOne ):
248250 _description = _ ("Create a new port" )
249251
@@ -349,10 +351,10 @@ def take_action(self, parsed_args):
349351 attrs ['security_groups' ] = []
350352
351353 obj = client .create_port (** attrs )
352- columns = _get_columns (obj )
354+ display_columns , columns = _get_columns (obj )
353355 data = utils .get_item_properties (obj , columns , formatters = _formatters )
354356
355- return (columns , data )
357+ return (display_columns , data )
356358
357359
358360class DeletePort (command .Command ):
@@ -389,6 +391,8 @@ def take_action(self, parsed_args):
389391 raise exceptions .CommandError (msg )
390392
391393
394+ # TODO(abhiraut): Use only the SDK resource mapped attribute names once the
395+ # OSC minimum requirements include SDK 1.0.
392396class ListPort (command .Lister ):
393397 _description = _ ("List ports" )
394398
@@ -451,7 +455,7 @@ def take_action(self, parsed_args):
451455
452456 filters = {}
453457 if parsed_args .long :
454- columns += ('security_groups ' , 'device_owner' ,)
458+ columns += ('security_group_ids ' , 'device_owner' ,)
455459 column_headers += ('Security Groups' , 'Device Owner' ,)
456460 if parsed_args .device_owner is not None :
457461 filters ['device_owner' ] = parsed_args .device_owner
@@ -479,6 +483,8 @@ def take_action(self, parsed_args):
479483 ) for s in data ))
480484
481485
486+ # TODO(abhiraut): Use the SDK resource mapped attribute names once the
487+ # OSC minimum requirements include SDK 1.0.
482488class SetPort (command .Command ):
483489 _description = _ ("Set port properties" )
484490
@@ -621,11 +627,13 @@ def get_parser(self, prog_name):
621627 def take_action (self , parsed_args ):
622628 client = self .app .client_manager .network
623629 obj = client .find_port (parsed_args .port , ignore_missing = False )
624- columns = _get_columns (obj )
630+ display_columns , columns = _get_columns (obj )
625631 data = utils .get_item_properties (obj , columns , formatters = _formatters )
626- return (columns , data )
632+ return (display_columns , data )
627633
628634
635+ # TODO(abhiraut): Use the SDK resource mapped attribute names once the
636+ # OSC minimum requirements include SDK 1.0.
629637class UnsetPort (command .Command ):
630638 _description = _ ("Unset port properties" )
631639
0 commit comments