VNF 版本从 v1 升级到 v2

概述

Tacker 支持多版本 API:基于 NFV-SOL003 v2.6.1 的 v1 API 和基于 NFV-SOL003 v3.3.1 的 v2 API。由于这些版本之间缺乏兼容性,版本升级通常需要重新实例化 VNFs。

但是,通过使用 tacker-db-manage 命令,可以将 v1 API 表中的信息迁移到 v2 API 表中,从而允许在不重新实例化的情况下升级 VNF 版本。

本文档描述了如何使用 tacker-db-manage 命令升级 VNF。

迁移的目标表

要迁移的目标表

  • VnfInstanceV2

  • VnfLcmOpOccV2

要迁移的源表

  • vnf

  • vnf_attribute

  • vnf_instances

  • vnf_instantiated_info

  • vnf_lcm_op_occs

先决条件

在迁移过程中,有一个流程用于检索与 VNF 关联的 VIM 的信息。此流程所需的 keystone 身份验证信息必须从环境变量中提供。所需的环境变量如下所示。

  • OS_AUTH_URL

  • OS_PASSWORD

  • OS_PROJECT_DOMAIN_ID

  • OS_PROJECT_DOMAIN_NAME

  • OS_PROJECT_NAME

  • OS_USER_DOMAIN_ID

  • OS_USER_DOMAIN_NAME

  • OS_USERNAME

迁移方法

以下命令可用于将指定的 VNF 从 v1 升级到 v2,且在现有的 v1 表上不留下任何与 VNF 相关的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --vnf-id <uuid_of_target_vnf>

以下命令可用于将指定的 VNF 从 v1 升级到 v2,并在现有的 v1 表上留下与 VNF 相关的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --vnf-id <uuid_of_target_vnf> --keep-orig

以下命令可用于将所有 VNF 从 v1 升级到 v2,且在现有的 v1 表上不留下任何与 VNF 相关的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --all

以下命令可用于将所有 VNF 从 v1 升级到 v2,并在现有的 v1 表上留下与 VNF 相关的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --all --keep-orig

在使用 --keep-orig 选项后,可以使用以下命令完成迁移。此命令删除现有 v1 表上为指定 VNF留下的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --vnf-id <uuid_of_target_vnf> \
--mark-delete --api-ver v1

注意

此命令只是将“deleted”字段的值更新为 1。您可以通过执行带有 purge_deleted 子命令的 tacker-db-manage 命令来完全删除记录。

在使用 --keep-orig 选项后,可以使用以下命令回滚迁移。此命令删除 v2 表上的指定 VNF 的记录。

$ tacker-db-manage --config-file /path/to/tacker.conf \
--config-file /path/to/plugin/config.ini migrate-to-v2 --vnf-id <uuid_of_target_vnf> \
--mark-delete --api-ver v2

注意

v2 表中没有“deleted”标志。因此,此命令将完全删除 v2 表中的记录。

迁移示例

以下显示了将指定的 VNF 升级流程作为一个示例。

确认 v1 API 上实例化 VNFs 的存在

$ openstack vnflcm list
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| ID                                   | VNF Instance Name     | Instantiation State | VNF Provider | VNF Software Version | VNF Product Name | VNFD ID                              |
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| ab358004-739b-4aa9-8d27-734208f7c625 | test_vnf              | INSTANTIATED        | Sample       | 1.0                  | Sample           | 116aaf63-0b7c-4b1d-a2d4-af73df86787d |
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+

读取环境变量

$ source sample.rc

执行迁移命令

$ tacker-db-manage --config-file /etc/tacker/tacker.conf --config-file /etc/tacker/api-paste.ini migrate-to-v2 --vnf-id ab358004-739b-4aa9-8d27-734208f7c625

注意

验证是否返回提示。

确认 v1 API 上没有 VNF

$ openstack vnflcm list

注意

验证没有显示 VNF。

确认 v2 API 上 VNFs 的存在

$ openstack vnflcm list --os-tacker-api-version 2
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| ID                                   | VNF Instance Name     | Instantiation State | VNF Provider | VNF Software Version | VNF Product Name | VNFD ID                              |
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| ab358004-739b-4aa9-8d27-734208f7c625 | test_vnf              | INSTANTIATED        | Sample       | 1.0                  | Sample           | 116aaf63-0b7c-4b1d-a2d4-af73df86787d |
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+