enable updating VNF parameters¶
https://blueprints.launchpad.net/tacker/+spec/reservation-vnfm
This proposal aims at supporting to update parameters of created VNF.
Problem description¶
Current Tacker supports updating only config attribute of VNFs [1] and does not support updating param_values of VNFs. So, operators have to re-create the VNF if they want to update parameters. This spec enables updating the parameters without a VNF re-creation.
Use case¶
For example, some VNFs are deployed with a different priority on the limited infra resources and scale-up of the higher priority VNF will be expected due to increased demand in certain periods for upcoming events like concerts, festivals or sport games. Operators of higher priority VNF need to reserve resources for their VNF so that the required resources aren’t consumed by other VNFs.
The resource reservation function that current Tacker supports [2] enables extending resources during the certain periods by applying a reservation-id that was issued at reserving the resource to the VNF. Operators need to update the reservation-id because such a large-scale event usually occurs multiple times. Operators can prepare for such events without re-creating VNFs by introducing this parameter updating function.
Proposed change¶
Enabling to update parameter in vnf update.
Adding a new parameter –param-file to openstack vnf set command.
openstack vnf set --param-file PARAM-FILE <VNF>
parameters here means inputs parameters in VNFDs. So users have to parameterize what they want to update later in their VNFDs before creating VNFs. For example, the parameters include flavor, image, network, etc. like below. The detail is described in [3].
:caption: Example Parameterized VNFD
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: VNF TOSCA template with input parameters
metadata:
template_name: sample-tosca-vnfd
topology_template:
inputs:
image_name:
type: string
description: Image Name
flavor:
type: string
description: Flavor Information
network:
type: string
description: management network
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
properties:
image: {get_input: image_name}
flavor: {get_input: flavor}
availability_zone: nova
...
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: {get_input: network}
vendor: Tacker
...
Updated values of parameters are described in parameter file.
:caption: Example parameter file
image_name: cirros-0.4.0-x86_64-disk
flavor: m1.tiny
network: net_mgmt
internal updating procedure
When parameter update, Tacker issues Heat stack update with setting True to existing flag to keep stack resources which do not consist updating parameter. It depends on the updated property if parameter updating brings re-creation of the stack resource or not. For example, updating image property of OS::Nova::Server resource type causes replacement of its VM but name property doesn’t. The detail is described in [4] [5] .
# run stack update
stack_update_param = {
'parameters': update_values,
'existing': True}
heatclient.update(vnf_id, **stack_update_param)
miscellaneous error handling
Users can use either config or parameter file, but not both at the same time. It’s because updating config may fail if VM re-creation occurs by updating parameter.
class UpdateVNF(command.ShowOne):
_description = _("Update a given VNF.")
def get_parser(self, prog_name):
parser = super(UpdateVNF, self).get_parser(prog_name)
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument(
'--config-file',
help=_('YAML file with VNF configuration'))
group.add_argument(
'--config',
help=_('Specify config YAML data'))
group.add_argument(
'--param-file',
help=_('Specify parameter yaml file'))
parser.add_argument(
_VNF,
metavar="<VNF>",
help=_("VNF to update (name or ID)"))
return parser
:caption: Example error message
openstack vnf set --param-file PARAM-FILE --config CONFIG <VNF>
openstack vnf set: error: argument --config: not allowed with argument --param-file
If there is no difference between parameter values that are passed by vnf set command and current, Tacker cancels updating parameters with warning messages. It prevents unnecessary updating processes.
# check update values
update_values = {}
for key, value in update_param_dict.items():
if update_param_dict[key] != param_dict[key]:
update_values[key] = value
if not update_values:
raise vnfm.VNFUpdateInvalidInput(
reason="WARNING: parameter is same value")
:caption: Example warning message
openstack vnf set --param-file PARAM-FILE <VNF>
WARNING: parameter is same value
Alternatives¶
None
Data model impact¶
None
REST API impact¶
Adding “param_values” to “Request Parameters” of Update VNF API.
Security impact¶
None
Notifications impact¶
None
Other end user impact¶
None
Performance Impact¶
None
Other deployer impact¶
None
Developer impact¶
None
Implementation¶
Assignee(s)¶
- Primary assignee:
Hiroyuki Jo <jo.hiroyuki@lab.ntt.co.jp>
Work Items¶
Adding “param-file” argument to vnf set command in python-tackerclient.
Adding a function to get the difference between existing parameter and new parameter to Tacker.
Adding a function to call stack update with new parameter to Tacker
Unit Tests
Functional Tests
Update documentation
Dependencies¶
None
Testing¶
Unit and functional test cases will be added for updating VNF by applying new parameter to existing VNF
Documentation Impact¶
Adding “Updating VNF” to tacker/doc/source/user/vnfm_usage_guide.rst