Merge "Improve readability of vnflcm show command"
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
||||
|
||||
|
@@ -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',
|
||||
|
@@ -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):
|
||||
|
@@ -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'):
|
||||
|
@@ -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):
|
||||
|
Reference in New Issue
Block a user