==================================
Network Forwarding Path Management
==================================

Network Forwarding Path (NFP) is composed of a Service Function Chain (SFC)
and a Flow Classifier (FC) in VNF Forwarding Graph (VNFFG).

This document describes how to manage NFP with CLI in Tacker.

Prerequisites
-------------

The following packages should be installed:

* tacker
* python-tackerclient

A default VIM should be registered according to :doc:`./cli-legacy-vim`.

The following VNFDs are created with the name ``VNFD1`` and ``VNFD2``
according to :doc:`./cli-legacy-vnfd`.

* `tosca-vnffg-vnfd1.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd1.yaml>`_
* `tosca-vnffg-vnfd2.yaml <https://opendev.org/openstack/tacker/src/branch/master/samples/tosca-templates/vnffgd/tosca-vnffg-vnfd2.yaml>`_

.. code-block:: console

  $ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd1.yaml VNFD1
  $ openstack vnf descriptor create --vnfd-file tosca-vnffg-vnfd2.yaml VNFD2


The VNFs from the created VNFDs are deployed with the name ``VNF1`` and
``VNF2`` according to :doc:`./cli-legacy-vnf`.

.. code-block:: console

  $ openstack vnf create --vnfd-name VNFD1 VNF1
  $ openstack vnf create --vnfd-name VNFD2 VNF2


A VNFFG should be deployed according to :doc:`./cli-legacy-vnffg`. Before
deploying the VNFFG, a VNFFGD may need to be created according to
:doc:`./cli-legacy-vnffgd`.

CLI reference for NFP Management
--------------------------------

1. List Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

  $ openstack vnf network forwarding path list


Result:

.. code-block:: console

  +--------------------------------------+------------------+--------+--------------------------------------+---------+
  | ID                                   | Name             | Status | VNFFG ID                             | Path ID |
  +--------------------------------------+------------------+--------+--------------------------------------+---------+
  | ed450e71-345d-4dc8-8f32-69e3a697ad56 | Forwarding_path1 | ACTIVE | 3b1be255-4b3b-4ff2-b985-19f043f3f40c | 51      |
  +--------------------------------------+------------------+--------+--------------------------------------+---------+


Help:

.. code-block:: console

  $ openstack vnf network forwarding path list --help
  usage: openstack vnf network forwarding path list [-h]
                                                    [-f {csv,json,table,value,yaml}]
                                                    [-c COLUMN]
                                                    [--quote {all,minimal,none,nonnumeric}]
                                                    [--noindent]
                                                    [--max-width <integer>]
                                                    [--fit-width]
                                                    [--print-empty]
                                                    [--sort-column SORT_COLUMN]
                                                    [--vnffg-id VNFFG_ID]

  List NFP(s) that belong to a given tenant.

  optional arguments:
    -h, --help            show this help message and exit
    --vnffg-id VNFFG_ID   List NFP(s) with specific VNFFG ID


2. Show Network Forwarding Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

  $ openstack vnf network forwarding path show <NFP>


Result:

.. code-block:: console

  +-------------+--------------------------------------+
  | Field       | Value                                |
  +-------------+--------------------------------------+
  | chain_id    | 89f99c03-a152-413b-bb39-c7618a54b23a |
  | id          | ed450e71-345d-4dc8-8f32-69e3a697ad56 |
  | name        | Forwarding_path1                     |
  | path_id     | 51                                   |
  | project_id  | e77397d2a02c4af1b7d79cef2a406396     |
  | status      | ACTIVE                               |
  | symmetrical | False                                |
  | vnffg_id    | 3b1be255-4b3b-4ff2-b985-19f043f3f40c |
  +-------------+--------------------------------------+


Help:

.. code-block:: console

  $ openstack vnf network forwarding path show --help
  usage: openstack vnf network forwarding path show [-h]
                                                    [-f {json,shell,table,value,yaml}]
                                                    [-c COLUMN] [--noindent]
                                                    [--prefix PREFIX]
                                                    [--max-width <integer>]
                                                    [--fit-width]
                                                    [--print-empty]
                                                    <NFP>

  Display NFP details

  positional arguments:
    <NFP>                 NFP to display (name or ID)

  optional arguments:
    -h, --help            show this help message and exit
