Merge "Add CLI docs for ETSI-based and Legacy Tacker"

This commit is contained in:
Zuul 2020-09-21 15:57:20 +00:00 committed by Gerrit Code Review
commit 100130beb0
13 changed files with 4528 additions and 8 deletions

View File

@ -0,0 +1,282 @@
========================
VNF Lifecycle Management
========================
This document describes how to manage VNF Lifecycle with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`cli-legacy-vim`.
CLI Reference for VNF Lifecycle Management
------------------------------------------
.. TODO(yoshito-ito): add heal CLI reference.
.. TODO(yoshito-ito): add scale CLI reference.
1. Create VNF Identifier
^^^^^^^^^^^^^^^^^^^^^^^^
The `<VNFD_ID>` should be replaced with the VNFD ID in VNF Package. In the
following sample, `b1bb0ce7-ebca-4fa7-95ed-4840d70a1177` is used.
.. code-block:: console
$ openstack vnflcm create <VNFD_ID>
Result:
.. code-block:: console
+--------------------------+----------------------------------------------------------------------------------------------+
| Field | Value |
+--------------------------+----------------------------------------------------------------------------------------------+
| ID | 725f625e-f6b7-4bcd-b1b7-7184039fde45 |
| Instantiation State | NOT_INSTANTIATED |
| Links | instantiate=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/instantiate, |
| | self=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45 |
| VNF Instance Description | None |
| VNF Instance Name | None |
| VNF Product Name | Sample VNF |
| VNF Provider | Company |
| VNF Software Version | 1.0 |
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 |
| VNFD Version | 1.0 |
+--------------------------+----------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnflcm create --help
usage: openstack vnflcm create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--name <vnf-instance-name>]
[--description <vnf-instance-description>]
[--I <param-file>]
<vnfd-id>
Create a new VNF Instance
positional arguments:
<vnfd-id> Identifier that identifies the VNFD which defines the
VNF instance to be created.
optional arguments:
-h, --help show this help message and exit
--name <vnf-instance-name>
Name of the VNF instance to be created.
--description <vnf-instance-description>
Description of the VNF instance to be created.
--I <param-file> Instantiate VNF subsequently after it's creation.
Specify instantiate request parameters in a json file.
2. Instantiate VNF
^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnflcm instantiate <ID: 725f625e-f6b7-4bcd-b1b7-7184039fde45> \
./sample_param_file.json
Result:
.. code-block:: console
Instantiate request for VNF Instance 725f625e-f6b7-4bcd-b1b7-7184039fde45 has been accepted.
Help:
.. code-block:: console
$ openstack vnflcm instantiate --help
usage: openstack vnflcm instantiate [-h] <vnf-instance> <param-file>
Instantiate a VNF Instance
positional arguments:
<vnf-instance> VNF instance ID to instantiate
<param-file> Specify instantiate request parameters in a json file.
optional arguments:
-h, --help show this help message and exit
4. List VNF
^^^^^^^^^^^
.. code-block:: console
$ openstack vnflcm list
Result:
.. code-block:: console
+--------------------------------------+-------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| ID | VNF Instance Name | Instantiation State | VNF Provider | VNF Software Version | VNF Product Name | VNFD ID |
+--------------------------------------+-------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
| 725f625e-f6b7-4bcd-b1b7-7184039fde45 | None | INSTANTIATED | Company | 1.0 | Sample VNF | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 |
+--------------------------------------+-------------------+---------------------+--------------+----------------------+------------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnflcm list --help
usage: openstack vnflcm 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]
List VNF Instance
optional arguments:
-h, --help show this help message and exit
5. Show VNF
^^^^^^^^^^^
.. code-block:: console
$ openstack vnflcm show <ID: 725f625e-f6b7-4bcd-b1b7-7184039fde45>
Result:
.. code-block:: console
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ID | 725f625e-f6b7-4bcd-b1b7-7184039fde45 |
| Instantiated Vnf Info | , extCpInfo='[]', flavourId='simple', vnfState='STARTED', vnfVirtualLinkResourceInfo='[{'id': '0163cea3-af88-4ef8-ae43-ef3e5e7e827d', |
| | 'vnfVirtualLinkDescId': 'internalVL1', 'networkResource': {'resourceId': '073c74b9-670d-4764-a933-6fe4f2f991c1', 'vimLevelResourceType': |
| | 'OS::Neutron::Net'}, 'vnfLinkPorts': [{'id': '3b667826-336c-4919-889e-e6c63d959ee6', 'resourceHandle': {'resourceId': |
| | '5d3255b5-e9fb-449f-9c5f-5242049ce2fa', 'vimLevelResourceType': 'OS::Neutron::Port'}, 'cpInstanceId': '3091f046-de63-44c8-ad23-f86128409b27'}]}]', |
| | vnfcResourceInfo='[{'id': '2a66f545-c90d-49e7-8f17-fb4e57b19c92', 'vduId': 'VDU1', 'computeResource': {'resourceId': |
| | '6afc547d-0e19-46fc-b171-a3d9a0a80513', 'vimLevelResourceType': 'OS::Nova::Server'}, 'storageResourceIds': [], 'vnfcCpInfo': [{'id': |
| | '3091f046-de63-44c8-ad23-f86128409b27', 'cpdId': 'CP1', 'vnfExtCpId': None, 'vnfLinkPortId': '3b667826-336c-4919-889e-e6c63d959ee6'}]}]' |
| Instantiation State | INSTANTIATED |
| Links | heal=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/heal, self=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45, |
| | terminate=href=/vnflcm/v1/vnf_instances/725f625e-f6b7-4bcd-b1b7-7184039fde45/terminate |
| VIM Connection Info | [] |
| VNF Instance Description | None |
| VNF Instance Name | None |
| VNF Product Name | Sample VNF |
| VNF Provider | Company |
| VNF Software Version | 1.0 |
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 |
| VNFD Version | 1.0 |
+--------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnflcm show --help
usage: openstack vnflcm show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<vnf-instance>
Display VNF instance details
positional arguments:
<vnf-instance> VNF instance ID to display
optional arguments:
-h, --help show this help message and exit
6. Terminate VNF
^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnflcm terminate <ID: 725f625e-f6b7-4bcd-b1b7-7184039fde45>
Result:
.. code-block:: console
Terminate request for VNF Instance '725f625e-f6b7-4bcd-b1b7-7184039fde45' has been accepted.
Help:
.. code-block:: console
$ openstack vnflcm terminate --help
usage: openstack vnflcm terminate [-h] [--termination-type <termination-type>]
[--graceful-termination-timeout <graceful-termination-timeout>]
[--D]
<vnf-instance>
Terminate a VNF instance
positional arguments:
<vnf-instance> VNF instance ID to terminate
optional arguments:
-h, --help show this help message and exit
--termination-type <termination-type>
Termination type can be 'GRACEFUL' or 'FORCEFUL'.
Default is 'GRACEFUL'
--graceful-termination-timeout <graceful-termination-timeout>
This attribute is only applicable in case of graceful
termination. It defines the time to wait for the VNF
to be taken out of service before shutting down the
VNF and releasing the resources. The unit is seconds.
--D Delete VNF Instance subsequently after it's
termination
7. Delete VNF Identifier
^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnflcm delete <ID: 725f625e-f6b7-4bcd-b1b7-7184039fde45>
Result:
.. code-block:: console
Vnf instance '725f625e-f6b7-4bcd-b1b7-7184039fde45' deleted successfully
Help:
.. code-block:: console
$ openstack vnflcm delete --help
usage: openstack vnflcm delete [-h] <vnf-instance> [<vnf-instance> ...]
Delete VNF Instance(s)
positional arguments:
<vnf-instance> VNF instance ID(s) to delete
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,322 @@
======================
VNF Package Management
======================
This document describes how to manage VNF Package with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI Reference for VNF Package Management
----------------------------------------
.. TODO(yoshito-ito): add Fetch VNF Package artifacts CLI reference.
1. Create VNF Package Info
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package create
Result:
.. code-block:: console
+-------------------+----------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------------------------------------------------------+
| ID | e712a702-741f-4093-a971-b3ad69411ac1 |
| Links | packageContent=href=/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1/package_content, |
| | self=href=s/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1 |
| Onboarding State | CREATED |
| Operational State | DISABLED |
| Usage State | NOT_IN_USE |
| User Defined Data | |
+-------------------+----------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf package create --help
usage: openstack vnf package create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--user-data <key=value>]
Create a new VNF Package
optional arguments:
-h, --help show this help message and exit
--user-data <key=value>
User defined data for the VNF package (repeat option
to set multiple user defined data)
2. Upload VNF Package
^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package upload --path sample_csar.zip \
<ID: e712a702-741f-4093-a971-b3ad69411ac1>
Result:
.. code-block:: console
Upload request for VNF package e712a702-741f-4093-a971-b3ad69411ac1 has been accepted.
Help:
.. code-block:: console
$ openstack vnf package upload --help
usage: openstack vnf package upload [-h] (--path <file> | --url <Uri>)
[--user-name <user-name>]
[--password <password>]
<vnf-package>
Upload VNF Package
positional arguments:
<vnf-package> VNF package ID
optional arguments:
-h, --help show this help message and exit
--path <file> Upload VNF CSAR package from local file
--url <Uri> Uri of the VNF package content
--user-name <user-name>
User name for authentication
--password <password>
Password for authentication
3. Fetch VNF Package
^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package download --file <FILE: download_sample_csar.zip> \
<ID: e712a702-741f-4093-a971-b3ad69411ac1>
Help:
.. code-block:: console
$ openstack vnf package download --help
usage: openstack vnf package download [-h] [--file <FILE>] [--vnfd]
[--type <type>]
<vnf-package>
Download VNF package contents or VNFD of an on-boarded VNF package.
positional arguments:
<vnf-package> VNF package ID
optional arguments:
-h, --help show this help message and exit
--file <FILE> Local file to save downloaded VNF Package or VNFD data. If
this is not specified and there is no redirection then data
will not be saved.
--vnfd Download VNFD of an on-boarded vnf package.
--type <type> Provide text/plain when VNFD is implemented as a single YAML
file otherwise use application/zip. If you are not aware
whether VNFD is a single or multiple yaml files, then you can
specify 'both' option value. Provide this option only when
--vnfd is set.
4. List VNF Package
^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package list
Result:
.. code-block:: console
+--------------------------------------+------------------+------------------+-------------+-------------------+
| Id | Vnf Product Name | Onboarding State | Usage State | Operational State |
+--------------------------------------+------------------+------------------+-------------+-------------------+
| e712a702-741f-4093-a971-b3ad69411ac1 | Sample VNF | ONBOARDED | NOT_IN_USE | ENABLED |
+--------------------------------------+------------------+------------------+-------------+-------------------+
Help:
.. code-block:: console
$ openstack vnf package list --help
usage: openstack vnf package 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]
[--filter <filter>]
[--all_fields | --fields fields | --exclude_fields exclude-fields]
[--exclude_default]
List VNF Packages
optional arguments:
-h, --help show this help message and exit
--filter <filter> Atrribute-based-filtering parameters
--all_fields Include all complex attributes in the response
--fields fields Complex attributes to be included into the response
--exclude_fields exclude-fields
Complex attributes to be excluded from the response
--exclude_default Indicates to exclude all complex attributes from the
response. This argument can be used alone or with
--fields and --filter. For all other combinations
tacker server will throw bad request error
5. Show VNF Package
^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package show <ID: e712a702-741f-4093-a971-b3ad69411ac1>
Result:
.. code-block:: console
+----------------------+------------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------------------+------------------------------------------------------------------------------------------------------------+
| Checksum | algorithm=sha512, hash=f8eb9883f04901af2d6e09d3621b7bbb37a36a89b076d322cc5994f3c5264854d1a0137efb23e61be96 |
| | 9a7ba60989715b3e3feced9d7c582ffaaec6b5a89e2b1 |
| ID | e712a702-741f-4093-a971-b3ad69411ac1 |
| Links | packageContent=href=/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1/package_content, |
| | self=href=/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1 |
| Onboarding State | ONBOARDED |
| Operational State | ENABLED |
| Software Images | [{'diskFormat': 'qcow2', 'minDisk': 1, 'minRam': 0, 'imagePath': '', 'size': 1, 'createdAt': '2020-05-28 |
| | 01:50:14+00:00', 'containerFormat': 'bare', 'version': '0.4.0', 'provider': '', 'id': 'VDU1', 'name': |
| | 'Software of VDU1', 'checksum': {'algorithm': 'sha-256', 'hash': '6513f21e44aa3da349f248188a44bc304a3653a0 |
| | 4122d8fb4535423c8e1d14cd6a153f735bb0982e2161b5b5186106570c17a9e58b64dd39390617cd5a350f78'}, |
| | 'userMetadata': {}}] |
| Usage State | NOT_IN_USE |
| User Defined Data | |
| VNF Product Name | Sample VNF |
| VNF Provider | Company |
| VNF Software Version | 1.0 |
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 |
| VNFD Version | 1.0 |
+----------------------+------------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf package show --help
usage: openstack vnf package show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<vnf-package>
Show VNF Package Details
positional arguments:
<vnf-package> VNF package ID
optional arguments:
-h, --help show this help message and exit
6. Update VNF Package Info
^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf package update --operational-state 'DISABLED' \
<ID: e712a702-741f-4093-a971-b3ad69411ac>
Result:
.. code-block:: console
+-------------------+----------+
| Field | Value |
+-------------------+----------+
| Operational State | DISABLED |
+-------------------+----------+
Help:
.. code-block:: console
$ openstack vnf package update --help
usage: openstack vnf package update [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
[--operational-state <operational-state>]
[--user-data <key=value>]
<vnf-package>
Update information about an individual VNF package
positional arguments:
<vnf-package> VNF package ID
optional arguments:
-h, --help show this help message and exit
--operational-state <operational-state>
Change the operational state of VNF Package, Valid
values are 'ENABLED' or 'DISABLED'.
--user-data <key=value>
User defined data for the VNF package (repeat option
to set multiple user defined data)
7. Delete VNF Package
^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
openstack vnf package delete <ID: e712a702-741f-4093-a971-b3ad69411ac1>
Result:
.. code-block:: console
All specified vnf-package(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf package delete --help
usage: openstack vnf package delete [-h] <vnf-package> [<vnf-package> ...]
Delete VNF Package
positional arguments:
<vnf-package> Vnf package(s) ID to delete
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,118 @@
================
Event Management
================
This document describes how to manage Event with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for Event Management
----------------------------------
1. List Events
^^^^^^^^^^^^^^
.. code-block:: console
$ openstack nfv event list
Result:
.. code-block:: console
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
| ID | Resource Type | Resource ID | Resource State | Event Type | Timestamp |
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
| 1 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | PENDING | CREATE | 2020-08-12 02:28:22 |
| 2 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | REACHABLE | MONITOR | 2020-08-12 02:28:23 |
| 3 | vim | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | REACHABLE | UPDATE | 2020-08-12 02:40:40 |
| 4 | vnfd | 94f2b44c-06f7-4d43-a2bb-dcd54f44d0f5 | OnBoarded | CREATE | 2020-08-13 05:52:07 |
| 5 | vnf | 4ffb436f-7f2c-4df1-96c4-38e9208261fd | PENDING_CREATE | CREATE | 2020-08-13 05:53:45 |
| 6 | vnf | 4ffb436f-7f2c-4df1-96c4-38e9208261fd | ACTIVE | CREATE | 2020-08-13 05:53:45 |
| 7 | vnf | 83fb8124-b475-400f-b0eb-f2b6741eeedc | PENDING_CREATE | CREATE | 2020-08-13 05:54:07 |
| 8 | vnf | 83fb8124-b475-400f-b0eb-f2b6741eeedc | ACTIVE | CREATE | 2020-08-13 05:54:07 |
+----+---------------+--------------------------------------+-------------------+------------+---------------------+
Help:
.. code-block:: console
$ openstack nfv event list --help
usage: openstack nfv event 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] [--id ID]
[--resource-type RESOURCE_TYPE]
[--resource-id RESOURCE_ID]
[--resource-state RESOURCE_STATE]
[--event-type EVENT_TYPE] [--long]
List events of resources.
optional arguments:
-h, --help show this help message and exit
--id ID id of the event to look up.
--resource-type RESOURCE_TYPE
resource type of the events to look up.
--resource-id RESOURCE_ID
resource id of the events to look up.
--resource-state RESOURCE_STATE
resource state of the events to look up.
--event-type EVENT_TYPE
event type of the events to look up.
--long List additional fields in output
2. Show Event
^^^^^^^^^^^^^
.. code-block:: console
$ openstack nfv event show <ID: 1>
Result:
.. code-block:: console
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| event_details | |
| event_type | CREATE |
| id | 1 |
| resource_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| resource_state | PENDING |
| resource_type | vim |
| timestamp | 2020-08-12 02:28:22 |
+----------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack nfv event show --help
usage: openstack nfv event show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
ID
Show event given the event id.
positional arguments:
ID ID of event to display
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,139 @@
==========================
Flow Classifier Management
==========================
Flow Classifier (FC) is a part of Network Forwarding Path (NFP) in VNF
Forwarding Graph (VNFFG).
This document describes how to manage FC with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for FC Management
-------------------------------
1. List Flow Classifier
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf classifier list
Result:
.. code-block:: console
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
| ID | Name | Status | NFP ID | Chain ID |
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
| 31268b39-27d3-4108-9552-73490125d29a | block_tcp | ACTIVE | ed450e71-345d-4dc8-8f32-69e3a697ad56 | 89f99c03-a152-413b-bb39-c7618a54b23a |
+--------------------------------------+-----------+--------+--------------------------------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf classifier list --help
usage: openstack vnf classifier 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]
[--nfp-id NFP_ID] [--tenant-id TENANT_ID]
List flow classifier(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--nfp-id NFP_ID List flow classifier(s) with specific nfp id
--tenant-id TENANT_ID
The owner tenant ID or project ID
2. Show Flow Classifier
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf classifier show <ID: 31268b39-27d3-4108-9552-73490125d29a>
Result:
.. code-block:: console
+-------------+--------------------------------------------------------------------+
| Field | Value |
+-------------+--------------------------------------------------------------------+
| chain_id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| id | 31268b39-27d3-4108-9552-73490125d29a |
| instance_id | 566e6760-9f0b-4b5e-a6e5-d8deab00efd3 |
| match | { |
| | "ip_dst_prefix": "10.10.0.5/24", |
| | "ip_proto": 6, |
| | "destination_port_min": 80, |
| | "destination_port_max": 1024, |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "tenant_id": "e77397d2a02c4af1b7d79cef2a406396" |
| | } |
| name | block_tcp |
| nfp_id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
+-------------+--------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf classifier show --help
usage: openstack vnf classifier show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX] [--max-width <integer>]
[--fit-width] [--print-empty]
<Classifier ID>
Display flow classifier details
positional arguments:
<Classifier ID> Flow Classifier to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,136 @@
==================================
Network Forwarding Path Management
==================================
Network Forwarding Path (NFP) is composed of a Service Function Chain (SFC)
and a Flow Classifier (FC) in VNF Forwarding Graph (VNFFG).
This document describes how to manage NFP with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
A VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for NFP Management
--------------------------------
1. List Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf network forwarding path list
Result:
.. code-block:: console
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| ID | Name | Status | VNFFG ID | Path ID |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
| ed450e71-345d-4dc8-8f32-69e3a697ad56 | Forwarding_path1 | ACTIVE | 3b1be255-4b3b-4ff2-b985-19f043f3f40c | 51 |
+--------------------------------------+------------------+--------+--------------------------------------+---------+
Help:
.. code-block:: console
$ openstack vnf network forwarding path list --help
usage: openstack vnf network forwarding path 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]
[--vnffg-id VNFFG_ID]
List NFP(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--vnffg-id VNFFG_ID List NFP(s) with specific VNFFG ID
2. Show Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf network forwarding path show <NFP>
Result:
.. code-block:: console
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| chain_id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| name | Forwarding_path1 |
| path_id | 51 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| symmetrical | False |
| vnffg_id | 3b1be255-4b3b-4ff2-b985-19f043f3f40c |
+-------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf network forwarding path show --help
usage: openstack vnf network forwarding path show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width]
[--print-empty]
<NFP>
Display NFP details
positional arguments:
<NFP> NFP to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,412 @@
=====================================
Network Service Descriptor Management
=====================================
To enable dynamic composition of network services, NFV introduces Network
Service Descriptors (NSDs) that specify the network service to be created.
This document describes how to manage NSD with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created according to :doc:`./cli-legacy-vnfd`.
* `sample-tosca-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd1.yaml>`_
* `sample-tosca-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-vnfd2.yaml>`_
CLI reference for NSD Management
--------------------------------
1. Create Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create ``sample-tosca-nsd.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/nsd/sample-tosca-nsd.yaml
Create a NSD:
.. code-block:: console
$ openstack ns descriptor create --nsd-file \
sample-tosca-nsd.yaml <NAME: sample-tosca-nsd>
Result:
.. code-block:: console
+-----------------+----------------------------------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 07:16:42.297675 |
| description | Import VNFDs(already on-boarded) with input parameters |
| id | 99a25f74-1bb9-4985-a548-f171060d00fd |
| name | sample-tosca-nsd |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template_source | onboarded |
| updated_at | None |
+-----------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor create --help
usage: openstack ns 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]
--nsd-file NSD_FILE
[--description DESCRIPTION]
NAME
Create a new NSD.
positional arguments:
NAME Name for NSD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--nsd-file NSD_FILE YAML file with NSD parameters
--description DESCRIPTION
Set a description for the NSD
2. List Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor list
Result:
.. code-block:: console
+--------------------------------------+------------------+-----------------+------------------------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+------------------+-----------------+------------------------------+
| 99a25f74-1bb9-4985-a548-f171060d00fd | sample-tosca-nsd | onboarded | Import VNFDs(already on-b... |
+--------------------------------------+------------------+-----------------+------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor list --help
usage: openstack ns 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 (NSD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List NSD with specified template source. Available
options are 'onboared' (default), 'inline' or 'all'
3. Show Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor show <NSD: sample-tosca-nsd>
Result:
.. code-block:: console
+-----------------+----------------------------------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 07:16:42 |
| description | Import VNFDs(already on-boarded) with input parameters |
| id | 99a25f74-1bb9-4985-a548-f171060d00fd |
| name | sample-tosca-nsd |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template_source | onboarded |
| updated_at | None |
+-----------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor show --help
usage: openstack ns descriptor show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<NSD>
Display NSD details
positional arguments:
<NSD> NSD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show template Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
openstack ns descriptor template show <name or ID of NSD: sample-tosca-nsd>
Result:
.. code-block:: console
+------------+----------------------------------------------------------------------------------+
| Field | Value |
+------------+----------------------------------------------------------------------------------+
| attributes | { |
| | "nsd": { |
| | "description": "Import VNFDs(already on-boarded) with input parameters", |
| | "imports": [ |
| | "sample-tosca-vnfd1", |
| | "sample-tosca-vnfd2" |
| | ], |
| | "topology_template": { |
| | "inputs": { |
| | "vl1_name": { |
| | "default": "net_mgmt", |
| | "description": "name of VL1 virtuallink", |
| | "type": "string" |
| | }, |
| | "vl2_name": { |
| | "default": "net0", |
| | "description": "name of VL2 virtuallink", |
| | "type": "string" |
| | } |
| | }, |
| | "node_templates": { |
| | "VL1": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl1_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VL2": { |
| | "properties": { |
| | "network_name": { |
| | "get_input": "vl2_name" |
| | }, |
| | "vendor": "tacker" |
| | }, |
| | "type": "tosca.nodes.nfv.VL" |
| | }, |
| | "VNF1": { |
| | "requirements": [ |
| | { |
| | "virtualLink1": "VL1" |
| | }, |
| | { |
| | "virtualLink2": "VL2" |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.VNF1" |
| | }, |
| | "VNF2": { |
| | "type": "tosca.nodes.nfv.VNF2" |
| | } |
| | } |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
+------------+----------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack ns descriptor template show --help
usage: openstack ns descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<NSD>
Display NSD Template details
positional arguments:
<NSD> NSD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete Network Service Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack ns descriptor delete <NSD: sample-tosca-nsd>
Result:
All specified nsd(s) deleted successfully
Help:
$ openstack ns descriptor delete --help
usage: openstack ns descriptor delete [-h] <NSD> [<NSD> ...]
Delete NSD(s).
positional arguments:
<NSD> NSD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,142 @@
=======================================
Service Function Chain (SFC) Management
=======================================
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
A VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.
CLI reference for SFC Management
--------------------------------
1. List Service Function Chain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf chain list
Result:
.. code-block:: console
+--------------------------------------+--------+--------------------------------------+
| ID | Status | NFP ID |
+--------------------------------------+--------+--------------------------------------+
| 89f99c03-a152-413b-bb39-c7618a54b23a | ACTIVE | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
+--------------------------------------+--------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf chain list --help
usage: openstack vnf chain 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] [--nfp-id NFP_ID]
[--tenant-id TENANT_ID]
List SFC(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--nfp-id NFP_ID List SFC(s) with specific nfp id
--tenant-id TENANT_ID
The owner tenant ID or project ID
2. Show Service Function Chain
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf chain show <SFC: 89f99c03-a152-413b-bb39-c7618a54b23a>
Result:
.. code-block:: console
+-------------+----------------------------------------------------+
| Field | Value |
+-------------+----------------------------------------------------+
| chain | [ |
| | { |
| | "name": "VNF1", |
| | "connection_points": [ |
| | "d4940639-764a-4a62-9b21-6ba2e86498eb" |
| | ], |
| | "sfc_encap": true |
| | }, |
| | { |
| | "name": "VNF2", |
| | "connection_points": [ |
| | "eeda565a-656b-4c86-b2da-c38683ff14e3" |
| | ], |
| | "sfc_encap": true |
| | } |
| | ] |
| id | 89f99c03-a152-413b-bb39-c7618a54b23a |
| instance_id | ba0b5218-1e63-49b2-9112-aba1747f29af |
| nfp_id | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
| path_id | 51 |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| symmetrical | False |
+-------------+----------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf chain show --help
usage: openstack vnf chain show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<SFC>
Display SFC details
positional arguments:
<SFC> SFC to display (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,400 @@
==============
VIM Management
==============
This document describes how to manage VIM with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for VIM Management
--------------------------------
1. Register VIM
^^^^^^^^^^^^^^^
Create ``vim_config.yaml`` file for OpenStack VIM:
* https://opendev.org/openstack/tacker/src/branch/master/devstack/vim_config.yaml
Register default OpenStack VIM:
.. code-block:: console
$ openstack vim register --config-file ./vim_config.yaml --is-default \
--description <DESCRIPTION: 'vim for nfv_user in nfv'> \
<NAME: openstack-nfv-vim>
Result:
.. code-block:: console
+----------------+-------------------------------------------------+
| Field | Value |
+----------------+-------------------------------------------------+
| auth_cred | { |
| | "username": "nfv_user", |
| | "user_domain_name": "Default", |
| | "cert_verify": "False", |
| | "project_id": null, |
| | "project_name": "nfv", |
| | "project_domain_name": "Default", |
| | "auth_url": "http://localhost/identity/v3", |
| | "key_type": "barbican_key", |
| | "secret_uuid": "***", |
| | "password": "***" |
| | } |
| auth_url | http://localhost/identity/v3 |
| created_at | 2020-08-12 02:28:22.470813 |
| description | vim for nfv_user in nfv |
| id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| is_default | True |
| name | openstack-nfv-vim |
| placement_attr | { |
| | "regions": [ |
| | "RegionOne" |
| | ] |
| | } |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING |
| type | openstack |
| updated_at | None |
| vim_project | { |
| | "name": "nfv", |
| | "project_domain_name": "Default" |
| | } |
+----------------+-------------------------------------------------+
Find the IP address of Kubernetes API:
.. code-block:: console
$ curl http://localhost:8080/api/
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "<IP address: 10.0.2.15>:6443"
}
]
}
Create ``vim_config_k8s.yaml`` file for Kubernetes VIM:
.. code-block:: yaml
auth_url: "https://<IP_ADDRESS: 10.0.2.15>:6443"
username: "admin"
password: "admin"
project_name: "default"
ssl_ca_cert: None
type: "kubernetes"
Register Kubernetes VIM:
.. code-block:: console
$ openstack vim register --config-file ./vim_config_k8s.yaml \
--description <DESCRIPTION: 'k8s vim for nfv_user in nfv'> \
<NAME: kubernetes-nfv-vim>
Result:
.. code-block:: console
+----------------+-------------------------------------------+
| Field | Value |
+----------------+-------------------------------------------+
| auth_cred | { |
| | "username": "admin", |
| | "ssl_ca_cert": "None", |
| | "auth_url": "https://10.0.2.15:6443", |
| | "key_type": "barbican_key", |
| | "secret_uuid": "***", |
| | "password": "***" |
| | } |
| auth_url | https://10.0.2.15:6443 |
| created_at | 2020-08-16 04:36:43.579859 |
| description | k8s vim for nfv_user in nfv |
| id | fd821c54-a60f-4afe-b131-3cfb76b7df8a |
| is_default | False |
| name | kubernetes-nfv-vim |
| placement_attr | { |
| | "regions": [ |
| | "default", |
| | "kube-node-lease", |
| | "kube-public", |
| | "kube-system" |
| | ] |
| | } |
| project_id | a0f24742eb0e4764a76a09e30bf7b0dd |
| status | PENDING |
| type | kubernetes |
| updated_at | None |
| vim_project | { |
| | "name": "default" |
| | } |
+----------------+-------------------------------------------+
Help:
.. code-block:: console
$ openstack vim register --help
usage: openstack vim register [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
--config-file CONFIG_FILE
[--description DESCRIPTION] [--is-default]
NAME
Register a new VIM
positional arguments:
NAME Set a name for the VIM
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--config-file CONFIG_FILE
YAML file with VIM configuration parameters
--description DESCRIPTION
Set a description for the VIM
--is-default Set as default VIM
2. List VIMs
^^^^^^^^^^^^
.. code-block:: console
$ openstack vim list
Result:
.. code-block:: console
+--------------------------------------+--------------------+----------------------------------+------------+------------+-----------+
| ID | Name | Tenant_id | Type | Is Default | Status |
+--------------------------------------+--------------------+----------------------------------+------------+------------+-----------+
| aacb3c7f-d532-44d9-b8ed-49e2b30114aa | openstack-nfv-vim | e77397d2a02c4af1b7d79cef2a406396 | openstack | True | REACHABLE |
+--------------------------------------+--------------------+----------------------------------+------------+------------+-----------+
| fd821c54-a60f-4afe-b131-3cfb76b7df8a | kubernetes-nfv-vim | a0f24742eb0e4764a76a09e30bf7b0dd | kubernetes | False | REACHABLE |
+--------------------------------------+--------------------+----------------------------------+------------+------------+-----------+
Help:
.. code-block:: console
$ openstack vim list --help
usage: openstack vim 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] [--long]
List VIMs that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--long List additional fields in output
3. Show VIM
^^^^^^^^^^^
.. code-block:: console
$ openstack vim show <VIM: openstack-nfv-vim>
Result:
.. code-block:: console
+----------------+-------------------------------------------------+
| Field | Value |
+----------------+-------------------------------------------------+
| auth_cred | { |
| | "username": "nfv_user", |
| | "user_domain_name": "Default", |
| | "cert_verify": "False", |
| | "project_id": null, |
| | "project_name": "nfv", |
| | "project_domain_name": "Default", |
| | "auth_url": "http://localhost/identity/v3", |
| | "key_type": "barbican_key", |
| | "secret_uuid": "***", |
| | "password": "***" |
| | } |
| auth_url | http://localhost/identity/v3 |
| created_at | 2020-08-12 02:28:22 |
| description | vim for nfv_user in nfv |
| id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| is_default | True |
| name | openstack-nfv-vim |
| placement_attr | { |
| | "regions": [ |
| | "RegionOne" |
| | ] |
| | } |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | REACHABLE |
| type | openstack |
| updated_at | 2020-08-12 02:28:23 |
| vim_project | { |
| | "name": "nfv", |
| | "project_domain_name": "Default" |
| | } |
+----------------+-------------------------------------------------+
Help:
.. code-block:: console
$ openstack vim show --help
usage: openstack vim show [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<VIM>
Display VIM details
positional arguments:
<VIM> VIM to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Update VIM
^^^^^^^^^^^^^
.. code-block:: console
$ openstack vim set --description \
<DESCRIPTION: 'new description of vim for nfv_user in nfv'> \
<VIM: openstack-nfv-vim>
Result:
.. code-block:: console
+----------------+-------------------------------------------------+
| Field | Value |
+----------------+-------------------------------------------------+
| auth_cred | { |
| | "username": "nfv_user", |
| | "user_domain_name": "Default", |
| | "cert_verify": "False", |
| | "project_id": null, |
| | "project_name": "nfv", |
| | "project_domain_name": "Default", |
| | "auth_url": "http://localhost/identity/v3", |
| | "key_type": "barbican_key", |
| | "secret_uuid": "***", |
| | "password": "***" |
| | } |
| auth_url | http://localhost/identity/v3 |
| created_at | 2020-08-12 02:28:22 |
| description | new description of vim for nfv_user in nfv |
| id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| is_default | True |
| name | openstack-nfv-vim |
| placement_attr | { |
| | "regions": [ |
| | "RegionOne" |
| | ] |
| | } |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | REACHABLE |
| type | openstack |
| updated_at | 2020-08-12 02:40:39.800778 |
| vim_project | { |
| | "name": "nfv", |
| | "project_domain_name": "Default" |
| | } |
+----------------+-------------------------------------------------+
Help:
.. code-block:: console
$ openstack vim set --help
usage: openstack vim set [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width] [--print-empty]
[--config-file CONFIG_FILE] [--name NAME]
[--description DESCRIPTION]
[--is-default {True,False}]
VIM
Update VIM.
positional arguments:
VIM ID or name of vim to update
optional arguments:
-h, --help show this help message and exit
--config-file CONFIG_FILE
YAML file with VIM configuration parameters
--name NAME New name for the VIM
--description DESCRIPTION
New description for the VIM
--is-default {True,False}
Indicate whether the VIM is used as default
5. Delete VIM
^^^^^^^^^^^^^
.. code-block:: console
$ openstack vim delete <VIM: openstack-nfv-vim>
Result:
.. code-block:: console
All specified vim(s) deleted successfully
Help:
.. code-block:: console
$ openstack vim delete --help
usage: openstack vim delete [-h] <VIM> [<VIM> ...]
Delete VIM(s).
positional arguments:
<VIM> VIM(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,934 @@
==============
VNF Management
==============
.. TODO(yoshito-ito): add the other patterns of update.
This document describes how to manage VNF with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
CLI reference for VNF Management
--------------------------------
1. Create VNF
^^^^^^^^^^^^^
Create ``tosca-vnfd-scale.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-vnfd-scale.yaml
Create a VNFD:
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file \
tosca-vnfd-scale.yaml <VNFD: tosca-vnfd-scale>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------+
| attributes | { |
| | "vnfd": { |
| | "description": "sample-tosca-vnfd-scaling", |
| | "metadata": { |
| | "template_name": "sample-tosca-vnfd-scaling" |
| | }, |
| | "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, |
| | "management": true, |
| | "order": 0 |
| | }, |
| | "requirements": [ |
| | { |
| | "virtualLink": { |
| | "node": "VL1" |
| | } |
| | }, |
| | { |
| | "virtualBinding": { |
| | "node": "VDU2" |
| | } |
| | } |
| | ], |
| | "type": "tosca.nodes.nfv.CP.Tacker" |
| | }, |
| | "VDU1": { |
| | "properties": { |
| | "availability_zone": "nova", |
| | "flavor": "m1.tiny", |
| | "image": "cirros-0.4.0-x86_64-disk", |
| | "mgmt_driver": "noop" |
| | }, |
| | "type": "tosca.nodes.nfv.VDU.Tacker" |
| | }, |
| | "VDU2": { |
| | "properties": { |
| | "availability_zone": "nova", |
| | "flavor": "m1.tiny", |
| | "image": "cirros-0.4.0-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" |
| | } |
| | }, |
| | "policies": [ |
| | { |
| | "SP1": { |
| | "properties": { |
| | "cooldown": 120, |
| | "default_instances": 2, |
| | "increment": 1, |
| | "max_instances": 3, |
| | "min_instances": 1 |
| | }, |
| | "targets": [ |
| | "VDU1", |
| | "VDU2" |
| | ], |
| | "type": "tosca.policies.tacker.Scaling" |
| | } |
| | } |
| | ] |
| | }, |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0" |
| | } |
| | } |
| created_at | 2020-08-12 04:20:08.908891 |
| description | sample-tosca-vnfd-scaling |
| id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
| name | tosca-vnfd-scale |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| service_types | ['vnfd'] |
| template_source | onboarded |
| updated_at | None |
+-----------------+---------------------------------------------------------------------------+
Create the VNF:
.. code-block:: console
$ openstack vnf create --vnfd-name <VNFD_NAME: tosca-vnfd-scale> \
<NAME: vnf-scale>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names=b'{"SP1": "SP1_group"}' |
| created_at | 2020-08-12 04:22:35.006543 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | None |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_CREATE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+---------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf create --help
usage: openstack vnf 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-id VNFD_ID | --vnfd-name VNFD_NAME | --vnfd-template VNFD_TEMPLATE)
[--vim-id VIM_ID | --vim-name VIM_NAME]
[--vim-region-name VIM_REGION_NAME]
[--config-file CONFIG_FILE]
[--param-file PARAM_FILE]
[--description DESCRIPTION]
NAME
Create a new VNF
positional arguments:
NAME Set a name for the VNF
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnfd-id VNFD_ID VNFD ID to use as template to create VNF
--vnfd-name VNFD_NAME
VNFD Name to use as template to create VNF
--vnfd-template VNFD_TEMPLATE
VNFD file to create VNF
--vim-id VIM_ID VIM ID to deploy VNF on specified VIM
--vim-name VIM_NAME VIM name to deploy VNF on specified VIM
--vim-region-name VIM_REGION_NAME
VIM Region to deploy VNF on specified VIM
--config-file CONFIG_FILE
YAML file with VNF configuration
--param-file PARAM_FILE
Specify parameter yaml file
--description DESCRIPTION
Set description for the VNF
2. List VNFs
^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf list
Result (CREATING):
.. code-block:: console
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
| ID | Name | Mgmt Ip Address | Status | VIM ID | VNFD ID |
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
| 9b312a7c-15de-4230-85fb-27da7d37978b | vnf-scale | None | PENDING_CREATE | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+--------------------------------------+-----------+-----------------+----------------+--------------------------------------+--------------------------------------+
Result (CREATED):
.. code-block:: console
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
| ID | Name | Mgmt Ip Address | Status | VIM ID | VNFD ID |
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
| 9b312a7c-15de-4230-85fb-27da7d37978b | vnf-scale | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} | ACTIVE | aacb3c7f-d532-44d9-b8ed-49e2b30114aa | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+--------------------------------------+-----------+-----------------------------------------------------------------------------------------------+--------+--------------------------------------+--------------------------------------+
Help:
.. code-block:: console
$ openstack vnf list --help
usage: openstack vnf 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]
[--vim-id VIM_ID | --vim-name VIM_NAME]
[--vnfd-id VNFD_ID | --vnfd-name VNFD_NAME]
[--tenant-id TENANT_ID] [--long]
List VNF(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNF with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
--vim-id VIM_ID List VNF(s) that belong to a given VIM ID
--vim-name VIM_NAME List VNF(s) that belong to a given VIM Name
--vnfd-id VNFD_ID List VNF(s) that belong to a given VNFD ID
--vnfd-name VNFD_NAME
List VNF(s) that belong to a given VNFD Name
--tenant-id TENANT_ID
The owner tenant ID or project ID
--long List additional fields in output
3. Show VNF
^^^^^^^^^^^
.. code-block:: console
$ openstack vnf show <VNF: vnf-scale>
Result:
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf show --help
usage: openstack vnf show [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<VNF>
Display VNF details
positional arguments:
<VNF> VNF to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. List VNF resource
^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf resource list <VNF: vnf-scale>
Result:
.. code-block:: console
+--------------------------------------+---------------+----------------------------+
| ID | Name | Type |
+--------------------------------------+---------------+----------------------------+
| 4abedc36da294bb0a0fa8aaa7f4c01f4 | SP1_scale_out | OS::Heat::ScalingPolicy |
| 0060aff7150d43c5ace293e3cac4552a | SP1_scale_in | OS::Heat::ScalingPolicy |
| 141c0279-1dfb-42a3-b947-4caa3765b27f | SP1_group | OS::Heat::AutoScalingGroup |
| 9f65c3d6-e5ce-4611-8589-82fab1a32d6e | qf4qc4l6qk7o | SP1_res.yaml |
| 9a01d98e-9c01-4e55-ba86-571b61e4ea74 | edilzqp2htvv | SP1_res.yaml |
| 0abc3f38-647e-4b47-8376-06d2e56c4217 | VDU2 | OS::Nova::Server |
| a6374222-ecbc-4eee-96e6-9fe601807c9d | CP2 | OS::Neutron::Port |
| 8d2fc2d9-33ee-440d-9e02-db6083cd5cb6 | VL1 | OS::Neutron::Net |
| 84c78850-8a06-41ab-98a7-371224125beb | VDU1 | OS::Nova::Server |
| 5462f8c1-3292-44af-8661-39e1a7474859 | CP1 | OS::Neutron::Port |
+--------------------------------------+---------------+----------------------------+
Help:
.. code-block:: console
$ openstack vnf resource list --help
usage: openstack vnf resource 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]
<VNF>
List resources of a VNF like VDU, CP, etc.
positional arguments:
<VNF> VNF to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Update VNF
^^^^^^^^^^^^^
Create ``vnf-config.yaml``:
.. code-block:: console
vdus:
VDU1:
config:
foo: 'bar'
Update VNF with the config file ``vnf-config.yaml``:
.. code-block:: console
$ openstack vnf set --config-file vnf-config.yaml <VNF: vnf-scale>
Result (Updating):
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , config=vdus: |
| | VDU1: |
| | config: |
| | foo: bar |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_UPDATE |
| updated_at | None |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Result (Updated):
.. code-block:: console
+-----------------+-----------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-----------------------------------------------------------------------------------------------+
| attributes | SP1_res.yaml=heat_template_version: 2013-05-23 |
| | description: Scaling template |
| | resources: |
| | CP1: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | CP2: |
| | type: OS::Neutron::Port |
| | properties: |
| | port_security_enabled: false |
| | network: net_mgmt |
| | VDU1: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP1 |
| | VDU2: |
| | type: OS::Nova::Server |
| | properties: |
| | flavor: m1.tiny |
| | user_data_format: SOFTWARE_CONFIG |
| | availability_zone: nova |
| | image: cirros-0.4.0-x86_64-disk |
| | config_drive: false |
| | networks: |
| | - port: |
| | get_resource: CP2 |
| | VL1: |
| | type: OS::Neutron::Net |
| | outputs: |
| | mgmt_ip-VDU1: |
| | value: |
| | get_attr: |
| | - CP1 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | mgmt_ip-VDU2: |
| | value: |
| | get_attr: |
| | - CP2 |
| | - fixed_ips |
| | - 0 |
| | - ip_address |
| | , config=vdus: |
| | VDU1: |
| | config: |
| | foo: bar |
| | , heat_template=heat_template_version: 2013-05-23 |
| | description: 'sample-tosca-vnfd-scaling |
| | |
| | ' |
| | parameters: {} |
| | resources: |
| | SP1_scale_out: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: 1 |
| | cooldown: 120 |
| | SP1_group: |
| | type: OS::Heat::AutoScalingGroup |
| | properties: |
| | min_size: 1 |
| | max_size: 3 |
| | desired_capacity: 2 |
| | cooldown: 120 |
| | resource: |
| | type: SP1_res.yaml |
| | SP1_scale_in: |
| | type: OS::Heat::ScalingPolicy |
| | properties: |
| | auto_scaling_group_id: |
| | get_resource: SP1_group |
| | adjustment_type: change_in_capacity |
| | scaling_adjustment: -1 |
| | cooldown: 120 |
| | outputs: {} |
| | , scaling_group_names={"SP1": "SP1_group"} |
| created_at | 2020-08-12 04:22:35 |
| description | sample-tosca-vnfd-scaling |
| error_reason | None |
| id | 9b312a7c-15de-4230-85fb-27da7d37978b |
| instance_id | 0e00ca75-23b7-4ff8-a90f-83c55d756d4f |
| mgmt_ip_address | {"VDU2": ["192.168.120.250", "192.168.120.41"], "VDU1": ["192.168.120.69", "192.168.120.92"]} |
| name | vnf-scale |
| placement_attr | vim_name=openstack-nfv-vim |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| updated_at | 2020-08-12 05:06:13 |
| vim_id | aacb3c7f-d532-44d9-b8ed-49e2b30114aa |
| vnfd_id | 1001f4e6-2e62-4950-be7a-541963e7e575 |
+-----------------+-----------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf set --help
usage: openstack vnf set [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN]
[--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width] [--print-empty]
(--config-file CONFIG_FILE | --config CONFIG | --param-file PARAM_FILE)
<VNF>
Update a given VNF.
positional arguments:
<VNF> VNF to update (name or ID)
optional arguments:
-h, --help show this help message and exit
--config-file CONFIG_FILE
YAML file with VNF configuration
--config CONFIG YAML data with VNF configuration
--param-file PARAM_FILE
YAML file with VNF parameter
.. note:: When the update VNF operation executed, Tacker ask Heat to update
the stack and the change is reflected immediately, and the VMs may
reboot.
6. Scale VNF
^^^^^^^^^^^^
Scale out the VNF:
.. code-block:: console
$ openstack vnf scale --scaling-policy-name <SCALING_POLICY_NAME: SP1> \
--scaling-type out <VNF: vnf-scale>
Check the VMs scaled out:
.. code-block:: console
$ openstack server list
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| dfb04024-666c-4b82-94eb-12766851cfb7 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU2-ljontrce3bd7 | ACTIVE | net_mgmt=192.168.120.8 | cirros-0.4.0-x86_64-disk | m1.tiny |
| e48999e8-5f65-43e4-b8a5-e81e358e2e21 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU1-3dcglaxrwyzl | ACTIVE | net_mgmt=192.168.120.82 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 0abc3f38-647e-4b47-8376-06d2e56c4217 | vn-6okzhe-edilzqp2htvv-ibfssgztffjf-VDU2-43gjj46b2nrr | ACTIVE | net_mgmt=192.168.120.41 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 43840dde-1ec3-4da6-aeab-afca96299a9f | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU2-zd7nq3smgjdr | ACTIVE | net_mgmt=192.168.120.250 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 84c78850-8a06-41ab-98a7-371224125beb | vn-6okzhe-edilzqp2htvv-ibfssgztffjf-VDU1-qvv2vv37f65t | ACTIVE | net_mgmt=192.168.120.92 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 9318b9fe-d655-4088-9910-b5f7481ed059 | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU1-omaexvftqjee | ACTIVE | net_mgmt=192.168.120.69 | cirros-0.4.0-x86_64-disk | m1.tiny |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
Scale in the VNF:
.. code-block:: console
$ openstack vnf scale --scaling-policy-name <SCALING_POLICY_NAME: SP1> \
--scaling-type in <VNF: vnf-scale>
Check the VMs scaled in:
.. code-block:: console
$ openstack server list
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
| dfb04024-666c-4b82-94eb-12766851cfb7 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU2-ljontrce3bd7 | ACTIVE | net_mgmt=192.168.120.8 | cirros-0.4.0-x86_64-disk | m1.tiny |
| e48999e8-5f65-43e4-b8a5-e81e358e2e21 | vn-6okzhe-k6n2umsyoizd-ex2uwxma2tlt-VDU1-3dcglaxrwyzl | ACTIVE | net_mgmt=192.168.120.82 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 43840dde-1ec3-4da6-aeab-afca96299a9f | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU2-zd7nq3smgjdr | ACTIVE | net_mgmt=192.168.120.250 | cirros-0.4.0-x86_64-disk | m1.tiny |
| 9318b9fe-d655-4088-9910-b5f7481ed059 | vn-6okzhe-qf4qc4l6qk7o-tukln5mwcokq-VDU1-omaexvftqjee | ACTIVE | net_mgmt=192.168.120.69 | cirros-0.4.0-x86_64-disk | m1.tiny |
+--------------------------------------+-------------------------------------------------------+--------+--------------------------+--------------------------+---------+
Help:
.. code-block:: console
$ openstack vnf scale --help
usage: openstack vnf scale [-h] [--scaling-policy-name SCALING_POLICY_NAME]
[--scaling-type SCALING_TYPE]
<VNF>
Scale a VNF.
positional arguments:
<VNF> VNF to scale (name or ID)
optional arguments:
-h, --help show this help message and exit
--scaling-policy-name SCALING_POLICY_NAME
VNF policy name used to scale
--scaling-type SCALING_TYPE
VNF scaling type, it could be either "out" or "in"
7. Delete VNFs
^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf delete <VNF: vnf-scale>
Result:
.. code-block:: console
All specified vnf(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf delete --help
usage: openstack vnf delete [-h] [--force] <VNF> [<VNF> ...]
Delete VNF(s).
positional arguments:
<VNF> VNF(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit
--force Force delete VNF instance

View File

@ -0,0 +1,570 @@
================================
VNF Descriptor (VNFD) Management
================================
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:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnfd/tosca-vnfd-hello-world.yaml
Create a VNFD:
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file \
tosca-vnfd-hello-world.yaml <NAME: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| 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.4.0-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:
.. code-block:: console
$ 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
^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor list
Result:
.. code-block:: console
+--------------------------------------+------------------------+-----------------+--------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+------------------------+-----------------+--------------+
| 57f46bdb-c5b5-448e-bf98-df3d7d94038e | tosca-vnfd-hello-world | onboarded | Demo example |
+--------------------------------------+------------------------+-----------------+--------------+
Help:
.. code-block:: console
$ 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
^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor show <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+-----------------+---------------------------------------------------------------------------+
| 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.4.0-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:
.. code-block:: console
$ 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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor template show <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
+------------+---------------------------------------------------------------------------+
| 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.4.0-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:
.. code-block:: console
$ 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
^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf descriptor delete <VNFD: tosca-vnfd-hello-world>
Result:
.. code-block:: console
All specified vnfd(s) deleted successfully
Help:
.. code-block:: console
$ 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

View File

@ -0,0 +1,573 @@
=======================================
VNF Forwarding Graph (VNFFG) Management
=======================================
.. TODO(yoshito-ito): Update "Update VNFFG" operation after fixing the bug:
* https://bugs.launchpad.net/python-tackerclient/+bug/1892152
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
A default VIM should be registered according to :doc:`./cli-legacy-vim`.
The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.
* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_
.. code-block:: console
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
$ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2
The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.
.. code-block:: console
$ openstack vnf create --vnfd-name VNFD1 VNF1
$ openstack vnf create --vnfd-name VNFD2 VNF2
CLI reference for VNFFG Management
----------------------------------
1. Create VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Check the source port ID ``CP12`` of VNF1:
.. code-block:: console
$ openstack port list -c ID -c Name | grep CP12
| d4940639-764a-4a62-9b21-6ba2e86498eb | VNF1_4ffb436f-7f2c-4df1-96c4-38e9208261fd-CP12-pj3nwzbv2wt2 |
Create and update `tosca-vnffgd-sample.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample.yaml>`_:
.. code-block:: console
(Before)
network_src_port_id: 14ad4f29-629f-4b97-8bc8-86e96cb49974
(After)
network_src_port_id: <ID: d4940639-764a-4a62-9b21-6ba2e86498eb>
.. note:: The appropriate port ID should be used according to your environment.
Create the VNFFGD:
.. code-block:: console
$ openstack vnf graph descriptor create --vnffgd-file \
tosca-vnffgd-sample.yaml <NAME: tosca-vnffgd-sample>
Create the VNFFG:
.. code-block:: console
$ openstack vnf graph create --vnffgd-name <VNFFGD: tosca-vnffgd-sample> \
<NAME: tosca-vnffg-sample>
Result:
.. code-block:: console
+------------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+--------------------------------------------------------------------------------------------------------+
| attributes | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| description | Sample VNFFG template |
| forwarding_paths | fc518827-eb74-4cd5-972b-943f80720065 |
| id | b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb |
| name | tosca-vnffg-sample |
| ns_id | None |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | PENDING_CREATE |
| vnf_mapping | VNFD1=4ffb436f-7f2c-4df1-96c4-38e9208261fd, VNFD2=83fb8124-b475-400f-b0eb-f2b6741eeedc |
| vnffgd_id | f19a36f9-3768-4846-8972-84960d328156 |
+------------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph create --help
usage: openstack vnf graph create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty] [--tenant-id TENANT_ID]
(--vnffgd-id VNFFGD_ID | --vnffgd-name VNFFGD_NAME | --vnffgd-template VNFFGD_TEMPLATE)
[--vnf-mapping VNF_MAPPING] [--symmetrical]
[--param-file PARAM_FILE]
[--description DESCRIPTION]
NAME
Create a new VNFFG.
positional arguments:
NAME Set a name for the VNFFG
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID
--vnffgd-id VNFFGD_ID
VNFFGD ID to use as template to create VNFFG
--vnffgd-name VNFFGD_NAME
VNFFGD Name to use as template to create VNFFG
--vnffgd-template VNFFGD_TEMPLATE
VNFFGD file to create VNFFG
--vnf-mapping VNF_MAPPING
List of logical VNFD name to VNF instance name
mapping. Example: VNF1:my_vnf1,VNF2:my_vnf2
--symmetrical Should a reverse path be created for the NFP (True or
False)
--param-file PARAM_FILE
YAML file with specific VNFFG parameters
--description DESCRIPTION
Set a description for the VNFFG
2. List VNF Forwarding Graphs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph list
Result:
.. code-block:: console
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
| ID | Name | NS ID | VNFFGD ID | Status |
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
| b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb | tosca-vnffg-sample | None | f19a36f9-3768-4846-8972-84960d328156 | ACTIVE |
+--------------------------------------+--------------------+-------+--------------------------------------+--------+
Help:
.. code-block:: console
$ openstack vnf graph list --help
usage: openstack vnf graph 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] [--long]
List VNFFG(s) that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--long List additional fields in output
output formatters:
output formatter options
-f {csv,json,table,value,yaml}, --format {csv,json,table,value,yaml}
the output format, defaults to table
-c COLUMN, --column COLUMN
specify the column(s) to include, can be repeated to
show multiple columns
--sort-column SORT_COLUMN
specify the column(s) to sort the data (columns
specified first have a priority, non-existing columns
are ignored), can be repeated
3. Show VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph show <VNFFG: tosca-vnffg-sample>
Result:
.. code-block:: console
+------------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------------+--------------------------------------------------------------------------------------------------------+
| attributes | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "d4940639-764a-4a62-9b21-6ba2e86498eb", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| description | Sample VNFFG template |
| forwarding_paths | fc518827-eb74-4cd5-972b-943f80720065 |
| id | b6669b6a-1a3c-40b6-a8c2-28ce3f0bd9bb |
| name | tosca-vnffg-sample |
| ns_id | None |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| status | ACTIVE |
| vnf_mapping | VNFD1=4ffb436f-7f2c-4df1-96c4-38e9208261fd, VNFD2=83fb8124-b475-400f-b0eb-f2b6741eeedc |
| vnffgd_id | f19a36f9-3768-4846-8972-84960d328156 |
+------------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph show --help
usage: openstack vnf graph show [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
<VNFFG>
Display VNFFG details
positional arguments:
<VNFFG> VNFFG to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Update VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create a new VNF ``VNF3`` according to :doc:`./cli-legacy-vnfd` with the
following template:
.. code-block:: yaml
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
description: Demo example
metadata:
template_name: sample-tosca-vnfd3
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
num_cpus: 1
mem_size: 512 MB
disk_size: 1 GB
properties:
image: cirros-0.4.0-x86_64-disk
availability_zone: nova
mgmt_driver: noop
config: |
param0: key1
param1: key2
user_data_format: RAW
user_data: |
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
cat << EOF >> /etc/network/interfaces
auto eth1
iface eth1 inet dhcp
auto eth2
iface eth2 inet dhcp
EOF
ifup eth1
ifup eth2
CP31:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
order: 0
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL31
- virtualBinding:
node: VDU1
CP32:
type: tosca.nodes.nfv.CP.Tacker
properties:
order: 1
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL32
- virtualBinding:
node: VDU1
CP33:
type: tosca.nodes.nfv.CP.Tacker
properties:
order: 2
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL33
- virtualBinding:
node: VDU1
VL31:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
VL32:
type: tosca.nodes.nfv.VL
properties:
network_name: net0
vendor: Tacker
VL33:
type: tosca.nodes.nfv.VL
properties:
network_name: net1
vendor: Tacker
Create the VNFD and VNF:
.. code-block:: console
openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD3
openstack vnf create --vnfd-name VNFD3 VNF3
Create the updated VNFD file ``tosca-vnffgd-sample-update.yaml``:
.. code-block:: console
VNFD2 -> VNFD3
CP22 -> CP32
VL22 -> VL32
Update the VNFFG:
.. code-block:: console
$ openstack vnf graph set --vnffgd-template tosca-vnffgd-sample-update.yaml \
--description <DESCRIPTION: 'New description for Sample VNFFG template'> \
<VNFFG: tosca-vnffg-sample>
Result:
.. code-block:: console
'Namespace' object has no attribute 'param_file'
Help:
.. code-block:: console
$ openstack vnf graph set --help
usage: openstack vnf graph set [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent] [--prefix PREFIX]
[--max-width <integer>] [--fit-width]
[--print-empty]
[--vnffgd-template VNFFGD_TEMPLATE]
[--vnf-mapping VNF_MAPPING] [--symmetrical]
[--description DESCRIPTION]
<VNFFG>
Update VNFFG.
positional arguments:
<VNFFG> VNFFG to update (name or ID)
optional arguments:
-h, --help show this help message and exit
--vnffgd-template VNFFGD_TEMPLATE
VNFFGD file to update VNFFG
--vnf-mapping VNF_MAPPING
List of logical VNFD name to VNF instance name
mapping. Example: VNF1:my_vnf1,VNF2:my_vnf2
--symmetrical Should a reverse path be created for the NFP
--description DESCRIPTION
Set a description for the VNFFG
5. Delete VNF Forwarding Graph
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph delete <VNFFG: tosca-vnffg-sample>
.. code-block:: console
All specified vnffg(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf graph delete --help
usage: openstack vnf graph delete [-h] <VNFFG> [<VNFFG> ...]
Delete VNFFG(s).
positional arguments:
<VNFFG> VNFFG(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -0,0 +1,460 @@
===================================================
VNF Forwarding Graph Descriptor (VNFFGD) Management
===================================================
VNF Forwarding Graph (VNFFG) feature in Tacker is used to orchestrate and
manage traffic through VNFs. In short, abstract VNFFG TOSCA definitions are
rendered into Service Function Chains (SFCs) and Classifiers. The SFC makes up
an ordered list of VNFs for traffic to traverse, while the classifier decides
which traffic should go through them. Similar to how VNFs are described by
VNFDs, VNFFGs are described by VNF Forwarding Graph Descriptors (VNFFGD).
This document describes how to manage VNFFGD with CLI in Tacker.
Prerequisites
-------------
The following packages should be installed:
* tacker
* python-tackerclient
CLI reference for VNFFGD Management
-----------------------------------
1. Create VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Create ``tosca-vnffgd-sample.yaml`` file:
* https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffgd-sample.yaml
Create a VNFFGD:
.. code-block:: console
$ openstack vnf graph descriptor create --vnffgd-file \
tosca-vnffgd-sample.yaml <NAME: tosca-vnffgd-sample>
Result:
.. code-block:: console
+-----------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+--------------------------------------------------------------------------------------------------------+
| description | Sample VNFFG template |
| id | 81d9cc7a-674d-463d-ad3d-95640e388b20 |
| name | tosca-vnffgd-sample |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| template_source | onboarded |
+-----------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor create --help
usage: openstack vnf graph 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]
--vnffgd-file VNFFGD_FILE
[--description DESCRIPTION]
NAME
Create a new VNFFGD
positional arguments:
NAME Name for VNFFGD
optional arguments:
-h, --help show this help message and exit
--tenant-id TENANT_ID
The owner tenant ID or project ID
--vnffgd-file VNFFGD_FILE
YAML file with VNFFGD parameters
--description DESCRIPTION
Set a description for the VNFFGD
2. List VNF Forwarding Graph Descriptors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor list
Result:
.. code-block:: console
+--------------------------------------+---------------------+-----------------+-----------------------+
| ID | Name | Template_Source | Description |
+--------------------------------------+---------------------+-----------------+-----------------------+
| 81d9cc7a-674d-463d-ad3d-95640e388b20 | tosca-vnffgd-sample | onboarded | Sample VNFFG template |
+--------------------------------------+---------------------+-----------------+-----------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor list --help
usage: openstack vnf graph 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 (VNFFGD)s that belong to a given tenant.
optional arguments:
-h, --help show this help message and exit
--template-source TEMPLATE_SOURCE
List VNFFGD with specified template source. Available
options are 'onboarded' (default), 'inline' or 'all'
3. Show VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor show <VNFFGD: tosca-vnffgd-sample>
Result:
.. code-block:: console
+-----------------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+--------------------------------------------------------------------------------------------------------+
| description | Sample VNFFG template |
| id | 81d9cc7a-674d-463d-ad3d-95640e388b20 |
| name | tosca-vnffgd-sample |
| project_id | e77397d2a02c4af1b7d79cef2a406396 |
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
| template_source | onboarded |
+-----------------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor show --help
usage: openstack vnf graph descriptor show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width] [--print-empty]
<VNFFGD>
Display VNFFGD details
positional arguments:
<VNFFGD> VNFFGD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
4. Show template VNF Forwarding Graph Descriptor
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor template show <VNFFGD: tosca-vnffgd-sample>
Result:
.. code-block:: console
+----------+--------------------------------------------------------------------------------------------------------+
| Field | Value |
+----------+--------------------------------------------------------------------------------------------------------+
| template | { |
| | "vnffgd": { |
| | "tosca_definitions_version": "tosca_simple_profile_for_nfv_1_0_0", |
| | "description": "Sample VNFFG template", |
| | "topology_template": { |
| | "node_templates": { |
| | "Forwarding_path1": { |
| | "type": "tosca.nodes.nfv.FP.TackerV2", |
| | "description": "creates path (CP12->CP22)", |
| | "properties": { |
| | "id": 51, |
| | "policy": { |
| | "type": "ACL", |
| | "criteria": [ |
| | { |
| | "name": "block_tcp", |
| | "classifier": { |
| | "network_src_port_id": "14ad4f29-629f-4b97-8bc8-86e96cb49974", |
| | "destination_port_range": "80-1024", |
| | "ip_proto": 6, |
| | "ip_dst_prefix": "10.10.0.5/24" |
| | } |
| | } |
| | ] |
| | }, |
| | "path": [ |
| | { |
| | "forwarder": "VNFD1", |
| | "capability": "CP12", |
| | "sfc_encap": true |
| | }, |
| | { |
| | "forwarder": "VNFD2", |
| | "capability": "CP22", |
| | "sfc_encap": true |
| | } |
| | ] |
| | } |
| | } |
| | }, |
| | "groups": { |
| | "VNFFG1": { |
| | "type": "tosca.groups.nfv.VNFFG", |
| | "description": "HTTP to Corporate Net", |
| | "properties": { |
| | "vendor": "tacker", |
| | "version": 1.0, |
| | "number_of_endpoints": 2, |
| | "dependent_virtual_link": [ |
| | "VL12", |
| | "VL22" |
| | ], |
| | "connection_point": [ |
| | "CP12", |
| | "CP22" |
| | ], |
| | "constituent_vnfs": [ |
| | "VNFD1", |
| | "VNFD2" |
| | ] |
| | }, |
| | "members": [ |
| | "Forwarding_path1" |
| | ] |
| | } |
| | } |
| | }, |
| | "imports": [ |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_defs.yaml", |
| | "/opt/stack/tacker/tacker/tosca/lib/tacker_nfv_defs.yaml" |
| | ] |
| | } |
| | } |
+----------+--------------------------------------------------------------------------------------------------------+
Help:
.. code-block:: console
$ openstack vnf graph descriptor template show --help
usage: openstack vnf graph descriptor template show [-h]
[-f {json,shell,table,value,yaml}]
[-c COLUMN] [--noindent]
[--prefix PREFIX]
[--max-width <integer>]
[--fit-width]
[--print-empty]
<VNFFGD>
Display VNFFGD Template details
positional arguments:
<VNFFGD> VNFFGD to display (name or ID)
optional arguments:
-h, --help show this help message and exit
5. Delete VNF Forwarding Graph Descriptors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
$ openstack vnf graph descriptor delete <VNFFGD: tosca-vnffgd-sample>
.. code-block:: console
All specified vnffgd(s) deleted successfully
Help:
.. code-block:: console
$ openstack vnf graph descriptor delete --help
usage: openstack vnf graph descriptor delete [-h] <VNFFGD> [<VNFFGD> ...]
Delete VNFFGD(s).
positional arguments:
<VNFFGD> VNFFGD(s) to delete (name or ID)
optional arguments:
-h, --help show this help message and exit

View File

@ -12,16 +12,48 @@
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
========================
Tacker CLI Documentation
========================
================================
Command-Line Interface Reference
================================
In this section you will find information on Tackers command line
interface.
Operations for ETSI NFV-SOL implementation
------------------------------------------
.. toctree::
:maxdepth: 1
tacker-status
cli-etsi-vnfpkgm
cli-etsi-vnflcm
Operations for Legacy implementation
------------------------------------
.. toctree::
cli-legacy-vim
cli-legacy-vnfd
cli-legacy-vnf
cli-legacy-vnffgd
cli-legacy-vnffg
cli-legacy-sfc
cli-legacy-fc
cli-legacy-nfp
cli-legacy-nsd
cli-legacy-event
.. TODO(yoshito-ito): update vnffg after fixing CLI bug:
* https://bugs.launchpad.net/python-tackerclient/+bug/1892152
cli-legacy-vnffg
.. TODO(yoshito-ito): add ns after confirming ns operations
* https://bugs.launchpad.net/tacker/+bug/1892144
cli-legacy-ns
Other operations
----------------
.. toctree::
:maxdepth: 1
tacker-status