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
|
import operator
|
||||||
|
|
||||||
|
from cliff import columns as cliff_columns
|
||||||
from keystoneclient import exceptions as identity_exc
|
from keystoneclient import exceptions as identity_exc
|
||||||
from keystoneclient.v3 import domains
|
from keystoneclient.v3 import domains
|
||||||
from keystoneclient.v3 import projects
|
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.
|
# 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 os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from osc_lib.cli import format_columns
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
|
|
||||||
@@ -52,6 +51,10 @@ EXTRA_WAITING_TIME = 10
|
|||||||
|
|
||||||
SLEEP_TIME = 1
|
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):
|
def _get_columns(vnflcm_obj, action=None):
|
||||||
column_map = {
|
column_map = {
|
||||||
@@ -132,9 +135,9 @@ class CreateVnfLcm(command.ShowOne):
|
|||||||
print((_('VNF Instance %(id)s is created and instantiation'
|
print((_('VNF Instance %(id)s is created and instantiation'
|
||||||
' request has been accepted.') % {'id': vnf['id']}))
|
' request has been accepted.') % {'id': vnf['id']}))
|
||||||
display_columns, columns = _get_columns(vnf)
|
display_columns, columns = _get_columns(vnf)
|
||||||
data = utils.get_item_properties(
|
data = utils.get_item_properties(sdk_utils.DictModel(vnf),
|
||||||
sdk_utils.DictModel(vnf),
|
columns, formatters=formatters,
|
||||||
columns, mixed_case_fields=_mixed_case_fields)
|
mixed_case_fields=_mixed_case_fields)
|
||||||
return (display_columns, data)
|
return (display_columns, data)
|
||||||
|
|
||||||
|
|
||||||
@@ -156,7 +159,7 @@ class ShowVnfLcm(command.ShowOne):
|
|||||||
data = utils.get_item_properties(
|
data = utils.get_item_properties(
|
||||||
sdk_utils.DictModel(obj),
|
sdk_utils.DictModel(obj),
|
||||||
columns, mixed_case_fields=_mixed_case_fields,
|
columns, mixed_case_fields=_mixed_case_fields,
|
||||||
formatters={'instantiatedVnfInfo': format_columns.DictColumn})
|
formatters=formatters)
|
||||||
return (display_columns, data)
|
return (display_columns, data)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -17,7 +17,6 @@ from functools import reduce
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from cliff import columns as cliff_columns
|
|
||||||
from osc_lib.cli import parseractions
|
from osc_lib.cli import parseractions
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
from osc_lib import utils
|
from osc_lib import utils
|
||||||
@@ -30,16 +29,10 @@ from tackerclient.osc import utils as tacker_osc_utils
|
|||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class FormatComplexDataColumn(cliff_columns.FormattableColumn):
|
formatters = {'softwareImages': tacker_osc_utils.FormatComplexDataColumn,
|
||||||
|
'checksum': tacker_osc_utils.FormatComplexDataColumn,
|
||||||
def human_readable(self):
|
'_links': tacker_osc_utils.FormatComplexDataColumn,
|
||||||
return tacker_osc_utils.format_dict_with_indention(self._value)
|
'userDefinedData': tacker_osc_utils.FormatComplexDataColumn}
|
||||||
|
|
||||||
|
|
||||||
formatters = {'softwareImages': FormatComplexDataColumn,
|
|
||||||
'checksum': FormatComplexDataColumn,
|
|
||||||
'_links': FormatComplexDataColumn,
|
|
||||||
'userDefinedData': FormatComplexDataColumn}
|
|
||||||
|
|
||||||
|
|
||||||
_mixed_case_fields = ('usageState', 'onboardingState', 'operationalState',
|
_mixed_case_fields = ('usageState', 'onboardingState', 'operationalState',
|
||||||
|
@@ -105,7 +105,9 @@ class TestCreateVnfLcm(TestVnfLcm):
|
|||||||
json={}, headers=self.header)
|
json={}, headers=self.header)
|
||||||
|
|
||||||
sys.stdout = buffer = StringIO()
|
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 = (
|
expected_message = (
|
||||||
'VNF Instance ' + json['id'] + ' is created and instantiation '
|
'VNF Instance ' + json['id'] + ' is created and instantiation '
|
||||||
@@ -114,9 +116,9 @@ class TestCreateVnfLcm(TestVnfLcm):
|
|||||||
self.assertEqual(expected_message, buffer.getvalue().strip())
|
self.assertEqual(expected_message, buffer.getvalue().strip())
|
||||||
|
|
||||||
self.assertItemsEqual(_get_columns_vnflcm(),
|
self.assertItemsEqual(_get_columns_vnflcm(),
|
||||||
columns)
|
actual_columns)
|
||||||
self.assertItemsEqual(vnflcm_fakes.get_vnflcm_data(json),
|
self.assertListItemsEqual(vnflcm_fakes.get_vnflcm_data(
|
||||||
data)
|
json, columns=attributes), data)
|
||||||
|
|
||||||
|
|
||||||
class TestShowVnfLcm(TestVnfLcm):
|
class TestShowVnfLcm(TestVnfLcm):
|
||||||
@@ -145,6 +147,10 @@ class TestShowVnfLcm(TestVnfLcm):
|
|||||||
columns, data = (self.show_vnf_lcm.take_action(parsed_args))
|
columns, data = (self.show_vnf_lcm.take_action(parsed_args))
|
||||||
self.assertItemsEqual(_get_columns_vnflcm(action='show'),
|
self.assertItemsEqual(_get_columns_vnflcm(action='show'),
|
||||||
columns)
|
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):
|
class TestListVnfLcm(TestVnfLcm):
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
from oslo_utils import uuidutils
|
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):
|
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:
|
for attribute in complex_attributes:
|
||||||
if vnf_package_obj.get(attribute):
|
if vnf_package_obj.get(attribute):
|
||||||
vnf_package_obj.update(
|
vnf_package_obj.update(
|
||||||
{attribute: vnf_package.FormatComplexDataColumn(
|
{attribute: tacker_osc_utils.FormatComplexDataColumn(
|
||||||
vnf_package_obj[attribute])})
|
vnf_package_obj[attribute])})
|
||||||
|
|
||||||
if kwargs.get('list_action'):
|
if kwargs.get('list_action'):
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
from oslo_utils.fixture import uuidsentinel
|
from oslo_utils.fixture import uuidsentinel
|
||||||
from oslo_utils import uuidutils
|
from oslo_utils import uuidutils
|
||||||
|
|
||||||
|
from tackerclient.osc import utils as tacker_osc_utils
|
||||||
|
|
||||||
|
|
||||||
def vnf_instance_response(attrs=None, instantiation_state='NOT_INSTANTIATED'):
|
def vnf_instance_response(attrs=None, instantiation_state='NOT_INSTANTIATED'):
|
||||||
"""Create a fake vnf instance.
|
"""Create a fake vnf instance.
|
||||||
@@ -117,6 +119,12 @@ def get_vnflcm_data(vnf_instance, list_action=False, columns=None):
|
|||||||
:return:
|
:return:
|
||||||
A tuple object sorted based on the name of the columns.
|
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:
|
if list_action:
|
||||||
for item in ['vnfInstanceDescription', 'vnfdVersion']:
|
for item in ['vnfInstanceDescription', 'vnfdVersion']:
|
||||||
@@ -126,7 +134,8 @@ def get_vnflcm_data(vnf_instance, list_action=False, columns=None):
|
|||||||
if columns:
|
if columns:
|
||||||
return tuple([vnf_instance[key] for key in 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):
|
def create_vnf_instances(count=2):
|
||||||
|
Reference in New Issue
Block a user