.. 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:: Projects Providing Documentation

.. _doc-repolist:

Project/Components
------------------
.. Already referenced in other sections of doc project
   aaf/authz <../submodules/aaf/authz.git/docs/index>
   AAI - Active & Available Inventory <../submodules/aai/aai-common.git/docs/index>
   AAI External System Registration Server <../submodules/aai/esr-server.git/docs/index>
   AAI External System Registration UI <../submodules/aai/esr-gui.git/docs/index>
   AAI Sparky Inventory UI <../submodules/aai/sparky-be.git/docs/index>
   CCSDK Dashboard <../submodules/ccsdk/dashboard.git/docs/index>
   ccsdk/distribution <../submodules/ccsdk/distribution.git/docs/index>
   HOLMES - Alarm Correlation and Analysis <../submodules/holmes/engine-management.git/docs/index>
   HOLMES - Architecuture and APIs <../submodules/holmes/rule-management.git/docs/index>
   logging-analytics <../submodules/logging-analytics.git/docs/index>
   modeling/toscaparsers <../submodules/modeling/toscaparsers.git/docs/index>
   MSB - Microservice Bus <../submodules/msb/apigateway.git/docs/index>
   msb/swagger-sdk <../submodules/msb/swagger-sdk.git/docs/index>
   MultiCloud Framework <../submodules/multicloud/framework.git/docs/index>
   music <../submodules/music.git/docs/index>
   ONAP Operations Manager <../submodules/oom.git/docs/index>
   optf/osdf <../submodules/optf/osdf.git/docs/index>
   sdc/sdc-workflow-designer <../submodules/sdc/sdc-workflow-designer.git/docs/index>
   sdnc/oam <../submodules/sdnc/oam.git/docs/index>
   Service Design and Creation <../submodules/sdc.git/docs/index>
   Service Orchestrator <../submodules/so.git/docs/index>
   so/libs <../submodules/so/libs.git/docs/index>
   ../submodules/appc/deployment.git/docs/index
   ../submodules/appc.git/docs/index
   ../submodules/clamp.git/docs/index
   ../submodules/cli.git/docs/index
   ../submodules/dcaegen2.git/docs/index
   ../submodules/dmaap/messagerouter/messageservice.git/docs/index
   ../submodules/modeling/modelspec.git/docs/index
   ../submodules/optf/has.git/docs/index
   ../submodules/policy/engine.git/docs/index
   ../submodules/portal.git/docs/index
   ../submodules/vnfrqts/guidelines.git/docs/index
   ../submodules/vnfrqts/requirements.git/docs/index
   Use Case User Interface <../submodules/usecase-ui.git/docs/index>
   VFC - Virtual Function Controller <../submodules/vfc/nfvo/lcm.git/docs/index>
   VID - Virtual Infrastructure Deployment <../submodules/vid.git/docs/index>
   VNF Software Development Kit <../submodules/vnfsdk/model.git/docs/index>
   vvp/documentation <../submodules/vvp/documentation.git/docs/index>
   externalapi/nbi <../submodules/externalapi/nbi.git/docs/index>
   vnfrqts/testcases <../submodules/vnfrqts/testcases.git/docs/index>
   vnfrqts/usecases <../submodules/vnfrqts/usecases.git/docs/index>
   aai/event-client <../submodules/aai/event-client.git/docs/index>
   CCSDK Orchestrator Plugins <../submodules/ccsdk/platform/plugins.git/docs/index>
   Devtool <../submodules/integration/devtool.git/docs/source/index>
   Secret Management Service <../submodules/aaf/sms.git/docs/index>
   dmaap/datarouter <../submodules/dmaap/datarouter.git/docs/index>
   dmaap/dbcapi <../submodules/dmaap/dbcapi.git/docs/index>
   music/distributed-kv-store <../submodules/music/distributed-kv-store.git/docs/index>
   osa <../submodules/osa.git/docs/index>

.. The following submodules have been added but no content or in some cases
   deprecated content appears.   To eliminate toctree warnings until content
   is updated or the submodule is removed  we leave the references

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

   ccsdk/parent <../submodules/ccsdk/parent.git/docs/index>
   ccsdk/platform/blueprints <../submodules/ccsdk/platform/blueprints.git/docs/index>
   ccsdk/platform/nbapi <../submodules/ccsdk/platform/nbapi.git/docs/index>
   ccsdk/storage/esaas <../submodules/ccsdk/storage/esaas.git/docs/index>
   ccsdk/storage/pgaas <../submodules/ccsdk/storage/pgaas.git/docs/index>
   ccsdk/utils <../submodules/ccsdk/utils.git/docs/index>
   integration <../submodules/integration.git/docs/index>
   msb/discovery <../submodules/msb/discovery.git/docs/index>
   msb/java-sdk <../submodules/msb/java-sdk.git/docs/index>
   policy/parent <../submodules/policy/parent.git/docs/index>
   sdc/jtosca <../submodules/sdc/jtosca.git/docs/index>
   sdc/sdc-distribution-client <../submodules/sdc/sdc-distribution-client.git/docs/index>
   sdc/sdc-docker-base <../submodules/sdc/sdc-docker-base.git/docs/index>
   sdc/sdc-titan-cassandra <../submodules/sdc/sdc-titan-cassandra.git/docs/index>
   sdc/sdc-tosca <../submodules/sdc/sdc-tosca.git/docs/index>
   vid/asdcclient <../submodules/vid/asdcclient.git/docs/index>

   multicloud/azure <../submodules/multicloud/azure.git/docs/index>
   optf/cmso <../submodules/optf/cmso.git/docs/index>
  ccsdk/apps <../submodules/ccsdk/apps.git/docs/index>
   cds <../submodules/ccsdk/cds.git/docs/index>
   oom/offline-installer <../submodules/oom/offline-installer.git/docs/index>
   ccsdk/features <../submodules/ccsdk/features.git/docs/index>
   parent <../submodules/parent.git/docs/index>
   modeling/etsicatalog <../submodules/modeling/etsicatalog.git/docs/index>
