Merge "Improve readability of vnflcm show command"

This commit is contained in:
Zuul
2020-05-13 06:51:10 +00:00
committed by Gerrit Code Review
6 changed files with 41 additions and 23 deletions

View File

@@ -22,6 +22,7 @@ to this module. They should go to tackerclient.osc.v1.utils.
import operator
from cliff import columns as cliff_columns
from keystoneclient import exceptions as identity_exc
from keystoneclient.v3 import domains
from keystoneclient.v3 import projects
@@ -205,3 +206,9 @@ def _find_identity_resource(identity_client_manager, name_or_id,
# The above are borrowed from openstackclient.identity.common.
class FormatComplexDataColumn(cliff_columns.FormattableColumn):
def human_readable(self):
return format_dict_with_indention(self._value)

View File

@@ -18,7 +18,6 @@ import logging
import os
import time
from osc_lib.cli import format_columns
from osc_lib.command import command
from osc_lib import utils
@@ -52,6 +51,10 @@ EXTRA_WAITING_TIME = 10
SLEEP_TIME = 1
formatters = {'vimConnectionInfo': tacker_osc_utils.FormatComplexDataColumn,
'instantiatedVnfInfo': tacker_osc_utils.FormatComplexDataColumn,
'_links': tacker_osc_utils.FormatComplexDataColumn}
def _get_columns(vnflcm_obj, action=None):
column_map = {
@@ -132,9 +135,9 @@ class CreateVnfLcm(command.ShowOne):
print((_('VNF Instance %(id)s is created and instantiation'
' request has been accepted.') % {'id': vnf['id']}))
display_columns, columns = _get_columns(vnf)
data = utils.get_item_properties(
sdk_utils.DictModel(vnf),
columns, mixed_case_fields=_mixed_case_fields)
data = utils.get_item_properties(sdk_utils.DictModel(vnf),
columns, formatters=formatters,
mixed_case_fields=_mixed_case_fields)
return (display_columns, data)
@@ -156,7 +159,7 @@ class ShowVnfLcm(command.ShowOne):
data = utils.get_item_properties(
sdk_utils.DictModel(obj),
columns, mixed_case_fields=_mixed_case_fields,
formatters={'instantiatedVnfInfo': format_columns.DictColumn})
formatters=formatters)
return (display_columns, data)

View File

@@ -17,7 +17,6 @@ from functools import reduce
import logging
import sys
from cliff import columns as cliff_columns
from osc_lib.cli import parseractions
from osc_lib.command import command
from osc_lib import utils
@@ -30,16 +29,10 @@ from tackerclient.osc import utils as tacker_osc_utils
LOG = logging.getLogger(__name__)
class FormatComplexDataColumn(cliff_columns.FormattableColumn):
def human_readable(self):
return tacker_osc_utils.format_dict_with_indention(self._value)
formatters = {'softwareImages': FormatComplexDataColumn,
'checksum': FormatComplexDataColumn,
'_links': FormatComplexDataColumn,
'userDefinedData': FormatComplexDataColumn}
formatters = {'softwareImages': tacker_osc_utils.FormatComplexDataColumn,
'checksum': tacker_osc_utils.FormatComplexDataColumn,
'_links': tacker_osc_utils.FormatComplexDataColumn,
'userDefinedData': tacker_osc_utils.FormatComplexDataColumn}
_mixed_case_fields = ('usageState', 'onboardingState', 'operationalState',

View File

@@ -105,7 +105,9 @@ class TestCreateVnfLcm(TestVnfLcm):
json={}, headers=self.header)
sys.stdout = buffer = StringIO()
columns, data = (self.create_vnf_lcm.take_action(parsed_args))
actual_columns, data = (self.create_vnf_lcm.take_action(parsed_args))
headers, attributes = vnflcm._get_columns(json)
expected_message = (
'VNF Instance ' + json['id'] + ' is created and instantiation '
@@ -114,9 +116,9 @@ class TestCreateVnfLcm(TestVnfLcm):
self.assertEqual(expected_message, buffer.getvalue().strip())
self.assertItemsEqual(_get_columns_vnflcm(),
columns)
self.assertItemsEqual(vnflcm_fakes.get_vnflcm_data(json),
data)
actual_columns)
self.assertListItemsEqual(vnflcm_fakes.get_vnflcm_data(
json, columns=attributes), data)
class TestShowVnfLcm(TestVnfLcm):
@@ -145,6 +147,10 @@ class TestShowVnfLcm(TestVnfLcm):
columns, data = (self.show_vnf_lcm.take_action(parsed_args))
self.assertItemsEqual(_get_columns_vnflcm(action='show'),
columns)
headers, attributes = vnflcm._get_columns(vnf_instance, action='show')
self.assertListItemsEqual(
vnflcm_fakes.get_vnflcm_data(vnf_instance, columns=attributes),
data)
class TestListVnfLcm(TestVnfLcm):

View File

@@ -15,7 +15,7 @@
from oslo_utils import uuidutils
from tackerclient.osc.v1.vnfpkgm import vnf_package
from tackerclient.osc import utils as tacker_osc_utils
def vnf_package_obj(attrs=None, onboarded_state=False):
@@ -106,7 +106,7 @@ def get_vnf_package_data(vnf_package_obj, **kwargs):
for attribute in complex_attributes:
if vnf_package_obj.get(attribute):
vnf_package_obj.update(
{attribute: vnf_package.FormatComplexDataColumn(
{attribute: tacker_osc_utils.FormatComplexDataColumn(
vnf_package_obj[attribute])})
if kwargs.get('list_action'):

View File

@@ -16,6 +16,8 @@
from oslo_utils.fixture import uuidsentinel
from oslo_utils import uuidutils
from tackerclient.osc import utils as tacker_osc_utils
def vnf_instance_response(attrs=None, instantiation_state='NOT_INSTANTIATED'):
"""Create a fake vnf instance.
@@ -117,6 +119,12 @@ def get_vnflcm_data(vnf_instance, list_action=False, columns=None):
:return:
A tuple object sorted based on the name of the columns.
"""
complex_attributes = ['vimConnectionInfo', 'instantiatedVnfInfo', '_links']
for attribute in complex_attributes:
if vnf_instance.get(attribute):
vnf_instance.update(
{attribute: tacker_osc_utils.FormatComplexDataColumn(
vnf_instance[attribute])})
if list_action:
for item in ['vnfInstanceDescription', 'vnfdVersion']:
@@ -126,7 +134,8 @@ def get_vnflcm_data(vnf_instance, list_action=False, columns=None):
if columns:
return tuple([vnf_instance[key] for key in columns])
return tuple([vnf_instance[key] for key in sorted(vnf_instance.keys())])
return tuple([vnf_instance[key] for key in sorted(
vnf_instance.keys())])
def create_vnf_instances(count=2):