Browse Source

Merge "Add documents for error handling operations in V2"

changes/94/825294/1
Zuul 5 months ago committed by Gerrit Code Review
parent
commit
ef9384cc1b
  1. 23
      api-ref/source/v2/parameters_vnflcm.yaml
  2. 248
      api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json
  3. 174
      api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json
  4. 14
      api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json
  5. 168
      api-ref/source/v2/vnflcm.inc
  6. 17
      doc/source/cli/cli-etsi-vnflcm.rst
  7. 151
      doc/source/user/etsi_vnf_error_handling.rst

23
api-ref/source/v2/parameters_vnflcm.yaml

@ -621,6 +621,14 @@ graceful_termination_timeout:
in: body
required: false
type: integer
grant_id:
description: |
Identifier of the grant related to this VNF LCM operation occurrence.
Shall be set to the value of the "id" attribute in the "Grant"
representing the associated "Individual Grant", if such grant exists.
in: body
required: false
type: string
instantiated_vnf_info:
description: |
Information specific to an instantiated VNF instance. This attribute shall
@ -718,7 +726,7 @@ link_port_id:
in: body
required: false
type: string
localizataion_language:
localization_language:
description: |
Localization language of the VNF to be instantiated.
The value shall comply with the format defined in
@ -801,6 +809,19 @@ parent_cp_config_id:
in: body
required: false
type: string
removed_storage_resource_ids:
description: |
References to VirtualStorage resources that
have been removed.
The value contains the identifier of a
VirtualStorageResourceInfo item that has been
removed from the VNFC, and might no longer
exist in the VnfInstance.
It shall be provided if at least one storage
resource was removed from the VNFC.
in: body
required: false
type: array
resource_changes:
description: |
This attribute contains information about the cumulative

248
api-ref/source/v2/samples/vnflcm/fail-vnflcm-operation-occurrence-response.json

@ -0,0 +1,248 @@
{
"_links": {
"fail": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"rollback": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"vnfInstance": {
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/10ed068e-1284-48f2-9b6e-1c443ace9cc6"
}
},
"error": {
"detail": "instantiate_end failed: b'test instantiate_end error'",
"status": 422,
"title": "Mgmt driver execution failed"
},
"grantId": "f7437546-5c4d-4860-85b4-9e7dc5fe8e67",
"id": "9b475d28-5acb-4c3b-95dd-fec2b2319643",
"isAutomaticInvocation": false,
"isCancelPending": false,
"operation": "INSTANTIATE",
"operationParams": {
"additionalParams": {
"lcm-operation-user-data": "./UserData/userdata_default.py",
"lcm-operation-user-data-class": "DefaultUserData"
},
"extManagedVirtualLinks": [
{
"id": "ac9eff82-9406-42f0-88ae-1be9d89eb917",
"resourceId": "b3f18cea-a773-4f46-8fa1-9357df2ce360",
"vnfVirtualLinkDescId": "internalVL1"
}
],
"extVirtualLinks": [
{
"extCps": [
{
"cpConfig": {
"VDU1_CP1_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"numDynamicAddresses": 1,
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU1_CP1"
},
{
"cpConfig": {
"VDU2_CP1_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"fixedAddresses": [
"10.10.0.102"
],
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU2_CP1"
}
],
"id": "789ecc10-4285-43fe-b8e3-b0e7d4a5cd79",
"resourceId": "7d16f94d-d4c9-412b-a2f5-0321131e9e4d"
},
{
"extCps": [
{
"cpConfig": {
"VDU1_CP2_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"numDynamicAddresses": 1,
"subnetId": "f6208fae-87fa-473f-bc96-441a75a19d09",
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU1_CP2"
},
{
"cpConfig": {
"VDU2_CP2_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"fixedAddresses": [
"10.10.1.102"
],
"subnetId": "f6208fae-87fa-473f-bc96-441a75a19d09",
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU2_CP2"
}
],
"id": "cd8aa4ce-a17f-47d8-b3fb-6102ce17f355",
"resourceId": "67f4ca33-4142-4d1a-afb0-978365e31aa2"
}
],
"flavourId": "simple",
"instantiationLevelId": "instantiation_level_1",
"vimConnectionInfo": {
"vim1": {
"accessInfo": {
"password": "devstack",
"project": "nfv",
"projectDomain": "Default",
"region": "RegionOne",
"userDomain": "Default",
"username": "nfv_user"
},
"interfaceInfo": {
"endpoint": "http://localhost/identity/v3"
},
"vimId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
}
}
},
"operationState": "FAILED",
"resourceChanges": {
"affectedVirtualLinks": [
{
"changeType": "ADDED",
"id": "e2cc5431-eb8d-4208-b8e1-3b766c123279",
"networkResource": {
"resourceId": "d2565a88-aea8-4999-b52f-a220b59df5ea",
"vimConnectionId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimLevelResourceType": "OS::Neutron::Net"
},
"vnfLinkPortIds": [
"69081627-7f06-42fd-af9c-3f79d44fb8c3",
"46dd1aec-0ae1-4cff-8d5d-81c671f4aaad"
],
"vnfVirtualLinkDescId": "internalVL3"
},
{
"changeType": "ADDED",
"id": "b5d1f4b8-fb87-4155-a4e9-6619a1b7097f",
"networkResource": {
"resourceId": "d785e039-215c-4e6e-951c-79959d8c531c",
"vimConnectionId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimLevelResourceType": "OS::Neutron::Net"
},
"vnfLinkPortIds": [
"7d244233-7244-4a40-9e4f-7aec929401ab",
"fd61f725-28b7-44a5-ba02-652846bef719"
],
"vnfVirtualLinkDescId": "internalVL2"
}
],
"affectedVirtualStorages": [
{
"changeType": "ADDED",
"id": "55cf75b7-6c73-455e-8bd2-07f31047672d",
"storageResource": {
"resourceId": "5c6956bc-9e1b-490f-8592-a490da200a2c",
"vimConnectionId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimLevelResourceType": "OS::Cinder::Volume"
},
"virtualStorageDescId": "VirtualStorage"
}
],
"affectedVnfcs": [
{
"affectedVnfcCpIds": [
"a84df9fb-b81a-49be-a010-3082e6d2adbe",
"77bfa29d-9fbe-42f2-9892-af98a2507d59",
"4f0173ce-a624-4173-8e4b-a37667e04a80",
"3057e251-8546-4f61-96e4-ea6c1af886cf",
"7b31dd26-a2af-4e47-921d-5695ac101028"
],
"changeType": "ADDED",
"computeResource": {
"resourceId": "c9920a04-cf74-4e42-be89-a2fec2f89e48",
"vimConnectionId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimLevelResourceType": "OS::Nova::Server"
},
"id": "43c29ba1-6037-49a6-a73a-b83484e7dc4e",
"vduId": "VDU2"
},
{
"addedStorageResourceIds": [
"55cf75b7-6c73-455e-8bd2-07f31047672d"
],
"affectedVnfcCpIds": [
"defd21b3-d0e2-4eb4-8433-e4b555e5926b",
"60eb1d2b-11cf-4bb3-90c6-83096bd7d2a0",
"d7c68605-3022-41a4-a4bf-44cc76aa9d28",
"efb91c15-9ddc-435b-aded-33203b9061b6",
"95ad30b9-87e9-4695-be38-59298dc86cb6"
],
"changeType": "ADDED",
"computeResource": {
"resourceId": "dd5731bb-50f1-47e5-b1bf-ae0c34fd646e",
"vimConnectionId": "0f093d21-cd8f-4826-aeee-27cd9305a209",
"vimLevelResourceType": "OS::Nova::Server"
},
"id": "d9d06660-35d2-4c90-b9f0-139f38731e75",
"vduId": "VDU1"
}
]
},
"startTime": "2021-12-20T15:36:13Z",
"stateEnteredTime": "2021-12-20T15:36:13Z",
"vnfInstanceId": "10ed068e-1284-48f2-9b6e-1c443ace9cc6"
}

174
api-ref/source/v2/samples/vnflcm/list-vnflcm-operation-occurrence-response.json

@ -2,6 +2,15 @@
[
{
"_links": {
"fail": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"rollback": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
@ -9,11 +18,16 @@
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296"
}
},
"grantId": "30bdaa69-ef80-4545-9298-428b70ce8e4a",
"id": "a790879c-05f9-4475-9c90-1677452d3eb5",
"isAutomaticInvocation": false,
"isCancelPending": false,
"operation": "INSTANTIATE",
"operationParams": {
"additionalParams": {
"lcm-operation-user-data": "./UserData/userdata_default.py",
"lcm-operation-user-data-class": "DefaultUserData"
},
"extManagedVirtualLinks": [
{
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",
@ -141,6 +155,166 @@
}
}
},
"operationState": "PROCESSING",
"startTime": "2021-12-20T07:55:55Z",
"stateEnteredTime": "2021-12-20T07:55:55Z",
"vnfInstanceId": "f68c329d-2fca-4178-9a38-e21ee8c01606"
},
{
"_links": {
"fail": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"rollback": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"vnfInstance": {
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/c256d5c2-f29e-474c-bced-cbc6d9e2b00b"
}
},
"grantId": "3aa7d8cd-6f85-4d7f-859a-eb26481157e6",
"id": "fdd8bdf4-8f7b-4237-99d3-c87c0910571d",
"isAutomaticInvocation": false,
"isCancelPending": false,
"operation": "INSTANTIATE",
"operationParams": {
"additionalParams": {
"lcm-operation-user-data": "./UserData/userdata_default.py",
"lcm-operation-user-data-class": "DefaultUserData"
},
"extManagedVirtualLinks": [
{
"id": "46653630-2b7f-493c-8dec-c2c6e2fd98c8",
"resourceId": "6c85c8bd-91f3-48b4-bc4b-030bbdfb1a8d",
"vnfVirtualLinkDescId": "internalVL1"
}
],
"extVirtualLinks": [
{
"extCps": [
{
"cpConfig": {
"VDU1_CP1_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"numDynamicAddresses": 1,
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU1_CP1"
},
{
"cpConfig": {
"VDU2_CP1_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"fixedAddresses": [
"10.10.0.102"
],
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU2_CP1"
}
],
"id": "bec04b02-273f-4eb3-a18d-af695c4399bf",
"resourceId": "576075c2-d33e-4002-8d85-9c906cf63ed7"
},
{
"extCps": [
{
"cpConfig": {
"VDU1_CP2_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"numDynamicAddresses": 1,
"subnetId": "afc77fd6-1bf6-4db9-b285-6799642cbfd2",
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU1_CP2"
},
{
"cpConfig": {
"VDU2_CP2_1": {
"cpProtocolData": [
{
"ipOverEthernet": {
"ipAddresses": [
{
"fixedAddresses": [
"10.10.1.102"
],
"subnetId": "afc77fd6-1bf6-4db9-b285-6799642cbfd2",
"type": "IPV4"
}
]
},
"layerProtocol": "IP_OVER_ETHERNET"
}
]
}
},
"cpdId": "VDU2_CP2"
}
],
"id": "625f6da9-6a01-480e-8ecb-1ef8122ad224",
"resourceId": "c84bc776-69ed-4ec9-886e-c594d9ebe38f"
}
],
"flavourId": "simple",
"instantiationLevelId": "instantiation_level_1",
"vimConnectionInfo": {
"vim1": {
"accessInfo": {
"password": "devstack",
"project": "nfv",
"projectDomain": "Default",
"region": "RegionOne",
"userDomain": "Default",
"username": "nfv_user"
},
"interfaceInfo": {
"endpoint": "http://localhost/identity/v3"
},
"vimId": "fc734abb-2d1b-4032-b594-88c33634e023",
"vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3"
}
}
},
"operationState": "COMPLETED",
"resourceChanges": {
"affectedVirtualLinks": [

14
api-ref/source/v2/samples/vnflcm/show-vnflcm-operation-occurrence-response.json

@ -1,5 +1,14 @@
{
"_links": {
"fail": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
"rollback": {
"href": "http://127.0.0.1:9890/v2/vnflcm/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"
},
@ -7,11 +16,16 @@
"href": "http://127.0.0.1:9890/v2/vnflcm/vnf_instances/e00f0d64-d7a3-459b-8a51-b402d5344296"
}
},
"grantId": "f848dd6c-6393-4104-8bfe-df764a042563",
"id": "a790879c-05f9-4475-9c90-1677452d3eb5",
"isAutomaticInvocation": false,
"isCancelPending": false,
"operation": "INSTANTIATE",
"operationParams": {
"additionalParams": {
"lcm-operation-user-data": "./UserData/userdata_default.py",
"lcm-operation-user-data-class": "DefaultUserData"
},
"extManagedVirtualLinks": [
{
"id": "7a6fe192-c34b-4029-937d-f1a2e7a00f5a",

168
api-ref/source/v2/vnflcm.inc

@ -9,14 +9,8 @@ This interface manages the VNF lifecycle management operations of VNF instances.
This interface allows the NFVO to invoke VNF lifecycle management operations
of VNF instances towards the VNFM.
.. note::
TODO: Xena release does not support version 2 vnflcm APIs of
scale vnf, heal vnf, change external vnf connectivity,
rollback, retry and fail.
The version 2 of these APIs will be supported in future releases.
Creates a new VNF instance resource (v2)
========================================
Create a new VNF instance resource (v2)
=======================================
.. rest_method:: POST /vnflcm/v2/vnf_instances
@ -167,7 +161,7 @@ Request Parameters
- interfaceInfo: vim_connection_info_interface_info
- accessInfo: vim_connection_info_access_info
- extra: vim_connection_info_extra
- localizationLanguage: localizataion_language
- localizationLanguage: localization_language
- additionalParams: vnf_instance_additional_params
- extensions: vnf_instance_extensions
- vnfConfigurableProperties: vnf_instance_vnf_configurable_properties
@ -258,7 +252,7 @@ Request Parameters
- vnfInstanceId: vnf_instance_id
Show VNF Instance (v2)
Show VNF instance (v2)
======================
.. rest_method:: GET /vnflcm/v2/vnf_instances/{vnfInstanceId}
@ -404,7 +398,7 @@ Response Example
.. literalinclude:: samples/vnflcm/show-vnf-instance-response.json
:language: javascript
List VNF Instance (v2)
List VNF instance (v2)
======================
.. rest_method:: GET /vnflcm/v2/vnf_instances
@ -599,6 +593,7 @@ Response Parameters
- stateEnteredTime: state_entered_time
- startTime: start_time
- vnfInstanceId: vnf_lcm_vnf_instance_id
- grantId: grant_id
- operation: operation
- isAutomaticInvocation: is_automatic_invocation
- operationParams: operation_params
@ -618,6 +613,7 @@ Response Parameters
- vimLevelResourceType: resource_handle_vim_level_resource_type
- affectedVnfcCpIds: affected_vnfc_cp_ids
- addedStorageResourceIds: added_storage_resource_ids
- removedStorageResourceIds: removed_storage_resource_ids
- affectedVirtualLinks: affected_virtual_links
- id: affected_virtual_links_id
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
@ -693,6 +689,7 @@ Response Parameters
- stateEnteredTime: state_entered_time
- startTime: start_time
- vnfInstanceId: vnf_lcm_vnf_instance_id
- grantId: grant_id
- operation: operation
- isAutomaticInvocation: is_automatic_invocation
- operationParams: operation_params
@ -712,6 +709,7 @@ Response Parameters
- vimLevelResourceType: resource_handle_vim_level_resource_type
- affectedVnfcCpIds: affected_vnfc_cp_ids
- addedStorageResourceIds: added_storage_resource_ids
- removedStorageResourceIds: removed_storage_resource_ids
- affectedVirtualLinks: affected_virtual_links
- id: affected_virtual_links_id
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
@ -737,6 +735,154 @@ Response Example
.. literalinclude:: samples/vnflcm/list-vnflcm-operation-occurrence-response.json
:language: javascript
Retry a VNF LCM operation occurrence (v2)
=========================================
.. rest_method:: POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/retry
The POST method starts retrying a VNF lifecycle operation if that operation
has experienced a temporary failure, i.e. the related
"Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 202
.. rest_status_code:: error status.yaml
- 401
- 404
- 409
- 422
Request Parameters
------------------
.. rest_parameters:: parameters_vnflcm.yaml
- vnfLcmOpOccId: vnf_lcm_op_occ_id
Fail a VNF LCM operation occurrence (v2)
========================================
.. rest_method:: POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/fail
The POST method marks a VNF lifecycle management operation occurrence
as "finally failed" if that operation occurrence is in "FAILED_TEMP" state.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 200
.. rest_status_code:: error status.yaml
- 401
- 404
- 406
- 409
Request Parameters
------------------
.. rest_parameters:: parameters_vnflcm.yaml
- vnfLcmOpOccId: vnf_lcm_op_occ_id
Response Parameters
-------------------
.. rest_parameters:: parameters_vnflcm.yaml
- id: vnf_lcm_op_occ_id_response
- operationState: operation_state
- stateEnteredTime: state_entered_time
- startTime: start_time
- vnfInstanceId: vnf_instance_id
- grantId: grant_id
- operation: operation
- isAutomaticInvocation: is_automatic_invocation
- operationParams: operation_params
- isCancelPending: is_cancel_pending
- error: error
- title: error_title
- status: error_status
- detail: error_detail
- resourceChanges: resource_changes
- affectedVnfcs: affected_vnfcs
- id: affected_vnfcs_id
- vduId: affected_vnfcs_vdu_id
- changeType: affected_vnfcs_change_type
- computeResource: vnfc_resource_info_compute_resource
- vimConnectionId: vim_connection_id
- resourceId: resource_handle_resource_id
- vimLevelResourceType: resource_handle_vim_level_resource_type
- affectedVnfcCpIds: affected_vnfc_cp_ids
- addedStorageResourceIds: added_storage_resource_ids
- removedStorageResourceIds: removed_storage_resource_ids
- affectedVirtualLinks: affected_virtual_links
- id: affected_virtual_links_id
- vnfVirtualLinkDescId: vnf_virtual_link_resource_info_vnf_virtual_link_desc_id
- changeType: affected_virtual_links_change_type
- networkResource: vnf_virtual_link_resource_info_network_resource
- vimConnectionId: vim_connection_id
- resourceId: resource_handle_resource_id
- vimLevelResourceType: resource_handle_vim_level_resource_type
- affectedVirtualStorages: affected_virtual_storages
- id: affected_virtual_storages_id
- virtualStorageDescId: affected_virtual_storages_virtual_storage_desc_id
- changeType: affected_virtual_storages_change_type
- storageResource: virtual_storage_resource_info_storage_resource
- vimConnectionId: vim_connection_id
- resourceId: resource_handle_resource_id
- vimLevelResourceType: resource_handle_vim_level_resource_type
- _links: vnf_instance_links
Response Example
----------------
.. literalinclude:: samples/vnflcm/fail-vnflcm-operation-occurrence-response.json
:language: javascript
Rollback a VNF LCM operation occurrence (v2)
============================================
.. rest_method:: POST /vnflcm/v2/vnf_lcm_op_occs/{vnfLcmOpOccId}/rollback
The POST method starts rolling back a VNF lifecycle operation if that operation
has experienced a temporary failure, i.e. the related
"Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state.
In case of rolling back an occurrence of the "InstantiateVnf" operation,
the VNFM shall request to the VIM the release of the virtualised
resources that were allocated for the related VNF instance.
The "rollback" task shall be supported by the VNFM for any VNF LCM operation occurrence
that represents an "InstantiateVnf" operation in FAILED_TEMP state.
Response Codes
--------------
.. rest_status_code:: success status.yaml
- 202
.. rest_status_code:: error status.yaml
- 401
- 404
- 409
- 422
Request Parameters
------------------
.. rest_parameters:: parameters_vnflcm.yaml
- vnfLcmOpOccId: vnf_lcm_op_occ_id
Create a new subscription (v2)
==============================

17
doc/source/cli/cli-etsi-vnflcm.rst

@ -24,13 +24,10 @@ CLI Reference for VNF Lifecycle Management
Commands with **\-\-os-tacker-api-version 2** call version 2 vnflcm APIs.
.. note::
Xena release does not support version 2 vnflcm APIs of
scale vnf, heal vnf, change external vnf connectivity,
rollback, retry and fail.
The version 2 of these APIs will be supported in future releases.
Also, in Xena release, version 2 vnflcm APIs of instantiate vnf
and terminate vnf only support VNF, not CNF.
CNF will be supported by version 2 vnflcm APIs in future releases.
In Yoga release, version 2 vnflcm APIs of instantiate vnf,
terminate vnf, scale vnf, heal vnf, change external vnf connectivity,
rollback, retry and fail only support VNF, not CNF. CNF will be supported
by version 2 vnflcm APIs in future releases.
1. Create VNF Identifier
^^^^^^^^^^^^^^^^^^^^^^^^
@ -412,6 +409,8 @@ Help:
10. Rollback VNF Lifecycle Management Operation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
.. code-block:: console
$ openstack vnflcm op rollback VNF_LCM_OP_OCC_ID
@ -441,7 +440,7 @@ Help:
11. Retry
^^^^^^^^^
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
.. code-block:: console
@ -474,7 +473,7 @@ Help:
12. Fail
^^^^^^^^
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
The `VNF_LCM_OP_OCC_ID` is the ID for the target lifecycle temporary failed.
.. code-block:: console

151
doc/source/user/etsi_vnf_error_handling.rst

@ -4,12 +4,6 @@ ETSI NFV-SOL VNF error-handling
This document describes how to error-handling VNF in Tacker.
.. note::
Rollback and retry are NOT supported in version 2 vnflcm APIs in Xena yet.
So, You should recover it by yourself instead if instantiation is failed via v2 API.
The recovering process may include deleting a stack via HEAT API.
Prerequisites
-------------
@ -237,12 +231,56 @@ the **callbackUri** set in 'Create a new subscription'.
**vnfLcmOpOccId** included in this 'Notification' corresponds
to VNF_LCM_OP_OCC_ID.
See `Tacker API reference`_. for details on the APIs used here.
See `VNF LCM v1 API`_ and `VNF LCM v2 API`_
for details on the APIs used here.
Rollback VNF LCM Operation
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note::
Rollback of Scale-Out has a difference in operation result between v1 and v2.
In v1, the oldest VNFc(VM) is deleted. In v2, the newest VNFc(VM) is deleted.
.. list-table::
:widths: 10 40 15 15 10 10
:header-rows: 1
* - LCM Operation
- Description of Rollback
- Precondition
- Postcondition
- Support in v1
- Support in v2
* - Instantiate
- | VNFM removes all VMs and resources.
| e.g. Tacker executes Heat stack-delete for deletion of the target VM.
- FAILED_TEMP
- ROLLED_BACK or FAILED_TEMP
- X
- X
* - Scale-out
- | VNFM reverts changes of VMs and resources specified in the middle of scale-out operation.
| There are differences in the operation results of v1 and v2. See note.
| e.g. Tacker reverts desired_capacity and executes Heat stack-update.
- FAILED_TEMP
- ROLLED_BACK or FAILED_TEMP
- X
- X
* - Modify
- VNFM reverts the update of the VNF instance information.
- FAILED_TEMP
- ROLLED_BACK or FAILED_TEMP
-
- X
* - Change external connectivity
- | VNFM reverts changes of the external connectivity for VNF instances.
| e.g. Tacker reverts stack parameters and executes Heat stack-update.
- FAILED_TEMP
- ROLLED_BACK or FAILED_TEMP
-
- X
This manual describes the following operations as use cases for
rollback operations.
@ -296,7 +334,54 @@ Result:
Fail VNF LCM Operation
~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 10 40 15 15 10 10
:header-rows: 1
* - LCM Operation
- Description of Fail
- Precondition
- Postcondition
- Support in v1
- Support in v2
* - Instantiate
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
* - Terminate
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
* - Heal
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
* - Scale
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
* - Modify
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
* - Change external connectivity
- Tacker simply changes LCM operation state to "FAILED" on Tacker-DB.
- FAILED_TEMP
- FAILED
- X
- X
This manual describes the following operations as use cases for
fail operations.
@ -353,6 +438,53 @@ Result:
Retry VNF LCM Operation
~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 10 40 15 15 10 10
:header-rows: 1
* - LCM Operation
- Description of Fail
- Precondition
- Postcondition
- Support in v1
- Support in v2
* - Instantiate
- VNFM retries a Instantiate operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
* - Terminate
- VNFM retries a Terminate operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
* - Heal
- VNFM retries a Heal operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
* - Scale
- VNFM retries a Scale operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
* - Modify
- VNFM retries a Modify operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
* - Change external connectivity
- VNFM retries a Change external connectivity operation.
- FAILED_TEMP
- COMPLETED or FAILED_TEMP
- X
- X
This manual describes the following operations as use cases for
retry operations.
@ -380,6 +512,7 @@ Result:
If "Retry VNF lifecycle management operation" is successful,
then another LCM can be operational.
.. _Tacker API reference : https://docs.openstack.org/api-ref/nfv-orchestration/v1/index.html
.. _VNF LCM v1 API : https://docs.openstack.org/api-ref/nfv-orchestration/v1/vnflcm.html
.. _VNF LCM v2 API : https://docs.openstack.org/api-ref/nfv-orchestration/v2/vnflcm.html
.. _Keystone API reference : https://docs.openstack.org/api-ref/identity/v3/#password-authentication-with-scoped-authorization

Loading…
Cancel
Save