From 59153e9cbf16ef20aca001c82e6d418e2cdb57a1 Mon Sep 17 00:00:00 2001 From: Scott Seabolt Date: Fri, 8 Sep 2017 15:08:33 -0400 Subject: Add APPC API Guide and APPC Client Library Guide Update index.rst to reflect new docs added Issue-ID: [APPC-102] Change-Id: Id07852a9318cd8168c26f074f9ab3b6b6c441232 Signed-off-by: Scott Seabolt --- .../APPC Client Library Guide.rst | 453 +++++++++++++++++++++ 1 file changed, 453 insertions(+) create mode 100644 docs/APPC Client Library Guide/APPC Client Library Guide.rst (limited to 'docs/APPC Client Library Guide/APPC Client Library Guide.rst') diff --git a/docs/APPC Client Library Guide/APPC Client Library Guide.rst b/docs/APPC Client Library Guide/APPC Client Library Guide.rst new file mode 100644 index 000000000..95e45c1b8 --- /dev/null +++ b/docs/APPC Client Library Guide/APPC Client Library Guide.rst @@ -0,0 +1,453 @@ +NAP Application Controller (APPC) Client Library Guide + ++-----------------+------------------+ ++-----------------+------------------+ +| Revision | Version 1.0.0 | ++-----------------+------------------+ +| Revision Date | 22 August 2017 | ++-----------------+------------------+ + ++--------------+------------+---------------+--------------------------------------------------+ +| Date | Revision | Author | Changes | ++--------------+------------+---------------+--------------------------------------------------+ +| 2017-08-22 | 1.0.0 | Paul Miller | First draft consistent with AT&T Release 17.10 | ++--------------+------------+---------------+--------------------------------------------------+ ++--------------+------------+---------------+--------------------------------------------------+ + +| + +** +** + +1. .. rubric:: Introduction + :name: introduction + + 1. .. rubric:: Target Audience + :name: target-audience + + This document is for an advanced technical audience, which includes + engineers and technicians. Document revisions occur with the release + of new software versions. + +Related Documentation +--------------------- + + For additional information, see the ONAP Application Controller + (APPC) API Guide. + + The following sections describe the conventions this document uses, + including notices, text conventions, and command-line conventions. + +Command-line Conventions +======================== + +The following table lists possible elements in a command-line path. + ++------------------+--------------------------------------------------------------------------------------------------------+ +| **Convention** | **Description** | ++==================+========================================================================================================+ +| Brackets [ ] | This is used for optional items. | ++------------------+--------------------------------------------------------------------------------------------------------+ +| Braces { } | This indicates choices separated by pipe (\|) for sets from which only one is selected. For example: | +| | | +| | {even\|odd} | ++------------------+--------------------------------------------------------------------------------------------------------+ +| Blue text | This indicates a link in this document online. | ++------------------+--------------------------------------------------------------------------------------------------------+ + +Text Conventions +~~~~~~~~~~~~~~~~ + + The following table lists text conventions in this document. + ++------------------------------------+----------------------------------------------------------------------------+ +| **Convention** | **Description** | ++====================================+============================================================================+ +| Monospace font with blue shading | This font indicates sample codes, screenshots, or elements. For example: | +| | | +| | contact": { | +| | | +| | "contactType": "USER", | +| | "source": "appl", | +| | | +| | } | ++------------------------------------+----------------------------------------------------------------------------+ +| *Italics* | Emphasizes a point or denotes new terms defined in the text. | +| | | +| | Indicates an external book title reference. | ++------------------------------------+----------------------------------------------------------------------------+ +| Numeric | A number composed of digits 0 through 9. | ++------------------------------------+----------------------------------------------------------------------------+ +| Text | Any combination of alphanumeric characters. | +| | | +| | New items in RED | ++------------------------------------+----------------------------------------------------------------------------+ + +Authors and Contributors +------------------------ + + The following table lists the persons who are authors and + contributors to this document. + ++--------------------+----------------------+ +| **Contributors** | ++====================+======================+ +| Borislav Glozman | Margrethe Fossberg | ++--------------------+----------------------+ +| Paul Mellor | John Buja | ++--------------------+----------------------+ ++--------------------+----------------------+ + +Terms and Acronyms +------------------ + +The following table defines terms and acronyms used in this document. + ++-----------------------+--------------------------------------------------------------+ +| **Term or Acronym** | **Definition** | ++=======================+==============================================================+ +| AAI | Active and Available Inventory | ++-----------------------+--------------------------------------------------------------+ +| AAF | Authentication & Authorization Framework | ++-----------------------+--------------------------------------------------------------+ +| AJSC | AT&T Java Service Container | ++-----------------------+--------------------------------------------------------------+ +| API | Application Programming Interface | ++-----------------------+--------------------------------------------------------------+ +| APPC | Application Controller | ++-----------------------+--------------------------------------------------------------+ +| SDC | Service Design and Creation | ++-----------------------+--------------------------------------------------------------+ +| DCAE | Data Collection Analytics and Events | ++-----------------------+--------------------------------------------------------------+ +| DG | Directed Graph | ++-----------------------+--------------------------------------------------------------+ +| DNS | Domain Name System | ++-----------------------+--------------------------------------------------------------+ +| EELF | Event and Error Logging Framework | ++-----------------------+--------------------------------------------------------------+ +| HDFS | Hadoop Distributed File System | ++-----------------------+--------------------------------------------------------------+ +| HTTP | Hypertext Transfer Protocol | ++-----------------------+--------------------------------------------------------------+ +| IAAS | Infrastructure As A Service | ++-----------------------+--------------------------------------------------------------+ +| I/O | Input/Output | ++-----------------------+--------------------------------------------------------------+ +| JMS | Java Messaging Service | ++-----------------------+--------------------------------------------------------------+ +| JSON | JavaScript Object Notation | ++-----------------------+--------------------------------------------------------------+ +| LAN | Local Area Network | ++-----------------------+--------------------------------------------------------------+ +| LRM | Local Resource Monitor | ++-----------------------+--------------------------------------------------------------+ +| SO | Service Orchestrator | ++-----------------------+--------------------------------------------------------------+ +| NOD | Network on Demand | ++-----------------------+--------------------------------------------------------------+ +| ODL | OpenDaylight | ++-----------------------+--------------------------------------------------------------+ +| ONAP | Open Network Application Platform | ++-----------------------+--------------------------------------------------------------+ +| OS | Operating System | ++-----------------------+--------------------------------------------------------------+ +| PO | Platform Orchestrator | ++-----------------------+--------------------------------------------------------------+ +| RCT | Reference Connection Tool | ++-----------------------+--------------------------------------------------------------+ +| RO | Resource Orchestrator | ++-----------------------+--------------------------------------------------------------+ +| SDN-C | Software Defined Network - Controller | ++-----------------------+--------------------------------------------------------------+ +| SDN-GP | Software Defined Network - Global Platform | ++-----------------------+--------------------------------------------------------------+ +| SME | Subject Matter Expert | ++-----------------------+--------------------------------------------------------------+ +| SNMP | Simple Network Management Protocol | ++-----------------------+--------------------------------------------------------------+ +| SMTP | Simple Mail Transfer Protocol | ++-----------------------+--------------------------------------------------------------+ +| SOT | Source Of Truth (ext. system where data object originates) | ++-----------------------+--------------------------------------------------------------+ +| SSH | Secure Shell | ++-----------------------+--------------------------------------------------------------+ +| TCP | Transmission Control Protocol | ++-----------------------+--------------------------------------------------------------+ +| TPS | Transactions per Second | ++-----------------------+--------------------------------------------------------------+ +| UEB | Universal Event Broker | ++-----------------------+--------------------------------------------------------------+ +| vCE | virtual CE (Customer Edge) router | ++-----------------------+--------------------------------------------------------------+ +| vPE | virtual PE (Provider Edge) router | ++-----------------------+--------------------------------------------------------------+ +| VLAN | Virtual Local Area Network | ++-----------------------+--------------------------------------------------------------+ +| VM | Virtual Machine | ++-----------------------+--------------------------------------------------------------+ +| VNF | Virtual Network Function | ++-----------------------+--------------------------------------------------------------+ +| VNFC | Virtual Network Function Component | ++-----------------------+--------------------------------------------------------------+ +| vSCP | Virtualized Service Control Point | ++-----------------------+--------------------------------------------------------------+ +| WAN | Wide Area Network | ++-----------------------+--------------------------------------------------------------+ +| WUI | Web User Interface | ++-----------------------+--------------------------------------------------------------+ +| XML | Extensible Markup Language | ++-----------------------+--------------------------------------------------------------+ +| YAML | YAML Ain't Markup Language | ++-----------------------+--------------------------------------------------------------+ + +Client Library Background +------------------------- + + This guide discusses the Application Controller (APPC) Client + Library and how to use it. + +About the Client Library +------------------------ + + The APPC client library provides consumers of APPC capabilities with + a strongly-typed Java interface and encapsulates the actual + interaction with the APPC component over an asynchronous messaging + channel such as UEB. + +Consumer Logic +-------------- + + The client application that consumes APPC's capability for VNF + lifecycle management (the APPC client library) can be implemented + against the lightweight and strongly-typed Java API exposed by the + APPC client library. The library does not try to impose + architectural constraints upon clients, but instead provides support + for different options and styles of API. It is the responsibility of + the client application to select the most suitable paradigm to use; + for example, a client may choose to use blocking calls as opposed to + asynchronous notifications. + +VNF Lifecycle Management API +---------------------------- + + The API represents a relatively thin layer that consists mainly of + business interfaces with strongly-typed APIs and a data object model + created for the convenience of the consumer application.  + + The original YANG schema used by the APPC component and the + underlying MD-SAL layer on the server-side generates these + artifacts. + +APP-C Client Library Flow +------------------------- + + |image0| + +Asynchronous Flow +~~~~~~~~~~~~~~~~~ + +- The APPC Client Library is called using an asynchronous API using a + full command object, which is mapped to a JSON representation. + +- The APPC client calls the UEB client and sends the JSON command to a + configured topic. + +- The APPC client pulls response messages from the configured topic. + +- On receiving the response for the command, the APPC client runs the + relevant callback method of the consumer ResponseHandler. + + 1. .. rubric:: Synchronous Flow + :name: synchronous-flow + +- The APPC Client Library is called using a synchronous API using a + full command object, which is mapped to a JSON representation. + +- The APPC client calls the UEB client and sends the JSON command to a + configured topic. + +- The APPC client pulls response messages from the configured topic. + +- On receiving the **final** response for the command, the APPC client + returns the response object with a final status. + +1. .. rubric:: Client Library Usage + :name: client-library-usage + + 1. .. rubric:: Jar Files + :name: jar-files + + The Java application that runs the APPC client kit uses the + following jar files: + +- com.att.appc.client.client-kit + +- com.att.appc.client.client-lib + + The client library JAR files are located in the repository under + /gerrit.onap.org/r/p/appc.git/appc-client. + +Initialization +~~~~~~~~~~~~~~~~ + + Initialize the client by calling the following method: + + AppcClientServiceFactoryProvider.getFactory(AppcLifeCycleManagerServiceFactory.class).createLifeCycleManagerStateful() + + Specify the following configuration properties as method parameters: + +- "topic.read" + +- "topic.read.timeout" + +- "topic.write" + +- "client.key" + +- "client.secret" + +- "client.name" + +- "client.name.id" + +- "poolMembers" + +- "client.response.timeout" + +- "client.graceful.shutdown.timeout" + +Shutdown +~~~~~~~~ + +Shutdown the client by calling the following method: + +void shutdownLifeCycleManager(boolean isForceShutdown) + +If the isForceShutdown flag is set to false, the client shuts down as +soon as all responses for pending requests are received, or upon +configurable timeout. (client.graceful.shutdown.timeout). + +If the isForceShutdown flag is set to true, the client shuts down +immediately. + +Invoking LCM Commands +~~~~~~~~~~~~~~~~~~~~~ + +Invoke the LCM commands by: + +- Creating input objects, such as AuditInput, LiveUpgradeInput, with + relevant command information. + +- Executing commands asynchronously, for example: + +void liveUpgrade(LiveUpgradeInput liveUpgradeInput, +ResponseHandler listener) throws +AppcClientException;) + +In this case, client should implement the ResponseHandler interface. + +- Executing commands synchronously, for example: + +LiveUpgradeOutput liveUpgrade(LiveUpgradeInput liveUpgradeInput) throws +AppcClientException;) + +Client API +---------- + + After initializing the client, a returned Object of type + LifeCycleManagerStateful defines all the Life Cycle Management APIs + supported by APPC. + + The interface contains two definitions for each RPC: one for + Asynchronous call mode, and one for Synchronous. + + In Asynchronous mode, client consumer should provide a callback + function of type: + + ResponseHandler + + where RPC-NAME is the command name, such as Audit or Snapshot. + + There may be multiple calls to the ResponseHandler for each response + returned by APPC. For example, first 100 'accept' is returned, then + 400 'success'. + +LifeCycleManagerStateful Interface +---------------------------------- + + Generated from the APPC Yang model, this interface defines the + services and request/response requirements for the ECOMP APPC + component. For example, for LCM Command Audit, the following is + defined: + + @RPC(name="audit", outputType=AuditOutput.class) + + AuditOutput audit(AuditInput auditInput) throws AppcClientException; + + For a Synchronous call to Audit, the consumer thread is blocked + until a response is received or a timeout exception is thrown. + + @RPC(name="audit", outputType=AuditOutput.class) + + void audit(AuditInput auditInput, ResponseHandler + listener) throws AppcClientException; + + For an Asynchronous call to Audit, a callback should be provided so + that when a response is received the listener is called. + +API documentation +----------------- + + The API documentation is also available as a swagger page generated + from files at /client-kit/target/resources. + +appc-provider-lcm +----------------- + +This defines the services and request/response requirements for the APPC +component. + +Methods +-------- + +The methods should match the actions described in the LCM API Guide. For +each method: + +**Consumes** + +This API call consumes the following media types using the +**Content-Type** request header: + +- application/json + +**Request body** + +The request body is the action name followed by Input (e.g., AuditInput) + +**Return type** + +The return type is the action name followed by Output (e.g., +OutputInput) + +**Produces** + +This API call produces the following media types according to the +**Accept** request header; the **Content-Type** response header conveys +the media type. + +- application/json + +**Responses** + +200 Successful operation + +401 Unauthorized + +500 Internal server error + +.. |image0| image:: image2.png + :width: 5.60495in + :height: 4.55272in + + -- cgit 1.2.3-korg