diff --git a/api-ref/source/v2/parameters_vnflcm.yaml b/api-ref/source/v2/parameters_vnflcm.yaml index cc053a0c7..803c90097 100644 --- a/api-ref/source/v2/parameters_vnflcm.yaml +++ b/api-ref/source/v2/parameters_vnflcm.yaml @@ -170,6 +170,19 @@ affected_vnfcs_vdu_id: in: body required: true type: string +all: + description: | + Defines whether network resources and storage resources are included + in the heal target. + in: body + required: false + type: boolean +aspect_id: + description: | + Identifier of the scaling aspect. + in: body + required: true + type: string authentication: description: | Authentication parameters to configure the use of @@ -268,6 +281,125 @@ callback_uri: in: body required: true type: string +cause: + description: | + Indicates the reason why a healing procedure is required. + in: body + required: false + type: string +change_ext_vnf_connectivity_additional_params: + description: | + Additional parameters passed by the NFVO as input to the process, + specific to the VNF of which the external connectivity is changed, + as declared in the VNFD as part of "ChangeExtVnfConnectivityOpConfig". + in: body + required: false + type: key value pairs +change_ext_vnf_connectivity_ext_virtual_links: + description: | + Information about external VLs to change. + in: body + required: true + type: array +changed_ext_connectivity: + description: | + Information about changed external connectivity, + if applicable. + in: body + required: false + type: object +changed_ext_connectivity_id: + description: | + Identifier of the external VL and the related external VL + information instance. The identifier is assigned by the + NFV-MANO entity that manages this VL instance. + in: body + required: false + type: string +changed_info: + description: | + Information about the changed VNF instance information, + including VNF configurable properties, if applicable. + in: body + required: false + type: object +changed_info_extensions: + description: | + If present, this attribute signals modifications of the + "extensions" attribute in "VnfInstance". + in: body + required: false + type: key value pairs +changed_info_metadata: + description: | + If present, this attribute signals modifications of the + "metadata" attribute in "VnfInstance". + in: body + required: false + type: key value pairs +changed_info_vim_connection_info: + description: | + If present, this attribute signals modifications of certain + entries in the "vimConnectionInfo" attribute array in "VnfInstance". + in: body + required: false + type: array +changed_info_vnf_configurable_properties: + description: | + If present, this attribute signals modifications of the + "vnfConfigurableProperties" attribute in "VnfInstance". + in: body + required: false + type: key value pairs +changed_info_vnf_instance_description: + description: | + If present, this attribute signals modifications of the + "vnfInstanceDescription" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnf_instance_name: + description: | + If present, this attribute signals modifications of the + "vnfInstanceName" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnf_product_name: + description: | + If present, this attribute signals modifications of the + "vnfProductName" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnf_provider: + description: | + If present, this attribute signals modifications of the + "vnfProvider" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnf_software_version: + description: | + If present, this attribute signals modifications of the + "vnfSoftwareVersion" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnfd_id: + description: | + If present, this attribute signals modifications of the + "vnfdId" attribute in "VnfInstance". + in: body + required: false + type: string +changed_info_vnfd_version: + description: | + If present, this attribute signals modifications of the + "vnfdVersion" attribute in "VnfInstance". + in: body + required: false + type: string cp_config: description: | List of instance data that need to be configured on the CP instances @@ -275,6 +407,15 @@ cp_config: in: body required: true type: map +cp_instance_id: + description: | + Identifier of the external Connection Point instance to which this set of + configuration parameters is requested to be applied. + + Shall be present if this instance has already been created. + in: body + required: false + type: string cp_protocol_data: description: | Parameters for configuring the network protocols on the link port that @@ -629,6 +770,14 @@ grant_id: in: body required: false type: string +heal_additional_params: + description: | + Additional parameters passed by the NFVO as input to the healing process, + specific to the VNF being healed, as declared in the VNFD as part of + "HealVnfOpConfig". + in: body + required: false + type: key value pairs instantiated_vnf_info: description: | Information specific to an instantiated VNF instance. This attribute shall @@ -760,6 +909,14 @@ num_dynamic_addresses: in: body required: false type: int +number_of_steps: + description: | + Number of scaling steps to be executed as part of this + Scale VNF operation. It shall be a positive number and the + default value shall be 1. + in: body + required: false + type: int operation: description: | Type of the actual LCM operation represented by this @@ -859,6 +1016,25 @@ resource_provider_id: in: body required: false type: string +scale_additional_params: + description: | + Additional parameters passed by the NFVO as input to the + scaling process, specific to the VNF being scaled, as + declared in the VNFD as part of "ScaleVnfOpConfig". + in: body + required: false + type: key value pairs +scale_type: + description: | + Indicates the type of the scale operation requested. + Permitted values: + + SCALE_OUT: adding additional VNFC instances to the VNF to increase capacity. + + SCALE_IN: removing VNFC instances from the VNF in order to release unused capacity. + in: body + required: true + type: string segmentation_id: description: | Identification of the network segment to which @@ -982,7 +1158,7 @@ vim_connection_info_vim_type: The set of permitted values is expected to change over time as new types or versions of VIMs become available. in: body - required: false + required: true type: string virtual_storage_resource_info: description: | @@ -1124,6 +1300,51 @@ vnf_instance_terminate_request_additional_params: in: body required: false type: key value pairs +vnf_instance_update_configurable_properties: + description: | + Modifications of the "vnfConfigurableProperties" attribute in + "VnfInstance". If present, these modifications shall be applied + according to the rules of JSON Merge Patch. + in: body + required: false + type: key value pairs +vnf_instance_update_extensions: + description: | + Modifications of the "extensions" attribute in "VnfInstance". + If present, these modifications shall be applied according to the + rules of JSON Merge Patch. + in: body + required: false + type: key value pairs +vnf_instance_update_request_description: + description: | + New value of the "vnfInstanceDescription" attribute in + "VnfInstance". + in: body + required: false + type: string +vnf_instance_update_request_metadata: + description: | + Modifications of the "metadata" attribute in + "VnfInstance". If present, these modifications shall be + applied according to the rules of JSON Merge Patch. + in: body + required: false + type: key value pairs +vnf_instance_update_request_name: + description: | + New value of the "vnfInstanceName" attribute in + "VnfInstance". + in: body + required: false + type: string +vnf_instance_update_request_vnfd_id: + description: | + New value of the "vnfdId" attribute in "VnfInstance". + The value "null" is not permitted. + in: body + required: false + type: string vnf_instance_vim_connection_info: description: | Information about VIM connections to be used for managing the resources @@ -1347,6 +1568,12 @@ vnf_virtual_link_resource_info_vnf_virtual_link_desc_id: in: body required: true type: string +vnfc_configurable_properties: + description: | + Changes of the configurable properties of the VNFC instance. + in: body + required: true + type: key value pairs vnfc_cp_info_cpd_id: description: | Identifier of the VDU CPD, cpdId, in the VNFD. @@ -1378,6 +1605,21 @@ vnfc_info_id: in: body required: true type: string +vnfc_info_modifications: + description: | + This attribute signals modifications of certain entries in the + "vnfcInfo" attribute array in the "instantiatedVnfInfo" attribute of + "VnfInstance". + in: body + required: false + type: array +vnfc_info_modifications_id: + description: | + Identifier of the VNFC instance of which the information is to be + modified. + in: body + required: true + type: string vnfc_info_vdu_id: description: | Reference to the applicable VDU information element in the VNFD. @@ -1414,6 +1656,12 @@ vnfc_resource_info_id: in: body required: true type: string +vnfc_resource_info_ids: + description: | + List of VNFC instances requiring a healing action. + in: body + required: false + type: array vnfc_resource_info_vdu_id: description: | Reference to the applicable VDU in the VNFD. diff --git a/api-ref/source/v2/samples/vnflcm/change-ext-conn-request.json b/api-ref/source/v2/samples/vnflcm/change-ext-conn-request.json new file mode 100644 index 000000000..24458feb5 --- /dev/null +++ b/api-ref/source/v2/samples/vnflcm/change-ext-conn-request.json @@ -0,0 +1,195 @@ +{ + "additionalParams": { + "dummy-key": "dummy-value" + }, + "extVirtualLinks": [ + { + "extCps": [ + { + "cpConfig": { + "VDU1_CP1": { + "cpProtocolData": [ + { + "ipOverEthernet": { + "ipAddresses": [ + { + "numDynamicAddresses": 1, + "subnetId": "9df49e05-4288-48d3-bbb5-9ae902d98506", + "type": "IPV4" + } + ] + }, + "layerProtocol": "IP_OVER_ETHERNET" + } + ], + "parentCpConfigId": "6274c3fa-1cec-41cc-add2-fc8808793cf7" + } + }, + "cpdId": "VDU1_CP1" + }, + { + "cpConfig": { + "VDU2_CP1-1": { + "cpProtocolData": [ + { + "ipOverEthernet": { + "ipAddresses": [ + { + "numDynamicAddresses": 1, + "subnetId": "9df49e05-4288-48d3-bbb5-9ae902d98506", + "type": "IPV4" + } + ] + }, + "layerProtocol": "IP_OVER_ETHERNET" + } + ], + "linkPortId": "315a2b77-8076-49df-84fe-45579faf4085", + "parentCpConfigId": "99f8ba42-3619-4fbd-81a5-999c3767237b" + } + }, + "cpdId": "VDU2_CP1-1" + }, + { + "cpConfig": { + "VDU2_CP1-2": { + "cpProtocolData": [ + { + "ipOverEthernet": { + "ipAddresses": [ + { + "numDynamicAddresses": 1, + "subnetId": "9df49e05-4288-48d3-bbb5-9ae902d98506", + "type": "IPV4" + } + ] + }, + "layerProtocol": "IP_OVER_ETHERNET" + } + ], + "linkPortId": "63e41d9c-2b34-45e9-be79-13bdf9f8b3a3", + "parentCpConfigId": "3b55b051-c5cb-41cf-bc0e-ea71e95d2636" + } + }, + "cpdId": "VDU2_CP1-2" + } + ], + "extLinkPorts": [ + { + "id": "315a2b77-8076-49df-84fe-45579faf4085", + "resourceHandle": { + "resourceId": "1cb1fb17-1a8f-4052-8599-ec6858da3659" + } + }, + { + "id": "63e41d9c-2b34-45e9-be79-13bdf9f8b3a3", + "resourceHandle": { + "resourceId": "dummy-id" + } + } + ], + "id": "38a38351-fbed-4637-8dcd-01ca1f69d4bb", + "resourceId": "bbe38e96-8395-4b7f-a7da-67058922df1c", + "resourceProviderId": "Company", + "vimConnectionId": "defb2f96-5670-4bef-8036-27bf61267fc1" + }, + { + "extCps": [ + { + "cpConfig": { + "VDU1_CP2": { + "cpProtocolData": [ + { + "ipOverEthernet": { + "ipAddresses": [ + { + "numDynamicAddresses": 1, + "subnetId": "775cdf14-a942-4358-a3f2-60ad423f6ad2", + "type": "IPV4" + } + ] + }, + "layerProtocol": "IP_OVER_ETHERNET" + } + ], + "parentCpConfigId": "c09646b2-8a91-4af3-8260-71cfa865a5b1" + } + }, + "cpdId": "VDU1_CP2" + }, + { + "cpConfig": { + "VDU2_CP2": { + "cpProtocolData": [ + { + "ipOverEthernet": { + "ipAddresses": [ + { + "fixedAddresses": [ + "100.100.100.12" + ], + "subnetId": "775cdf14-a942-4358-a3f2-60ad423f6ad2", + "type": "IPV4" + }, + { + "numDynamicAddresses": 1, + "subnetId": "15cd2e7e-add5-42cd-b790-2fe734fcc7dc", + "type": "IPV6" + } + ], + "macAddress": "fa:16:3e:fa:22:75" + }, + "layerProtocol": "IP_OVER_ETHERNET" + } + ], + "parentCpConfigId": "40820a06-be32-4ea1-ae38-5f164c8de178" + } + }, + "cpdId": "VDU2_CP2" + } + ], + "id": "97a82200-328a-44f6-98cb-bfdf27c359c1", + "resourceId": "b47d25bd-f1d8-4136-b7e7-ac8754977661", + "resourceProviderId": "Company", + "vimConnectionId": "defb2f96-5670-4bef-8036-27bf61267fc1" + } + ], + "vimConnectionInfo": { + "vim1": { + "accessInfo": { + "password": "devstack", + "project": "nfv", + "projectDomain": "Default", + "region": "RegionOne", + "userDomain": "Default", + "username": "nfv_user" + }, + "extra": { + "new-key": "new-val" + }, + "interfaceInfo": { + "endpoint": "http://localhost/identity/v3" + }, + "vimId": "defb2f96-5670-4bef-8036-27bf61267fc1", + "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3" + }, + "vim2": { + "accessInfo": { + "password": "dummy_password", + "project": "dummy_project", + "projectDomain": "Default", + "region": "RegionOne", + "userDomain": "Default", + "username": "dummy_user" + }, + "extra": { + "dummy-key": "dummy-val" + }, + "interfaceInfo": { + "endpoint": "http://localhost/identity/v3" + }, + "vimId": "c8dbc7c0-a4f4-4bff-8075-4cb555e63b7b", + "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3" + } + } +} diff --git a/api-ref/source/v2/samples/vnflcm/create-subscription-response.json b/api-ref/source/v2/samples/vnflcm/create-subscription-response.json index d6438ed3a..6fef5e8bb 100644 --- a/api-ref/source/v2/samples/vnflcm/create-subscription-response.json +++ b/api-ref/source/v2/samples/vnflcm/create-subscription-response.json @@ -1,7 +1,7 @@ { "_links": { "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/084cf869-d787-4c1a-b43b-405a25ed98da" + "href": "http://127.0.0.1:9890/vnflcm/v2/subscriptions/084cf869-d787-4c1a-b43b-405a25ed98da" } }, "callbackUri": "http://127.0.0.1/", diff --git a/api-ref/source/v2/samples/vnflcm/create-vnf-instance-response.json b/api-ref/source/v2/samples/vnflcm/create-vnf-instance-response.json index 2c2d6a93c..6c6c95235 100644 --- a/api-ref/source/v2/samples/vnflcm/create-vnf-instance-response.json +++ b/api-ref/source/v2/samples/vnflcm/create-vnf-instance-response.json @@ -1,10 +1,10 @@ { "_links": { "instantiate": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/instantiate" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/instantiate" }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" } }, "extensions": {}, diff --git a/api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json b/api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json index b1eb1a06b..70c4cb89b 100644 --- a/api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json +++ b/api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json @@ -1,19 +1,19 @@ { "_links": { "fail": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/fail" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/fail" }, "retry": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/retry" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/retry" }, "rollback": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/rollback" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643/rollback" }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/9b475d28-5acb-4c3b-95dd-fec2b2319643" }, "vnfInstance": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/10ed068e-1284-48f2-9b6e-1c443ace9cc6" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/10ed068e-1284-48f2-9b6e-1c443ace9cc6" } }, "error": { diff --git a/api-ref/source/v2/samples/vnflcm/heal-vnf-instance-request.json b/api-ref/source/v2/samples/vnflcm/heal-vnf-instance-request.json new file mode 100644 index 000000000..2841bf6b4 --- /dev/null +++ b/api-ref/source/v2/samples/vnflcm/heal-vnf-instance-request.json @@ -0,0 +1,7 @@ +{ + "cause": "healing", + "additionalParams": { + "all": false + }, + "vnfcInstanceId": ["c51c98dc-b918-4681-a9eb-4f32a57c4e08"] +} diff --git a/api-ref/source/v2/samples/vnflcm/list-subscription-response.json b/api-ref/source/v2/samples/vnflcm/list-subscription-response.json index bcf02ea5e..194f7384d 100644 --- a/api-ref/source/v2/samples/vnflcm/list-subscription-response.json +++ b/api-ref/source/v2/samples/vnflcm/list-subscription-response.json @@ -2,7 +2,7 @@ { "_links": { "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d" + "href": "http://127.0.0.1:9890/vnflcm/v2/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d" } }, "callbackUri": "http://127.0.0.1/", diff --git a/api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json b/api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json index e90bea971..34b58b3d7 100644 --- a/api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json +++ b/api-ref/source/v2/samples/vnflcm/list-vnf-instance-response.json @@ -1,11 +1,20 @@ [ { "_links": { + "changeExtConn": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/change_ext_conn" + }, + "heal": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/heal" + }, + "scale": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/scale" + }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" }, "terminate": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate" } }, "extensions": {}, diff --git a/api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json b/api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json index 9be4c7194..6136dfbbc 100644 --- a/api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json +++ b/api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json @@ -3,19 +3,19 @@ { "_links": { "fail": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/fail" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/fail" }, "retry": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/retry" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/retry" }, "rollback": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/rollback" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/rollback" }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5" }, "vnfInstance": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296" } }, "grantId": "30bdaa69-ef80-4545-9298-428b70ce8e4a", @@ -163,19 +163,19 @@ { "_links": { "fail": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/fail" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/fail" }, "retry": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/retry" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/retry" }, "rollback": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/rollback" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d/rollback" }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/fdd8bdf4-8f7b-4237-99d3-c87c0910571d" }, "vnfInstance": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/c256d5c2-f29e-474c-bced-cbc6d9e2b00b" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/c256d5c2-f29e-474c-bced-cbc6d9e2b00b" } }, "grantId": "3aa7d8cd-6f85-4d7f-859a-eb26481157e6", diff --git a/api-ref/source/v2/samples/vnflcm/scale-vnf-instance-request.json b/api-ref/source/v2/samples/vnflcm/scale-vnf-instance-request.json new file mode 100644 index 000000000..985ca9d3d --- /dev/null +++ b/api-ref/source/v2/samples/vnflcm/scale-vnf-instance-request.json @@ -0,0 +1,8 @@ +{ + "additionalParams": { + "dummy-key": "dummy-value" + }, + "aspectId": "VDU1_scale", + "numberOfSteps": 1, + "type": "SCALE_OUT" +} diff --git a/api-ref/source/v2/samples/vnflcm/show-subscription-response.json b/api-ref/source/v2/samples/vnflcm/show-subscription-response.json index e8be5d3b8..19f11b257 100644 --- a/api-ref/source/v2/samples/vnflcm/show-subscription-response.json +++ b/api-ref/source/v2/samples/vnflcm/show-subscription-response.json @@ -1,7 +1,7 @@ { "_links": { "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d" + "href": "http://127.0.0.1:9890/vnflcm/v2/subscriptions/cd87e3d6-9bbe-4ad1-bb21-0f5c3e4e777d" } }, "callbackUri": "http://127.0.0.1/", diff --git a/api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json b/api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json index c95cfbd72..faea91e23 100644 --- a/api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json +++ b/api-ref/source/v2/samples/vnflcm/show-vnf-instance-response.json @@ -1,10 +1,19 @@ { "_links": { + "changeExtConn": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/change_ext_conn" + }, + "heal": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/heal" + }, + "scale": { + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/scale" + }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee" }, "terminate": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/99e2bae9-45d3-4ca1-83f4-34d44ca25bee/terminate" } }, "extensions": {}, diff --git a/api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json b/api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json index 0eb79ce50..93a2f6853 100644 --- a/api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json +++ b/api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json @@ -1,19 +1,19 @@ { "_links": { "fail": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/fail" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/fail" }, "retry": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/retry" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/retry" }, "rollback": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/rollback" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5/rollback" }, "self": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_lcm_op_occs/a790879c-05f9-4475-9c90-1677452d3eb5" }, "vnfInstance": { - "href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296" + "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296" } }, "grantId": "f848dd6c-6393-4104-8bfe-df764a042563", diff --git a/api-ref/source/v2/samples/vnflcm/update-vnf-instance-request.json b/api-ref/source/v2/samples/vnflcm/update-vnf-instance-request.json new file mode 100644 index 000000000..f89c9bafc --- /dev/null +++ b/api-ref/source/v2/samples/vnflcm/update-vnf-instance-request.json @@ -0,0 +1,48 @@ +{ + "extensions": { + "dummy-key": "dummy-value" + }, + "metadata": { + "dummy-key": "dummy-value" + }, + "vimConnectionInfo": { + "vim2": { + "accessInfo": { + "password": "dummy_password", + "project": "dummy_project", + "projectDomain": "Default", + "region": "RegionOne", + "userDomain": "Default", + "username": "dummy_user" + }, + "extra": { + "dummy-key": "dummy-val" + }, + "interfaceInfo": { + "endpoint": "http://127.0.0.1/identity/v3" + }, + "vimId": "ac2d2ece-5e49-4b15-b92d-b681e9c096d8", + "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3" + } + }, + "vnfConfigurableProperties": { + "dummy-key": "dummy-value" + }, + "vnfInstanceDescription": "new description", + "vnfInstanceName": "new name", + "vnfcInfoModifications": [ + { + "id": "VDU1-07dfd58c-b147-4d4f-8cd6-d55f41280bb9", + "vnfcConfigurableProperties": { + "dummy-key": "dummy-value" + } + }, + { + "id": "VDU1-20637c67-9fbe-4c31-b975-6bc4bcd8c35a", + "vnfcConfigurableProperties": { + "dummy-key": "dummy-value" + } + } + ], + "vnfdId": "5f846f98-849c-4df0-b57e-fabe9db2beff" +} diff --git a/api-ref/source/v2/vnflcm.inc b/api-ref/source/v2/vnflcm.inc index 0f96e207e..66224a018 100644 --- a/api-ref/source/v2/vnflcm.inc +++ b/api-ref/source/v2/vnflcm.inc @@ -220,6 +220,48 @@ Request Example .. literalinclude:: samples/vnflcm/terminate-vnf-instance-request.json :language: javascript +Heal a VNF instance (v2) +======================== + +.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/heal + +This task resource represents the "Heal VNF" operation. The client can use +this resource to request healing a VNF instance. + +The POST method heals a VNF instance. + +Response Codes +-------------- + +.. rest_status_code:: success status.yaml + + - 202 + +.. rest_status_code:: error status.yaml + + - 400 + - 401 + - 404 + - 406 + - 409 + - 422 + +Request Parameters +------------------ + +.. rest_parameters:: parameters_vnflcm.yaml + + - vnfInstanceId: vnf_instance_id + - cause: cause + - additionalParams: heal_additional_params + - all: all + - vnfcInstanceId: vnfc_resource_info_ids + +Request Example +--------------- + +.. literalinclude:: samples/vnflcm/heal-vnf-instance-request.json + :language: javascript Delete a VNF instance (v2) ========================== @@ -554,6 +596,191 @@ Response Example .. literalinclude:: samples/vnflcm/list-vnf-instance-response.json :language: javascript +Scale a VNF instance (v2) +========================= + +.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/scale + +This task resource represents the "Scale VNF" operation. The client can use +this resource to request scaling a VNF instance. + +The POST method scales a VNF instance. + +Response Codes +-------------- + +.. rest_status_code:: success status.yaml + + - 202 + +.. rest_status_code:: error status.yaml + + - 400 + - 401 + - 404 + - 406 + - 409 + - 422 + +Request Parameters +------------------ + +.. rest_parameters:: parameters_vnflcm.yaml + + - vnfInstanceId: vnf_instance_id + - type: scale_type + - aspectId: aspect_id + - numberOfSteps: number_of_steps + - additionalParams: scale_additional_params + +Request Example +--------------- + +.. literalinclude:: samples/vnflcm/scale-vnf-instance-request.json + :language: javascript + +Update a VNF instance (v2) +========================== + +.. rest_method:: PATCH vnflcm/v2/vnf_instances/{vnfInstanceId} + +Changes to the VNF configurable properties are applied to the configuration +in the VNF instance, and are reflected in the representation of this resource. +Other changes are applied to the VNF instance information managed by the VNFM, +and are reflected in the representation of this resource. + +According to the ETSI NFV SOL document, there is no API request/response +specification for Etag yet, and transactions using Etag are not defined +by standardization. Therefore, the Yoga release does not support +`Error Code: 412 Precondition Failed`. Once a standard specification +for this is established, it will be installed on the tacker. + +This method modifies an "Individual VNF instance". + +Response Codes +-------------- + +.. rest_status_code:: success status.yaml + + - 202 + +.. rest_status_code:: error status.yaml + + - 400 + - 401 + - 404 + - 406 + - 409 + - 422 + +Request Parameters +------------------ + +.. rest_parameters:: parameters_vnflcm.yaml + + - vnfInstanceId: vnf_instance_id + - vnfInstanceName: vnf_instance_update_request_name + - vnfInstanceDescription: vnf_instance_update_request_description + - vnfdId: vnf_instance_update_request_vnfd_id + - vnfConfigurableProperties: vnf_instance_update_configurable_properties + - metadata: vnf_instance_update_request_metadata + - extensions: vnf_instance_update_extensions + - vimConnectionInfo: vnf_instance_vim_connection_info + - vimId: vim_connection_info_vim_id + - vimType: vim_connection_info_vim_type + - interfaceInfo: vim_connection_info_interface_info + - accessInfo: vim_connection_info_access_info + - extra: vim_connection_info_extra + - vnfcInfoModifications: vnfc_info_modifications + - id: vnfc_info_modifications_id + - vnfcConfigurableProperties: vnfc_configurable_properties + +.. note:: + All attribute does not support "null" in JSON Merge Patch. + For attribute whose Type is "key value pairs", the key is deleted by + specifying null. (The attribute itself cannot be deleted.) + +Request Example +--------------- + +.. literalinclude:: samples/vnflcm/update-vnf-instance-request.json + :language: javascript + +Change External VNF Connectivity (v2) +===================================== + +.. rest_method:: POST /vnflcm/v2/vnf_instances/{vnfInstanceId}/change_ext_conn + +This task resource represents the "Change external VNF connectivity" operation. +The client can use this resource to change the external connectivity of a VNF instance. + +The POST method changes the external connectivity of a VNF instance. + +Response Codes +-------------- + +.. rest_status_code:: success status.yaml + + - 202 + +.. rest_status_code:: error status.yaml + + - 400 + - 401 + - 404 + - 406 + - 409 + - 422 + +Request Parameters +------------------ + +.. rest_parameters:: parameters_vnflcm.yaml + + - vnfInstanceId: vnf_instance_id + - extVirtualLinks: change_ext_vnf_connectivity_ext_virtual_links + - id: ext_virtual_links_id + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: ext_virtual_links_resource_id + - extCps: ext_cps + - cpdId: cpd_id + - cpConfig: cp_config + - parentCpConfigId: parent_cp_config_id + - linkPortId: link_port_id + - cpProtocolData: cp_protocol_data + - layerProtocol: layer_protocol + - ipOverEthernet: ip_over_ethernet + - macAddress: mac_address + - segmentationId: segmentation_id + - ipAddresses: ip_addresses + - type: ip_address_type + - fixedAddresses: fixed_addresses + - numDynamicAddresses: num_dynamic_addresses + - addressRange: address_range + - minAddress: min_address + - maxAddress: max_address + - subnetId: subnet_id + - extLinkPorts: ext_link_ports + - id: ext_link_port_id + - resourceHandle: ext_link_port_resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - vimConnectionInfo: vnf_instance_vim_connection_info + - vimId: vim_connection_info_vim_id + - vimType: vim_connection_info_vim_type + - interfaceInfo: vim_connection_info_interface_info + - accessInfo: vim_connection_info_access_info + - extra: vim_connection_info_extra + - additionalParams: change_ext_vnf_connectivity_additional_params + +Request Example +--------------- + +.. literalinclude:: samples/vnflcm/change-ext-conn-request.json + :language: javascript Show VNF LCM operation occurrence (v2) ====================================== @@ -631,6 +858,59 @@ Response Parameters - vimConnectionId: vim_connection_id - resourceId: resource_handle_resource_id - vimLevelResourceType: resource_handle_vim_level_resource_type + - changedInfo: changed_info + - vnfInstanceName: changed_info_vnf_instance_name + - vnfInstanceDescription: changed_info_vnf_instance_description + - vnfConfigurableProperties: changed_info_vnf_configurable_properties + - metadata: changed_info_metadata + - extensions: changed_info_extensions + - vimConnectionInfo: changed_info_vim_connection_info + - vimId: vim_connection_info_vim_id + - vimType: vim_connection_info_vim_type + - interfaceInfo: vim_connection_info_interface_info + - accessInfo: vim_connection_info_access_info + - extra: vim_connection_info_extra + - vnfdId: changed_info_vnfd_id + - vnfProvider: changed_info_vnf_provider + - vnfProductName: changed_info_vnf_product_name + - vnfSoftwareVersion: changed_info_vnf_software_version + - vnfdVersion: changed_info_vnfd_version + - vnfcInfoModifications: vnfc_info_modifications + - id: vnfc_info_modifications_id + - vnfcConfigurableProperties: vnfc_configurable_properties + - changedExtConnectivity: changed_ext_connectivity + - id: changed_ext_connectivity_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - extLinkPorts: ext_link_ports + - id: ext_link_port_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - cpInstanceId: cp_instance_id + - currentVnfExtCpData: current_vnf_ext_cp_data + - cpdId: cpd_id + - cpConfig: cp_config + - parentCpConfigId: parent_cp_config_id + - linkPortId: link_port_id + - cpProtocolData: cp_protocol_data + - layerProtocol: layer_protocol + - ipOverEthernet: ip_over_ethernet + - macAddress: mac_address + - segmentationId: segmentation_id + - ipAddresses: ip_addresses + - type: ip_address_type + - fixedAddresses: fixed_addresses + - numDynamicAddresses: num_dynamic_addresses + - addressRange: address_range + - minAddress: min_address + - maxAddress: max_address + - subnetId: subnet_id - _links: vnf_instance_links Response Example @@ -727,6 +1007,59 @@ Response Parameters - vimConnectionId: vim_connection_id - resourceId: resource_handle_resource_id - vimLevelResourceType: resource_handle_vim_level_resource_type + - changedInfo: changed_info + - vnfInstanceName: changed_info_vnf_instance_name + - vnfInstanceDescription: changed_info_vnf_instance_description + - vnfConfigurableProperties: changed_info_vnf_configurable_properties + - metadata: changed_info_metadata + - extensions: changed_info_extensions + - vimConnectionInfo: changed_info_vim_connection_info + - vimId: vim_connection_info_vim_id + - vimType: vim_connection_info_vim_type + - interfaceInfo: vim_connection_info_interface_info + - accessInfo: vim_connection_info_access_info + - extra: vim_connection_info_extra + - vnfdId: changed_info_vnfd_id + - vnfProvider: changed_info_vnf_provider + - vnfProductName: changed_info_vnf_product_name + - vnfSoftwareVersion: changed_info_vnf_software_version + - vnfdVersion: changed_info_vnfd_version + - vnfcInfoModifications: vnfc_info_modifications + - id: vnfc_info_modifications_id + - vnfcConfigurableProperties: vnfc_configurable_properties + - changedExtConnectivity: changed_ext_connectivity + - id: changed_ext_connectivity_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - extLinkPorts: ext_link_ports + - id: ext_link_port_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - cpInstanceId: cp_instance_id + - currentVnfExtCpData: current_vnf_ext_cp_data + - cpdId: cpd_id + - cpConfig: cp_config + - parentCpConfigId: parent_cp_config_id + - linkPortId: link_port_id + - cpProtocolData: cp_protocol_data + - layerProtocol: layer_protocol + - ipOverEthernet: ip_over_ethernet + - macAddress: mac_address + - segmentationId: segmentation_id + - ipAddresses: ip_addresses + - type: ip_address_type + - fixedAddresses: fixed_addresses + - numDynamicAddresses: num_dynamic_addresses + - addressRange: address_range + - minAddress: min_address + - maxAddress: max_address + - subnetId: subnet_id - _links: vnf_instance_links Response Example @@ -786,6 +1119,7 @@ Response Codes - 404 - 406 - 409 + - 422 Request Parameters ------------------ @@ -841,6 +1175,59 @@ Response Parameters - vimConnectionId: vim_connection_id - resourceId: resource_handle_resource_id - vimLevelResourceType: resource_handle_vim_level_resource_type + - changedInfo: changed_info + - vnfInstanceName: changed_info_vnf_instance_name + - vnfInstanceDescription: changed_info_vnf_instance_description + - vnfConfigurableProperties: changed_info_vnf_configurable_properties + - metadata: changed_info_metadata + - extensions: changed_info_extensions + - vimConnectionInfo: changed_info_vim_connection_info + - vimId: vim_connection_info_vim_id + - vimType: vim_connection_info_vim_type + - interfaceInfo: vim_connection_info_interface_info + - accessInfo: vim_connection_info_access_info + - extra: vim_connection_info_extra + - vnfdId: changed_info_vnfd_id + - vnfProvider: changed_info_vnf_provider + - vnfProductName: changed_info_vnf_product_name + - vnfSoftwareVersion: changed_info_vnf_software_version + - vnfdVersion: changed_info_vnfd_version + - vnfcInfoModifications: vnfc_info_modifications + - id: vnfc_info_modifications_id + - vnfcConfigurableProperties: vnfc_configurable_properties + - changedExtConnectivity: changed_ext_connectivity + - id: changed_ext_connectivity_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - extLinkPorts: ext_link_ports + - id: ext_link_port_id + - resourceHandle: resource_handle + - vimConnectionId: vim_connection_id + - resourceProviderId: resource_provider_id + - resourceId: resource_handle_resource_id + - vimLevelResourceType: resource_handle_vim_level_resource_type + - cpInstanceId: cp_instance_id + - currentVnfExtCpData: current_vnf_ext_cp_data + - cpdId: cpd_id + - cpConfig: cp_config + - parentCpConfigId: parent_cp_config_id + - linkPortId: link_port_id + - cpProtocolData: cp_protocol_data + - layerProtocol: layer_protocol + - ipOverEthernet: ip_over_ethernet + - macAddress: mac_address + - segmentationId: segmentation_id + - ipAddresses: ip_addresses + - type: ip_address_type + - fixedAddresses: fixed_addresses + - numDynamicAddresses: num_dynamic_addresses + - addressRange: address_range + - minAddress: min_address + - maxAddress: max_address + - subnetId: subnet_id - _links: vnf_instance_links Response Example diff --git a/doc/source/cli/cli-etsi-vnflcm.rst b/doc/source/cli/cli-etsi-vnflcm.rst index a04f45c64..870e6a920 100644 --- a/doc/source/cli/cli-etsi-vnflcm.rst +++ b/doc/source/cli/cli-etsi-vnflcm.rst @@ -183,7 +183,8 @@ Result: | | '3091f046-de63-44c8-ad23-f86128409b27', 'cpdId': 'CP1', 'vnfExtCpId': None, 'vnfLinkPortId': '3b667826-336c-4919-889e-e6c63d959ee6'}]}]' | | Instantiation State | INSTANTIATED | | Links | heal=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/heal, self=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45, | - | | terminate=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/terminate | + | | terminate=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/terminate, | + | | changeExtConn=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/change_ext_conn | | VIM Connection Info | [] | | VNF Instance Description | None | | VNF Instance Name | None | @@ -331,7 +332,43 @@ Help: List of VNFC instances requiring a healing action. -8. Scale VNF +8. Update VNF +^^^^^^^^^^^^^ + +.. code-block:: console + + $ openstack vnflcm update VNF_INSTANCE_ID --I sample_param_file.json + + +Result: + +.. code-block:: console + + Update vnf:725f625e-f6b7-4bcd-b1b7-7184039fde45 + + +Help: + +.. code-block:: console + + $ openstack vnflcm update --help + usage: openstack vnflcm update [-h] [--I ] + + Update VNF Instance + + positional arguments: + + VNF instance ID to update. + + optional arguments: + -h, --help show this help message and exit + --I + Specify update request parameters in a json file. + + This command is provided by the python-tackerclient plugin. + + +9. Scale VNF ^^^^^^^^^^^^ The `worker_instance` is the ID for the target scaling group. @@ -378,8 +415,8 @@ Help: Identifier of the scaling aspect. -9. Change External VNF Connectivity -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +10. Change External VNF Connectivity +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console @@ -411,7 +448,7 @@ Help: -h, --help show this help message and exit -10. Rollback VNF Lifecycle Management Operation +11. Rollback VNF Lifecycle Management Operation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed. @@ -442,7 +479,7 @@ Help: -h, --help show this help message and exit -11. Retry +12. Retry ^^^^^^^^^ The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed. @@ -475,7 +512,7 @@ Help: -h, --help show this help message and exit -12. Fail +13. Fail ^^^^^^^^ The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed. @@ -603,7 +640,7 @@ Help: -h, --help show this help message and exit -13. List LCM Operation Occurrences +14. List LCM Operation Occurrences ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console @@ -650,7 +687,7 @@ Help: tacker server will throw bad request error -14. Show LCM Operation Occurrence +15. Show LCM Operation Occurrence ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console @@ -714,7 +751,7 @@ Help: -h, --help show this help message and exit -15. Show VNF LCM API versions +16. Show VNF LCM API versions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: console diff --git a/doc/source/user/etsi_use_case_guide.rst b/doc/source/user/etsi_use_case_guide.rst index f8b674f05..eec809e1e 100644 --- a/doc/source/user/etsi_use_case_guide.rst +++ b/doc/source/user/etsi_use_case_guide.rst @@ -64,6 +64,17 @@ Container etsi_cnf_healing +Update +^^^^^^ + +VM +~~ + +.. toctree:: + :maxdepth: 1 + + etsi_vnf_update + Change External VNF Connectivity ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/doc/source/user/etsi_vnf_error_handling.rst b/doc/source/user/etsi_vnf_error_handling.rst index 1918076a4..3cd10b35a 100644 --- a/doc/source/user/etsi_vnf_error_handling.rst +++ b/doc/source/user/etsi_vnf_error_handling.rst @@ -281,6 +281,14 @@ Rollback VNF LCM Operation - - X +.. note:: + | In some cases, Rollback of Change external connectivity cannot recover + the IP address and Port Id of virtual resources. + | If the operation fails before performing VIM processing: updating stack, + the IP address and Port Id will be recovered by its rollback operation. + | Otherwise, dynamic IP address and Port Id are not recovered + by rollback operation. + This manual describes the following operations as use cases for rollback operations. diff --git a/doc/source/user/etsi_vnf_healing.rst b/doc/source/user/etsi_vnf_healing.rst index 0bd9df91d..c3ccbca48 100644 --- a/doc/source/user/etsi_vnf_healing.rst +++ b/doc/source/user/etsi_vnf_healing.rst @@ -64,185 +64,188 @@ Result: .. code-block:: console - +--------------------------+-------------------------------------------------------------------------------------------+ - | Field | Value | - +--------------------------+-------------------------------------------------------------------------------------------+ - | ID | 9e086f34-b3c9-4986-b5e5-609a5ac4c1f9 | - | Instantiated Vnf Info | { | - | | "flavourId": "simple", | - | | "vnfState": "STARTED", | - | | "extCpInfo": [ | - | | { | - | | "id": "241e6022-c9be-4ad6-b7a7-ecb32de20475", | - | | "cpdId": "CP1", | - | | "extLinkPortId": null, | - | | "associatedVnfcCpId": "b07ba349-1366-4d14-91e9-07842cdfa7ab", | - | | "cpProtocolInfo": [ | - | | { | - | | "layerProtocol": "IP_OVER_ETHERNET" | - | | } | - | | ] | - | | } | - | | ], | - | | "extVirtualLinkInfo": [ | - | | { | - | | "id": "net0", | - | | "resourceHandle": { | - | | "vimConnectionId": null, | - | | "resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d", | - | | "vimLevelResourceType": null | - | | } | - | | } | - | | ], | - | | "vnfcResourceInfo": [ | - | | { | - | | "id": "b07ba349-1366-4d14-91e9-07842cdfa7ab", | - | | "vduId": "VDU1", | - | | "computeResource": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "794b9460-d799-4398-98a4-413fb04d2051", | - | | "vimLevelResourceType": "OS::Nova::Server" | - | | }, | - | | "storageResourceIds": [], | - | | "vnfcCpInfo": [ | - | | { | - | | "id": "f7297196-a024-4a90-9393-aadeb7de1fb3", | - | | "cpdId": "CP1", | - | | "vnfExtCpId": null, | - | | "vnfLinkPortId": "cf733c70-8dc2-46b8-8d76-2ebd0bb5bd07", | - | | "cpProtocolInfo": [ | - | | { | - | | "layerProtocol": "IP_OVER_ETHERNET" | - | | } | - | | ] | - | | }, | - | | { | - | | "id": "f3851831-ed25-4e73-b913-6725085c7484", | - | | "cpdId": "CP2", | - | | "vnfExtCpId": null, | - | | "vnfLinkPortId": "8cc28f47-ee72-420e-b4e8-26913d60bf55" | - | | } | - | | ] | - | | }, | - | | { | - | | "id": "aae43bc1-a54e-46e8-9371-59c1ef5fc84d", | - | | "vduId": "VDU2", | - | | "computeResource": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "20e10aed-16e9-4f7c-ad0c-1e885cc1200e", | - | | "vimLevelResourceType": "OS::Nova::Server" | - | | }, | - | | "storageResourceIds": [ | - | | "21703823-33b3-4f06-a52c-28b455146a4a" | - | | ], | - | | "vnfcCpInfo": [ | - | | { | - | | "id": "d0088ed3-1639-4f3b-a369-3baae7e86540", | - | | "cpdId": "CP3", | - | | "vnfExtCpId": null, | - | | "vnfLinkPortId": "d5fe9f7b-f50d-49dc-a3c8-ded2843005e4" | - | | } | - | | ] | - | | } | - | | ], | - | | "vnfVirtualLinkResourceInfo": [ | - | | { | - | | "id": "45588051-a413-41a0-a55c-b31fb50fb351", | - | | "vnfVirtualLinkDescId": "internalVL2", | - | | "networkResource": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "f45802ae-7fff-4c6e-b62f-3d55baec4c6b", | - | | "vimLevelResourceType": "OS::Neutron::Net" | - | | }, | - | | "vnfLinkPorts": [ | - | | { | - | | "id": "8cc28f47-ee72-420e-b4e8-26913d60bf55", | - | | "resourceHandle": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "e020ad8f-3f85-4d13-98c1-3ea476bf2d1a", | - | | "vimLevelResourceType": "OS::Neutron::Port" | - | | }, | - | | "cpInstanceId": "f3851831-ed25-4e73-b913-6725085c7484" | - | | }, | - | | { | - | | "id": "d5fe9f7b-f50d-49dc-a3c8-ded2843005e4", | - | | "resourceHandle": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "8f1588e5-4410-40eb-84ee-28336a6a0212", | - | | "vimLevelResourceType": "OS::Neutron::Port" | - | | }, | - | | "cpInstanceId": "d0088ed3-1639-4f3b-a369-3baae7e86540" | - | | } | - | | ] | - | | }, | - | | { | - | | "id": "66f3fa97-4046-4fa4-b1ff-19295501021f", | - | | "vnfVirtualLinkDescId": "net0", | - | | "networkResource": { | - | | "vimConnectionId": null, | - | | "resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d", | - | | "vimLevelResourceType": "OS::Neutron::Net" | - | | }, | - | | "vnfLinkPorts": [ | - | | { | - | | "id": "cf733c70-8dc2-46b8-8d76-2ebd0bb5bd07", | - | | "resourceHandle": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "1db39a17-bbae-4074-8623-8a8026b51647", | - | | "vimLevelResourceType": "OS::Neutron::Port" | - | | }, | - | | "cpInstanceId": "f7297196-a024-4a90-9393-aadeb7de1fb3" | - | | } | - | | ] | - | | } | - | | ], | - | | "virtualStorageResourceInfo": [ | - | | { | - | | "id": "21703823-33b3-4f06-a52c-28b455146a4a", | - | | "virtualStorageDescId": "VirtualStorage", | - | | "storageResource": { | - | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | - | | "resourceId": "c6231ea2-6a90-4ba4-b38b-778a5d7110ee", | - | | "vimLevelResourceType": "OS::Cinder::Volume" | - | | } | - | | } | - | | ], | - | | "vnfcInfo": [ | - | | { | - | | "id": "4c999b33-3004-4b44-a826-49d07f5becb9", | - | | "vduId": "VDU1", | - | | "vnfcState": "STARTED" | - | | }, | - | | { | - | | "id": "d8f83af0-1b4d-4f57-b53c-fd028849be8f", | - | | "vduId": "VDU2", | - | | "vnfcState": "STARTED" | - | | } | - | | ], | - | | "additionalParams": {} | - | | } | - | Instantiation State | INSTANTIATED | - | Links | { | - | | "self": { | - | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9" | - | | }, | - | | "terminate": { | - | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9/terminate" | - | | }, | - | | "heal": { | - | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9/heal" | - | | } | - | | } | - | VIM Connection Info | [] | - | VNF Instance Description | None | - | VNF Instance Name | vnf-9e086f34-b3c9-4986-b5e5-609a5ac4c1f9 | - | VNF Product Name | Sample VNF | - | VNF Provider | Company | - | VNF Software Version | 1.0 | - | VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 | - | VNFD Version | 1.0 | - | vnfPkgId | | - +--------------------------+-------------------------------------------------------------------------------------------+ + +--------------------------+-------------------------------------------------------------------------------------------------+ + | Field | Value | + +--------------------------+-------------------------------------------------------------------------------------------------+ + | ID | 9e086f34-b3c9-4986-b5e5-609a5ac4c1f9 | + | Instantiated Vnf Info | { | + | | "flavourId": "simple", | + | | "vnfState": "STARTED", | + | | "extCpInfo": [ | + | | { | + | | "id": "241e6022-c9be-4ad6-b7a7-ecb32de20475", | + | | "cpdId": "CP1", | + | | "extLinkPortId": null, | + | | "associatedVnfcCpId": "b07ba349-1366-4d14-91e9-07842cdfa7ab", | + | | "cpProtocolInfo": [ | + | | { | + | | "layerProtocol": "IP_OVER_ETHERNET" | + | | } | + | | ] | + | | } | + | | ], | + | | "extVirtualLinkInfo": [ | + | | { | + | | "id": "net0", | + | | "resourceHandle": { | + | | "vimConnectionId": null, | + | | "resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d", | + | | "vimLevelResourceType": null | + | | } | + | | } | + | | ], | + | | "vnfcResourceInfo": [ | + | | { | + | | "id": "b07ba349-1366-4d14-91e9-07842cdfa7ab", | + | | "vduId": "VDU1", | + | | "computeResource": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "794b9460-d799-4398-98a4-413fb04d2051", | + | | "vimLevelResourceType": "OS::Nova::Server" | + | | }, | + | | "storageResourceIds": [], | + | | "vnfcCpInfo": [ | + | | { | + | | "id": "f7297196-a024-4a90-9393-aadeb7de1fb3", | + | | "cpdId": "CP1", | + | | "vnfExtCpId": null, | + | | "vnfLinkPortId": "cf733c70-8dc2-46b8-8d76-2ebd0bb5bd07", | + | | "cpProtocolInfo": [ | + | | { | + | | "layerProtocol": "IP_OVER_ETHERNET" | + | | } | + | | ] | + | | }, | + | | { | + | | "id": "f3851831-ed25-4e73-b913-6725085c7484", | + | | "cpdId": "CP2", | + | | "vnfExtCpId": null, | + | | "vnfLinkPortId": "8cc28f47-ee72-420e-b4e8-26913d60bf55" | + | | } | + | | ] | + | | }, | + | | { | + | | "id": "aae43bc1-a54e-46e8-9371-59c1ef5fc84d", | + | | "vduId": "VDU2", | + | | "computeResource": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "20e10aed-16e9-4f7c-ad0c-1e885cc1200e", | + | | "vimLevelResourceType": "OS::Nova::Server" | + | | }, | + | | "storageResourceIds": [ | + | | "21703823-33b3-4f06-a52c-28b455146a4a" | + | | ], | + | | "vnfcCpInfo": [ | + | | { | + | | "id": "d0088ed3-1639-4f3b-a369-3baae7e86540", | + | | "cpdId": "CP3", | + | | "vnfExtCpId": null, | + | | "vnfLinkPortId": "d5fe9f7b-f50d-49dc-a3c8-ded2843005e4" | + | | } | + | | ] | + | | } | + | | ], | + | | "vnfVirtualLinkResourceInfo": [ | + | | { | + | | "id": "45588051-a413-41a0-a55c-b31fb50fb351", | + | | "vnfVirtualLinkDescId": "internalVL2", | + | | "networkResource": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "f45802ae-7fff-4c6e-b62f-3d55baec4c6b", | + | | "vimLevelResourceType": "OS::Neutron::Net" | + | | }, | + | | "vnfLinkPorts": [ | + | | { | + | | "id": "8cc28f47-ee72-420e-b4e8-26913d60bf55", | + | | "resourceHandle": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "e020ad8f-3f85-4d13-98c1-3ea476bf2d1a", | + | | "vimLevelResourceType": "OS::Neutron::Port" | + | | }, | + | | "cpInstanceId": "f3851831-ed25-4e73-b913-6725085c7484" | + | | }, | + | | { | + | | "id": "d5fe9f7b-f50d-49dc-a3c8-ded2843005e4", | + | | "resourceHandle": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "8f1588e5-4410-40eb-84ee-28336a6a0212", | + | | "vimLevelResourceType": "OS::Neutron::Port" | + | | }, | + | | "cpInstanceId": "d0088ed3-1639-4f3b-a369-3baae7e86540" | + | | } | + | | ] | + | | }, | + | | { | + | | "id": "66f3fa97-4046-4fa4-b1ff-19295501021f", | + | | "vnfVirtualLinkDescId": "net0", | + | | "networkResource": { | + | | "vimConnectionId": null, | + | | "resourceId": "1948231e-bbf0-4ff9-a692-40f8d6d5c90d", | + | | "vimLevelResourceType": "OS::Neutron::Net" | + | | }, | + | | "vnfLinkPorts": [ | + | | { | + | | "id": "cf733c70-8dc2-46b8-8d76-2ebd0bb5bd07", | + | | "resourceHandle": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "1db39a17-bbae-4074-8623-8a8026b51647", | + | | "vimLevelResourceType": "OS::Neutron::Port" | + | | }, | + | | "cpInstanceId": "f7297196-a024-4a90-9393-aadeb7de1fb3" | + | | } | + | | ] | + | | } | + | | ], | + | | "virtualStorageResourceInfo": [ | + | | { | + | | "id": "21703823-33b3-4f06-a52c-28b455146a4a", | + | | "virtualStorageDescId": "VirtualStorage", | + | | "storageResource": { | + | | "vimConnectionId": "13bef9df-7c54-4b37-9da0-1256953e7f60", | + | | "resourceId": "c6231ea2-6a90-4ba4-b38b-778a5d7110ee", | + | | "vimLevelResourceType": "OS::Cinder::Volume" | + | | } | + | | } | + | | ], | + | | "vnfcInfo": [ | + | | { | + | | "id": "4c999b33-3004-4b44-a826-49d07f5becb9", | + | | "vduId": "VDU1", | + | | "vnfcState": "STARTED" | + | | }, | + | | { | + | | "id": "d8f83af0-1b4d-4f57-b53c-fd028849be8f", | + | | "vduId": "VDU2", | + | | "vnfcState": "STARTED" | + | | } | + | | ], | + | | "additionalParams": {} | + | | } | + | Instantiation State | INSTANTIATED | + | Links | { | + | | "self": { | + | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9" | + | | }, | + | | "terminate": { | + | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9/terminate" | + | | }, | + | | "heal": { | + | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9/heal" | + | | }, | + | | "changeExtConn": { | + | | "href": "/vnflcm/v1/vnf_instances/9e086f34-b3c9-4986-b5e5-609a5ac4c1f9/change_ext_conn" | + | | } | + | | } | + | VIM Connection Info | [] | + | VNF Instance Description | None | + | VNF Instance Name | vnf-9e086f34-b3c9-4986-b5e5-609a5ac4c1f9 | + | VNF Product Name | Sample VNF | + | VNF Provider | Company | + | VNF Software Version | 1.0 | + | VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 | + | VNFD Version | 1.0 | + | vnfPkgId | | + +--------------------------+-------------------------------------------------------------------------------------------------+ .. note:: The value set for 'VNF Instance Name' corresponds to 'Stack Name' @@ -270,6 +273,43 @@ There are two main methods for VNF healing. For more information on VNFC, see `NFV-SOL002 v2.6.1`_. +The client can specify the target resources for healing +with two parameters in the API request. + +- *vnfcInstanceId* is a list which indicates VNFC instances + for which a healing action is requested. + +- *all* indicates whether network resources and storage resources + are included in the heal target. This is set in the attribute + of *additionalParams*. + +With the combination of these parameters, +Tacker supports the following patterns of healing. + +- Pattern A. *vnfcInstanceId* is included in the request. + + - Pattern A-1. *all = False* is included in the request or *all* is not + included in the request. + + - Only specified VNFC instances are healed. + - Pattern A-2. *all = True* are included in the request. + + - Specified VNFC instances and storage resources are healed. +- Pattern B. *vnfcInstanceId* is not included in the request. + + - Pattern B-1. *all = False* is included in the request or *all* is not + included in the request. + + - All VNFC instances included in the VNF instance are healed. + - Pattern B-2. *all = True* are included in the request. + + - All resources included in the VNF instance are healed. + It includes VNFC instances, network resources, and storage resources + but not external virtual networks. + +.. note:: + *all* option is not supported by the version 1 API. + How to Heal of the Entire VNF ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/source/user/etsi_vnf_scaling.rst b/doc/source/user/etsi_vnf_scaling.rst index 23b9ee504..0686c4a46 100644 --- a/doc/source/user/etsi_vnf_scaling.rst +++ b/doc/source/user/etsi_vnf_scaling.rst @@ -29,6 +29,11 @@ The diagram below shows an overview of the VNF scaling. .. figure:: ../_images/etsi_vnf_scaling.png :align: left +.. note:: Scale API version 1 supports is_reverse option. + Scale-in operation with this option deletes VNF from the last + registered VM. Scale API version 2 does not support this option + because it deletes VM in this order by default. + Prerequisites ------------- diff --git a/doc/source/user/etsi_vnf_update.rst b/doc/source/user/etsi_vnf_update.rst new file mode 100644 index 000000000..50f4c6cc4 --- /dev/null +++ b/doc/source/user/etsi_vnf_update.rst @@ -0,0 +1,129 @@ +======================= +ETSI NFV-SOL VNF Update +======================= + +This document describes how to update VNF in Tacker. + +Prerequisites +------------- + +The following packages should be installed: + +* tacker +* python-tackerclient + +A default VIM should be registered according to +:doc:`../cli/cli-legacy-vim`. + +The VNF Package(sample_vnf_pkg.zip) used below is prepared +by referring to :doc:`./vnf-package`. + +Execute before "Instantiate VNF" in the procedure of +:doc:`./etsi_vnf_deployment_as_vm_with_tosca`. + + +VNF Update Procedures +--------------------- + +As mentioned in Prerequisites, the VNF must be created +before performing update. + +Details of CLI commands are described in +:doc:`../cli/cli-etsi-vnflcm`. + +For update VNF instance, you need to prepare a JSON-formatted definition file. + +.. code-block:: json + + { + "vnfInstanceName": "sample" + } + +.. note:: sample_param_file.json contains the VNF name as an example. + + +How to Update VNF +~~~~~~~~~~~~~~~~~ + +Execute Update CLI command and check the name of VNF instance before +and after update. This is to confirm that the name of VNF instance has +changed after update. +See `Heat CLI reference`_. for details on Heat CLI commands. + +VNF instance name before update: + +.. code-block:: console + + $ openstack vnflcm show VNF_INSTANCE_ID -c 'VNF Instance Name' + + +Result: + +.. code-block:: console + + +-------------------+-------+ + | Field | Value | + +-------------------+-------+ + | VNF Instance Name | None | + +-------------------+-------+ + + +Update VNF can be executed by the following CLI command. + +.. code-block:: console + + $ openstack vnflcm update VNF_INSTANCE_ID --I sample_param_file.json + + +Result: + +.. code-block:: console + + Update vnf:c64ea0fd-a90c-4754-95f4-dc0751db519d + +.. note:: + Create a parameter file that describes the resource information to be + changed in advance. + +.. note:: + If the *vnfdId* is not changed by update operation, the current value + shall be updated using the request parameter. + If the *vnfdId* is requested to be changed by update operation, the + current values of *metadata*, *extension*, and *vnfConfigurableProperties* + are cleared and the changed request parameters are applied. + Current Tacker only refers *metadata*, *extension* and + *vnfConfigurableProperties* specified in the API request. It means that + Tacker does not refer the value of these parameters specified in VNFD. + +.. note:: + The update operation can change the vimConnectionInfo associated with an + existing VNF instance. + Even if instantiate operation and update operation specify multiple + vimConnectionInfo associated with one VNF instance, only one of them will + be used for life cycle management operations. + It is not possible to delete the key of registered vimConnectionInfo. + + +VNF instance name after operation: + +.. code-block:: console + + $ openstack vnflcm show VNF_INSTANCE_ID -c 'VNF Instance Name' + + +Result: + +.. code-block:: console + + +-------------------+---------+ + | Field | Value | + +-------------------+---------+ + | VNF Instance Name | sample | + +-------------------+---------+ + + +You can confirm that the VNF Instance Name has been changed +by the update operation. + + +.. _Heat CLI reference : https://docs.openstack.org/python-openstackclient/latest/cli/plugin-commands/heat.html diff --git a/doc/source/user/userdata_script.rst b/doc/source/user/userdata_script.rst index e91b6a4a7..55108ac22 100644 --- a/doc/source/user/userdata_script.rst +++ b/doc/source/user/userdata_script.rst @@ -31,10 +31,7 @@ Any file name and class name are acceptable. userdata class must inherit "userdata_utils.AbstractUserData", then functions have to be implemented. -Since latest Tacker supports userdata script for only instantiating vnf, -**def instantiate(req, inst, grant_req, grant, tmp_csar_dir)** -only can be implemented. -Followings are the requirement of **def instantiate()** +Followings are requirements for methods supported by latest Tacker. Input of instantiate() ---------------------- @@ -79,6 +76,181 @@ Following shows sample output. return fields +Input of scale() +---------------- + +The function can use the following input data. +The details of data types are defined in ETSI NFV SOL documents. + +- req: InstantiateVnfRequest +- inst: VnfInstance +- grant_req: GrantRequest +- grant: Grants +- tmp_csar_dir: the temporary path of csar expanded by Tacker. + + +Output of scale() +----------------- + +The function must return the following structure. +Data are for update stack API in HEAT. +The requirements of HEAT API are described in +`reference of Orchestration Service API v1 +"PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}"`_ + +fields = {'parameters': {'nfv': {'VDU': new_vdus}}} + +- parameters: Input parameters for Heat API. + +Following shows sample output. + +.. code-block:: python + + fields = {'parameters': {'nfv': {'VDU': new_vdus}}} + + return fields + + +Input of scale_rollback() +------------------------- + +The function can use the following input data. +The details of data types are defined in ETSI NFV SOL documents. + +- req: InstantiateVnfRequest +- inst: VnfInstance +- grant_req: GrantRequest +- grant: Grants +- tmp_csar_dir: the temporary path of csar expanded by Tacker. + + +Output of scale_rollback() +-------------------------- + +The function must return the following structure. +Data are for update stack API in HEAT. +The requirements of HEAT API are described in +`reference of Orchestration Service API v1 +"PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}"`_ + +fields = {'parameters': {'nfv': {'VDU': new_vdus}}} + +- parameters: Input parameters for Heat API. + +Following shows sample output. + +.. code-block:: python + + fields = {'parameters': {'nfv': {'VDU': new_vdus}}} + + return fields + + +Input of change_ext_conn_rollback() +----------------------------------- + +The function can use the following input data. +The details of data types are defined in ETSI NFV SOL documents. + +- req: InstantiateVnfRequest +- inst: VnfInstance +- grant_req: GrantRequest +- grant: Grants +- tmp_csar_dir: the temporary path of csar expanded by Tacker. + + +Output of change_ext_conn_rollback() +------------------------------------ + +The function must return the following structure. +Data are for update stack API in HEAT. +The requirements of HEAT API are described in +`reference of Orchestration Service API v1 +"PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}"`_ + +fields = {'parameters': {'nfv': {'CP': new_cps}}} + +- parameters: Input parameters for Heat API. + +Following shows sample output. + +.. code-block:: python + + fields = {'parameters': {'nfv': {'CP': new_cps}}} + + return fields + + +Input of change_ext_conn() +-------------------------- + +The function can use the following input data. +The details of data types are defined in ETSI NFV SOL documents. + +- req: InstantiateVnfRequest +- inst: VnfInstance +- grant_req: GrantRequest +- grant: Grants +- tmp_csar_dir: the temporary path of csar expanded by Tacker. + + +Output of change_ext_conn() +--------------------------- + +The function must return the following structure. +Data are for update stack API in HEAT. +The requirements of HEAT API are described in +`reference of Orchestration Service API v1 +"PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}"`_ + +fields = {'parameters': {'nfv': {'CP': new_cps}}} + +- parameters: Input parameters for Heat API. + +Following shows sample output. + +.. code-block:: python + + fields = {'parameters': {'nfv': {'CP': new_cps}}} + + return fields + + +Input of heal() +--------------- + +The function can use the following input data. +The details of data types are defined in ETSI NFV SOL documents. + +- req: InstantiateVnfRequest +- inst: VnfInstance +- grant_req: GrantRequest +- grant: Grants +- tmp_csar_dir: the temporary path of csar expanded by Tacker. + + +Output of heal() +---------------- + +The function must return the following structure. +Data are for update stack API in HEAT. +The requirements of HEAT API are described in +`reference of Orchestration Service API v1 +"PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}"`_ + +fields = {'parameters': {'nfv': {}}} + +- parameters: Input parameters for Heat API. + +Following shows sample output. + +.. code-block:: python + + fields = {'parameters': {'nfv': {}}} + + return fields + + Sample userdata script ====================== @@ -179,6 +351,30 @@ Get zone id of VDU. It returns **zone id**. +def get_current_capacity(vdu_name, inst) +---------------------------------------- + +Get desired capacity. + +**vdu_name**: the name of VDU +, **inst**: VnfInstance + +It returns **desired capacity**. + + +def get_param_capacity(vdu_name, inst, grant_req) +------------------------------------------------- + +Refer to addResources and removeResources in the grant request +and get desired capacity. + +**vdu_name**: the name of VDU +, **inst**: VnfInstance +, **grant_req**: GrantRequest + +It returns **desired capacity**. + + def _get_fixed_ips_from_extcp(extcp) ------------------------------------ @@ -213,6 +409,28 @@ Get fixed IP addresses of CP. It returns fixed IP address of CP. +def get_param_network_from_inst(cp_name, inst) +---------------------------------------------- + +Get network resourceId from VnfInstance. + +**cp_name**: the name of CP +, **inst**: VnfInstance + +It returns network resourceId from VnfInstance. + + +def get_param_fixed_ips_from_inst(cp_name, inst) +------------------------------------------------ + +Get fixed IP address of CP from VnfInstance. + +**cp_name**: the name of CP +, **inst**: VnfInstance + +It returns fixed IP address of CP from VnfInstance. + + def apply_ext_managed_vls(hot_dict, req, grant) ----------------------------------------------- @@ -305,5 +523,6 @@ It returns the result of json_merge_patch (IETF RFC 7396). .. _ETSI NFV-SOL VNF Deployment as VM with LCM Operation User Data: https://docs.openstack.org/tacker/latest/user/etsi_vnf_deployment_as_vm_with_user_data.html .. _VNF Package manual: https://docs.openstack.org/tacker/latest/user/vnf-package.html .. _reference of Orchestration Service API v1 "POST /v1/{tenant_id}/stacks": https://docs.openstack.org/api-ref/orchestration/v1/?expanded=create-stack-detail#create-stack +.. _reference of Orchestration Service API v1 "PATCH /v1/{tenant_id}/stacks/{stack_name}/{stack_id}": https://docs.openstack.org/api-ref/orchestration/v1/?expanded=update-stack-patch-detail#update-stack-patch .. _**Vnfd** class: ../../../tacker/sol_refactored/common/vnfd_utils.py .. _ETSI NFV SOL003: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf