Merge "Improve readability of vnflcm show command" into stable/ussuri
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