Fix handling the use_default_subnet_pool attribute

The attribute formerly wasn't working because it is lacking support in
the SDK. The patch to add it[1] introduced a modified spelling, so we
should be matching this here.

Also make sure that the attribute is not shown when displaying subnet
objects, as it is meant to be invisible[2].

[1] I72c0be77d96f3891748cdd69c382211dc20dbf5e
[2] http://git.openstack.org/cgit/openstack/neutron/tree/neutron/extensions/default_subnetpools.py#n23

Change-Id: Ic125b818a6082d76a1114fe89e0b1fcf4c7356b0
Partial-Bug: 1668223
This commit is contained in:
Jens Rosenboom 2017-02-27 15:37:50 +01:00
parent c6059bed4a
commit 3e6356a4d8
2 changed files with 29 additions and 4 deletions

View File

@ -13,8 +13,24 @@
import six
# Get the OSC show command display and attribute columns for an SDK resource.
def get_osc_show_columns_for_sdk_resource(sdk_resource, osc_column_map):
def get_osc_show_columns_for_sdk_resource(
sdk_resource,
osc_column_map,
invisible_columns=[]
):
"""Get and filter the display and attribute columns for an SDK resource.
Common utility function for preparing the output of an OSC show command.
Some of the columns may need to get renamed, others made invisible.
:param sdk_resource: An SDK resource
:param osc_column_map: A hash of mappings for display column names
:param invisible_columns: A list of invisible column names
:returns: Two tuples containing the names of the display and attribute
columns
"""
if getattr(sdk_resource, 'allow_get', None) is not None:
resource_dict = sdk_resource.to_dict(
body=True, headers=False, ignore_none=False)
@ -24,6 +40,9 @@ def get_osc_show_columns_for_sdk_resource(sdk_resource, osc_column_map):
# Build the OSC column names to display for the SDK resource.
attr_map = {}
display_columns = list(resource_dict.keys())
for col_name in invisible_columns:
if col_name in display_columns:
display_columns.remove(col_name)
for sdk_attr, osc_attr in six.iteritems(osc_column_map):
if sdk_attr in display_columns:
attr_map[osc_attr] = sdk_attr

View File

@ -132,7 +132,13 @@ def _get_columns(item):
'subnet_pool_id': 'subnetpool_id',
'tenant_id': 'project_id',
}
return sdk_utils.get_osc_show_columns_for_sdk_resource(item, column_map)
# Do not show this column when displaying a subnet
invisible_columns = ['use_default_subnetpool']
return sdk_utils.get_osc_show_columns_for_sdk_resource(
item,
column_map,
invisible_columns=invisible_columns
)
def convert_entries_to_nexthop(entries):
@ -179,7 +185,7 @@ def _get_attrs(client_manager, parsed_args, is_create=True):
ignore_missing=False)
attrs['subnetpool_id'] = subnet_pool.id
if parsed_args.use_default_subnet_pool:
attrs['use_default_subnetpool'] = True
attrs['use_default_subnet_pool'] = True
if parsed_args.prefix_length is not None:
attrs['prefixlen'] = parsed_args.prefix_length
if parsed_args.subnet_range is not None: