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


.. _doc-releaserepos:

Project Specific Release Notes
++++++++++++++++++++++++++++++
Each project is listed below followed by the Gerrit repositories in which there are release notes.

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   aai/aai-common<../submodules/aai/aai-common.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   appc<../submodules/appc.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   ccsdk/distribution<../submodules/ccsdk/distribution.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   clamp<../submodules/clamp.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   cli<../submodules/cli.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   dcaegen2<../submodules/dcaegen2.git/docs/sections/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   doc <../release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   dmaap/messagerouter/messageservice<../submodules/dmaap/messagerouter/messageservice.git/docs/release-notes.rst>

Holmes
------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   holmes/rule-management<../submodules/holmes/rule-management.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   logging-analytics<../submodules/logging-analytics.git/docs/release-notes.rst>

Modeling
--------

.. toctree::
   :maxdepth: 1
   :titlesonly:

   modeling/modelspec<../submodules/modeling/toscaparsers.git/docs/javatoscachecker/release-notes/release-notes.rst>
   modeling/toscaparsers<../submodules/modeling/toscaparsers.git/docs/nfvparser/release-notes/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   msb/apigateway<../submodules/msb/apigateway.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   multicloud/framework<../submodules/multicloud/framework.git/docs/Release Notes.rst>

Music
-----

.. toctree::
   :maxdepth: 1
   :titlesonly:

   music<../submodules/music.git/docs/release-notes.rst>


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

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

   OOM<../submodules/oom.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   policy/engine<../submodules/policy/engine.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   portal<../submodules/portal.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   sdc<../submodules/sdc.git/docs/release-notes.rst>
   sdc/sdc-workflow-designer<../submodules/sdc/sdc-workflow-designer.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   sdnc/oam<../submodules/sdnc/oam.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   so<../submodules/so.git/docs/release-notes.rst>
   so/libs<../submodules/so/libs.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   usecase-ui<../submodules/usecase-ui.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   vfc/nfvo/lcm<../submodules/vfc/nfvo/lcm.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   vid<../submodules/vid.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   vnfrqts/requirements<../submodules/vnfrqts/requirements.git/docs/release-notes.rst>

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

.. toctree::
   :maxdepth: 1
   :titlesonly:

   vnfsdk/model<../submodules/vnfsdk/model.git/docs/release-notes.rst>


.. Not in / not used this release
   ccsdk/parent<../submodules/ccsdk/parent.git/docs/release-notes.rst>
   ccsdk/platform/nbapi<../submodules/ccsdk/platform/nbapi.git/docs/release-notes.rst>
   ccsdk/sli/adaptors<../submodules/ccsdk/sli/adaptors.git/docs/release-notes.rst>
   ccsdk/sli/core<../submodules/ccsdk/sli/core.git/docs/release-notes.rst>
   ccsdk/sli/northbound<../submodules/ccsdk/sli/northbound.git/docs/release-notes.rst>
   ccsdk/sli/plugins<../submodules/ccsdk/sli/plugins.git/docs/release-notes.rst>
   ccsdk/storage/esaas<../submodules/ccsdk/storage/esaas.git/docs/release-notes.rst>
   ccsdk/storage/pgaas<../submodules/ccsdk/storage/pgaas.git/docs/release-notes.rst>
   ccsdk/utils<../submodules/ccsdk/utils.git/docs/release-notes.rst>
   sdnc/adaptors<../submodules/sdnc/adaptors.git/docs/release-notes.rst>
   sdnc/architecture<../submodules/sdnc/architecture.git/docs/release-notes.rst>
   sdnc/core<../submodules/sdnc/core.git/docs/release-notes.rst>
   sdnc/features<../submodules/sdnc/features.git/docs/release-notes.rst>
   sdnc/northbound<../submodules/sdnc/northbound.git/docs/release-notes.rst>
   sdnc/parent<../submodules/sdnc/parent.git/docs/release-notes.rst>
   sdnc/plugins<../submodules/sdnc/plugins.git/docs/release-notes.rst>
   oom<../submodules/oom.git/docs/release-notes.rst>
   aaf/authz<../submodules/aaf/authz.git/docs/release-notes.rst>
