Add vnflcm v2 APIs
This patch supports CLI of vnflcm v2 APIs which are added in Yoga release. They are as follows. * vnflcm update * vnflcm scale * vnflcm heal * vnflcm change-ext-conn * vnflcm op fail * vnflcm op retry * vnflcm op rollback They are common with v1 except heal. An optional parameter '--additional-param-file' is added to heal CLI. Implements: blueprint support-nfv-solv3-heal-vnf Implements: blueprint support-nfv-solv3-change-external-connectivity Implements: blueprint support-nfv-solv3-modify-vnf Implements: blueprint support-nfv-solv3-scale-vnf Implements: blueprint support-nfv-solv3-error-handling Change-Id: If4acd9c4d35ce7a5bf6c23db1a8238654d536c87
This commit is contained in:
@@ -111,6 +111,13 @@ openstack.tackerclient.v2 =
|
|||||||
vnflcm_instantiate = tackerclient.osc.v1.vnflcm.vnflcm:InstantiateVnfLcm
|
vnflcm_instantiate = tackerclient.osc.v1.vnflcm.vnflcm:InstantiateVnfLcm
|
||||||
vnflcm_terminate = tackerclient.osc.v1.vnflcm.vnflcm:TerminateVnfLcm
|
vnflcm_terminate = tackerclient.osc.v1.vnflcm.vnflcm:TerminateVnfLcm
|
||||||
vnflcm_delete = tackerclient.osc.v1.vnflcm.vnflcm:DeleteVnfLcm
|
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_list = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ListVnfLcmOp
|
||||||
vnflcm_op_show = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ShowVnfLcmOp
|
vnflcm_op_show = tackerclient.osc.v1.vnflcm.vnflcm_op_occs:ShowVnfLcmOp
|
||||||
vnflcm_versions = tackerclient.osc.common.vnflcm.vnflcm_versions:VnfLcmVersions
|
vnflcm_versions = tackerclient.osc.common.vnflcm.vnflcm_versions:VnfLcmVersions
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"additionalParams": {"all": true}
|
||||||
|
}
|
||||||
@@ -241,6 +241,7 @@ class HealVnfLcm(command.Command):
|
|||||||
usage_message = ('''%(prog)s [-h] [--cause CAUSE]
|
usage_message = ('''%(prog)s [-h] [--cause CAUSE]
|
||||||
[--vnfc-instance <vnfc-instance-id> '''
|
[--vnfc-instance <vnfc-instance-id> '''
|
||||||
'''[<vnfc-instance-id> ...]]
|
'''[<vnfc-instance-id> ...]]
|
||||||
|
[--additional-param-file <additional-param-file>]
|
||||||
-- <vnf-instance>''')
|
-- <vnf-instance>''')
|
||||||
parser.usage = usage_message
|
parser.usage = usage_message
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@@ -256,6 +257,11 @@ class HealVnfLcm(command.Command):
|
|||||||
nargs="+",
|
nargs="+",
|
||||||
help=_("List of VNFC instances requiring a healing action.")
|
help=_("List of VNFC instances requiring a healing action.")
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--additional-param-file',
|
||||||
|
metavar="<additional-param-file>",
|
||||||
|
help=_("Additional parameters passed by the NFVO as input "
|
||||||
|
"to the healing process."))
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def args2body(self, parsed_args):
|
def args2body(self, parsed_args):
|
||||||
@@ -264,6 +270,8 @@ class HealVnfLcm(command.Command):
|
|||||||
body['cause'] = parsed_args.cause
|
body['cause'] = parsed_args.cause
|
||||||
if parsed_args.vnfc_instance:
|
if parsed_args.vnfc_instance:
|
||||||
body['vnfcInstanceId'] = 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
|
return body
|
||||||
|
|
||||||
|
|||||||
@@ -288,6 +288,9 @@ class TestHealVnfLcm(TestVnfLcm):
|
|||||||
self.heal_vnf_lcm = vnflcm.HealVnfLcm(
|
self.heal_vnf_lcm = vnflcm.HealVnfLcm(
|
||||||
self.app, self.app_args, cmd_name='vnflcm heal')
|
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",
|
@ddt.data((['--cause', 'test-cause', "--vnfc-instance",
|
||||||
'vnfc-id-1', 'vnfc-id-2'],
|
'vnfc-id-1', 'vnfc-id-2'],
|
||||||
[('cause', 'test-cause'),
|
[('cause', 'test-cause'),
|
||||||
@@ -296,6 +299,8 @@ class TestHealVnfLcm(TestVnfLcm):
|
|||||||
[('cause', 'test-cause')]),
|
[('cause', 'test-cause')]),
|
||||||
(["--vnfc-instance", 'vnfc-id-1', 'vnfc-id-2'],
|
(["--vnfc-instance", 'vnfc-id-1', 'vnfc-id-2'],
|
||||||
[('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
|
@ddt.unpack
|
||||||
def test_take_action(self, arglist, verifylist):
|
def test_take_action(self, arglist, verifylist):
|
||||||
@@ -340,6 +345,25 @@ class TestHealVnfLcm(TestVnfLcm):
|
|||||||
self.heal_vnf_lcm.take_action,
|
self.heal_vnf_lcm.take_action,
|
||||||
parsed_args)
|
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
|
@ddt.ddt
|
||||||
class TestTerminateVnfLcm(TestVnfLcm):
|
class TestTerminateVnfLcm(TestVnfLcm):
|
||||||
|
|||||||
Reference in New Issue
Block a user