VNF version upgrading from v1 to v2

Overview

Tacker supports multi-version APIs: v1 API based on NFV-SOL003 v2.6.1 and v2 API based on NFV-SOL003 v3.3.1. Because of the lack of compatibility between those versions, version upgrading usually requires re-instantiation of the VNFs.

However, by using the tacker-db-manage command, the information on the v1 API table can be migrated to the v2 API table, which allows VNF version upgrades without re-instantiation.

This document describes how to upgrade VNF using the tacker-db-manage command.

Target tables of migration

Target tables to be migrated:

  • VnfInstanceV2

  • VnfLcmOpOccV2

Source tables to be migrated:

  • vnf

  • vnf_attribute

  • vnf_instances

  • vnf_instantiated_info

  • vnf_lcm_op_occs

Pre-requisites

There is a process to retrieve information about the VIM associated with the VNF in the migration. The authentication information of the keystone needed for this process must be provided from the environment variables. The required environment variables are shown below.

  • 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

The method of migration

The following command can be used to upgrade a specified VNF from v1 to v2, without leaving any records related to the VNF on the existing v1 table.

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

The following command can be used to upgrade a specified VNF from v1 to v2, leaving records related to the VNF on the existing v1 table.

$ 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

The following command can be used to upgrade all VNFs from v1 to v2, without leaving any records related to the VNF on the existing v1 table.

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

The following command can be used to upgrade all VNFs from v1 to v2, leaving records related to the VNF on the existing v1 table.

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

To complete the migration after using the --keep-orig option, the following command can be used. This command deletes the records for a specified VNF left on the existing v1 table.

$ 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

Note

This command just updates the value of the “deleted” field to 1. You can delete records completely by executing the tacker-db-manage command with subcommand of purge_deleted.

To rollback the migration after using the --keep-orig option, the following command can be used. This command deletes the records for a specified VNF on the v2 table.

$ 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

Note

There are no “deleted” flag in v2 tables. Therefore this command deletes records in v2 tables completely.

Examples of migration

Below shows the flow of upgrading a specified VNF as an example.

Confirm the existence of instantiated VNFs on v1 API:

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

Read the environment variables:

$ source sample.rc

Execute the migration command:

$ 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

Note

Verify that the prompt is returned.

Confirm that there is no VNF on v1 API:

$ openstack vnflcm list

Note

Verify that no VNF is displayed.

Confirm the existence of VNFs on v2 API:

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