﻿.. ============LICENSE_START==========================================
.. ===================================================================
.. Copyright © 2017 AT&T Intellectual Property. All rights reserved.
.. ===================================================================
.. Licensed under the Creative Commons License, Attribution 4.0 Intl.  (the "License");
.. you may not use this documentation except in compliance with the License.
.. You may obtain a copy of the License at
.. 
..  https://creativecommons.org/licenses/by/4.0/
.. 
.. Unless required by applicable law or agreed to in writing, software
.. 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.
.. ============LICENSE_END============================================
.. ECOMP is a trademark and service mark of AT&T Intellectual Property.

===============
APPC User Guide
===============

APPC Overview and Architecture
==============================
The Application Controller (APPC) is one of the components of the ONAP
platform. It is responsible for handling the Life Cycle Management (LCM)
of Virtual Network Functions (VNFs).

This document provides an overview of the APPC components that enable
the LCM operations.

Implementation
--------------
The APPC infrastructure is implemented on virtual machines in an
OpenStack cloud in the Amsterdam release. APPC is created on top of the OpenDaylight (ODL)
platform

The following diagram represents a non-redundant APP-C deployment.

|image0|

Features
--------
The APPC HTTP API supports Life Cycle Management (LCM) commands,
allowing users to manage virtual applications and their components via
other ONAP components. Refer to Architecture section for further
details.

Interface
---------
The Application Controller Dashboard interacts with the controller
using REST APIs and performs actions on VNF/VNFC/VMs, such as snapshot,
lock, sync, and health-check.

Dashboard
~~~~~~~~~

To open the Application Controller dashboard, go to:

|image1|

Navigate to the available LCM commands by clicking on
    **appc-provider-lcm**:

|image2|

Click on the URI of the desired action to open a frame with information
about the action and an option to try it out. For example, to send the
action, add the request body as the input parameter value, and click
**Try it out!**

The following figure shows an example body of a LCM restart request:

|image3|

If the request is accepted, you should see the following response:

|image4|

APPC Architecture 
-----------------

This section discusses the APPC internal components in detail.

**APPC High Level Architecture**

|image5|

Northbound REST Layer
~~~~~~~~~~~~~~~~~~~~~

This layer is responsible for interfacing with APPC clients, such as SO
or SDC and others, exposing YANG-based API via REST HTTP and/or DMaaP
messaging (see the Interfaces Summary section for details). In addition,
it exposes APPC OAM (Operation Administration Management) APIs, enabling
ONAP Operations Manager (OOM) or TechOps portal to perform APPC
lifecycle operations

APPC Provider
~~~~~~~~~~~~~

The APPC Provider module exposes the endpoints for each action
supported by APPC. This module uses the YANG model to define the
YANG Remote Processing Call (RPC) and data model, in other words,
the input and output parameters for each action. The Provider module 
is responsible for validating the RPC input and for rejecting any
malformed input. After successful validation, the APPC Provider
calls the Dispatcher to continue the request processing.

LCM API
~~~~~~~

The APPC exposes an HTTP API to support the Life Cycle Management
(LCM) commands sent from ONAP components such as SO, SDC, and the
Portal. These commands enable the components to request APPC to
perform actions such as to control, modify, start, or stop virtual
applications and/or their components. 

A virtual application is composed of the following layers. A Life
Cycle Management command may affect any number of these layers.

-  Virtual Network Function (VNF)

-  Virtual Network Function Component (VNFC)

-  Virtual Machine (VM)

APP-C supports two types of LCM requests, as described below.

**Note:** For further information about LCM API, including details of
all the commands currently supported in APP-C and examples of the
request and response format see the ONAP Application Controller (APPC) API Guide. 

LCM over REST 
^^^^^^^^^^^^^^

LCM command requests over REST are sent to the APPC using an HTTP
POST request. APPC returns one or more responses for each LCM
request. 

The APP-C LCM API provides a POST HTTP API endpoint per command. 

An **asynchronous** command, containing an authorized and valid
request, results in at least two discrete response events:

-  an ACCEPT (a synchronous HTTP response) to indicate that the request
       is accepted and will be processed, and

-  a final asynchronous response for the command containing an execution
       status is sent via DMaaP

An unauthorized or invalid request would result in a single
ERROR response. 

For commands such as Restart, Start, and Stop, the asynchronous response
is sent over DMaaP.

A **synchronous** command, for example Lock or Unlock, results in a
single response, which is either SUCCESS or ERROR. For this type of
request, the first response is a synchronous HTTP response..

For the ONAP Amsterdam release, APPC supports the HTTPS protocol, whereas the plain
HTTP requests are blocked..

Endpoint format: 

``<http-protocol>://<appc-ip>:<appc-api-port>/restconf/operations/appc-provider-lcm:<command-name>``

LCM over Message Bus (DMaaP)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

APPC is capable of receiving LCM command requests as messages on the
DMaaP bus. In this case, APPC returns one or more responses for each LCM
request, similar to LCM over REST, while both are communicated over
DMaaP.

Configure the Read/Write topics for the DMaaP as described in APPC
Deployment, APPC Available Properties.

APPC client library, embedded into APPC client’s (for example, SO) code,
intends to simplify communication over DMaaP by eliminating topic
provisioning at the client site. Refer to
http://onap.readthedocs.io/en/latest/ for more details on the APPC
Client Library.

For further information about the request and response format, see
the APPC API Guide at http://onap.readthedocs.io/en/latest/

Dispatcher
~~~~~~~~~~

The APPC Dispatcher component processes requests received by the Request
Handler from other ECOMP components. The Dispatcher checks the
conditions are sufficient for performing the request and selects the
correct Direct Graph (DG) workflow for execution or rejects the request.
When the DG execution is complete, the Dispatching function is
responsible for notifying the initiator of the operation with the
request execution result (Success/Error) and updates the VNF
Orchestration state in Active and Available Inventory (A&AI).

The detailed responsibilities of the Dispatcher are as follows:

-  Upon receiving the operation request, the Dispatcher performs the
   synchronous part of the execution:

   -  Starts the operation's time-to-live countdown

   -  Queries A&AI to get the VNF type and its current orchestration
      state

   -  Checks VNF\_type-specific rules in the LCM State machine for
      whether to allow or reject the requested command execution

   -  Allocates and initiates an appropriate DG workflow by invoking the
      Service Logic Interpreter (SLI) framework to start the
      asynchronous part of the execution

   -  Returns a response to the initiator: OK or reject (for example, if
      the State Machine blocks the operation, no DG or time-to-live, or
      bad parameters)

   -  If the operation is rejected, the Dispatcher generates an
      appropriate Audit log for the Event and Error Logging Framework
      (EELF) and the Local Event Journal

-  Upon workflow completion, the Dispatcher:

   -  Receives the execution results from the DG from the SLI framework

   -  Publishes the execution result over DMaaP (success or error)

   -  Updates VNF status in A&AI

   -  Generates an Audit log for EELF and Local Event Journal

Request Handler
^^^^^^^^^^^^^^^

The Request Handler manages incoming requests and locks APPC for new
requests, as needed for operations with a specific command execution
sequences.

Lifecycle Management
^^^^^^^^^^^^^^^^^^^^

The Lifecycle Management VNF State Machine enables the Dispatching
function to determine the validity of the requested operation (desired
state) as a function of the current VNF state, acquired from the A&AI.
The State Machine maintains its data (states and valid operations)
in-memory. At the point of APPC initialization, the State Machine
constructs a matrix based on the metadata of the current operation and
the valid desired state. 

Command Executor
^^^^^^^^^^^^^^^^

Manages command execution queue.

State Machine
~~~~~~~~~~~~~

The VNF State machine enables the Dispatching function to determine
the validity of the requested operation (desired state) as a
function of the current VNF state, acquired from the A&AI. The State
machine maintains its data (states and valid operations) in-memory.
At the point of APP-C initialization, the State Machine constructs a
matrix based on the metadata of the current operation and the valid
desired state. 

The Service Logic Interpreter (SLI) Framework
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The SLI framework is responsible for executing Directed Graphs (DGs).
The Dispatcher invokes the SLI framework to execute a specific DG, based
on the input action. The SLI executes the DG and the sub-DG and returns
a success or failure response to the caller along with the context
variables used to exchange data with the calling body (for example, the
Dispatcher). The caller can use the SLI context to specify data required
for DG execution. The DG returns the same context when execution
completes.

Currently, there is a combination of input action specific and/or VNF
type specific DG’s as well as a DGOrchestrator DG which is action and
VNF type agnostic. The DGOrchestrator approach consists of the
following:

-  DGOrchestrator DG which:

   -  Accepts request from the Dispatcher and converts it into DG
      context format

   -  Calls A&AI to retrieve the inventory for the VNF instance

   -  Calls a Sequence Generator for start/stop actions which generates
      a workflow sequence containing a set of start or stop VM requests

   -  Auto-generates a workflow for other requests with a single step

   -  Executes each step in the workflow by invoking DG’s to interact
      with the VNF, OpenStack, or Ansible/Chef servers. These DG’s which
      are specific to the protocol and possibly action. Some DG’s may
      update A&AI (such as for Configure) or retrieve the VNF running
      configuration.

   -  Returns success/failure status to the Dispatcher.

In the future, all action/VNF type specific DG’s will be migrated to the
DGOrchestrator approach.

The following diagram shows the Amsterdam Release DGOrchestrator
architecture

    |image6|

Westbound Layer
~~~~~~~~~~~~~~~

A&AI
^^^^

    A&AI is an ONAP component, which maintains information about VNF
    instances. APPC uses A&AI as a source of the true VNF status,
    topology and operational data. In addition, at the end of each
    operation, APPC updates the VNF changes that result from the
    operation: for example, VNFC record(s) are added after
    configuration. The VNF orchestration status is not updated for
    read-only operations such as Sync or Audit. In the case of the VNF
    Terminate operation, APPC removes the terminated VNF from A&AI by
    deleting its Virtual Machines (VMs). 

    The Dispatching function and operation-specific DGs manage access to
    the A&AI using the A&AI Adapter.  

Southbound Layer
~~~~~~~~~~~~~~~~

Southbound VNF Adapters
^^^^^^^^^^^^^^^^^^^^^^^

    APPC uses several adapters to communicate with VNFs. The Interface
    as a Service (IAAS) adapter is part of the OpenDayLight (ODL)
    platform, while other adapters have been added by the ONAP
    development.

Restconf Adapter
^^^^^^^^^^^^^^^^^

    The Adapter is responsible for configuration tasks, using JSON
    format, for VNFs supporting Restconf API.
    
**Using the Restconf Adapter**
     The restconf adapter is normally called from a directed graph.
     An "execute" node block should be used in the directed graph to
     the "org.onap.appc.adapter.rest.RestAdapter" plug-in. There are
     several methods available to use:

- commonGet
- commonDelete
- commonPost
- commonPut
     
There are several parameters that the RestAdapter plug-in takes

org.onap.appc.instance.URI
  The url that the rest request will be made to
org.onap.appc.instance.requestBody
  The body of the rest request
org.onap.appc.instance.headers
  The header of the rest request
org.onap.appc.instance.haveHeader
  true/false value which specifies if a header is present.
  (Should be set to "true" if the org.onap.appc.instance.headers
  parameter is defined, or set to "false" if the
  headers parameter is not defined)
  
There are several parameters returned back to the DG from the RestAdapter

org.onap.rest.result.code
  An http code representing if the request completed. Will always be 200
  if the request completes. See the below parameter for the exact http code
  that gets returned.
org.onap.rest.agent.result.code
  The http code returned from the rest request.
org.onap.rest.agent.result.message
  The status or body returned from the rest request.
  
An example execute node:

::

<execute plugin='org.onap.appc.adapter.rest.RestAdapter' method='commonPut' >
<parameter name='org.onap.appc.instance.URI' value='`$restUrl`'/>
<parameter name='org.onap.appc.instance.requestBody' value='`$jsonContent`'/>
<parameter name='org.onap.appc.instance.headers' value='{"Content-type":"application/json"}'/>
<parameter name='org.onap.appc.instance.haveHeader' value='true'/>
    
    

Netconf Adapter
^^^^^^^^^^^^^^^

    The Adapter is responsible for configuration tasks, using XML
    format, for VNFs supporting Netconf API.

IAAS Adapter 
^^^^^^^^^^^^^

    The IAAS Adapter connects APPC with the OpenStack controllers to
    perform various operations on VMs and VNFs such as Restart, Migrate,
    and Rebuild. The IAAS Adapter integrates as a DG plugin, while the
    DGs call the services exposed by the adapter.

SSH (XML/CLI) Adapter
^^^^^^^^^^^^^^^^^^^^^

    A custom adapter that enables connection to a VNF using an SSH
    session. It is designed to support CLI and XML protocols, including
    Netconf. It is used to load configurations and retrieve the running
    configuration.

Chef Adaptor
^^^^^^^^^^^^

    This adaptor incorporates a client for an external Chef server,
    which connects to VNF NB APIs. The adaptor enables APPC to operate
    cookbooks (Chef recipes) to perform various LCM operations over
    VNFs, connected to the Chef server.

Ansible Adapter
^^^^^^^^^^^^^^^

    This adaptor incorporates a client for an external Ansible server,
    which connects to VNF NB APIs. The adaptor enables APPC to operate
    playbooks to perform various LCM operations over VNFs connected to
    the Ansible server.

Cross Cutting Components
~~~~~~~~~~~~~~~~~~~~~~~~

The Cross Cutting Component services operate across all APPC modules.

Configuration
^^^^^^^^^^^^^

Used to configure operational parameters of APPC modules based on
function-specific configuration files, for example:

-  ``log4j.properties`` for the logging service

-  ``appc.properties`` for core APPC-related configuration

-  ``dblib.properties`` for managing APPC database-related configuration

-  ``aaiclient.properties`` for managing A&AI-related configuration

KPI Service
^^^^^^^^^^^

This Cross Cutting component manages KPI measurement, storage and
reporting.

Enable matrix logs to log the number of hits of the configured method of
APPC, by configuring the following properties in ``appc.properties:``::

   metric.enabled=<true>
   schedule.policy.metric.start.time=<time value in hhmmss>
   schedule.policy.metric.period = 60(interval in seconds)

Security Service
^^^^^^^^^^^^^^^^

This component implements AAF (Authentication and Authorization
Framework) for APPC API security. The user provides a user name and
password in the request that will be validated against centralize AAF.
[Note: For Amsterdam Releasse, AAF is not used]

Logging Service
^^^^^^^^^^^^^^^

Implements EELF (Event and Error Logging Framework) to manage and
generate logs (refer to Logging section).

Data Access Service
^^^^^^^^^^^^^^^^^^^

Provides access to the internal data store.

Transactions store
~~~~~~~~~~~~~~~~~~

For each operation request procedure that completes or terminates,
APPC generates and stores an accurate transaction record in its
internal database, including:

-  Timestamp

-  Request ID

-  Start time

-  End time

-  VF\_ID

-  VF\_type

-  Sub-component (optional) e.g. VFC\_ID/VM UUID

-  Operation: for example Start, Configure, etc.

-  Result: Success/Error code and description, as published to the
   initiator

Interfaces Summary
~~~~~~~~~~~~~~~~~~

+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| **Source**        | **Flow**   | **Destination**         | **Service**       | **Port**    | **Purpose / Comments**                                                                                                                                                     |
+===================+============+=========================+===================+=============+============================================================================================================================================================================+
| APPC              |    ->      | A&AI                    | REST              | 8443        | APPC retrieves and updates the VNF data in AAI.                                                                                                                            |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | SLI                     | Java (internal)   | N/A         | APPC sends the LCM API request to SLI for DG execution                                                                                                                     |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | South-bound Adapters    | Java (internal)   | N/A         | APPC interacts  with southbound adapters for VNF Lifecycle Management Actions                                                                                              |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | NETCONF                 | NETCONF           | 830 or 22   | NETCONF Adapter communicates on port 830 (default) or port 22 (SSH – if set up)                                                                                            |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | Chef Server             | HTTP/HTTPS        | 80/443      | Chef adapter communicate on port 80 (HTTP) or port 443 (HTTPS)                                                                                                             |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | Ansible Server          | HTTP              | 8000        | Port 8000 is used for communication between the APPC Ansible Adaptor and the Ansible Server.                                                                               |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | MySQL                   | Java (internal)   | 3306        |                                                                                                                                                                            |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | DG Builder              | Java (internal)   | 3000        |                                                                                                                                                                            |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | MD-SAL, Apidoc, Karaf   | Java (internal)   | 8282        |                                                                                                                                                                            |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | DMaaP                   | JMS               | 3904        | APPC sends the Asynchronous responses and Failure events to DMaaP Message Bus                                                                                              |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Portal,SO, DCAE   |    ->      | APPC                    | REST/DMaaP        | 3904        | APPC receives LCM commands from and makes updates to ONAP components such as the Portal, MSO, and DCAE                                                                     |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SDC               |    ->      | APPC                    | DMaaP             | 3904        | APPC requests and receives notifications from SDC for VNF License Artifacts and TOSCA dependency models.                                                                   |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| APPC              |    ->      | DCAE                    | DMaaP             | 3904        | APPC sends intermediate messages to DCAE. Long-running operations such as Start, Restart, Stop, and Terminate generate intermediate success/failure messages per VNFC.     |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| OOM               |    ->      | APPC                    | DMaaP             | 3904        | APPC receives operational commands: Start, Graceful Stop.                                                                                                                  |
|                   |            |                         |                   |             | APPC reports: status, KPIs.                                                                                                                                                |
+-------------------+------------+-------------------------+-------------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

APPC Deployment 
================

Refer to the APPC Deployment documentation at
http://onap.readthedocs.io/en/latest/submodules/appc/deployment.git/docs/index.html

Application Controller VNF Onboarding
=====================================

LCM Command Execution Overview
------------------------------

The Application Controller assumes that the A&AI instance it is
configured with contains all the information it needs about
VNF/VNFC/VMs, otherwise any request by the user to perform an action
on a VNF will fail. The Application Controller uses a variety of SQL
tables in order to perform actions on a VNF, all of which are
described in Creation of DGs

DGs are created using the Direct Graph Builder - Node Red graphical
utility for DGs creation. DGs are then stored as XML files and loaded to
APPC MySQL database. The DGs invoke the execution of Java code from
different nodes.

DGs are resolved according to LCM Action, API version, VNF Type, and VNF
Version.

The SLI framework is responsible for executing the DGs.

Data Setup. 
~~~~~~~~~~~~

Initially, Application Controller should have a set of DGs designed
for the specific VNF type. These DGs are stored in the SVC\_LOGIC
table.

After a user sends an action request to the controller, the
Application Controller uses the VNF\_DG\_MAPPING table to map the
requested action to a specific DG. If the mapping was successful,
the input body is validated and the user receives a synchronous
response containing an Accept or a Reject message to indicate
whether the request was rejected or whether it was accepted and the
controller initiated the DG flow.

During the execution of a DG, the controller may use one or more SQL
tables to fetch or store data. For example, in order to perform a
ConfigModify action, the controller needs to fetch a username and
password to connect to the VNF and change its configuration.

ALL tables used during DG execution are described below.

Request execution
-----------------

Following initial request validation, APPC queries the A&AI inventory to
acquire all the required information regarding topology of VNF/VNFC/VMs,
operational status and operational data of the requested VNF instance. A
missing target VF instance or any missing mandatory parameter in A&AI
generate a rejection.

After acquiring the VNF type from A&AI, APPC uses the VNF\_DG\_MAPPING
table to map the requested action to a specific DG. No such DG located
in the table generates a Reject response to the user.

The Dispatcher state machine applies operation policies. A policy
allowing execution generates an Accept response to the user. Not
allowing execution generates a Reject response.

If the first two steps were successful, the controller initiates the
appropriate DG.

During the execution of a DG, the controller may use one or more SQL
tables to fetch or store data. For example, to perform a ConfigModify
action, the controller needs to fetch a username and password to connect
to the VNF and change its configuration.

`Data Setup <#_Data_Setup>`__ describes the tables used during DG
execution.

If APPC is forced stopped while it is executing an LCM request, it might
take some time to terminate all the threads that are being executed. In
addition, the old threads might start to execute again once the APPC is
restarted. The time when these treads start to execute again even after
an APPC restart is dependent on the LCM request executed by the threads
in the LCM queue and the ThreadPool size. To avoid this, it is
recommended that:

-  Start APPC only after a while to ensure that the interrupted threads
   are not executed again.

-  Do not execute the OAM-Forceful Stop command if the system is
   executing an LCM request. Let the system operate in Maintenance mode.

   1. .. rubric:: Creation of DGs
         :name: creation-of-dgs

DGs are created using the Direct Graph Builder - Node Red graphical
utility for DGs creation. DGs are then stored as XML files and loaded to
APPC MySQL database. The DGs invoke the execution of Java code from
different nodes.

At runtime, DGs are resolved according to LCM Action, API version, VNF
Type, and VNF Version.

The SLI framework is responsible for executing the DGs.

Data Setup
----------

APPC uses MySQL database as a persistent store. This section describes
the tables in general and the tables that require data to be set up
before sending a request.

SVC\_LOGIC Table
~~~~~~~~~~~~~~~~

SVC\_LOGIC table stores all NodeRed DGs invoked by actions executed by
APPC. The SLI framework uses this table for running the DG. If the DG
does not exist in this table, the SLI framework returns a 'DG not found'
error.

SVC\_LOGIC Parameters
^^^^^^^^^^^^^^^^^^^^^

+----------------------+----------------------+
| **Parameter Name**   | **Example Values**   |
+======================+======================+
| **module**           | APPC                 |
+----------------------+----------------------+
| **rpc**              | Generic\_Audit       |
+----------------------+----------------------+
| **version**          | 2.0.0                |
+----------------------+----------------------+
| **mode**             | sync                 |
+----------------------+----------------------+
| **active**           | N                    |
+----------------------+----------------------+
| **graph**            | <BLOB>               |
+----------------------+----------------------+

**module, rpc, version**

The ``module``, ``rpc``, and ``version`` parameters uniquely identify a Directed
Graph (DG). The SLI framework uses these three parameters to invoke a DG
or sub-DG. By convention, for the main DG, rpc is a combination of 'VNF
type' (the generic type applied to all VNFs) followed by '\_' and
'action'. This is the default convention; resolution of the DG for
specific actions is handled individually in the relevant forthcoming
sections.

**mode**

The DG execution node. This value is set to ‘sync’ for all APPC DGs.

**active**

This flag is the value of either 'Y' or 'N'. This flag is only used if
specific version of DG is not mentioned while calling DG. If version of
DG is not mentioned SLI framework will look for DG with active Flag set
to 'Y' and execute it if found.

**graph**

This is actual graph invoked by SLI framework. The data type is SQL
BLOB.

VNF\_DG\_MAPPING
~~~~~~~~~~~~~~~~

The VNF\_DG\_MAPPING table stores the VNF and its corresponding DG. This
is used by the DG resolver logic of the Dispatcher to map the DG to the
requested action. Only the mapping is stored; the actual DG is stored in
the SVC\_LOGIC table.

The DG resolver logic uses a combination of action, api\_version and
vnf\_type to retrieve the DG details: dg\_name (rpc column of SVC\_LOGIC
table), dg\_version and dg\_module.

The module, rpc and version uniquely identify the DG.

The following assigned priority resolves the VNF DG:

1. ``action``

2. ``api_version``

3. ``vnf_type``

4. ``vnf_version``

Blank, null or ‘\*’ values in ``api_version``, ``vnf_type`` and ``vnf_version``
are matched with any values by the DG resolver. For example, a generic
DG which can be invoked on any type of VNF ``vnf_type`` can be blank /
null or \*. The DG resolver logic first tries to match a specific DG,
and if this is not found, then look for a generic match using ‘\*’. For
example as illustrated in the Example values in below table, an entry
for the Test action and vnf\_type VSBG is specific, so it is only used
for VNFs of type VSBG, whereas for the Sync action the same DG is used
for any type of VNF and any version.

VNF\_DG\_MAPPING Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------+----------------------+-----------------+
| **Parameter Name**   | **Example Values**                     |
+======================+======================+=================+
| **action**           | Test                 | Sync            |
+----------------------+----------------------+-----------------+
| **api\_verson**      | 2                    |                 |
+----------------------+----------------------+-----------------+
| **vnf\_type**        | vSBG                 |                 |
+----------------------+----------------------+-----------------+
| **vnf\_version**     |                      |                 |
+----------------------+----------------------+-----------------+
| **dg\_name**         | vSBG\_Test           | Generic\_Sync   |
+----------------------+----------------------+-----------------+
| **dg\_version**      | 2.0.0.1              | 2.0.0           |
+----------------------+----------------------+-----------------+
| **dg\_module**       | APPC                 | APPC            |
+----------------------+----------------------+-----------------+

VNFC\_DG\_MAPPING
~~~~~~~~~~~~~~~~~

VNFC\_DG\_MAPPING stores the VNFC and its corresponding DG. The DG
resolver logic of the Dispatcher uses this to map the DG to the
requested action. Only the mapping is stored; the actual DG is stored in
the SVC\_LOGIC table.

The DG resolver logic uses a combination of ``action``, ``api_version``,
``vnf_type``, and ``vnfc_type`` to retrieve the DG details: ``dg_name`` (rpc
column of SVC\_LOGIC table), ``dg_version``, and ``dg_module``.

The module, rpc and version uniquely identify the DG.

The following assigned priority resolves the VNF DG:

1. ``action``

2. ``api_version``

3. ``vnf_type``

4. ``vnfc_type``

The DG resolver matches blank, null or ‘\*’ values in ``api_version`` ,
``vnf_type`` and ``vnfc_type`` with any values. For example, a generic DG
which can be invoked on any type of VNFC 'vnfc\_type' can be blank /
null or \*. The DG resolver logic first tries to match a specific DG. If
this is not found, the DG resolver looks for a generic match using ‘\*’.

VNFC\_DG\_MAPPING parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------+---------------------+
| **Parameter Name**   | **Example Value**   |
+======================+=====================+
| **action**           |                     |
+----------------------+---------------------+
| **api\_version**     |                     |
+----------------------+---------------------+
| **vnf\_type**        |                     |
+----------------------+---------------------+
| **vnfc\_type**       |                     |
+----------------------+---------------------+
| **dg\_name**         |                     |
+----------------------+---------------------+
| **dg\_version**      |                     |
+----------------------+---------------------+
| **dg\_module**       |                     |
+----------------------+---------------------+

DEVICE\_AUTHENTICATION
~~~~~~~~~~~~~~~~~~~~~~

The DEVICE\_AUTHENTICATION table stores device authentication
details. It is used by actions such as Audit and Sync which connect
with VNFs. This table stores a record that corresponds to each VNF
type, so ``vnf_type`` is unique.

Username, password and port\_number are fields corresponding to
``vnf_type``.

DEVICE\_AUTHENTICATION Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------------------+---------------------+
| **Parameter Name**               | **Example Value**   |
+==================================+=====================+
| **device\_authentication\_id**   | 41                  |
+----------------------------------+---------------------+
| **vnf\_type**                    | vDBE-V              |
+----------------------------------+---------------------+
| **user\_name**                   | root                |
+----------------------------------+---------------------+
| **password**                     | <password>          |
+----------------------------------+---------------------+
| **port\_number**                 | 22                  |
+----------------------------------+---------------------+

VNF\_LOCK\_MANAGEMENT
~~~~~~~~~~~~~~~~~~~~~

The VNF\_LOCK\_MANAGEMENT table is used to persist data for vnf
locking. APPC locks the vnf id when actions start executing on that
vnf id. This table stores vnf\_id i.e. resource\_id  along with
owner , expiration\_time or timeout. Before execution of request,
the dispatcher checks if VNF\_ID is already locked by another action
in execution. If VNF\_ID is not locked, the dispatcher will locks it
or else returns a VNF locked error to caller.

VNF\_LOCK\_MANAGEMENT Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------+---------------------+
| **Parameter Name**   | **Example Value**   |
+======================+=====================+
| **resource\_id**     | AUDIT\_1652         |
+----------------------+---------------------+
| **owner\_id**        | vDBE-V              |
+----------------------+---------------------+
| **updated**          | 1474457140000       |
+----------------------+---------------------+
| **timeout**          | 0                   |
+----------------------+---------------------+
| **ver**              | 22                  |
+----------------------+---------------------+

This table do not require any initial setup.

VNF\_STATE\_MANAGEMENT
~~~~~~~~~~~~~~~~~~~~~~

The VNF\_STATE\_MANAGEMENT table is used to store the operational state
of VNF\_ID, whether it is stable or unstable. It stores state, owner and
updated time (in milliseconds). This table does not require any initial
setup.

VNF\_STATE\_MANAGEMENT Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------+-------------------------------------+
| **Parameter Name**   | **Example Value**                   |
+======================+=====================================+
| **vnf\_if**          | ASHISH\_VSBG\_VNFS\_1787            |
+----------------------+-------------------------------------+
| **state**            | STABLE                              |
+----------------------+-------------------------------------+
| **owner\_id**        | ORIG\_1787@REQ\_1787@SUBREQ\_1787   |
+----------------------+-------------------------------------+
| **updated**          | 1474457140000                       |
+----------------------+-------------------------------------+
| **timeout**          | 0                                   |
+----------------------+-------------------------------------+
| **ver**              | 22                                  |
+----------------------+-------------------------------------+

UPLOAD\_CONFIG
~~~~~~~~~~~~~~

The UPLOAD\_CONFIG table is used by configuration management actions
such as Audit, Sync, ConfigModify, Terminate, and similar. It stores
device configuration: one row or record corresponds to one VNFC, so
therefore a VNF that has multiple VNFCs has multiple rows in the
table.

The UPLOAD\_CONFIG table stores configuration as the following
types:

-  ``Current``

-  ``Running``

-  ``Historic``

The ``config_indicator`` column denotes the type of configuration,
where a null value denotes ``Historic`` configuration. For a single VNFC
there should only be one ``Current`` and one ``Running`` configuration , but
there can be multiple Historic configurations. This table does not
require any initial setup.

UPLOAD\_CONFIG Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^

+----------------------------+-------------------------+-------------------------+
| **Parameter Name**         | **Example Values**                                |
+============================+=========================+=========================+
| **upload\_config\_id**     | 63                      | 67                      |
+----------------------------+-------------------------+-------------------------+
| **request\_id**            | 3                       | REQ\_1690               |
+----------------------------+-------------------------+-------------------------+
| **originator\_id**         | 12345                   | ORIG\_1690              |
+----------------------------+-------------------------+-------------------------+
| **service\_description**   | abcde                   | abcde                   |
+----------------------------+-------------------------+-------------------------+
| **action**                 | ConfigModify            | Sync                    |
+----------------------------+-------------------------+-------------------------+
| **upload\_date**           | 2016-08-01 14:30:40     | 2016-09-22 12:30:40     |
+----------------------------+-------------------------+-------------------------+
| **vnf\_id**                | AUDIT\_1767             | AUDIT\_1690             |
+----------------------------+-------------------------+-------------------------+
| **vnf\_name**              | GET\_RUN\_CONFIG\_VNF   | GET\_RUN\_CONFIG\_VNF   |
+----------------------------+-------------------------+-------------------------+
| **vm\_name**               | GET\_RUN\_CONFIG\_VNF   | GET\_RUN\_CONFIG\_VNF   |
+----------------------------+-------------------------+-------------------------+
| **vnf\_type**              | vDBE-V                  | vDBE-V                  |
+----------------------------+-------------------------+-------------------------+
| **vnfc\_type**             | vDBE-V2                 | vDBE-V1                 |
+----------------------------+-------------------------+-------------------------+
| **host\_ip\_address**      | 135.25.69.37            |                         |
+----------------------------+-------------------------+-------------------------+
| **config\_indicator**      | Current                 | Running                 |
+----------------------------+-------------------------+-------------------------+
| **pending\_delete**        |                         |                         |
+----------------------------+-------------------------+-------------------------+
| **content**                | Dummy\_current          | <Configuration>         |
+----------------------------+-------------------------+-------------------------+

DEVICE\_INTERFACE\_PROTOCOL
~~~~~~~~~~~~~~~~~~~~~~~~~~~

The DEVICE\_INTERFACE\_PROTOCOL table stores the VNF type and
corresponding sub-DG used to get the running configuration of a device.
The 'getRunningConfig' DG, which is a sub-DG called by Audit and Sync
DG, uses this table. It stores the VNF type and corresponding sub-DG,
which are used to get the running configuration of a device. The ``module``
and ``DG_RPC`` are used to identify the DG from the SVC\_LOGIC table. The
``protocol`` is used to store the protocol defined for retrieving
configuration. If a mapping between the VNF type and the DG does not
exist in this table, then actions such as Audit and Sync fail with the
error message 'Device Interfacing DG not available'.

DEVICE\_INTERFACE\_PROTOCOL Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+---------------------------------------+--------------------------+
| **Parameter Name**                    | **Example Value**        |
+=======================================+==========================+
| **device\_interface\_protocol\_id**   | 4                        |
+---------------------------------------+--------------------------+
| **vnf\_type**                         | vDBE-V                   |
+---------------------------------------+--------------------------+
| **protocol**                          | NETCONF-XML              |
+---------------------------------------+--------------------------+
| **module**                            | APPC                     |
+---------------------------------------+--------------------------+
| **dg\_rpc**                           | getDeviceRunningConfig   |
+---------------------------------------+--------------------------+

CONFIG FILES
~~~~~~~~~~~~

The CONFIG\_FILES table is used by the several configuration DGs, using
a legacy configuration API, to store artifacts from SDC, configuration
data from requests, and configurations to be downloaded to VNFs.

CONFIG\_FILES Parameters
^^^^^^^^^^^^^^^^^^^^^^^^

+-----------------------------+----------------------------+
| **Parameter Name**          | **Example Value**          |
+=============================+============================+
| **config\_file\_id**        | 24                         |
+-----------------------------+----------------------------+
| **external\_version**       |                            |
+-----------------------------+----------------------------+
| **data\_source**            | Configurator               |
+-----------------------------+----------------------------+
| **creation\_date**          | 6/9/2016 11:16:57 AM       |
+-----------------------------+----------------------------+
| **service\_instance\_id**   | ibcx0001vm001              |
+-----------------------------+----------------------------+
| **vnf\_type**               | ISBC                       |
+-----------------------------+----------------------------+
| **vnfc\_type**              | vISBC - mmc                |
+-----------------------------+----------------------------+
| **file\_category**          | device\_configuration      |
+-----------------------------+----------------------------+
| **file\_name**              | orch\_config.json          |
+-----------------------------+----------------------------+
| **file\_content**           | (contains configuration)   |
+-----------------------------+----------------------------+

GET\_CONFIG\_TEMPLATE
~~~~~~~~~~~~~~~~~~~~~

The GET\_CONFIG\_TEMPLATE table is used by the 'getDeviceRunningConfig'
DG, which is used as a sub-DG for the Audit and Sync actions. It stores
template data corresponding to the VNF type. Template data is only used
when the protocol in DEVICE\_INTERFACING\_PROTOCOL table is set to
'CLI'. Other protocols do not use this table. If Data does not exist in
this table and protocol is set to 'CLI' then DG results in 'Error
getting Template Data'.

GET\_CONFIG\_TEMPLATE Parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+---------------------------------------+-----------------------------------------+
| **Parameter Name**                    | **Example Value**                       |
+=======================================+=========================================+
| **get\_config\_template\_id**         | 1                                       |
+---------------------------------------+-----------------------------------------+
| **vnf\_type**                         | Generic                                 |
+---------------------------------------+-----------------------------------------+
| **device\_interface\_protocol\_id**   | 3                                       |
+---------------------------------------+-----------------------------------------+
| **xml\_processing**                   |                                         |
+---------------------------------------+-----------------------------------------+
| **xml\_protocol**                     |                                         |
+---------------------------------------+-----------------------------------------+
| **template**                          | Login\_Prompt: Matches "Login as:"...   |
+---------------------------------------+-----------------------------------------+

ASDC\_ARTIFACTS
~~~~~~~~~~~~~~~

The ASDC\_ARTIFACTS table contains the model received from the SDC in
YAML format. APP-C reads this model and identifies the order of the
VNFCs and their resilience types.

ASDC\_ARTIFACTS parameters
^^^^^^^^^^^^^^^^^^^^^^^^^^

+--------------------------------+------------------------+
| **Parameter Name**             | **Example Value**      |
+================================+========================+
| **asdc\_artifacts\_id**        | 1                      |
+--------------------------------+------------------------+
| **service\_uuid**              | Service-uuid           |
+--------------------------------+------------------------+
| **distribution\_id**           | Distribution-ID        |
+--------------------------------+------------------------+
| **service\_name**              | Test                   |
+--------------------------------+------------------------+
| **service\_description**       | Test                   |
+--------------------------------+------------------------+
| **resource\_uuid**             | Resource-uuid          |
+--------------------------------+------------------------+
| **resource\_instance\_name**   | vSCP                   |
+--------------------------------+------------------------+
| **resource\_name**             | vSCP                   |
+--------------------------------+------------------------+
| **resource\_version**          | 1.0                    |
+--------------------------------+------------------------+
| **resource\_type**             | VF                     |
+--------------------------------+------------------------+
| **artifact\_uuid**             | Artifact-uuid          |
+--------------------------------+------------------------+
| **artifact\_type**             | TOPOLOGY               |
+--------------------------------+------------------------+
| **artifact\_version**          | 1                      |
+--------------------------------+------------------------+
| **artifact\_description**      | VNF Dependency Model   |
+--------------------------------+------------------------+
| **internal\_version**          | 0                      |
+--------------------------------+------------------------+
| **creation\_date**             | 2016-11-17 10:10:18    |
+--------------------------------+------------------------+
| **artifact\_name**             | Scp-template.yml       |
+--------------------------------+------------------------+
| **artifact\_content**          | <Content>              |
+--------------------------------+------------------------+

Sequence Generator API
======================

The Sequence Generator API generates the steps of execution for LCM
operations at minute-level. This API is exposed using the following
two endpoints:

-  DG plug-in

-  REST API

The Sequence Generator API takes an input file in JSON format and,
based on the parameters defined in the input file, generates an
output file.

This chapter comprises the following topics:

-  Sample input file

-  Sample output file

-  Supported actions

    The input file comprises:

-  Request information

-  Inventory information

All these sections of the input file and the parameters used are
explained in the subsequent sections.

Sample Input File
-----------------

::

	{
	  "request-info": {
		"action": "Stop",
		"action-level": "vm",
		"action-identifier": {
		  "vnf-id": "abc"
		},
		"payload":  " {\"vnf-host-ip-address\": \"10.147.124.163\" }"
	  },
	  "inventory-info": {
		"vnf-info": {
		  "vnf-id" : "abc",
		  "vnf-name": "vSCP",
		  "vnf-type": "vSCP",
		  "vnf-version" : "1.0",
		  "vm": [
			{
			  "vserver-id" : "be_vserverid1",
			  "vnfc":
			  {
				"vnfc-type": "BE",
				"vnfc-name": "BE - Name"
			  }
			},
			{
			  "vserver-id" : "fe_vserverid1",
			  "vnfc":
			  {
				"vnfc-type": "FE",
				"vnfc-name": "FE - Name"
			  }
			},
			{
			  "vserver-id" : "smp_vserverid1",
			  "vnfc":
			  {
				"vnfc-type": "SMP",
				"vnfc-name": "SMP - Name"
			  }
			}
		  ]
		}
	  }
	}


Parameters
~~~~~~~~~~

This section explains the parameters used in the Sequence Generator
API input file.

+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| **Parameter name**          | **Description**                                                                                                                                                               | **Possible values**                   | **Required?**   |
+=============================+===============================================================================================================================================================================+=======================================+=================+
| **Request Information**                                                                                                                                                                                                                                               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| action                      | The action to be executed by Sequence Generator API.                                                                                                                          | Start,Stop                            | Y               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| action-level                | Represents the level for the action such as, vm, vnfc.                                                                                                                        | Vnf,vnfc,vm,vf-module                 | Y               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| action-identifier           | A block containing the action arguments. These are used to specify the object upon which Sequence Generator API operates. At least one action-identifier must be specified.   | Vnf-id                                | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnf-id                      | Identifies the VNF instance to which this action is to be applied. vnf-id uniquely identifies the service-instance.                                                           | String                                | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| payload                     | An action-specific open-format field. The payload can be any valid JSON string value.                                                                                         | AICIdentity and vnf-host-ip-address   | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| **Inventory Information**                                                                                                                                                                                                                                             |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnfInfo                     | Represents the VNF information to which this action is to be applied.                                                                                                         | String                                | Y               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnf-id                      | Identifies the VNF instance to which this action is to be applied. vnf-id uniquely identifies the service-instance.                                                           | String                                | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnf-name                    | Identifies the VNF instance to which this action is to be applied.                                                                                                            | vSCP                                  | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnf-type                    | Represents the type of the VNF instance.                                                                                                                                      | vSCP                                  | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnf-version                 | Represents the version of the VNF instance.                                                                                                                                   | Alphanumeric                          | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vm                          | Represents the VM information to which this action is to be applied.                                                                                                          | List of VMs                           | Y               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vserver-id                  | Identifies a specific VM instance to which this action is to be applied.                                                                                                      | Alpha-numeric unique ID               | Y               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnfc                        | Represents the VNFC information to which this action is to be applied.                                                                                                        | vnfc-type, vnfc-name                  | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnfc-type                   | Represents the type of the VNFC instance.                                                                                                                                     | FE,BE,SMP                             | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+
| vnfc-name                   | Identifies the VNFC instance to which this action is to be applied.                                                                                                           | FE-Name, BE-Name, SMP-Name            | N               |
+-----------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------+-----------------+

Sample Output file
------------------

::

	[{
		"transactionId": 1,
		"action": "Stop",
		"action-level": "vm",
		"action-identifier": {
			"vserver-id": "be_vserverid1"
		},
		"payload": " {\"vnf-host-ip-address\": \"10.147.124.163\" }",
		"responses": [{
			"response-message": "failure",
			"response-action": {
				"ignore": "true"
			}
		}]
	},
	{
		"transactionId": 2,
		"action": "Stop",
		"action-level": "vm",
		"action-identifier": {
			"vserver-id": "fe_vserverid1"
		},
		"payload": " {\"vnf-host-ip-address\": \"10.147.124.163\" }",
		"responses": [{
			"response-message": "failure",
			"response-action": {
				"ignore": "true"
			}
		}]
	},
	{
		"transactionId": 3,
		"action": "Stop",
		"action-level": "vm",
		"action-identifier": {
			"vserver-id": "smp_vserverid1"
		},
		"payload": " {\"vnf-host-ip-address\": \"10.147.124.163\" }",
		"responses": [{
			"response-message": "failure",
			"response-action": {
				"ignore": "true"
			}
		}]
	}
	]


Supported Actions
-----------------

The following actions are supported for the Sequence Generator API
for the Amsterdam release:

-  Generate Runtime Sequence Flow for Start Action with no dependency
   model

-  Generate Runtime Sequence Flow for Stop Action with no dependency
   model

.. |image0| image:: media/AppCDeployment.png
   :width: 6.50000in
   :height: 2.55903in
.. |image1| image:: media/AppCApidoxExplorer.png
   :width: 6.50000in
   :height: 4.83611in
.. |image2| image:: media/AppCApidoxExplorer2.png
   :width: 6.50000in
   :height: 5.50139in
.. |image3| image:: media/AppCApidoxExplorer3.png
   :width: 6.50000in
   :height: 5.65347in
.. |image4| image:: media/AppCApidoxExplorer4.png
   :width: 6.50000in
   :height: 6.62292in
.. |image5| image:: media/AppCArchitectureDiagram.png
   :width: 6.50000in
   :height: 3.40347in
.. |image6| image:: media/AppCDGOrchestratorArchitecture.png
   :width: 6.36597in
   :height: 3.72903in
