.. This work is licensed under a Creative Commons Attribution
.. 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2017 AT&T Intellectual Property.  All rights reserved.

.. index:: Developer Guides

.. _doc_onap-developer_guide_projects:

ONAP Components and Functionalities
===================================
Here you will find the detailed documentation of maintained projects,
ONAP components and functionalities.

AAI - Active and Available Inventory
------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`aai/aai-common<onap-aai-aai-common:master_index>`
     - AAI Architecture, APIs and Guides
   * - :ref:`aai/sparky-be<onap-aai-sparky-be:master_index>`
     - Sparky - AAI Inventory UI

CCSDK - Common Controller Software Development Kit
--------------------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`ccsdk/apps<onap-ccsdk-apps:master_index>`
     - Micro Services for CCSDK
   * - :ref:`ccsdk/cds<onap-ccsdk-cds:master_index>`
     - Controller Design Studio Architecture and Guides
   * - :ref:`ccsdk/distribution<onap-ccsdk-distribution:master_index>`
     - TOSCA Orchestration Plugin, Directed Graph Support
   * - :ref:`ccsdk/features<onap-ccsdk-features:master_index>`
     - Software Defined Network Controller for Radio (SDNR)
   * - :ref:`ccsdk/oran<onap-ccsdk-oran:master_index>`
     - O-RAN Support in ONAP

CPS - Configuration Persistence Service
---------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`cps<onap-cps:master_index>`
     - CPS Global
   * - :ref:`cps/cps-temporal<onap-cps-cps-temporal:master_index>`
     - CPS Temporal
   * - :ref:`cps/ncmp/dmi-plugin<onap-cps-ncmp-dmi-plugin:master_index>`
     - CPS DMI Plugin

DCAE - Data Collection, Analysis and Events
-------------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`dcaegen2<onap-dcaegen2:master_index>`
     - DCAE (Gen2) Architecture and Guides

DMAAP - Data Movement as a Platform
-----------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`dmaap/buscontroller<onap-dmaap-buscontroller:master_index>`
     - Bus Controller
   * - :ref:`dmaap/datarouter<onap-dmaap-datarouter:master_index>`
     - Data Router
   * - :ref:`dmaap/messagerouter/messageservice<onap-dmaap-messagerouter-messageservice:master_index>`
     - Message Router

HOLMES - Alarm Correlation and Analysis
----------------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`holmes/rule-management<onap-holmes-rule-management:master_index>`
     - Architecture and APIs
   * - :ref:`holmes/engine-management<onap-holmes-engine-management:master_index>`
     - Engine Management

INT - Integration
-----------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`integration<onap-integration:master_index>`
     - Integration Project

MOD - Modeling
--------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`modeling/etsicatalog<onap-modeling-etsicatalog:master_index>`
     - ETSI Runtime Catalog

MSB - Microservices Bus
-----------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`msb/apigateway<onap-msb-apigateway:master_index>`
     - Microservices Bus
   * - :ref:`msb/discovery<onap-msb-discovery:master_index>`
     - <to be revised>
   * - :ref:`msb/java-sdk<onap-msb-java-sdk:master_index>`
     - <to be revised>
   * - :ref:`msb/swagger-sdk<onap-msb-swagger-sdk:master_index>`
     - Swagger Software Development Kit

MULTICLOUD - MultiCloud Framework
---------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`multicloud/framework<onap-multicloud-framework:master_index>`
     - MultiCloud Framework Architecture and Guides
   * - :ref:`multicloud/k8s<onap-multicloud-k8s:master_index>`
     - Kubernetes Reference Deployment (KUD)

OOM - ONAP Operations Manager
-----------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`oom<onap-oom:master_index>`
     - ONAP Operations Manager
   * - :ref:`oom/offline-installer<onap-oom-offline-installer:master_index>`
     - OOM Offline Installer

OOF - Optimization Framework
----------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`optf/has<onap-optf-has:master_index>`
     - Homing and Allocation
   * - :ref:`optf/osdf<onap-optf-osdf:master_index>`
     - Optimization Service Design Framework

POLICY - Policy Framework
-------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`policy/parent<onap-policy-parent:master_index>`
     - Policy Framework

SDC - Service Design & Creation
-------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`sdc<onap-sdc:master_index>`
     - Service Design & Creation

SDNC - Software Defined Network Controller
------------------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`sdnc/oam<onap-sdnc-oam:master_index>`
     - SDNC Architecture, APIs and Guides

SO - Service Orchestration
--------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`so<onap-so:master_index>`
     - Service Orchestration Architecture, APIs and Guides

UUI - Usecase User Interface
-----------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`usecase-ui<onap-usecase-ui:master_index>`
     - Usecase-UI Architecture, APIs and Guides

VFC - Virtual Function Controller
---------------------------------

.. list-table::
   :widths: auto
   :header-rows: 1

   * - Component
     - Documentation
   * - :ref:`vfc/nfvo/lcm<onap-vfc-nfvo-lcm:master_index>`
     - Virtual Function Controller Architecture, APIs and Guides

