.. 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:

Developing ONAP
===============
Additional developer level detail is provided for each project below.

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/aai/aai-common.git/docs/index
   AAI-esr-gui <../../../submodules/aai/esr-gui.git/docs/index>
   ../../../submodules/aai/esr-server.git/docs/index
   ../../../submodules/aai/sparky-be.git/docs/index


Application Controller
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/appc/deployment.git/docs/index
   ../../../submodules/appc.git/docs/index

Closed Loop Automation Platform
-------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/clamp.git/docs/index

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/ccsdk/distribution.git/docs/index
   ../../../submodules/ccsdk/dashboard.git/docs/index

.. Being consolidated in ccsdk distribution
   ../../../submodules/ccsdk/platform/blueprints.git/docs/index
   ../../../submodules/ccsdk/platform/nbapi.git/docs/index
   ../../../submodules/ccsdk/storage/esaas.git/docs/index
   ../../../submodules/ccsdk/storage/pgaas.git/docs/index
   ../../../submodules/ccsdk/utils.git/docs/index
   ../../../submodules/ccsdk/parent.git/docs/index
   ../../../submodules/ccsdk/platform/plugins.git/docs/index
   ../../../submodules/ccsdk/sli/adaptors.git/docs/index
   ../../../submodules/ccsdk/sli/core.git/docs/index
   ../../../submodules/ccsdk/sli/northbound.git/docs/index
   ../../../submodules/ccsdk/sli/plugins.git/docs/index

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/dcaegen2.git/docs/index

Data Management as a Platform Message Router
--------------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/dmaap/messagerouter/messageservice.git/docs/index

Documentation
-------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../how-to-use-docs/index.rst


External API Framework
----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/externalapi/nbi.git/docs/index


Holmes
------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   Alarm Correlation and Analysis <../../../submodules/holmes/engine-management.git/docs/index>
   Architecture and APIs <../../../submodules/holmes/rule-management.git/docs/index>

Integration
-----------

* ONAP Amsterdam release content is specified within a list of project artifact versions available in the form of a :ref:`manifest<doc-release-manifest>`.
* To install the whole ONAP (from a complete demo solution perspective) refer to :ref:`Setting Up ONAP <demo-installing-running-onap>`.

Logging Enhancements Project
----------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/logging-analytics.git/docs/index

Micro Services Bus
------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/msb/apigateway.git/docs/index
   ../../../submodules/msb/swagger-sdk.git/docs/index

.. Empty folders in this release
   ../../../submodules/msb/discovery.git/docs/index
   ../../../submodules/msb/java-sdk.git/docs/index


Modeling
--------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/modeling/modelspec.git/docs/index
   ../../../submodules/modeling/toscaparsers.git/docs/index

MultiVIM Cloud
--------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/multicloud/framework.git/docs/index

Music
-----

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/music.git/docs/index


ONAP Command Line Interface
---------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/cli.git/docs/index

ONAP Operations Manager (experimental)
--------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/oom.git/docs/index

ONAP Optimization Framework
--------------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/optf/has.git/docs/index
   ../../../submodules/optf/osdf.git/docs/index


ONAP Use Case User Interface
----------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/usecase-ui.git/docs/index

Policy Framework
----------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/policy/engine.git/docs/index

Portal Platform
---------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/portal.git/docs/index

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/sdc.git/docs/index

.. Empty folders for this release
   ../../../submodules/sdc/jtosca.git/docs/index
   ../../../submodules/sdc/sdc-distribution-client.git/docs/index
   ../../../submodules/sdc/sdc-docker-base.git/docs/index
   ../../../submodules/sdc/sdc-titan-cassandra.git/docs/index
   ../../../submodules/sdc/sdc-tosca.git/docs/index
   ../../../submodules/sdc/sdc-workflow-designer.git/docs/index

Service Orchestration
---------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/so.git/docs/index
   ../../../submodules/so/libs.git/docs/index

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/sdnc/oam.git/docs/index

.. Empty folders for this release
   ../../../submodules/sdnc/adaptors.git/docs/index
   ../../../submodules/sdnc/architecture.git/docs/index
   ../../../submodules/sdnc/core.git/docs/index
   ../../../submodules/sdnc/features.git/docs/index
   ../../../submodules/sdnc/northbound.git/docs/index
   ../../../submodules/sdnc/parent.git/docs/index
   ../../../submodules/sdnc/plugins.git/docs/index

User Interface Applications
---------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/ui/dmaapbc.git/docs/index

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

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/vfc/nfvo/lcm.git/docs/index

Virtual Infrastructure Deployment
---------------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:


   ../../../submodules/vid.git/docs/index

.. Empty folders for this release
   ../../../submodules/vid/asdcclient.git/docs/index

VNF Requirements
----------------

.. toctree::
   :maxdepth: 2
   :titlesonly:


   ../../../submodules/vnfrqts/guidelines.git/docs/index
   ../../../submodules/vnfrqts/requirements.git/docs/index

VNF Software Development Kit
----------------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/vnfsdk/model.git/docs/index

VNF Validation Project
-----------------------

.. toctree::
   :maxdepth: 2
   :titlesonly:

   ../../../submodules/vvp/documentation.git/docs/index
