diff -Nru python-tackerclient-1.10.0/AUTHORS python-tackerclient-1.11.0/AUTHORS --- python-tackerclient-1.10.0/AUTHORS 2022-02-25 16:20:18.000000000 +0000 +++ python-tackerclient-1.11.0/AUTHORS 2022-05-20 20:16:48.000000000 +0000 @@ -47,6 +47,7 @@ Nguyen Hai Truong Ondřej Nový OpenStack Release Bot +Pooja Singla Renu Ronald Bradford Saju Madhavan diff -Nru python-tackerclient-1.10.0/ChangeLog python-tackerclient-1.11.0/ChangeLog --- python-tackerclient-1.10.0/ChangeLog 2022-02-25 16:20:18.000000000 +0000 +++ python-tackerclient-1.11.0/ChangeLog 2022-05-20 20:16:48.000000000 +0000 @@ -1,10 +1,18 @@ CHANGES ======= +1.11.0 +------ + +* Update master for stable/yoga + 1.10.0 ------ * Support ChangeVNFPackage command in tackerclient +* Add vnflcm v2 APIs +* Help message of heal cli modified +* Fix in "vnflcm op list" CLI with exclude-fields 1.9.0 ----- diff -Nru python-tackerclient-1.10.0/debian/changelog python-tackerclient-1.11.0/debian/changelog --- python-tackerclient-1.10.0/debian/changelog 2022-03-02 20:51:15.000000000 +0000 +++ python-tackerclient-1.11.0/debian/changelog 2022-05-31 21:01:40.000000000 +0000 @@ -1,3 +1,10 @@ +python-tackerclient (1.11.0-0ubuntu1) kinetic; urgency=medium + + * New upstream release for OpenStack Zed. + * d/control: Update standards version to 4.6.1. + + -- Corey Bryant Tue, 31 May 2022 17:01:40 -0400 + python-tackerclient (1.10.0-0ubuntu1) jammy; urgency=medium * New upstream release for OpenStack Yoga. diff -Nru python-tackerclient-1.10.0/debian/control python-tackerclient-1.11.0/debian/control --- python-tackerclient-1.10.0/debian/control 2022-03-02 20:51:15.000000000 +0000 +++ python-tackerclient-1.11.0/debian/control 2022-05-31 21:01:40.000000000 +0000 @@ -46,8 +46,7 @@ python3-testtools (>= 2.2.0), subunit, testrepository, -Standards-Version: 4.5.0 -Vcs-Browser: https://git.launchpad.net/~ubuntu-openstack-dev/ubuntu/+source/python-tackerclient +Standards-Version: 4.6.1 Vcs-Git: https://git.launchpad.net/~ubuntu-openstack-dev/ubuntu/+source/python-tackerclient Homepage: https://www.openstack.org/ Testsuite: autopkgtest-pkg-python diff -Nru python-tackerclient-1.10.0/PKG-INFO python-tackerclient-1.11.0/PKG-INFO --- python-tackerclient-1.10.0/PKG-INFO 2022-02-25 16:20:19.069625400 +0000 +++ python-tackerclient-1.11.0/PKG-INFO 2022-05-20 20:16:48.359333300 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: python-tackerclient -Version: 1.10.0 +Version: 1.11.0 Summary: CLI and Client Library for OpenStack Tacker Home-page: https://docs.openstack.org/python-tackerclient/ Author: OpenStack diff -Nru python-tackerclient-1.10.0/python_tackerclient.egg-info/entry_points.txt python-tackerclient-1.11.0/python_tackerclient.egg-info/entry_points.txt --- python-tackerclient-1.10.0/python_tackerclient.egg-info/entry_points.txt 2022-02-25 16:20:18.000000000 +0000 +++ python-tackerclient-1.11.0/python_tackerclient.egg-info/entry_points.txt 2022-05-20 20:16:48.000000000 +0000 @@ -76,14 +76,21 @@ vnflcm_versions = tackerclient.osc.common.vnflcm.vnflcm_versions:VnfLcmVersions [openstack.tackerclient.v2] +vnflcm_change-ext-conn = tackerclient.osc.v1.vnflcm.vnflcm:ChangeExtConnVnfLcm vnflcm_change-vnfpkg = tackerclient.osc.v1.vnflcm.vnflcm:ChangeVnfPkgVnfLcm vnflcm_create = tackerclient.osc.v1.vnflcm.vnflcm:CreateVnfLcm vnflcm_delete = tackerclient.osc.v1.vnflcm.vnflcm:DeleteVnfLcm +vnflcm_heal = tackerclient.osc.v1.vnflcm.vnflcm:HealVnfLcm vnflcm_instantiate = tackerclient.osc.v1.vnflcm.vnflcm:InstantiateVnfLcm vnflcm_list = tackerclient.osc.v1.vnflcm.vnflcm:ListVnfLcm +vnflcm_op_fail = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:FailVnfLcmOp vnflcm_op_list = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ListVnfLcmOp +vnflcm_op_retry = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:RetryVnfLcmOp +vnflcm_op_rollback = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:RollbackVnfLcmOp vnflcm_op_show = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ShowVnfLcmOp +vnflcm_scale = tackerclient.osc.v1.vnflcm.vnflcm:ScaleVnfLcm vnflcm_show = tackerclient.osc.v1.vnflcm.vnflcm:ShowVnfLcm vnflcm_terminate = tackerclient.osc.v1.vnflcm.vnflcm:TerminateVnfLcm +vnflcm_update = tackerclient.osc.v1.vnflcm.vnflcm:UpdateVnfLcm vnflcm_versions = tackerclient.osc.common.vnflcm.vnflcm_versions:VnfLcmVersions diff -Nru python-tackerclient-1.10.0/python_tackerclient.egg-info/pbr.json python-tackerclient-1.11.0/python_tackerclient.egg-info/pbr.json --- python-tackerclient-1.10.0/python_tackerclient.egg-info/pbr.json 2022-02-25 16:20:18.000000000 +0000 +++ python-tackerclient-1.11.0/python_tackerclient.egg-info/pbr.json 2022-05-20 20:16:48.000000000 +0000 @@ -1 +1 @@ -{"git_version": "ab901b6", "is_release": true} \ No newline at end of file +{"git_version": "50c6570", "is_release": true} \ No newline at end of file diff -Nru python-tackerclient-1.10.0/python_tackerclient.egg-info/PKG-INFO python-tackerclient-1.11.0/python_tackerclient.egg-info/PKG-INFO --- python-tackerclient-1.10.0/python_tackerclient.egg-info/PKG-INFO 2022-02-25 16:20:18.000000000 +0000 +++ python-tackerclient-1.11.0/python_tackerclient.egg-info/PKG-INFO 2022-05-20 20:16:48.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.2 Name: python-tackerclient -Version: 1.10.0 +Version: 1.11.0 Summary: CLI and Client Library for OpenStack Tacker Home-page: https://docs.openstack.org/python-tackerclient/ Author: OpenStack diff -Nru python-tackerclient-1.10.0/python_tackerclient.egg-info/SOURCES.txt python-tackerclient-1.11.0/python_tackerclient.egg-info/SOURCES.txt --- python-tackerclient-1.10.0/python_tackerclient.egg-info/SOURCES.txt 2022-02-25 16:20:19.000000000 +0000 +++ python-tackerclient-1.11.0/python_tackerclient.egg-info/SOURCES.txt 2022-05-20 20:16:48.000000000 +0000 @@ -69,6 +69,7 @@ releasenotes/source/victoria.rst releasenotes/source/wallaby.rst releasenotes/source/xena.rst +releasenotes/source/yoga.rst releasenotes/source/_static/.placeholder releasenotes/source/_templates/.placeholder tackerclient/__init__.py @@ -106,6 +107,7 @@ tackerclient/osc/v1/vnflcm/vnflcm.py tackerclient/osc/v1/vnflcm/vnflcm_op_occs.py tackerclient/osc/v1/vnflcm/samples/change_ext_conn_vnf_instance_param_sample.json +tackerclient/osc/v1/vnflcm/samples/heal_vnf_instance_param_sample.json tackerclient/osc/v1/vnflcm/samples/instantiate_vnf_instance_param_sample.json tackerclient/osc/v1/vnflcm/samples/scale_vnf_instance_param_sample.json tackerclient/osc/v1/vnflcm/samples/update_vnf_instance_param_sample.json diff -Nru python-tackerclient-1.10.0/releasenotes/source/index.rst python-tackerclient-1.11.0/releasenotes/source/index.rst --- python-tackerclient-1.10.0/releasenotes/source/index.rst 2022-02-25 16:19:33.000000000 +0000 +++ python-tackerclient-1.11.0/releasenotes/source/index.rst 2022-05-20 20:16:22.000000000 +0000 @@ -7,6 +7,7 @@ :maxdepth: 2 unreleased + yoga xena wallaby victoria diff -Nru python-tackerclient-1.10.0/releasenotes/source/yoga.rst python-tackerclient-1.11.0/releasenotes/source/yoga.rst --- python-tackerclient-1.10.0/releasenotes/source/yoga.rst 1970-01-01 00:00:00.000000000 +0000 +++ python-tackerclient-1.11.0/releasenotes/source/yoga.rst 2022-05-20 20:16:22.000000000 +0000 @@ -0,0 +1,6 @@ +========================= +Yoga Series Release Notes +========================= + +.. release-notes:: + :branch: stable/yoga diff -Nru python-tackerclient-1.10.0/setup.cfg python-tackerclient-1.11.0/setup.cfg --- python-tackerclient-1.10.0/setup.cfg 2022-02-25 16:20:19.069625400 +0000 +++ python-tackerclient-1.11.0/setup.cfg 2022-05-20 20:16:48.363333200 +0000 @@ -110,6 +110,13 @@ vnflcm_terminate = tackerclient.osc.v1.vnflcm.vnflcm:TerminateVnfLcm vnflcm_change-vnfpkg = tackerclient.osc.v1.vnflcm.vnflcm:ChangeVnfPkgVnfLcm vnflcm_delete = tackerclient.osc.v1.vnflcm.vnflcm:DeleteVnfLcm + vnflcm_heal = tackerclient.osc.v1.vnflcm.vnflcm:HealVnfLcm + vnflcm_update = tackerclient.osc.v1.vnflcm.vnflcm:UpdateVnfLcm + vnflcm_scale = tackerclient.osc.v1.vnflcm.vnflcm:ScaleVnfLcm + vnflcm_change-ext-conn = tackerclient.osc.v1.vnflcm.vnflcm:ChangeExtConnVnfLcm + vnflcm_op_rollback = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:RollbackVnfLcmOp + vnflcm_op_fail = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:FailVnfLcmOp + vnflcm_op_retry = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:RetryVnfLcmOp vnflcm_op_list = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ListVnfLcmOp vnflcm_op_show = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ShowVnfLcmOp vnflcm_versions = tackerclient.osc.common.vnflcm.vnflcm_versions:VnfLcmVersions diff -Nru python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/samples/heal_vnf_instance_param_sample.json python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/samples/heal_vnf_instance_param_sample.json --- python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/samples/heal_vnf_instance_param_sample.json 1970-01-01 00:00:00.000000000 +0000 +++ python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/samples/heal_vnf_instance_param_sample.json 2022-05-20 20:16:22.000000000 +0000 @@ -0,0 +1,3 @@ +{ + "additionalParams": {"all": true} +} diff -Nru python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/vnflcm_op_occs.py python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/vnflcm_op_occs.py --- python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/vnflcm_op_occs.py 2022-02-25 16:19:33.000000000 +0000 +++ python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/vnflcm_op_occs.py 2022-05-20 20:16:22.000000000 +0000 @@ -242,9 +242,12 @@ ) return parser - def get_attributes(self): + def get_attributes(self, exclude=None): """Get attributes. + Args: + exclude([exclude]): a list of fields which needs to exclude. + Returns: attributes([attributes]): a list of table entry definitions. Each entry should be a tuple consisting of @@ -270,10 +273,13 @@ ] attributes = [] - for field in fields: - attributes.extend([(field['key'], field['value'], - tacker_osc_utils.LIST_BOTH)]) + if exclude is None: + exclude = [] + for field in fields: + if field['value'] not in exclude: + attributes.extend([(field['key'], field['value'], + tacker_osc_utils.LIST_BOTH)]) return tuple(attributes) def take_action(self, parsed_args): @@ -301,7 +307,7 @@ client = self.app.client_manager.tackerclient vnflcm_op_occs = client.list_vnf_lcm_op_occs(**params) headers, columns = tacker_osc_utils.get_column_definitions( - self.get_attributes(), + self.get_attributes(exclude=exclude_fields), long_listing=True) dictionary_properties = (utils.get_dict_properties( diff -Nru python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/vnflcm.py python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/vnflcm.py --- python-tackerclient-1.10.0/tackerclient/osc/v1/vnflcm/vnflcm.py 2022-02-25 16:19:33.000000000 +0000 +++ python-tackerclient-1.11.0/tackerclient/osc/v1/vnflcm/vnflcm.py 2022-05-20 20:16:22.000000000 +0000 @@ -238,6 +238,12 @@ def get_parser(self, prog_name): parser = super(HealVnfLcm, self).get_parser(prog_name) + usage_message = ('''%(prog)s [-h] [--cause CAUSE] + [--vnfc-instance ''' + '''[ ...]] + [--additional-param-file ] + -- ''') + parser.usage = usage_message parser.add_argument( _VNF_INSTANCE, metavar="", @@ -251,6 +257,11 @@ nargs="+", help=_("List of VNFC instances requiring a healing action.") ) + parser.add_argument( + '--additional-param-file', + metavar="", + help=_("Additional parameters passed by the NFVO as input " + "to the healing process.")) return parser def args2body(self, parsed_args): @@ -259,6 +270,8 @@ body['cause'] = parsed_args.cause if parsed_args.vnfc_instance: body['vnfcInstanceId'] = parsed_args.vnfc_instance + if parsed_args.additional_param_file: + body.update(jsonfile2body(parsed_args.additional_param_file)) return body diff -Nru python-tackerclient-1.10.0/tackerclient/tests/unit/osc/v1/test_vnflcm_op_occs.py python-tackerclient-1.11.0/tackerclient/tests/unit/osc/v1/test_vnflcm_op_occs.py --- python-tackerclient-1.10.0/tackerclient/tests/unit/osc/v1/test_vnflcm_op_occs.py 2022-02-25 16:19:33.000000000 +0000 +++ python-tackerclient-1.11.0/tackerclient/tests/unit/osc/v1/test_vnflcm_op_occs.py 2022-05-20 20:16:22.000000000 +0000 @@ -26,7 +26,7 @@ from tackerclient.tests.unit.osc.v1 import vnflcm_op_occs_fakes -def _get_columns_vnflcm_op_occs(action='show'): +def _get_columns_vnflcm_op_occs(action='show', parameter=None): if action == 'fail': return ['ID', 'Operation State', 'State Entered Time', @@ -34,8 +34,11 @@ 'Is Automatic Invocation', 'Is Cancel Pending', 'Error', 'Links'] elif action == 'list': - return ['ID', 'Operation State', 'VNF Instance ID', - 'Operation'] + if parameter is not None: + return ['ID', 'Operation'] + else: + return ['ID', 'Operation State', 'VNF Instance ID', + 'Operation'] else: return ['ID', 'Operation State', 'State Entered Time', 'Start Time', 'VNF Instance ID', 'Grant ID', @@ -496,6 +499,36 @@ self.list_vnflcm_op_occ.take_action, parsed_args) + def test_take_action_with_exclude_fields(self): + + vnflcm_op_occs_obj = vnflcm_op_occs_fakes.create_vnflcm_op_occs( + count=3) + parsed_args = self.check_parser( + self.list_vnflcm_op_occ, + ["--exclude-fields", 'VNF Instance ID,Operation State'], + [('exclude_fields', 'VNF Instance ID,Operation State')]) + self.requests_mock.register_uri( + 'GET', os.path.join( + self.url, + 'vnflcm/v1/vnf_lcm_op_occs?' + 'exclude-fields=VNF Instance ID,Operation State'), + json=vnflcm_op_occs_obj, headers=self.header) + actual_columns, data = self.list_vnflcm_op_occ.take_action(parsed_args) + headers, columns = tacker_osc_utils.get_column_definitions( + self.list_vnflcm_op_occ.get_attributes( + exclude=['VNF Instance ID', 'Operation State']), + long_listing=True) + expected_data = [] + for vnflcm_op_occ_obj_idx in vnflcm_op_occs_obj: + expected_data.append( + vnflcm_op_occs_fakes.get_vnflcm_op_occ_data( + vnflcm_op_occ_obj_idx, columns=columns)) + + self.assertCountEqual(_get_columns_vnflcm_op_occs( + action='list', parameter="exclude_fields"), + actual_columns) + self.assertListItemsEqual(expected_data, list(data)) + class TestShowVnfLcmOp(TestVnfLcm): diff -Nru python-tackerclient-1.10.0/tackerclient/tests/unit/osc/v1/test_vnflcm.py python-tackerclient-1.11.0/tackerclient/tests/unit/osc/v1/test_vnflcm.py --- python-tackerclient-1.10.0/tackerclient/tests/unit/osc/v1/test_vnflcm.py 2022-02-25 16:19:33.000000000 +0000 +++ python-tackerclient-1.11.0/tackerclient/tests/unit/osc/v1/test_vnflcm.py 2022-05-20 20:16:22.000000000 +0000 @@ -288,6 +288,9 @@ self.heal_vnf_lcm = vnflcm.HealVnfLcm( self.app, self.app_args, cmd_name='vnflcm heal') + _heal_sample_param_file = ("./tackerclient/osc/v1/vnflcm/samples/" + "heal_vnf_instance_param_sample.json") + @ddt.data((['--cause', 'test-cause', "--vnfc-instance", 'vnfc-id-1', 'vnfc-id-2'], [('cause', 'test-cause'), @@ -296,6 +299,8 @@ [('cause', 'test-cause')]), (["--vnfc-instance", 'vnfc-id-1', 'vnfc-id-2'], [('vnfc_instance', ['vnfc-id-1', 'vnfc-id-2'])]), + (["--additional-param-file", _heal_sample_param_file], + [('additional_param_file', _heal_sample_param_file)]), ([], [])) @ddt.unpack def test_take_action(self, arglist, verifylist): @@ -340,6 +345,25 @@ self.heal_vnf_lcm.take_action, parsed_args) + def test_take_action_param_file_not_exists(self): + vnf_instance = vnflcm_fakes.vnf_instance_response() + sample_param_file = "./not_exists.json" + arglist = [vnf_instance['id'], + '--additional-param-file', sample_param_file] + verifylist = [('vnf_instance', vnf_instance['id']), + ('additional_param_file', sample_param_file)] + + # command param + parsed_args = self.check_parser(self.heal_vnf_lcm, arglist, + verifylist) + + ex = self.assertRaises(exceptions.InvalidInput, + self.heal_vnf_lcm.take_action, parsed_args) + + expected_msg = ("Invalid input: File %s does not exist " + "or user does not have read privileges to it") + self.assertEqual(expected_msg % sample_param_file, str(ex)) + @ddt.ddt class TestTerminateVnfLcm(TestVnfLcm):