ETSI NFV-SOL VNF 部署为虚拟机,并进行 LCM 操作用户数据

本文档描述了如何使用 CLI 命令在 Tacker v2 API 中使用 LCM 操作用户数据部署 VNF 作为虚拟机。请查看 LCM-user-data 规范NFV-SOL014 v2.8.1 以获取有关 LCM 操作用户数据的更多信息。

注意

本文档的内容已确认使用以下 VNF 包有效。

概述

下图显示了 VNF 部署的概述。

  1. 请求创建 VNF

    用户通过上传 VNF 包并请求 create VNF,向 tacker-server 请求创建 VNF。VNF 包应包含 BaseHOTUserData,除了 VNFD 之外。这些内容的详细说明可以在 VNF 包 中找到。

  2. 请求实例化 VNF

    用户通过请求 instantiate VNF 并提供实例化参数,向 tacker-server 请求实例化创建的 VNF。

  3. 调用 OpenStack Heat API

    收到请求后,tacker-server 会将其重定向到 tacker-conductor。在 tacker-conductor 中,请求会根据实例化参数的内容再次重定向到适当的 infra-driver(在本例中为 OpenStack infra-driver)。然后,OpenStack infra-driver 调用 OpenStack Heat APIs 以创建 VM 作为 VNF。

  4. 创建 VM

    OpenStack Heat 根据 API 调用创建 VM。

../../../../_images/deployment_with_user_data.svg

先决条件

应安装以下软件包

  • tacker

  • python-tackerclient

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

例如,您可以按如下方式注册默认 VIM。

$ cat vim_config.yaml
auth_url: 'http://192.168.56.10/identity'
username: 'nfv_user'
password: 'devstack'
project_name: 'nfv'
project_domain_name: 'Default'
user_domain_name: 'Default'
cert_verify: 'False'

$ openstack vim register --config-file vim_config.yaml \
  --is-default openstack-admin-vim
+----------------+-----------------------------------------------------+
| Field          | Value                                               |
+----------------+-----------------------------------------------------+
| auth_cred      | {                                                   |
|                |     "username": "nfv_user",                         |
|                |     "user_domain_name": "Default",                  |
|                |     "cert_verify": "False",                         |
|                |     "project_id": null,                             |
|                |     "project_name": "nfv",                          |
|                |     "project_domain_name": "Default",               |
|                |     "auth_url": "http://192.168.56.10/identity/v3", |
|                |     "key_type": "barbican_key",                     |
|                |     "secret_uuid": "***",                           |
|                |     "password": "***"                               |
|                | }                                                   |
| auth_url       | http://192.168.56.10/identity/v3                    |
| created_at     | 2023-11-08 02:50:43.373078                          |
| description    |                                                     |
| extra          |                                                     |
| id             | 60f78f56-e297-4a7a-aae7-65418e3961e3                |
| is_default     | True                                                |
| name           | openstack-admin-vim                                 |
| placement_attr | {                                                   |
|                |     "regions": [                                    |
|                |         "RegionOne"                                 |
|                |     ]                                               |
|                | }                                                   |
| project_id     | ebbc6cf1a03d49918c8e408535d87268                    |
| status         | ACTIVE                                              |
| type           | openstack                                           |
| updated_at     | None                                                |
| vim_project    | {                                                   |
|                |     "name": "nfv",                                  |
|                |     "project_domain_name": "Default"                |
|                | }                                                   |
+----------------+-----------------------------------------------------+

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

注意

为了使用 LCM 操作用户数据部署 VNF,有必要在 VNF 包中包含 BaseHOT 和 UserData,这些在 VNF 包 中是可选的。

例如,您可以按如下方式创建 VNF 包。 在本文档中,TACKER_ROOT 是服务器上 tacker 仓库的根目录。

$ cd TACKER_ROOT/samples/tests/functional/sol_v2_common/basic_lcms_max_individual_vnfc
$ python3 pre.py
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2023-11-08T04:57:50Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | 8d628e15-375c-4882-be3e-7d8f2824bff2 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| is_vlan_transparent       | None                                 |
| mtu                       | 1442                                 |
| name                      | ft-net0                              |
| port_security_enabled     | True                                 |
| project_id                | ebbc6cf1a03d49918c8e408535d87268     |
| provider:network_type     | geneve                               |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 34180                                |
| qos_policy_id             | None                                 |
| revision_number           | 1                                    |
| router:external           | Internal                             |
| segments                  | None                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | ebbc6cf1a03d49918c8e408535d87268     |
| updated_at                | 2023-11-08T04:57:50Z                 |
+---------------------------+--------------------------------------+
+----------------------+--------------------------------------+
| Field                | Value                                |
+----------------------+--------------------------------------+
| allocation_pools     | 100.100.100.2-100.100.100.254        |
| cidr                 | 100.100.100.0/24                     |
| created_at           | 2023-11-08T04:57:52Z                 |
| description          |                                      |
| dns_nameservers      |                                      |
| dns_publish_fixed_ip | None                                 |
| enable_dhcp          | True                                 |
| gateway_ip           | 100.100.100.1                        |
| host_routes          |                                      |
| id                   | a1d042f3-88aa-4150-b42b-8620c9be746c |
| ip_version           | 4                                    |
| ipv6_address_mode    | None                                 |
| ipv6_ra_mode         | None                                 |
| name                 | ft-ipv4-subnet0                      |
| network_id           | 8d628e15-375c-4882-be3e-7d8f2824bff2 |
| project_id           | ebbc6cf1a03d49918c8e408535d87268     |
| revision_number      | 0                                    |
| segment_id           | None                                 |
| service_types        |                                      |
| subnetpool_id        | None                                 |
| tags                 |                                      |
| updated_at           | 2023-11-08T04:57:52Z                 |
+----------------------+--------------------------------------+
+----------------------+--------------------------------------------------------+
| Field                | Value                                                  |
+----------------------+--------------------------------------------------------+
| allocation_pools     | 1111:2222:3333::1-1111:2222:3333:0:ffff:ffff:ffff:ffff |
| cidr                 | 1111:2222:3333::/64                                    |
| created_at           | 2023-11-08T04:57:54Z                                   |
| description          |                                                        |
| dns_nameservers      |                                                        |
| dns_publish_fixed_ip | None                                                   |
| enable_dhcp          | True                                                   |
| gateway_ip           | 1111:2222:3333::                                       |
| host_routes          |                                                        |
| id                   | a12a1603-a30d-4724-80fb-9a7019a3c79f                   |
| ip_version           | 6                                                      |
| ipv6_address_mode    | None                                                   |
| ipv6_ra_mode         | None                                                   |
| name                 | ft-ipv6-subnet0                                        |
| network_id           | 8d628e15-375c-4882-be3e-7d8f2824bff2                   |
| project_id           | ebbc6cf1a03d49918c8e408535d87268                       |
| revision_number      | 0                                                      |
| segment_id           | None                                                   |
| service_types        |                                                        |
| subnetpool_id        | None                                                   |
| tags                 |                                                        |
| updated_at           | 2023-11-08T04:57:54Z                                   |
+----------------------+--------------------------------------------------------+
+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | UP                                   |
| availability_zone_hints   |                                      |
| availability_zones        |                                      |
| created_at                | 2023-11-08T04:57:56Z                 |
| description               |                                      |
| dns_domain                | None                                 |
| id                        | dcdd8e59-d303-4659-bdff-d32f2cb2b806 |
| ipv4_address_scope        | None                                 |
| ipv6_address_scope        | None                                 |
| is_default                | False                                |
| is_vlan_transparent       | None                                 |
| mtu                       | 1442                                 |
| name                      | ft-net1                              |
| port_security_enabled     | True                                 |
| project_id                | ebbc6cf1a03d49918c8e408535d87268     |
| provider:network_type     | geneve                               |
| provider:physical_network | None                                 |
| provider:segmentation_id  | 19341                                |
| qos_policy_id             | None                                 |
| revision_number           | 1                                    |
| router:external           | Internal                             |
| segments                  | None                                 |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   |                                      |
| tags                      |                                      |
| tenant_id                 | ebbc6cf1a03d49918c8e408535d87268     |
| updated_at                | 2023-11-08T04:57:56Z                 |
+---------------------------+--------------------------------------+
+----------------------+--------------------------------------+
| Field                | Value                                |
+----------------------+--------------------------------------+
| allocation_pools     | 22.22.22.2-22.22.22.254              |
| cidr                 | 22.22.22.0/24                        |
| created_at           | 2023-11-08T04:57:58Z                 |
| description          |                                      |
| dns_nameservers      |                                      |
| dns_publish_fixed_ip | None                                 |
| enable_dhcp          | True                                 |
| gateway_ip           | 22.22.22.1                           |
| host_routes          |                                      |
| id                   | ab38a204-8c01-4205-95c6-b4e74198700f |
| ip_version           | 4                                    |
| ipv6_address_mode    | None                                 |
| ipv6_ra_mode         | None                                 |
| name                 | ft-ipv4-subnet1                      |
| network_id           | dcdd8e59-d303-4659-bdff-d32f2cb2b806 |
| project_id           | ebbc6cf1a03d49918c8e408535d87268     |
| revision_number      | 0                                    |
| segment_id           | None                                 |
| service_types        |                                      |
| subnetpool_id        | None                                 |
| tags                 |                                      |
| updated_at           | 2023-11-08T04:57:58Z                 |
+----------------------+--------------------------------------+
+----------------------+--------------------------------------------------------+
| Field                | Value                                                  |
+----------------------+--------------------------------------------------------+
| allocation_pools     | 1111:2222:4444::1-1111:2222:4444:0:ffff:ffff:ffff:ffff |
| cidr                 | 1111:2222:4444::/64                                    |
| created_at           | 2023-11-08T04:58:00Z                                   |
| description          |                                                        |
| dns_nameservers      |                                                        |
| dns_publish_fixed_ip | None                                                   |
| enable_dhcp          | True                                                   |
| gateway_ip           | 1111:2222:4444::                                       |
| host_routes          |                                                        |
| id                   | 3f023732-8364-43e0-80de-00799d5b78af                   |
| ip_version           | 6                                                      |
| ipv6_address_mode    | None                                                   |
| ipv6_ra_mode         | None                                                   |
| name                 | ft-ipv6-subnet1                                        |
| network_id           | dcdd8e59-d303-4659-bdff-d32f2cb2b806                   |
| project_id           | ebbc6cf1a03d49918c8e408535d87268                       |
| revision_number      | 0                                                      |
| segment_id           | None                                                   |
| service_types        |                                                        |
| subnetpool_id        | None                                                   |
| tags                 |                                                        |
| updated_at           | 2023-11-08T04:58:00Z                                   |
+----------------------+--------------------------------------------------------+
+-------------------------+---------------------------------------------------------------------------+
| Field                   | Value                                                                     |
+-------------------------+---------------------------------------------------------------------------+
| admin_state_up          | UP                                                                        |
| allowed_address_pairs   |                                                                           |
| binding_host_id         |                                                                           |
| binding_profile         |                                                                           |
| binding_vif_details     |                                                                           |
| binding_vif_type        | unbound                                                                   |
| binding_vnic_type       | normal                                                                    |
| created_at              | 2023-11-08T04:58:02Z                                                      |
| data_plane_status       | None                                                                      |
| description             |                                                                           |
| device_id               |                                                                           |
| device_owner            |                                                                           |
| device_profile          | None                                                                      |
| dns_assignment          | None                                                                      |
| dns_domain              | None                                                                      |
| dns_name                | None                                                                      |
| extra_dhcp_opts         |                                                                           |
| fixed_ips               | ip_address='10.10.0.34', subnet_id='649c956c-1516-4d92-a6bc-ce936d8a880d' |
| hardware_offload_type   | None                                                                      |
| id                      | 389ade82-7618-4b42-bc90-5ebbac0863cf                                      |
| ip_allocation           | None                                                                      |
| mac_address             | fa:16:3e:be:f3:50                                                         |
| name                    | VDU2_CP1-1                                                                |
| network_id              | 6a3aeb3a-fb8b-4d27-a5f1-4f148aeb303f                                      |
| numa_affinity_policy    | None                                                                      |
| port_security_enabled   | True                                                                      |
| project_id              | ebbc6cf1a03d49918c8e408535d87268                                          |
| propagate_uplink_status | None                                                                      |
| qos_network_policy_id   | None                                                                      |
| qos_policy_id           | None                                                                      |
| resource_request        | None                                                                      |
| revision_number         | 1                                                                         |
| security_group_ids      | fcca932a-c14b-4e67-825c-848a62b54acc                                      |
| status                  | DOWN                                                                      |
| tags                    |                                                                           |
| trunk_details           | None                                                                      |
| updated_at              | 2023-11-08T04:58:02Z                                                      |
+-------------------------+---------------------------------------------------------------------------+
+-------------------------+----------------------------------------------------------------------------+
| Field                   | Value                                                                      |
+-------------------------+----------------------------------------------------------------------------+
| admin_state_up          | UP                                                                         |
| allowed_address_pairs   |                                                                            |
| binding_host_id         |                                                                            |
| binding_profile         |                                                                            |
| binding_vif_details     |                                                                            |
| binding_vif_type        | unbound                                                                    |
| binding_vnic_type       | normal                                                                     |
| created_at              | 2023-11-08T04:58:04Z                                                       |
| data_plane_status       | None                                                                       |
| description             |                                                                            |
| device_id               |                                                                            |
| device_owner            |                                                                            |
| device_profile          | None                                                                       |
| dns_assignment          | None                                                                       |
| dns_domain              | None                                                                       |
| dns_name                | None                                                                       |
| extra_dhcp_opts         |                                                                            |
| fixed_ips               | ip_address='10.10.0.171', subnet_id='649c956c-1516-4d92-a6bc-ce936d8a880d' |
| hardware_offload_type   | None                                                                       |
| id                      | 33f4e82d-fa74-4961-b0cd-4ae39a51b4a0                                       |
| ip_allocation           | None                                                                       |
| mac_address             | fa:16:3e:f0:25:ee                                                          |
| name                    | VDU2_CP1-2                                                                 |
| network_id              | 6a3aeb3a-fb8b-4d27-a5f1-4f148aeb303f                                       |
| numa_affinity_policy    | None                                                                       |
| port_security_enabled   | True                                                                       |
| project_id              | ebbc6cf1a03d49918c8e408535d87268                                           |
| propagate_uplink_status | None                                                                       |
| qos_network_policy_id   | None                                                                       |
| qos_policy_id           | None                                                                       |
| resource_request        | None                                                                       |
| revision_number         | 1                                                                          |
| security_group_ids      | fcca932a-c14b-4e67-825c-848a62b54acc                                       |
| status                  | DOWN                                                                       |
| tags                    |                                                                            |
| trunk_details           | None                                                                       |
| updated_at              | 2023-11-08T04:58:04Z                                                       |
+-------------------------+----------------------------------------------------------------------------+
$ python3 pkggen.py
#####################################################################
# Run pre.py if an error occurs                                     #
#  - If an error occurs, run the pre.py script in advance           #
#    to create the openstack resource required to run this script.  #
# Run post.py when you finish tests                                 #
#  - When you no longer need these openstack resources              #
#    after testing, run post.py and delete them.                    #
# vnfc ids should be changed in heal req files by show vnf manually.#
#####################################################################
$ ll
...
drwxr-xr-x  6 stack stack     4096 Nov  5 23:46 contents/
-rw-r--r--  1 stack stack     6656 Nov  5 23:46 pkggen.py
-rw-rw-r--  1 stack stack 15772614 Nov  8 06:35 basic_lcms_max_individual_vnfc.zip
...

注意

此工具需要一些 Tacker 模块,因此需要在安装了 Tacker 的环境中运行它,例如使用 devstack 的 python 虚拟环境。如果已在 python 虚拟环境中安装了 Tacker,请在使用该工具之前激活它,如下所示。

$ source /opt/stack/data/venv/bin/activate
(venv) $ python3 pkggen.py

完成上述操作后,您将获得示例 VNF 包 basic_lcms_max_individual_vnfc.zip

注意

如果存在与正在生成的 zip 文件同名的文件,该工具将失败。 再次运行该工具以生成 zip 文件时,请删除或重命名旧的 zip 文件。

VNF 部署过程(作为虚拟机)

为了将 VNF 部署为 VM,有必要执行以下步骤。 CLI 命令的详细信息在 VNF 包管理使用 v2 Tacker 进行 VNF 生命周期管理 中描述。

1. 创建 VNF 包信息

执行以下 CLI 命令以创建 VNF 包。

$ openstack vnf package create

结果

+-------------------+-------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                           |
+-------------------+-------------------------------------------------------------------------------------------------+
| ID                | aeb0f04a-06a5-40d5-b5dd-73720a886da4                                                            |
| Links             | {                                                                                               |
|                   |     "self": {                                                                                   |
|                   |         "href": "/vnfpkgm/v1/vnf_packages/aeb0f04a-06a5-40d5-b5dd-73720a886da4"                 |
|                   |     },                                                                                          |
|                   |     "packageContent": {                                                                         |
|                   |         "href": "/vnfpkgm/v1/vnf_packages/aeb0f04a-06a5-40d5-b5dd-73720a886da4/package_content" |
|                   |     }                                                                                           |
|                   | }                                                                                               |
| Onboarding State  | CREATED                                                                                         |
| Operational State | DISABLED                                                                                        |
| Usage State       | NOT_IN_USE                                                                                      |
| User Defined Data | {}                                                                                              |
+-------------------+-------------------------------------------------------------------------------------------------+

之后,执行以下 CLI 命令并确认 VNF 包创建成功。

  • 确认“Onboarding State”为“CREATED”。

  • 确认“Operational State”为“DISABLED”。

  • 确认“Usage State”为“NOT_IN_USE”。

$ openstack vnf package show VNF_PACKAGE_ID \
  -c 'Onboarding State' -c 'Operational State' -c 'Usage State'

结果

+-------------------+------------+
| Field             | Value      |
+-------------------+------------+
| Onboarding State  | CREATED    |
| Operational State | DISABLED   |
| Usage State       | NOT_IN_USE |
+-------------------+------------+

2. 上传 VNF 包

执行以下 CLI 命令以上传 VNF 包。

$ openstack vnf package upload --path sample_csar.zip VNF_PACKAGE_ID

结果

Upload request for VNF package aeb0f04a-06a5-40d5-b5dd-73720a886da4 has been accepted.

之后,执行以下 CLI 命令并确认 VNF 包上传成功。

  • 确认“Onboarding State”为“ONBOARDED”。

  • 确认“Operational State”为“ENABLED”。

  • 确认“Usage State”为“NOT_IN_USE”。

  • 记下“VNFD ID”,因为您将在下一个“Create VNF Identifier”中使用它。

注意

“Onboarding State”的状态按“UPLOADING”、“PROCESSING”、“ONBOARDED”的顺序变化。

$ openstack vnf package show VNF_PACKAGE_ID \
  -c 'Onboarding State' -c 'Operational State' -c 'Usage State' -c 'VNFD ID'

结果

+-------------------+--------------------------------------+
| Field             | Value                                |
+-------------------+--------------------------------------+
| Onboarding State  | ONBOARDED                            |
| Operational State | ENABLED                              |
| Usage State       | NOT_IN_USE                           |
| VNFD ID           | 005b0c0a-45a7-45b7-85b7-f7457227f241 |
+-------------------+--------------------------------------+

3. 创建 VNF 标识符

执行以下 CLI 命令以创建 VNF 实例。

$ openstack vnflcm create VNFD_ID --os-tacker-api-version 2

结果

+-----------------------------+------------------------------------------------------------------------------------------------------------------+
| Field                       | Value                                                                                                            |
+-----------------------------+------------------------------------------------------------------------------------------------------------------+
| ID                          | 394575b8-50ae-43a2-9aa6-a7691ea10794                                                                             |
| Instantiation State         | NOT_INSTANTIATED                                                                                                 |
| Links                       | {                                                                                                                |
|                             |     "self": {                                                                                                    |
|                             |         "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/394575b8-50ae-43a2-9aa6-a7691ea10794"             |
|                             |     },                                                                                                           |
|                             |     "instantiate": {                                                                                             |
|                             |         "href": "http://127.0.0.1:9890/vnflcm/v2/vnf_instances/394575b8-50ae-43a2-9aa6-a7691ea10794/instantiate" |
|                             |     }                                                                                                            |
|                             | }                                                                                                                |
| VNF Configurable Properties |                                                                                                                  |
| VNF Instance Description    |                                                                                                                  |
| VNF Instance Name           |                                                                                                                  |
| VNF Product Name            | Sample VNF                                                                                                       |
| VNF Provider                | Company                                                                                                          |
| VNF Software Version        | 1.0                                                                                                              |
| VNFD ID                     | 005b0c0a-45a7-45b7-85b7-f7457227f241                                                                             |
| VNFD Version                | 1.0                                                                                                              |
+-----------------------------+------------------------------------------------------------------------------------------------------------------+

之后,执行以下 CLI 命令并确认 VNF 实例创建成功。

  • 确认 VNF 包的“Usage State”为“IN_USE”。

  • 确认 VNF 实例的“Instantiation State”为“NOT_INSTANTIATED”。

$ openstack vnf package show VNF_PACKAGE_ID -c 'Usage State'

结果

+-------------+--------+
| Field       | Value  |
+-------------+--------+
| Usage State | IN_USE |
+-------------+--------+
$ openstack vnflcm show VNF_INSTANCE_ID \
  -c 'Instantiation State' --os-tacker-api-version 2

结果

+---------------------+------------------+
| Field               | Value            |
+---------------------+------------------+
| Instantiation State | NOT_INSTANTIATED |
+---------------------+------------------+

4. 实例化 VNF

使用以下格式创建 sample_param_file.json 文件。 这是定义实例化请求参数的文件。 这些参数将在实例化请求的主体中设置。

必需参数

  • flavourId

  • additionalParams

注意

flavorId 的详细信息在 基于 ETSI NFV-SOL001 的 VNF 描述符 (VNFD) 中描述。

注意

additionalParams 是一个可以通过 KeyValuePairs 描述的参数。 通过在此参数中设置以下两个参数,可以使用 LCM 操作用户数据进行实例化。 对于 file_name.py 和 class_name,请设置 Prerequisites 中描述的文件名和类名。

  • lcm-operation-user-data: ./UserData/file_name.py

  • lcm-operation-user-data-class: class_name

可选参数

  • instantiationLevelId

  • extVirtualLinks

  • extManagedVirtualLinks

  • vimConnectionInfo

  • localizationLanguage

  • extensions

  • vnfConfigurableProperties

注意

只有在您拥有 VIM 管理 中描述的默认 VIM 时,才能跳过 vimConnectionInfo

注意

此操作可以指定 VNF 实例的 vimConnectionInfo。即使此操作指定与一个 VNF 实例关联的多个 vimConnectionInfo,也只会使用其中一个用于生命周期管理操作。

仅包含必需参数的参数文件

{
  "flavourId":"simple",
  "additionalParams": {
    "lcm-operation-user-data": "./UserData/userdata_standard.py",
    "lcm-operation-user-data-class": "StandardUserData"
  }
}

包含可选参数的参数文件

{
  "flavourId": "simple",
  "instantiationLevelId": "instantiation_level_1",
  "extVirtualLinks": [
    {
      "id": "279b0e12-2cc7-48d3-89dc-c58369841763",
      "vimConnectionId": "vim1",
      "resourceProviderId": "Company",
      "resourceId": "6a3aeb3a-fb8b-4d27-a5f1-4f148aeb303f",
      "extCps": [
        {
          "cpdId": "VDU1_CP1",
          "cpConfig": {
            "VDU1_CP1": {
              "parentCpConfigId": "a9d72e2b-9b2f-48b8-9ca0-217ab3ba6f33",
              "cpProtocolData": [
                {
                  "layerProtocol": "IP_OVER_ETHERNET",
                  "ipOverEthernet": {
                    "ipAddresses": [
                      {
                        "type": "IPV4",
                        "numDynamicAddresses": 1,
                        "subnetId": "649c956c-1516-4d92-a6bc-ce936d8a880d"
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      ],
      "extLinkPorts": [
        {
          "id": "2871f033-5e38-4f5f-af26-09c6390648a8",
          "resourceHandle": {
            "resourceId": "389ade82-7618-4b42-bc90-5ebbac0863cf"
          }
        }
      ]
    }
  ],
  "extManagedVirtualLinks": [
    {
      "id": "c381e923-6208-43ac-acc9-f3afec76535a",
      "vnfVirtualLinkDescId": "internalVL1",
      "vimConnectionId": "vim1",
      "resourceProviderId": "Company",
      "resourceId": "9a94da3c-239f-469d-8cf9-5313a4e3961a",
      "extManagedMultisiteVirtualLinkId": "f850522e-c124-4ed9-8027-f15abc22e21d"
    }
  ],
  "vimConnectionInfo": {
    "vim1": {
      "vimId": "4db40866-054f-472d-b559-811e5aa7195c",
      "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_3",
      "interfaceInfo": {
        "endpoint": "https:///identity/v3"
      },
      "accessInfo": {
        "username": "nfv_user",
        "region": "RegionOne",
        "password": "devstack",
        "project": "nfv",
        "projectDomain": "Default",
        "userDomain": "Default"
      },
      "extra": {
        "dummy-key": "dummy-val"
      }
    }
  },
  "localizationLanguage": "ja",
  "additionalParams": {
    "lcm-operation-user-data": "./UserData/userdata_standard.py",
    "lcm-operation-user-data-class": "StandardUserData"
  },
  "extensions": {
    "key": "value"
  },
  "vnfConfigurableProperties": {
    "key": "value"
  }
}

执行以下 CLI 命令以实例化 VNF 实例。

$ openstack vnflcm --os-tacker-api-version 2 instantiate VNF_INSTANCE_ID \
  ./sample_param_file.json

结果

Instantiate request for VNF Instance 394575b8-50ae-43a2-9aa6-a7691ea10794 has been accepted.

之后,执行以下 CLI 命令并确认 VNF 实例实例化成功。

  • 确认“Instantiation State”为“INSTANTIATED”。

$ openstack vnflcm show VNF_INSTANCE_ID \
  -c 'Instantiation State' --os-tacker-api-version 2

结果

+---------------------+--------------+
| Field               | Value        |
+---------------------+--------------+
| Instantiation State | INSTANTIATED |
+---------------------+--------------+

5. 终止 VNF

执行以下 CLI 命令以终止 VNF 实例。

$ openstack vnflcm terminate VNF_INSTANCE_ID --os-tacker-api-version 2

结果

Terminate request for VNF Instance '394575b8-50ae-43a2-9aa6-a7691ea10794' has been accepted.

之后,执行以下 CLI 命令并确认 VNF 实例终止成功。

  • 确认“Instantiation State”为“NOT_INSTANTIATED”。

$ openstack vnflcm show VNF_INSTANCE_ID \
  -c 'Instantiation State' --os-tacker-api-version 2

结果

+---------------------+------------------+
| Field               | Value            |
+---------------------+------------------+
| Instantiation State | NOT_INSTANTIATED |
+---------------------+------------------+

6. 删除 VNF 标识符

执行以下 CLI 命令以删除 VNF 实例。

$ openstack vnflcm delete VNF_INSTANCE_ID --os-tacker-api-version 2

结果

Vnf instance '394575b8-50ae-43a2-9aa6-a7691ea10794' is deleted successfully

之后,执行以下 CLI 命令并确认 VNF 实例删除成功。

  • 确认 VNF 包的“Usage State”为“NOT_IN_USE”。

  • 确认未找到 VNF 实例。

$ openstack vnf package show VNF_PACKAGE_ID -c 'Usage State'

结果

+-------------+------------+
| Field       | Value      |
+-------------+------------+
| Usage State | NOT_IN_USE |
+-------------+------------+
$ openstack vnflcm show VNF_INSTANCE_ID --os-tacker-api-version 2

结果

VnfInstance 394575b8-50ae-43a2-9aa6-a7691ea10794 not found.