ETSI NFV-SOL VNF 错误处理

本文档描述了在 Tacker v1 API 中 VNF 的错误处理方式。

注意

这是 Tacker v1 API 的文档。有关 Tacker v2 API,请参阅 ETSI NFV-SOL VNF 错误处理

先决条件

应安装以下软件包

  • tacker

  • python-tackerclient

应根据 VIM 管理 注册默认 VIM。

下面使用的 VNF 包(sample_vnf_package_csar.zip)是通过参考 VNF 包 准备的。

从“注册 VIM”到“实例化 VNF”的准备恢复操作的流程,基本参考 ETSI NFV-SOL VNF 部署为使用 TOSCA 的 VMETSI NFV-SOL VNF 部署为使用 LCM 操作用户数据的 VM

此过程使用示例 VNF 包。

VNF 错误处理流程

如“先决条件”中所述,在执行错误处理之前必须先创建 VNF。

CLI 命令的详细信息在 使用 v1 Tacker 进行 VNF 生命周期管理 中描述。

有一些操作可以进行 VNF 错误处理。

  • 回滚 VNF 生命周期管理操作

  • 使 VNF 生命周期管理操作失败

  • 重试 VNF 生命周期管理操作

为了执行错误处理,有必要指定 VNF_LCM_OP_OCC_ID,这是目标 LCM 操作的 ID。首先,将描述指定 ID 的方法。

识别 VNF_LCM_OP_OCC_ID

可以通过 CLI 获取 VNF_LCM_OP_OCC_ID。

CLI 命令的详细信息在 使用 v1 Tacker 进行 VNF 生命周期管理 中描述。

在检查“VNF_LCM_OP_OCC_ID”之前,您应该先获取 VNF_INSTANCE_ID。

$ openstack vnflcm op list

结果

$ openstack vnflcm op list
+--------------------------------------+-----------------+--------------------------------------+-------------+
| ID                                   | Operation State | VNF Instance ID                      | Operation   |
+--------------------------------------+-----------------+--------------------------------------+-------------+
| c7afb90a-351b-4d33-a945-8f937deeadb4 | FAILED_TEMP     | d45ae5cb-121b-4420-bc97-6a00f5fa63b6 | INSTANTIATE |
+--------------------------------------+-----------------+--------------------------------------+-------------+

只有当 operationStateFAILED_TMP 时,才能执行错误处理。

如果已注册 Subscription,则上述导致 FAILED_TEMP 的操作将向 Subscription 的 callbackUri 发送“Notification”。

此“Notification”中包含的 vnfLcmOpOccId 对应于 VNF_LCM_OP_OCC_ID。

有关此处使用的 API 的详细信息,请参阅 VNF LCM v1 API

回滚 VNF LCM 操作

LCM 操作

回滚的描述

先决条件

后置条件

实例化

VNFM 移除所有 VM 和资源。
例如,Tacker 执行 Heat stack-delete 以删除目标 VM。

FAILED_TEMP

ROLLED_BACK 或 FAILED_TEMP

扩展

VNFM 撤销扩展操作中 VM 和资源的更改。
结果是,最旧的 VNFc(VM)将被删除。
例如,Tacker 撤销 desired_capacity 并执行 Heat stack-update。

FAILED_TEMP

ROLLED_BACK 或 FAILED_TEMP

本手册将以下操作描述为回滚操作的用例。

  • “实例化 VNF”失败

  • 回滚 VNF 生命周期管理操作

  • 删除 VNF

如下所示,如果“实例化 VNF”失败,在执行“回滚 VNF 生命周期管理操作”之前,无法执行“删除 VNF”。

$ openstack vnflcm delete VNF_INSTANCE_ID

结果

Failed to delete vnf instance with ID 'd45ae5cb-121b-4420-bc97-6a00f5fa63b6': Vnf d45ae5cb-121b-4420-bc97-6a00f5fa63b6 in status ERROR. Cannot delete while the vnf is in this state.
Failed to delete 1 of 1 vnf instances.

因此,使用以下 CLI 命令执行“回滚 VNF 生命周期管理操作”。

$ openstack vnflcm op rollback VNF_LCM_OP_OCC_ID

结果

Rollback request for LCM operation c7afb90a-351b-4d33-a945-8f937deeadb4 has been accepted

如果“回滚 VNF 生命周期管理操作”成功,则“删除 VNF”也将成功。

$ openstack vnflcm delete VNF_INSTANCE_ID

结果

Vnf instance 'd45ae5cb-121b-4420-bc97-6a00f5fa63b6' is deleted successfully

使 VNF LCM 操作失败

LCM 操作

使失败的描述

先决条件

后置条件

实例化

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

终止

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

修复

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

规模

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

修改

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

更改外部连接

Tacker 只是在 Tacker-DB 上将 LCM 操作状态更改为“FAILED”。

FAILED_TEMP

FAILED

本手册将以下操作描述为失败操作的用例。

  • “实例化 VNF”失败

  • 使 VNF 生命周期管理操作失败

  • 删除 VNF

如下所示,如果“实例化 VNF”失败,在执行“使 VNF 生命周期管理操作失败”之后,无法执行“删除 VNF”。

$ openstack vnflcm delete VNF_INSTANCE_ID

结果

Failed to delete vnf instance with ID 'd45ae5cb-121b-4420-bc97-6a00f5fa63b6': Vnf d45ae5cb-121b-4420-bc97-6a00f5fa63b6 in status ERROR. Cannot delete while the vnf is in this state.
Failed to delete 1 of 1 vnf instances.

因此,使用以下 CLI 命令执行“使 VNF 生命周期管理操作失败”。

$ openstack vnflcm op fail VNF_LCM_OP_OCC_ID

结果

+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                   | Value                                                                                                                                                                                                                            |
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Error                   | {                                                                                                                                                                                                                                |
|                         |     "title": "",                                                                                                                                                                                                                 |
|                         |     "status": 500,                                                                                                                                                                                                               |
|                         |     "detail": "ProblemDetails(created_at=<?>,deleted=0,deleted_at=<?>,detail='Vnf instantiation wait failed for vnf d45ae5cb-121b-4420-bc97-6a00f5fa63b6, error: VNF Create Resource CREATE failed: ResourceInError:             |
|                         | resources.VDU1.resources.ril4bssciahp.resources.VDU1: Went to status ERROR due to \"Message: Build of instance 6dacc4a4-948f-4f40-97cf-2caeecbba013 aborted: privsep helper command exited non-zero (1), Code:                   |
|                         | 500\"',status=500,title='',updated_at=<?>)"                                                                                                                                                                                      |
|                         | }                                                                                                                                                                                                                                |
| ID                      | c7afb90a-351b-4d33-a945-8f937deeadb4                                                                                                                                                                                             |
| Is Automatic Invocation | False                                                                                                                                                                                                                            |
| Is Cancel Pending       | False                                                                                                                                                                                                                            |
| Links                   | {                                                                                                                                                                                                                                |
|                         |     "self": {                                                                                                                                                                                                                    |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_lcm_op_occs/c7afb90a-351b-4d33-a945-8f937deeadb4"                                                                                                                           |
|                         |     },                                                                                                                                                                                                                           |
|                         |     "vnfInstance": {                                                                                                                                                                                                             |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_instances/d45ae5cb-121b-4420-bc97-6a00f5fa63b6"                                                                                                                             |
|                         |     },                                                                                                                                                                                                                           |
|                         |     "retry": {                                                                                                                                                                                                                   |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_lcm_op_occs/c7afb90a-351b-4d33-a945-8f937deeadb4/retry"                                                                                                                     |
|                         |     },                                                                                                                                                                                                                           |
|                         |     "rollback": {                                                                                                                                                                                                                |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_lcm_op_occs/c7afb90a-351b-4d33-a945-8f937deeadb4/rollback"                                                                                                                  |
|                         |     },                                                                                                                                                                                                                           |
|                         |     "grant": {                                                                                                                                                                                                                   |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_lcm_op_occs/c7afb90a-351b-4d33-a945-8f937deeadb4/grant"                                                                                                                     |
|                         |     },                                                                                                                                                                                                                           |
|                         |     "fail": {                                                                                                                                                                                                                    |
|                         |         "href": "https://:9890/vnflcm/v1/vnf_lcm_op_occs/c7afb90a-351b-4d33-a945-8f937deeadb4/fail"                                                                                                                      |
|                         |     }                                                                                                                                                                                                                            |
|                         | }                                                                                                                                                                                                                                |
| Operation               | INSTANTIATE                                                                                                                                                                                                                      |
| Operation State         | FAILED                                                                                                                                                                                                                           |
| Start Time              | 2023-12-27 07:05:59+00:00                                                                                                                                                                                                        |
| State Entered Time      | 2024-01-18 01:40:55.105358+00:00                                                                                                                                                                                                 |
| VNF Instance ID         | d45ae5cb-121b-4420-bc97-6a00f5fa63b6                                                                                                                                                                                             |
| grantId                 | None                                                                                                                                                                                                                             |
| operationParams         | "{\"flavourId\": \"simple\", \"instantiationLevelId\": \"instantiation_level_1\", \"extVirtualLinks\": [{\"id\": \"91bcff6d-4703-4ba9-b1c2-009e6db92a9c\", \"resourceId\": \"3019b1e7-99d8-4748-97ac-104922bc78d9\",             |
|                         | \"vimConnectionId\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\", \"extCps\": [{\"cpdId\": \"VDU1_CP1\", \"cpConfig\": [{\"linkPortId\": \"6b7c0b3a-cc2d-4b94-9f6f-81df69a7cc2f\"}]}, {\"cpdId\": \"VDU2_CP1\", \"cpConfig\":       |
|                         | [{\"linkPortId\": \"02d867e7-b955-4b4a-b92f-c78c7ede63bf\"}]}], \"extLinkPorts\": [{\"id\": \"6b7c0b3a-cc2d-4b94-9f6f-81df69a7cc2f\", \"resourceHandle\": {\"vimConnectionId\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\",        |
|                         | \"resourceId\": \"972a375d-921f-46f5-bfdb-19af95fc49e1\"}}, {\"id\": \"02d867e7-b955-4b4a-b92f-c78c7ede63bf\", \"resourceHandle\": {\"vimConnectionId\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\", \"resourceId\":               |
|                         | \"b853b5c5-cd97-4dfb-8750-cac6e5c62477\"}}]}, {\"id\": \"a96d2f5b-c01a-48e1-813c-76132965042c\", \"resourceId\": \"589a045a-65d9-4f4d-a9b3-35aa655374d0\", \"vimConnectionId\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\",        |
|                         | \"extCps\": [{\"cpdId\": \"VDU1_CP2\", \"cpConfig\": [{\"cpProtocolData\": [{\"layerProtocol\": \"IP_OVER_ETHERNET\", \"ipOverEthernet\": {\"ipAddresses\": [{\"type\": \"IPV4\", \"fixedAddresses\": [\"22.22.1.10\"],          |
|                         | \"subnetId\": \"d290cae3-0dbc-44a3-a043-1a50ded04a64\"}]}}]}]}, {\"cpdId\": \"VDU2_CP2\", \"cpConfig\": [{\"cpProtocolData\": [{\"layerProtocol\": \"IP_OVER_ETHERNET\", \"ipOverEthernet\": {\"ipAddresses\": [{\"type\":       |
|                         | \"IPV4\", \"fixedAddresses\": [\"22.22.1.20\"], \"subnetId\": \"d290cae3-0dbc-44a3-a043-1a50ded04a64\"}]}}]}]}]}], \"extManagedVirtualLinks\": [{\"id\": \"8f9d8da0-2386-4f00-bbb0-860f50d32a5a\", \"vnfVirtualLinkDescId\":     |
|                         | \"internalVL1\", \"resourceId\": \"0e498d08-ed3a-4212-83e0-1b6808f6fcb6\"}, {\"id\": \"11d68761-aab7-419c-955c-0c6497f13692\", \"vnfVirtualLinkDescId\": \"internalVL2\", \"resourceId\": \"38a8d4ba-                            |
|                         | ac1b-41a2-a92b-ff2a3e5e9b12\"}], \"vimConnectionInfo\": [{\"id\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\", \"vimType\": \"ETSINFV.OPENSTACK_KEYSTONE.V_2\", \"vimConnectionId\": \"79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56\",      |
|                         | \"interfaceInfo\": {\"endpoint\": \"http://127.0.0.1/identity\"}, \"accessInfo\": {\"username\": \"nfv_user\", \"region\": \"RegionOne\", \"password\": \"devstack\", \"tenant\": \"1994d69783d64c00aadab564038c2fd7\"}}],       |
|                         | \"additionalParams\": {\"lcm-operation-user-data\": \"./UserData/lcm_user_data.py\", \"lcm-operation-user-data-class\": \"SampleUserData\"}}"                                                                                    |
| resourceChanges         | {}                                                                                                                                                                                                                               |
+-------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

如果“使 VNF 生命周期管理操作失败”成功,则“删除 VNF”也将成功。

$ openstack vnflcm delete VNF_INSTANCE_ID

结果

Vnf instance 'd45ae5cb-121b-4420-bc97-6a00f5fa63b6' is deleted successfully

重试 VNF LCM 操作

LCM 操作

使失败的描述

先决条件

后置条件

实例化

VNFM 重试实例化操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

终止

VNFM 重试终止操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

修复

VNFM 重试 Heal 操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

规模

VNFM 重试 Scale 操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

修改

VNFM 重试 Modify 操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

更改外部连接

VNFM 重试更改外部连接操作。

FAILED_TEMP

COMPLETED 或 FAILED_TEMP

本手册将以下操作描述为重试操作的用例。

  • “实例化 VNF”失败

  • 重试 VNF 生命周期管理操作

如下所示,如果“实例化 VNF”失败,如果您想重新执行之前的(失败的)操作,则执行“重试”操作。

因此,使用以下 CLI 命令执行“重试 VNF 生命周期管理操作”。

$ openstack vnflcm op retry VNF_LCM_OP_OCC_ID

结果

Retry request for LCM operation c7afb90a-351b-4d33-a945-8f937deeadb4 has been accepted

如果“重试 VNF 生命周期管理操作”成功,则另一个 LCM 可以正常运行。