From 49372c7551c8284012f0b313db6406dfaea20147 Mon Sep 17 00:00:00 2001 From: Yoshito Ito Date: Wed, 19 Aug 2020 17:44:09 +0900 Subject: [PATCH] Add CLI docs for ETSI-based and Legacy Tacker * ETSI-based implementation - VNF Lifecycle Management, VNF Package Management * Legacy implementation - Event, Flow Classifier, Network Forwarding Path, NSD, Service Function Chain, VIM, VNF, VNFD, VNFFGD, VNFFG The VNFFG doc needs to be updated after fixing: * https://bugs.launchpad.net/python-tackerclient/+bug/1892152 The CLI doc for NS is not included because of: * https://bugs.launchpad.net/tacker/+bug/1892144 Change-Id: Ie66d774fb87f481c11846afd229700f5f7b165c4 --- doc/source/cli/cli-etsi-vnflcm.rst | 282 ++++++++ doc/source/cli/cli-etsi-vnfpkgm.rst | 322 +++++++++ doc/source/cli/cli-legacy-event.rst | 118 ++++ doc/source/cli/cli-legacy-fc.rst | 139 ++++ doc/source/cli/cli-legacy-nfp.rst | 136 ++++ doc/source/cli/cli-legacy-nsd.rst | 412 ++++++++++++ doc/source/cli/cli-legacy-sfc.rst | 142 ++++ doc/source/cli/cli-legacy-vim.rst | 400 ++++++++++++ doc/source/cli/cli-legacy-vnf.rst | 934 +++++++++++++++++++++++++++ doc/source/cli/cli-legacy-vnfd.rst | 570 ++++++++++++++++ doc/source/cli/cli-legacy-vnffg.rst | 573 ++++++++++++++++ doc/source/cli/cli-legacy-vnffgd.rst | 460 +++++++++++++ doc/source/cli/index.rst | 48 +- 13 files changed, 4528 insertions(+), 8 deletions(-) create mode 100644 doc/source/cli/cli-etsi-vnflcm.rst create mode 100644 doc/source/cli/cli-etsi-vnfpkgm.rst create mode 100644 doc/source/cli/cli-legacy-event.rst create mode 100644 doc/source/cli/cli-legacy-fc.rst create mode 100644 doc/source/cli/cli-legacy-nfp.rst create mode 100644 doc/source/cli/cli-legacy-nsd.rst create mode 100644 doc/source/cli/cli-legacy-sfc.rst create mode 100644 doc/source/cli/cli-legacy-vim.rst create mode 100644 doc/source/cli/cli-legacy-vnf.rst create mode 100644 doc/source/cli/cli-legacy-vnfd.rst create mode 100644 doc/source/cli/cli-legacy-vnffg.rst create mode 100644 doc/source/cli/cli-legacy-vnffgd.rst diff --git a/doc/source/cli/cli-etsi-vnflcm.rst b/doc/source/cli/cli-etsi-vnflcm.rst new file mode 100644 index 000000000..6dd2007f0 --- /dev/null +++ b/doc/source/cli/cli-etsi-vnflcm.rst @@ -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 `` 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 + + +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 ] [--fit-width] + [--print-empty] [--name ] + [--description ] + [--I ] + + + Create a new VNF Instance + + positional arguments: + Identifier that identifies the VNFD which defines the + VNF instance to be created. + + optional arguments: + -h, --help show this help message and exit + --name + Name of the VNF instance to be created. + --description + Description of the VNF instance to be created. + --I Instantiate VNF subsequently after it's creation. + Specify instantiate request parameters in a json file. + + +2. Instantiate VNF +^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + $ openstack vnflcm instantiate \ + ./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] + + Instantiate a VNF Instance + + positional arguments: + VNF instance ID to instantiate + 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 ] + [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display VNF instance details + + positional arguments: + VNF instance ID to display + + optional arguments: + -h, --help show this help message and exit + + +6. Terminate VNF +^^^^^^^^^^^^^^^^ + +.. code-block:: console + + $ openstack vnflcm terminate + + +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 ] + [--graceful-termination-timeout ] + [--D] + + + Terminate a VNF instance + + positional arguments: + VNF instance ID to terminate + + optional arguments: + -h, --help show this help message and exit + --termination-type + Termination type can be 'GRACEFUL' or 'FORCEFUL'. + Default is 'GRACEFUL' + --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 + + +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] [ ...] + + Delete VNF Instance(s) + + positional arguments: + VNF instance ID(s) to delete + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-etsi-vnfpkgm.rst b/doc/source/cli/cli-etsi-vnfpkgm.rst new file mode 100644 index 000000000..7571882a5 --- /dev/null +++ b/doc/source/cli/cli-etsi-vnfpkgm.rst @@ -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 ] [--fit-width] + [--print-empty] [--user-data ] + + Create a new VNF Package + + optional arguments: + -h, --help show this help message and exit + --user-data + 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 \ + + + +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 | --url ) + [--user-name ] + [--password ] + + + Upload VNF Package + + positional arguments: + VNF package ID + + optional arguments: + -h, --help show this help message and exit + --path Upload VNF CSAR package from local file + --url Uri of the VNF package content + --user-name + User name for authentication + --password + Password for authentication + + +3. Fetch VNF Package +^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + $ openstack vnf package download --file \ + + + +Help: + +.. code-block:: console + + $ openstack vnf package download --help + usage: openstack vnf package download [-h] [--file ] [--vnfd] + [--type ] + + + Download VNF package contents or VNFD of an on-boarded VNF package. + + positional arguments: + VNF package ID + + optional arguments: + -h, --help show this help message and exit + --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 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 ] + [--fit-width] [--print-empty] + [--sort-column SORT_COLUMN] + [--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 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 + + +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 ] [--fit-width] + [--print-empty] + + + Show VNF Package Details + + positional arguments: + 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' \ + + + +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 ] [--fit-width] + [--print-empty] + [--operational-state ] + [--user-data ] + + + Update information about an individual VNF package + + positional arguments: + VNF package ID + + optional arguments: + -h, --help show this help message and exit + --operational-state + Change the operational state of VNF Package, Valid + values are 'ENABLED' or 'DISABLED'. + --user-data + 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 + + +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] [ ...] + + Delete VNF Package + + positional arguments: + Vnf package(s) ID to delete + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-event.rst b/doc/source/cli/cli-legacy-event.rst new file mode 100644 index 000000000..2f3dc6dd6 --- /dev/null +++ b/doc/source/cli/cli-legacy-event.rst @@ -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 ] + [--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 + + +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 ] [--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 diff --git a/doc/source/cli/cli-legacy-fc.rst b/doc/source/cli/cli-legacy-fc.rst new file mode 100644 index 000000000..fb8b52029 --- /dev/null +++ b/doc/source/cli/cli-legacy-fc.rst @@ -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 `_ +* `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 ] + [--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 + + +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 ] + [--fit-width] [--print-empty] + + + Display flow classifier details + + positional arguments: + Flow Classifier to display (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-nfp.rst b/doc/source/cli/cli-legacy-nfp.rst new file mode 100644 index 000000000..cd4357378 --- /dev/null +++ b/doc/source/cli/cli-legacy-nfp.rst @@ -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 `_ +* `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 ] + [--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 + + +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 ] + [--fit-width] + [--print-empty] + + + Display NFP details + + positional arguments: + NFP to display (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-nsd.rst b/doc/source/cli/cli-legacy-nsd.rst new file mode 100644 index 000000000..f1079cbdd --- /dev/null +++ b/doc/source/cli/cli-legacy-nsd.rst @@ -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 `_ +* `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 + + +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 ] [--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 ] + [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display NSD details + + positional arguments: + 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 + +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 ] + [--fit-width] [--print-empty] + + + Display NSD Template details + + positional arguments: + 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 + + +Result: + + All specified nsd(s) deleted successfully + + +Help: + + $ openstack ns descriptor delete --help + usage: openstack ns descriptor delete [-h] [ ...] + + Delete NSD(s). + + positional arguments: + NSD(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-sfc.rst b/doc/source/cli/cli-legacy-sfc.rst new file mode 100644 index 000000000..2645a0c19 --- /dev/null +++ b/doc/source/cli/cli-legacy-sfc.rst @@ -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 `_ +* `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 ] + [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display SFC details + + positional arguments: + SFC to display (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vim.rst b/doc/source/cli/cli-legacy-vim.rst new file mode 100644 index 000000000..8b24d7fc7 --- /dev/null +++ b/doc/source/cli/cli-legacy-vim.rst @@ -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 \ + + + +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": ":6443" + } + ] + } + + +Create ``vim_config_k8s.yaml`` file for Kubernetes VIM: + +.. code-block:: yaml + + auth_url: "https://: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 \ + + + +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 ] [--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 ] [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display VIM details + + positional arguments: + 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 \ + \ + + + +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 ] [--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 + + +Result: + +.. code-block:: console + + All specified vim(s) deleted successfully + + +Help: + +.. code-block:: console + + $ openstack vim delete --help + usage: openstack vim delete [-h] [ ...] + + Delete VIM(s). + + positional arguments: + VIM(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnf.rst b/doc/source/cli/cli-legacy-vnf.rst new file mode 100644 index 000000000..45ec58e3f --- /dev/null +++ b/doc/source/cli/cli-legacy-vnf.rst @@ -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 + + +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 \ + + + +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 ] [--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 ] [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display VNF details + + positional arguments: + 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 + + +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 ] + [--fit-width] [--print-empty] + [--sort-column SORT_COLUMN] + + + List resources of a VNF like VDU, CP, etc. + + positional arguments: + 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 + + +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 ] [--fit-width] [--print-empty] + (--config-file CONFIG_FILE | --config CONFIG | --param-file PARAM_FILE) + + + Update a given VNF. + + positional arguments: + 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-type out + + +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-type in + + +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] + + + Scale a VNF. + + positional arguments: + 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 + + +Result: + +.. code-block:: console + + All specified vnf(s) deleted successfully + + +Help: + +.. code-block:: console + + $ openstack vnf delete --help + usage: openstack vnf delete [-h] [--force] [ ...] + + Delete VNF(s). + + positional arguments: + VNF(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit + --force Force delete VNF instance diff --git a/doc/source/cli/cli-legacy-vnfd.rst b/doc/source/cli/cli-legacy-vnfd.rst new file mode 100644 index 000000000..73fd7d62c --- /dev/null +++ b/doc/source/cli/cli-legacy-vnfd.rst @@ -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 + + +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 ] [--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 ] + [--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 + + +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 ] + [--fit-width] [--print-empty] + + + Display VNFD details + + positional arguments: + 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 + + +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 ] + [--fit-width] [--print-empty] + + + Display VNFD Template details + + positional arguments: + 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 + + +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] [ ...] + + Delete VNFD(s). + + positional arguments: + VNFD(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnffg.rst b/doc/source/cli/cli-legacy-vnffg.rst new file mode 100644 index 000000000..26897ba1b --- /dev/null +++ b/doc/source/cli/cli-legacy-vnffg.rst @@ -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 `_ +* `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 `_: + +.. code-block:: console + + (Before) + network_src_port_id: 14ad4f29-629f-4b97-8bc8-86e96cb49974 + + (After) + network_src_port_id: + + +.. 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 + + +Create the VNFFG: + +.. code-block:: console + + $ openstack vnf graph create --vnffgd-name \ + + + +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 ] [--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 ] + [--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 + + +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 ] [--fit-width] + [--print-empty] + + + Display VNFFG details + + positional arguments: + 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 \ + + + +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 ] [--fit-width] + [--print-empty] + [--vnffgd-template VNFFGD_TEMPLATE] + [--vnf-mapping VNF_MAPPING] [--symmetrical] + [--description DESCRIPTION] + + + Update VNFFG. + + positional arguments: + 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 + + +.. code-block:: console + + All specified vnffg(s) deleted successfully + + +Help: + +.. code-block:: console + + $ openstack vnf graph delete --help + usage: openstack vnf graph delete [-h] [ ...] + + Delete VNFFG(s). + + positional arguments: + VNFFG(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/cli-legacy-vnffgd.rst b/doc/source/cli/cli-legacy-vnffgd.rst new file mode 100644 index 000000000..4ab331df9 --- /dev/null +++ b/doc/source/cli/cli-legacy-vnffgd.rst @@ -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 + + +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 ] + [--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 ] + [--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 + + +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 ] + [--fit-width] [--print-empty] + + + Display VNFFGD details + + positional arguments: + 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 + + +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 ] + [--fit-width] + [--print-empty] + + + Display VNFFGD Template details + + positional arguments: + 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 + + +.. 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] [ ...] + + Delete VNFFGD(s). + + positional arguments: + VNFFGD(s) to delete (name or ID) + + optional arguments: + -h, --help show this help message and exit diff --git a/doc/source/cli/index.rst b/doc/source/cli/index.rst index f291709d6..b4d68c02d 100644 --- a/doc/source/cli/index.rst +++ b/doc/source/cli/index.rst @@ -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 Tacker’s 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