e3e3fc5163
This patch deprecates the Legacy APIs excluding VIM feature. * Emit a warning log when a Deprecated API is executed. * Add warning block to api-refs and docs related with deprecated Legacy feature. Implements: blueprint deprecate-legacy-apis Change-Id: Ie378d1000089401e3a0854b209654182da09e272
40 KiB
40 KiB
VNF Descriptor (VNFD) Management
Warning
VNF Descriptor (VNFD) Management commands are deprecated and will be removed in the first major release after the Tacker server version 9.0.0 (2023.1 Antelope release).
The behavioural and deployment information of a VNF in Tacker is defined in a template known as VNF Descriptor (VNFD). The template is based on TOSCA standards and is written in YAML.
This document describes how to manage VNFD with CLI in Tacker.
Prerequisites
The following packages should be installed:
- tacker
- python-tackerclient
CLI reference for VNFD Management
1. Create VNF Descriptor
Create tosca-vnfd-hello-world.yaml
file:
Create a VNFD:
$ openstack vnf descriptor create --vnfd-file \
tosca-vnfd-hello-world.yaml <NAME: tosca-vnfd-hello-world>
Result:
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 03:28:04.171956 |
| description | Demo example |
| id | 57f46bdb-c5b5-448e-bf98-df3d7d94038e |
| name | tosca-vnfd-hello-world |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Help:
$ openstack vnf descriptor create --help
usage: openstack vnf descriptor create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
--vnfd-file VNFD_FILE
[--description DESCRIPTION]
NAME
Create a new VNFD
positional arguments:
NAME Name for VNFD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnfd-file VNFD_FILE
YAML file with VNFD parameters
--description DESCRIPTION
Set a description for the VNFD
2. List VNF Descriptors
$ openstack vnf descriptor list
Result:
+--------------------------------------+------------------------+-----------------+--------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+------------------------+-----------------+--------------+
| 57f46bdb-c5b5-448e-bf98-df3d7d94038e | tosca-vnfd-hello-world | onboarded | Demo example |
+--------------------------------------+------------------------+-----------------+--------------+
Help:
$ openstack vnf descriptor list --help
usage: openstack vnf descriptor list [-h] [-f {csv,json,table,value,yaml}]
[-c COLUMN]
[--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>]
[--fit-width] [--print-empty]
[--sort-column SORT_COLUMN]
[--template-source TEMPLATE_SOURCE]
List (VNFD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNFD with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
3. Show VNF Descriptor
$ openstack vnf descriptor show <VNFD: tosca-vnfd-hello-world>
Result:
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 03:28:04 |
| description | Demo example |
| id | 57f46bdb-c5b5-448e-bf98-df3d7d94038e |
| name | tosca-vnfd-hello-world |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Help:
$ openstack vnf descriptor show --help
usage: openstack vnf descriptor show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX] [--max-width <integer>]
[--fit-width] [--print-empty]
<VNFD>
Display VNFD details
positional arguments:
<VNFD> VNFD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show VNF Descriptor template
$ openstack vnf descriptor template show <VNFD: tosca-vnfd-hello-world>
Result:
+------------+---------------------------------------------------------------------------+
| Field | Value |
+------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "Demo example", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd" |
| | }, |
| | "topology_template": { |
| | "node_templates": { |
| | "CP1": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP2": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 1 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL2" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "CP3": { |
| | "properties": { |
| | "anti_spoofing_protection": false, |
| | "order": 2 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL3" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU1" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "capabilities": { |
| | "nfv_compute": { |
| | "properties": { |
| | "disk_size": "1 GB", |
| | "mem_size": "512 MB", |
| | "num_cpus": 1 |
| | } |
| | } |
| | }, |
| | "properties": { |
| | "availability_zone": "nova", |
| | "config": "param0: key1\nparam1: key2\n", |
| | "image": "cirros-0.5.2-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VL1": { |
| | "properties": { |
| | "network_name": "net_mgmt", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": "net0", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL3": { |
| | "properties": { |
| | "network_name": "net1", |
| | "vendor": "Tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
+------------+---------------------------------------------------------------------------+
Help:
$ openstack vnf descriptor template show --help
usage: openstack vnf descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<VNFD>
Display VNFD Template details
positional arguments:
<VNFD> VNFD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete VNF Descriptors
$ openstack vnf descriptor delete <VNFD: tosca-vnfd-hello-world>
Result:
All specified vnfd(s) deleted successfully
Help:
$ openstack vnf descriptor delete --help
usage: openstack vnf descriptor delete [-h] <VNFD> [<VNFD> ...]
Delete VNFD(s).
positional arguments:
<VNFD> VNFD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit