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 |
+--------------------------------------+-----------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+