VNF Package Generation Tool¶
For upload VNF Package, it is required to provide a zip file
via openstack
command.
Here is an example of uploading a VNF Package named as
sample_vnf_package_csar.zip
with a zip file.
$ openstack vnf package upload \
--path ./sample_vnf_package_csar/sample_vnf_package_csar.zip \
6e6b7a6d-0ebe-4085-96c2-b34269d837f9
You can prepare a zip file using a dedicated tool.
Prerequisites¶
This tool uses the following networks:
net0
networksubnet0
subnetwork for net0net1
networksubnet1
subnetwork for net1net_mgmt
network
These networks are created by default when you install Tacker via devstack. If these networks do not exist in your OpenStack environment, please create them manually before running this tool.
You can check the networks with the following command.
$ openstack net list
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
| 348d1921-0cca-4730-815a-cc58c503ee65 | public | 64290109-665b-442f-83d4-0a98b8301af8, d963ddfd-3ab1-4320-9efd-311049d92575 |
| 3b069dc1-4247-4063-89dd-0898efa04384 | private | 69f64379-e72f-433d-be01-ff6723e8e955, 9e0c260c-78f7-4f15-9157-40f823433449 |
| 41ebfff9-df23-4690-bef9-a0e76f618947 | net1 | e24618bb-c7bc-4771-a9d8-eba53db3c0ae |
| ab598736-9fc9-470d-b894-b0a4d2f9d46c | lb-mgmt-net | b21032be-c681-46ac-b249-8d3be320f830 |
| d9fc27d5-d881-4cf2-9023-d9cff9df64ed | k8s-pod-net | cd4269f6-9152-4707-95d4-825b722edcf0 |
| dbe64c96-1334-4983-9f60-a90905af6ff0 | net0 | 23737d05-5e3f-4af8-8c4d-83221f794787 |
| eeb398f0-818b-4c75-9573-8f50fa5de501 | net_mgmt | bfa8e9d2-039d-4e59-85a2-8a9801d90cfd |
| ef55ac46-bb38-4abe-bdf7-2b9d3be02266 | k8s-service-net | 0d98b3b8-a6fd-4044-8acf-f0630755f956 |
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
$ openstack subnet list
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
| ID | Name | Network | Subnet |
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
| 0d98b3b8-a6fd-4044-8acf-f0630755f956 | k8s-service-subnet-IPv4 | ef55ac46-bb38-4abe-bdf7-2b9d3be02266 | 10.0.0.128/26 |
| 23737d05-5e3f-4af8-8c4d-83221f794787 | subnet0 | dbe64c96-1334-4983-9f60-a90905af6ff0 | 10.10.0.0/24 |
| 64290109-665b-442f-83d4-0a98b8301af8 | ipv6-public-subnet | 348d1921-0cca-4730-815a-cc58c503ee65 | 2001:db8::/64 |
| 69f64379-e72f-433d-be01-ff6723e8e955 | private-subnet | 3b069dc1-4247-4063-89dd-0898efa04384 | 10.0.0.0/26 |
| 9e0c260c-78f7-4f15-9157-40f823433449 | ipv6-private-subnet | 3b069dc1-4247-4063-89dd-0898efa04384 | fd5f:5cb9:4f13::/64 |
| b21032be-c681-46ac-b249-8d3be320f830 | lb-mgmt-subnet | ab598736-9fc9-470d-b894-b0a4d2f9d46c | 192.168.0.0/24 |
| bfa8e9d2-039d-4e59-85a2-8a9801d90cfd | subnet_mgmt | eeb398f0-818b-4c75-9573-8f50fa5de501 | 192.168.120.0/24 |
| cd4269f6-9152-4707-95d4-825b722edcf0 | k8s-pod-subnet-IPv4 | d9fc27d5-d881-4cf2-9023-d9cff9df64ed | 10.0.0.64/26 |
| d963ddfd-3ab1-4320-9efd-311049d92575 | public-subnet | 348d1921-0cca-4730-815a-cc58c503ee65 | 172.24.4.0/24 |
| e24618bb-c7bc-4771-a9d8-eba53db3c0ae | subnet1 | 41ebfff9-df23-4690-bef9-a0e76f618947 | 10.10.1.0/24 |
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
Usage¶
By specifying the VIM Type as an option, a sample of the corresponding VNF Package for Tacker v2 API is generated.
This tool supports the following VIM Types:
ETSINFV.OPENSTACK_KEYSTONE.V_3
ETSINFV.KUBERNETES.V_1
ETSINFV.HELM.V_3
Refer to help message for the usage.
Note
In this document, TACKER_ROOT
is the root of tacker’s repository on
the server.
$ cd TACKER_ROOT/tools
$ python3 gen_vnf_pkg.py -h
usage: gen_vnf_pkg.py [-h] -t VIM_TYPE [-c VIM_CONF] [--vim-id VIM_ID] [--vim-name VIM_NAME]
Create VNF Package zip and parameter files
options:
-h, --help show this help message and exit
-t VIM_TYPE, --type VIM_TYPE
vim type (lowercase is also available)
* ETSINFV.OPENSTACK_KEYSTONE.V_3
* ETSINFV.KUBERNETES.V_1
* ETSINFV.HELM.V_3
-c VIM_CONF, --vim-config VIM_CONF
Path of VIM config file for specifying the VIM
--vim-id VIM_ID VIM ID (Only for OpenStack and overwrittenby `--vim-config`)
--vim-name VIM_NAME Name of VIM (Only for OpenStack and overwrittenby `--vim-config`)
Note
This tool requires some Tacker modules, so you need to run it in an environment where Tacker is installed.
You can run the tool from virtual environment if you’ve setup Tacker with devstack. Activate it as follows before using the tool.
$ source ~/data/venv/bin/activate
(venv) $ python3 $TACKER_ROOT/tools/gen_vnf_pkg.py -h
Or run the tool from tox which is defined as tox’s environment
gen-pkg
without devstack environment.
$ tox -e gen-pkg -- -h
Examples of output for three types showing generated zip and request files, and list of file names included in the generated zip file.
$ python3 gen_vnf_pkg.py -t ETSINFV.OPENSTACK_KEYSTONE.V_3
Generating package and request files in './output/userdata_standard/' ...
VNF package: userdata_standard.zip
Request files: create_req, terminate_req, instantiate_req, scale_out_req, scale_in_req, heal_req, change_ext_conn_req, update_req
Contents of the VNF package:
File Name Modified Size
BaseHOT/ 2024-08-28 05:36:20 0
Definitions/ 2025-01-29 10:58:48 0
Files/ 2025-01-29 10:58:48 0
Scripts/ 2024-08-28 05:36:20 0
TOSCA-Metadata/ 2024-08-28 05:36:20 0
UserData/ 2025-01-29 10:58:48 0
BaseHOT/simple/ 2024-08-28 05:36:20 0
BaseHOT/simple/nested/ 2024-08-28 05:36:20 0
BaseHOT/simple/sample3.yaml 2024-08-28 05:36:20 1694
BaseHOT/simple/nested/VDU1.yaml 2024-08-28 05:36:20 1179
BaseHOT/simple/nested/VDU2.yaml 2024-08-28 05:36:20 1725
UserData/userdata_standard.py 2025-01-29 10:58:48 20805
Files/images/ 2025-01-29 10:58:48 0
Files/images/cirros-0.5.2-x86_64-disk.img 2025-01-29 10:58:48 16300544
Scripts/coordinate_vnf.py 2024-08-28 05:36:20 2785
Scripts/sample_script.py 2024-08-28 05:36:20 1964
Definitions/etsi_nfv_sol001_common_types.yaml 2025-01-29 10:58:48 9093
Definitions/etsi_nfv_sol001_vnfd_types.yaml 2025-01-29 10:58:48 67046
Definitions/v2_sample3_types.yaml 2025-01-29 10:58:48 1630
Definitions/v2_sample3_top.vnfd.yaml 2025-01-29 10:58:48 887
Definitions/v2_sample3_df_simple.yaml 2025-01-29 10:58:48 10149
TOSCA-Metadata/TOSCA.meta 2024-08-28 05:36:20 133
$ python3 gen_vnf_pkg.py -t ETSINFV.KUBERNETES.V_1
Generating package and request files in './output/test_instantiate_cnf_resources/' ...
VNF package: test_instantiate_cnf_resources.zip
Request files: create_req, max_sample_instantiate, max_sample_terminate, max_sample_scale_out, max_sample_scale_in, max_sample_heal
Contents of the VNF package:
File Name Modified Size
Definitions/ 2025-01-29 11:02:26 0
Files/ 2024-08-28 05:36:20 0
Scripts/ 2024-08-28 05:36:20 0
TOSCA-Metadata/ 2024-12-19 07:57:02 0
Files/kubernetes/ 2024-12-19 07:57:02 0
Files/kubernetes/limit-range.yaml 2024-08-28 05:36:20 165
Files/kubernetes/storage-class_pv_pvc.yaml 2024-08-28 05:36:20 697
Files/kubernetes/job.yaml 2024-12-19 07:57:02 554
Files/kubernetes/controller-revision.yaml 2024-08-28 05:36:20 127
Files/kubernetes/subject-access-review.yaml 2024-08-28 05:36:20 188
Files/kubernetes/replicaset_service_secret.yaml 2024-08-28 05:36:20 950
Files/kubernetes/bindings.yaml 2024-08-28 05:36:20 150
Files/kubernetes/namespace.yaml 2024-08-28 05:36:20 54
Files/kubernetes/deployment_fail_test.yaml 2024-08-28 05:36:20 537
Files/kubernetes/statefulset.yaml 2024-08-28 05:36:20 825
Files/kubernetes/config-map.yaml 2024-08-28 05:36:20 120
Files/kubernetes/horizontal-pod-autoscaler.yaml 2024-08-28 05:36:20 280
Files/kubernetes/persistent-volume-0.yaml 2024-08-28 05:36:20 281
Files/kubernetes/token-review.yaml 2024-08-28 05:36:20 291
Files/kubernetes/persistent-volume-1.yaml 2024-08-28 05:36:20 285
Files/kubernetes/pod-template.yaml 2024-12-19 07:57:02 923
Files/kubernetes/deployment.yaml 2024-08-28 05:36:20 536
Files/kubernetes/local-subject-access-review.yaml 2024-08-28 05:36:20 224
Files/kubernetes/self-subject-access-review_and_self-subject-rule-review.yaml 2024-08-28 05:36:20 275
Files/kubernetes/resource-quota.yaml 2024-08-28 05:36:20 158
Files/kubernetes/clusterrole_clusterrolebinding_SA.yaml 2024-08-28 05:36:20 578
Files/kubernetes/storage-class.yaml 2024-08-28 05:36:20 153
Files/kubernetes/role_rolebinding_SA.yaml 2024-08-28 05:36:20 559
Files/kubernetes/multiple_yaml_priority-class.yaml 2024-08-28 05:36:20 155
Files/kubernetes/pod.yaml 2024-12-19 07:57:02 291
Files/kubernetes/multiple_yaml_lease.yaml 2024-08-28 05:36:20 155
Files/kubernetes/daemon-set.yaml 2024-08-28 05:36:20 417
Files/kubernetes/multiple_yaml_network-policy.yaml 2024-08-28 05:36:20 277
Scripts/sample_script.py 2024-08-28 05:36:20 1964
Definitions/etsi_nfv_sol001_common_types.yaml 2025-01-29 11:02:26 9093
Definitions/sample_cnf_types.yaml 2025-01-29 11:02:26 1538
Definitions/etsi_nfv_sol001_vnfd_types.yaml 2025-01-29 11:02:26 67046
Definitions/sample_cnf_df_simple.yaml 2025-01-29 11:02:26 6771
Definitions/sample_cnf_top.vnfd.yaml 2025-01-29 11:02:26 887
TOSCA-Metadata/TOSCA.meta 2024-12-19 07:57:02 4661
$ python3 gen_vnf_pkg.py -t ETSINFV.HELM.V_3
Generating package and request files into './output/helm_instantiate/' ...
VNF package: test_helm_instantiate.zip
Request files: create_req, helm_instantiate_req, helm_terminate_req, helm_scale_out, helm_scale_in, helm_heal
Contents of the VNF package:
File Name Modified Size
Definitions/ 2025-01-29 11:11:48 0
Files/ 2024-08-28 05:36:20 0
Scripts/ 2024-08-28 05:36:20 0
TOSCA-Metadata/ 2024-08-28 05:36:20 0
Files/kubernetes/ 2024-08-28 05:36:20 0
Files/kubernetes/test-chart/ 2024-08-28 05:36:20 0
Files/kubernetes/test-chart-0.1.0.tgz 2024-08-28 05:36:20 2882
Files/kubernetes/test-chart/templates/ 2024-08-28 05:36:20 0
Files/kubernetes/test-chart/values.yaml 2024-08-28 05:36:20 1409
Files/kubernetes/test-chart/.helmignore 2024-08-28 05:36:20 349
Files/kubernetes/test-chart/Chart.yaml 2024-08-28 05:36:20 125
Files/kubernetes/test-chart/templates/NOTES.txt 2024-08-28 05:36:20 1554
Files/kubernetes/test-chart/templates/serviceaccount.yaml 2024-08-28 05:36:20 326
Files/kubernetes/test-chart/templates/deployment_vdu2.yaml 2024-08-28 05:36:20 1519
Files/kubernetes/test-chart/templates/deployment_vdu1.yaml 2024-08-28 05:36:20 1598
Files/kubernetes/test-chart/templates/_helpers.tpl 2024-08-28 05:36:20 1812
Files/kubernetes/test-chart/templates/service.yaml 2024-08-28 05:36:20 370
Scripts/sample_script.py 2024-08-28 05:36:20 1964
Definitions/etsi_nfv_sol001_common_types.yaml 2025-01-29 11:11:48 9093
Definitions/sample_cnf_types.yaml 2025-01-29 11:11:48 1538
Definitions/etsi_nfv_sol001_vnfd_types.yaml 2025-01-29 11:11:48 67046
Definitions/sample_cnf_df_simple.yaml 2025-01-29 11:11:48 4770
Definitions/sample_cnf_top.vnfd.yaml 2025-01-29 11:11:48 887
TOSCA-Metadata/TOSCA.meta 2024-08-28 05:36:20 285
This tool generates a VNF Package zip file and a sample request file for each VIM Type under the output directory.
$ ls output/
helm_instantiate test_instantiate_cnf_resources userdata_standard
$ ls output/userdata_standard/
change_ext_conn_req create_req heal_req instantiate_req scale_in_req
scale_out_req terminate_req update_req userdata_standard.zip
$ ls output/test_instantiate_cnf_resources/
create_req max_sample_heal max_sample_instantiate max_sample_scale_in
max_sample_scale_out max_sample_terminate test_instantiate_cnf_resources.zip
$ ls output/helm_instantiate
create_req helm_heal helm_instantiate_req helm_scale_in helm_scale_out
helm_terminate_req test_helm_instantiate.zip
For the following request files, endpoint
, ssl_ca_cert
and
bearer_token
need to be changed by your own k8s cluster information,
or replaced with params VIM config file specified with -c
option.
max_sample_instantiate for ETSINFV.KUBERNETES.V_1
helm_instantiate_req for ETSINFV.HELM.V_3
Note
ssl_ca_cert
needs to be on one line as shown below.
"ssl_ca_cert": "-----BEGIN CERTIFICATE-----\nMIIDB...BH\n3bkddspNikO1\n-----END CERTIFICATE-----\n"
Please note that line breaks are changed to ‘\n
’.
You can also set your own k8s cluster information to auth_url
,
bearer_token
, and ssl_ca_cert
in gen_vnf_pkg.py before running this
tool.
Note
If you use a VIM that is already registered, modify vimConnectionInfo as follows.
"vimConnectionInfo": {
"vim1": {
"vimId": "REGISTERED_VIM_ID",
"vimType": "VIM_TYPE"
}
}
For the following request files, vnfcInstanceId
need
to be changed with target vnfcInfo id.
heal_req for ETSINFV.OPENSTACK_KEYSTONE.V_3
max_sample_heal for ETSINFV.KUBERNETES.V_1
helm_heal for ETSINFV.HELM.V_3
And for the following request file, vnfdId
need
to be changed with target VNFD id.
update_req for ETSINFV.OPENSTACK_KEYSTONE.V_3
Note
This tool generates a zip file and a request file based on the following used in FT as a sample VNF Package.
ETSINFV.OPENSTACK_KEYSTONE.V_3: samples/tests/functional/sol_v2_common/userdata_standard
ETSINFV.KUBERNETES.V_1: samples/tests/functional/sol_kubernetes_v2/test_instantiate_cnf_resources
ETSINFV.HELM.V_3: samples/tests/functional/sol_kubernetes_v2/test_helm_instantiate
Please note that if FT is changed, the output of this tool may also change.