Added APPC User Guide 59/20359/1
authorScott Seabolt <js9808@att.com>
Tue, 24 Oct 2017 13:12:13 +0000 (09:12 -0400)
committerScott Seabolt <js9808@att.com>
Tue, 24 Oct 2017 13:12:51 +0000 (09:12 -0400)
Added the APPC User Guide

Identity-Id: APPC-103

Change-Id: I91b24ff47c2d7a670728b4c67147db5d9bf7d1d1
Signed-off-by: Scott Seabolt <js9808@att.com>
docs/APPC User Guide/APPC User Guide.rst [new file with mode: 0644]
docs/APPC User Guide/media/AppCApidoxExplorer.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCApidoxExplorer2.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCApidoxExplorer3.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCApidoxExplorer4.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCArchitectureDiagram.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCDGOrchestratorArchitecture.png [new file with mode: 0644]
docs/APPC User Guide/media/AppCDeployment.png [new file with mode: 0644]
docs/index.rst

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