Skip to content

Commit e24deda

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "SDK Refactor: Prepare port commands"
2 parents 5e03b92 + 7832ea3 commit e24deda

3 files changed

Lines changed: 35 additions & 24 deletions

File tree

openstackclient/network/v2/port.py

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
from openstackclient.i18n import _
2727
from openstackclient.identity import common as identity_common
28+
from openstackclient.network import sdk_utils
2829

2930

3031
LOG = 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

4954
def _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

6969
class 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.
247249
class 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

358360
class 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.
392396
class 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.
482488
class 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.
629637
class UnsetPort(command.Command):
630638
_description = _("Unset port properties")
631639

openstackclient/tests/unit/network/v2/fakes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,12 +461,15 @@ def create_one_port(attrs=None):
461461
loaded=True)
462462

463463
# Set attributes with special mappings in OpenStack SDK.
464-
port.project_id = port_attrs['tenant_id']
465464
port.binding_host_id = port_attrs['binding:host_id']
466465
port.binding_profile = port_attrs['binding:profile']
467466
port.binding_vif_details = port_attrs['binding:vif_details']
468467
port.binding_vif_type = port_attrs['binding:vif_type']
469468
port.binding_vnic_type = port_attrs['binding:vnic_type']
469+
port.is_admin_state_up = port_attrs['admin_state_up']
470+
port.is_port_security_enabled = port_attrs['port_security_enabled']
471+
port.project_id = port_attrs['tenant_id']
472+
port.security_group_ids = port_attrs['security_groups']
470473

471474
return port
472475

openstackclient/tests/unit/network/v2/test_port.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ def test_create_with_security_groups(self):
324324
self.assertEqual(ref_columns, columns)
325325
self.assertEqual(ref_data, data)
326326

327-
def test_create_with_no_secuirty_groups(self):
327+
def test_create_with_no_security_groups(self):
328328
arglist = [
329329
'--network', self._port.network_id,
330330
'--no-security-group',

0 commit comments

Comments
 (0)