Display correct fields in output for list command
If user list vnf packages with --exclude_default option, it should display all attributes except default set of complex. $ openstack vnf package list --exclude_default Expected fields: 'id', 'vnfProductName', 'onboardingState', 'usageState', 'operationalState', '_links', 'vnfdVersion', 'vnfProvider', 'vnfSoftwareVersion', 'vnfdId' Actual fields displayed are: 'id', 'vnfProductName', 'onboardingState', 'usageState', 'operationalState' Fixed this issue and now it will display fields as mentioned above in expected fields. Closes-Bug: 1875330 Change-Id: I61da40d2e6e7e42999b7ab2d2441cddde64118d9
This commit is contained in:
@@ -150,12 +150,12 @@ class ListVnfPackage(command.Lister):
|
|||||||
lambda x, y: x + (' ' if y.isupper() else '') + y, field).title()
|
lambda x, y: x + (' ' if y.isupper() else '') + y, field).title()
|
||||||
|
|
||||||
def get_attributes(self, extra_fields=None, all_fields=False,
|
def get_attributes(self, extra_fields=None, all_fields=False,
|
||||||
exclude_fields=None):
|
exclude_fields=None, exclude_default=False):
|
||||||
fields = ['id', 'vnfProductName', 'onboardingState',
|
fields = ['id', 'vnfProductName', 'onboardingState',
|
||||||
'usageState', 'operationalState']
|
'usageState', 'operationalState', '_links']
|
||||||
complex_fields = ['checksum', 'softwareImages', 'userDefinedData']
|
complex_fields = ['checksum', 'softwareImages', 'userDefinedData']
|
||||||
simple_fields = ['vnfdVersion', 'vnfProvider', 'vnfSoftwareVersion',
|
simple_fields = ['vnfdVersion', 'vnfProvider', 'vnfSoftwareVersion',
|
||||||
'vnfdId', '_links']
|
'vnfdId']
|
||||||
|
|
||||||
if extra_fields:
|
if extra_fields:
|
||||||
fields.extend(extra_fields)
|
fields.extend(extra_fields)
|
||||||
@@ -167,6 +167,9 @@ class ListVnfPackage(command.Lister):
|
|||||||
fields.extend(complex_fields)
|
fields.extend(complex_fields)
|
||||||
fields.extend(simple_fields)
|
fields.extend(simple_fields)
|
||||||
|
|
||||||
|
if exclude_default:
|
||||||
|
fields.extend(simple_fields)
|
||||||
|
|
||||||
attrs = []
|
attrs = []
|
||||||
for field in fields:
|
for field in fields:
|
||||||
if field == '_links':
|
if field == '_links':
|
||||||
@@ -182,6 +185,7 @@ class ListVnfPackage(command.Lister):
|
|||||||
extra_fields = []
|
extra_fields = []
|
||||||
exclude_fields = []
|
exclude_fields = []
|
||||||
all_fields = False
|
all_fields = False
|
||||||
|
exclude_default = False
|
||||||
if parsed_args.filter:
|
if parsed_args.filter:
|
||||||
_params['filter'] = parsed_args.filter
|
_params['filter'] = parsed_args.filter
|
||||||
if parsed_args.fields:
|
if parsed_args.fields:
|
||||||
@@ -195,6 +199,7 @@ class ListVnfPackage(command.Lister):
|
|||||||
exclude_fields.extend(fields)
|
exclude_fields.extend(fields)
|
||||||
if parsed_args.exclude_default:
|
if parsed_args.exclude_default:
|
||||||
_params['exclude_default'] = None
|
_params['exclude_default'] = None
|
||||||
|
exclude_default = True
|
||||||
if parsed_args.all_fields:
|
if parsed_args.all_fields:
|
||||||
_params['all_fields'] = None
|
_params['all_fields'] = None
|
||||||
all_fields = True
|
all_fields = True
|
||||||
@@ -202,8 +207,8 @@ class ListVnfPackage(command.Lister):
|
|||||||
client = self.app.client_manager.tackerclient
|
client = self.app.client_manager.tackerclient
|
||||||
data = client.list_vnf_packages(**_params)
|
data = client.list_vnf_packages(**_params)
|
||||||
headers, columns = tacker_osc_utils.get_column_definitions(
|
headers, columns = tacker_osc_utils.get_column_definitions(
|
||||||
self.get_attributes(extra_fields, all_fields, exclude_fields),
|
self.get_attributes(extra_fields, all_fields, exclude_fields,
|
||||||
long_listing=True)
|
exclude_default), long_listing=True)
|
||||||
return (headers,
|
return (headers,
|
||||||
(utils.get_dict_properties(
|
(utils.get_dict_properties(
|
||||||
s, columns, formatters=formatters,
|
s, columns, formatters=formatters,
|
||||||
|
@@ -123,12 +123,12 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
count=3, onboarded_vnf_package=onboarded_vnf_package)
|
count=3, onboarded_vnf_package=onboarded_vnf_package)
|
||||||
|
|
||||||
def get_list_columns(self, all_fields=False, exclude_fields=None,
|
def get_list_columns(self, all_fields=False, exclude_fields=None,
|
||||||
extra_fields=None):
|
extra_fields=None, exclude_default=False):
|
||||||
|
|
||||||
columns = ['Id', 'Vnf Product Name', 'Onboarding State', 'Usage State',
|
columns = ['Id', 'Vnf Product Name', 'Onboarding State', 'Usage State',
|
||||||
'Operational State']
|
'Operational State', 'Links']
|
||||||
complex_columns = ['Checksum', 'Software Images', 'User Defined Data']
|
complex_columns = ['Checksum', 'Software Images', 'User Defined Data']
|
||||||
simple_columns = ['Vnfd Version', 'Vnf Provider', 'Vnfd Id', 'Links',
|
simple_columns = ['Vnfd Version', 'Vnf Provider', 'Vnfd Id',
|
||||||
'Vnf Software Version']
|
'Vnf Software Version']
|
||||||
|
|
||||||
if extra_fields:
|
if extra_fields:
|
||||||
@@ -141,6 +141,9 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
columns.extend(complex_columns)
|
columns.extend(complex_columns)
|
||||||
columns.extend(simple_columns)
|
columns.extend(simple_columns)
|
||||||
|
|
||||||
|
if exclude_default:
|
||||||
|
columns.extend(simple_columns)
|
||||||
|
|
||||||
return columns
|
return columns
|
||||||
|
|
||||||
def _get_mock_response_for_list_vnf_packages(
|
def _get_mock_response_for_list_vnf_packages(
|
||||||
@@ -164,7 +167,7 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
expected_data.append(vnf_package_fakes.get_vnf_package_data(
|
expected_data.append(vnf_package_fakes.get_vnf_package_data(
|
||||||
vnf_package_obj, columns=columns, list_action=True))
|
vnf_package_obj, columns=columns, list_action=True))
|
||||||
self.assertCountEqual(self.get_list_columns(), actual_columns)
|
self.assertCountEqual(self.get_list_columns(), actual_columns)
|
||||||
self.assertCountEqual(expected_data, list(data))
|
self.assertListItemsEqual(expected_data, list(data))
|
||||||
|
|
||||||
@ddt.data('all_fields', 'exclude_default')
|
@ddt.data('all_fields', 'exclude_default')
|
||||||
def test_take_action(self, arg):
|
def test_take_action(self, arg):
|
||||||
@@ -178,7 +181,7 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
|
|
||||||
actual_columns, data = self.list_vnf_package.take_action(parsed_args)
|
actual_columns, data = self.list_vnf_package.take_action(parsed_args)
|
||||||
expected_data = []
|
expected_data = []
|
||||||
kwargs = {arg: True} if arg == 'all_fields' else {}
|
kwargs = {arg: True}
|
||||||
headers, columns = tacker_osc_utils.get_column_definitions(
|
headers, columns = tacker_osc_utils.get_column_definitions(
|
||||||
self.list_vnf_package.get_attributes(**kwargs), long_listing=True)
|
self.list_vnf_package.get_attributes(**kwargs), long_listing=True)
|
||||||
|
|
||||||
@@ -223,7 +226,7 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
exclude_fields=['Software Images', 'Checksum',
|
exclude_fields=['Software Images', 'Checksum',
|
||||||
'User Defined Data'])
|
'User Defined Data'])
|
||||||
self.assertCountEqual(expected_columns, actual_columns)
|
self.assertCountEqual(expected_columns, actual_columns)
|
||||||
self.assertCountEqual(expected_data, list(data))
|
self.assertListItemsEqual(expected_data, list(data))
|
||||||
|
|
||||||
@ddt.data((['--all_fields', '--fields', 'softwareImages'],
|
@ddt.data((['--all_fields', '--fields', 'softwareImages'],
|
||||||
[('all_fields', True), ('fields', 'softwareImages')]),
|
[('all_fields', True), ('fields', 'softwareImages')]),
|
||||||
@@ -255,7 +258,8 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
expected_data = []
|
expected_data = []
|
||||||
headers, columns = tacker_osc_utils.get_column_definitions(
|
headers, columns = tacker_osc_utils.get_column_definitions(
|
||||||
self.list_vnf_package.get_attributes(
|
self.list_vnf_package.get_attributes(
|
||||||
extra_fields=['softwareImages', 'checksum']),
|
extra_fields=['softwareImages', 'checksum'],
|
||||||
|
exclude_default=True),
|
||||||
long_listing=True)
|
long_listing=True)
|
||||||
|
|
||||||
for vnf_package_obj in updated_vnf_packages['vnf_packages']:
|
for vnf_package_obj in updated_vnf_packages['vnf_packages']:
|
||||||
@@ -264,7 +268,8 @@ class TestListVnfPackage(TestVnfPackage):
|
|||||||
exclude_default=True))
|
exclude_default=True))
|
||||||
|
|
||||||
self.assertCountEqual(self.get_list_columns(
|
self.assertCountEqual(self.get_list_columns(
|
||||||
extra_fields=['Software Images', 'Checksum']),
|
extra_fields=['Software Images', 'Checksum'],
|
||||||
|
exclude_default=True),
|
||||||
actual_columns)
|
actual_columns)
|
||||||
self.assertListItemsEqual(expected_data, list(data))
|
self.assertListItemsEqual(expected_data, list(data))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user