Merge "[DOC] Fix for example-packages path not found issue"
authorEric Debeau <eric.debeau@orange.com>
Wed, 25 Nov 2020 13:47:03 +0000 (13:47 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 25 Nov 2020 13:47:03 +0000 (13:47 +0000)
29 files changed:
docs/conf.py
docs/guides/onap-developer/apiref/index.rst
docs/guides/onap-developer/architecture/media/ONAP-architecture.png
docs/guides/onap-developer/developing/index.rst
docs/guides/onap-developer/use-cases/index.rst [deleted file]
docs/guides/onap-developer/use-cases/vfw.rst [deleted file]
docs/guides/onap-user/design/index.rst
docs/guides/onap-user/design/media/Design-Overview.png
docs/guides/onap-user/design/media/Design-Overview.pptx
docs/guides/onap-user/design/resource-onboarding/index.rst
docs/guides/onap-user/design/resource-onboarding/media/sdro-entitlement-pool.png
docs/guides/onap-user/design/resource-onboarding/media/sdro-license-keygroup.png
docs/guides/onap-user/design/service-design/index.rst
docs/guides/onap-user/design/service-design/media/sdc-home.png
docs/guides/onap-user/design/service-design/media/sdc-service-general-import.png [new file with mode: 0644]
docs/guides/onap-user/design/service-design/media/sdc-service-import.png [new file with mode: 0644]
docs/guides/onap-user/design/service-design/media/sdc-service-workflow-design.png
docs/guides/onap-user/design/service-distribution/index.rst
docs/guides/onap-user/design/service-distribution/media/sdc-service-distribution-workflow.png
docs/guides/onap-user/design/vfcreation/index.rst
docs/guides/onap-user/design/vfcreation/media/sdc-home.png
docs/guides/onap-user/index.rst
docs/release-notes.rst
docs/release/index.rst
docs/release/releaserepos.rst
docs/use-cases/index.rst [deleted file]
docs/use-cases/vfw.rst [deleted file]
tools/checkdocs.sh [new file with mode: 0755]
tools/checkrtd.sh [new file with mode: 0755]

index 467836e..0c79cc9 100644 (file)
@@ -45,7 +45,7 @@ intersphinx_mapping['onap-vfc-nfvo-driver-vnfm-svnfm'] = ('{}/onap-vfc-nfvo-driv
 intersphinx_mapping['onap-holmes-rule-management'] = ('{}/onap-holmes-rule-management/en/%s'.format(doc_url) % branch, None)
 intersphinx_mapping['onap-portal'] = ('{}/onap-portal/en/%s'.format(doc_url) % branch, None)
 intersphinx_mapping['onap-cli'] = ('{}/onap-cli/en/%s'.format(doc_url) % branch, None)
-intersphinx_mapping['onap-oom-certservice'] = ('{}/onap-oom-platform-cert-service/en/%s'.format(doc_url) % branch, None)
+intersphinx_mapping['onap-oom-platform-cert-service'] = ('{}/onap-oom-platform-cert-service/en/%s'.format(doc_url) % branch, None)
 intersphinx_mapping['onap-ccsdk-cds'] = ('{}/onap-ccsdk-cds/en/%s'.format(doc_url) % branch, None)
 intersphinx_mapping['onap-ccsdk-apps'] = ('{}/onap-ccsdk-apps/en/%s'.format(doc_url) % branch, None)
 intersphinx_mapping['onap-ccsdk-oran'] = ('{}/onap-ccsdk-oran/en/%s'.format(doc_url) % branch, None)
index 7cf6be7..9a8970e 100644 (file)
@@ -39,6 +39,7 @@ Platform Components
 * :ref:`SDNC - SDN Controller<onap-sdnc-oam:offeredapis>`
 * :ref:`SO - Service Orchestration<onap-so:offeredapis>`
 * :ref:`VFC - Virtual Function Controller<onap-vfc-nfvo-lcm:master_index>`
+* :ref:`CDS - Controller Design Studio<onap-ccsdk-cds:offeredapis>`
 
 Common Services
 ---------------
index 5f12d95..0e7c695 100644 (file)
Binary files a/docs/guides/onap-developer/architecture/media/ONAP-architecture.png and b/docs/guides/onap-developer/architecture/media/ONAP-architecture.png differ
index 14c9a85..9500ec2 100644 (file)
@@ -48,10 +48,8 @@ AAF - Application Authorization Framework
 
    * - Document
      - Description
-   * - :ref:`AAF<onap-aaf-authz:master_index>`
+   * - (in Maintenance) `AAF (Frankfurt) <https://docs.onap.org/projects/onap-aaf-authz/en/frankfurt/>`_
      - AAF Architecture, APIs and Guides
-   * - :ref:`Secret Management Service<onap-aaf-sms:master_index>`
-     - Secret Management Service Architecture and API
 
 AAI - Active and Available Inventory
 ------------------------------------
@@ -64,14 +62,12 @@ AAI - Active and Available Inventory
      - Description
    * - :ref:`AAI<onap-aai-aai-common:master_index>`
      - AAI Architecture, APIs and Guides
-   * - :ref:`ESR<onap-aai-esr-gui:master_index>`
-     - External System Registry GUI Documentation (to be removed ?)
-   * - :ref:`ESR<onap-aai-esr-server:master_index>`
-     - External System Registry Server Documentation (to be removed ?)
-   * - :ref:`AAI Inventory UI<onap-aai-sparky-be:master_index>`
-     - Sparky - AAI Inventory UI Documentation (to be removed ?)
-   * - :ref:`AAI Event Client<onap-aai-event-client:master_index>`
-     - AAI Event Client Documentation (to be removed ?)
+   * - (in Maintenance) `ESR GUI (Latest) <https://docs.onap.org/projects/onap-aai-esr-gui/en/latest/>`_
+     - External System Registry GUI Documentation
+   * - (in Maintenance) `ESR Server (Latest) <https://docs.onap.org/projects/onap-aai-esr-server/en/latest/>`_
+     - External System Registry Server Documentation
+   * - (in Maintenance) :ref:`AAI UI<onap-aai-sparky-be:master_index>`
+     - Sparky - AAI Inventory UI Documentation
 
 APPC - Application Controller
 -----------------------------
@@ -82,9 +78,9 @@ APPC - Application Controller
 
    * - Document
      - Description
-   * - :ref:`APPC<onap-appc:master_index>`
+   * - (in Maintenance) `APPC (Frankfurt) <https://docs.onap.org/projects/onap-appc/en/frankfurt/>`_
      - APPC Architecture, APIs and Guides
-   * - :ref:`APPC Deployment<onap-appc-deployment:master_index>`
+   * - (in Maintenance) `APPC Deployment (Frankfurt) <https://docs.onap.org/projects/onap-appc-deployment/en/frankfurt/>`_
      - APPC Deployment Documentation
 
 CCSDK - Common Controller Software Development Kit
@@ -98,12 +94,6 @@ CCSDK - Common Controller Software Development Kit
      - Description
    * - :ref:`Distribution<onap-ccsdk-distribution:master_index>`
      - TOSCA Orchestration Plugin, Directed Graph Support
-   * - :ref:`Dashboard<onap-ccsdk-dashboard:master_index>`
-     - Common Controller Dashboard (To be removed ?)
-   * - :ref:`Platform Plugins<onap-ccsdk-platform-plugins:master_index>`
-     - Platform Plugins (To be removed ?)
-   * - :ref:`APPS<onap-ccsdk-apps:master_index>`
-     - Apps optside ODL (To be removed ?)
 
 CDS - Controller Design Studio
 ------------------------------
@@ -206,8 +196,8 @@ LOGGING - Centralized Logging
 
    * - Document
      - Description
-   * - :ref:`Logging<onap-logging-analytics:master_index>`
-     - ONAP Centralized Logging Documentation (to be deleted ?)
+   * - (in Maintenance) `LOGGING (Latest) <https://docs.onap.org/projects/onap-logging-analytics/en/latest/>`_
+     - ONAP Centralized Logging Documentation
 
 MSB - Microservices Bus
 -----------------------
@@ -242,10 +232,10 @@ MUSIC - ONAP Multi-Site Integration
 
    * - Document
      - Description
-   * - :ref:`MUSIC<onap-music:master_index>`
-     - MUSIC Architecture and Guides (To be deleted ?)
-   * - :ref:`Distributed KV Store<onap-music:master_index>`
-     - MUSIC Distribute KV Store Documents (To be deleted ?)
+   * - (in Maintenance) `MUSIC (Frankfurt) <https://docs.onap.org/projects/onap-music/en/frankfurt/>`_
+     - MUSIC Architecture and Guides
+   * - (in Maintenance) `MUSIC KV (Latest) <https://docs.onap.org/projects/onap-music-distributed-kv-store/en/latest/>`_
+     - MUSIC Distribute KV Store Documents
 
 OOF - Optimization Framework
 ----------------------------
@@ -274,7 +264,7 @@ OOM - ONAP Operations Manager
      - Description
    * - :ref:`OOM<onap-oom:master_index>`
      - ONAP Operations Manager Documentation
-   * - :ref:`OOM Certification Service<onap-oom-certservice:master_index>`
+   * - :ref:`OOM Certification Service<onap-oom-platform-cert-service:master_index>`
      - ONAP CMPv2 certification support
 
 ORAN - Open-RAN Support in ONAP
@@ -334,7 +324,7 @@ SDNC - Software Defined Network Controller
 
    * - Document
      - Description
-   * - :ref:`SDCN<onap-sdnc-oam:master_index>`
+   * - :ref:`SDNC<onap-sdnc-oam:master_index>`
      - SDNC Architecture, APIs and Guides
 
 SDNR - Software Defined Network Controller for Radio
@@ -346,7 +336,7 @@ SDNR - Software Defined Network Controller for Radio
 
    * - Document
      - Description
-   * - :ref:`SDNR<onap-ccsdk-features:master_index>`
+   * - :ref:`SDN-R<onap-ccsdk-features:master_index>`
      - SDN-R Documentation (part of CCSDK)
 
 SO - Service Orchestration
@@ -361,7 +351,7 @@ SO - Service Orchestration
    * - :ref:`SO<onap-so:master_index>`
      - Service Orchestration Architecture, APIs and Guides
    * - :ref:`SO Libraries<onap-so-libs:master_index>`
-     - Service Orchestration Build (To be deleted ?)
+     - ONAP SO/libs Documentation
 
 UUI - Use Case User Interface
 -----------------------------
diff --git a/docs/guides/onap-developer/use-cases/index.rst b/docs/guides/onap-developer/use-cases/index.rst
deleted file mode 100644 (file)
index d9dc0d2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-.. 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.
-
-Use Cases
-=========
-
-Example uses case descriptions and sequence diagrams illustrating
-interactions between platform components.
-
-.. toctree::
-   :maxdepth: 1
-
-   vfw.rst
-   volte.rst
diff --git a/docs/guides/onap-developer/use-cases/vfw.rst b/docs/guides/onap-developer/use-cases/vfw.rst
deleted file mode 100644 (file)
index 2f83102..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-.. 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.
-
-vFirewall Use Case
-==================
-
-Description
------------
-
-Onboarding
-----------
-
-
-.. uml::
-
-   @startuml
-   title vFW/vFWCL and vDNS VNF Onboarding (R1)\nVFW/vFWCL and vDNS use the same flows but they are separate VNFs/Services
-   ONAP_User -> SDC : vFW_vDNS resource onboarding  (HEAT)
-   note right : vFWCL (vpg & vfw,vsn)\nvFW (vpg, vfw, vsn)\nvDNS (vpg, vlb,vdns) + DNSScaling (vdns)\
-   ONAP_User -> SDC : vFW_vDNS service onboarding
-   ONAP_User -> SDC : vFW_vDNS distribution
-   |||
-   SDC -> SO : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   SDC -> AAI : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   SDC -> SDNC : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   @enduml
-
-Instantiation
--------------
-
-.. uml::
-
- @startuml
-   title vFW vDNS Instantiation (R1)\nvFW and vDNS use the same flows but they are separate VNFs/Services
-   participant ONAP_User
-   participant Robot
-   Participant SDC
-   Participant VID
-   Participant SO
-   ONAP_User -> AAI : populate cloud inventory
-   note left of AAI:  manual via curl or POSTMAN
-   |||
-   ONAP_User -> VID : vFW_vDNS deployment
-   VID -> SDC : Lookup VNF artifacts
-   VID -> AAI : Lookup cloud locations, subscriber
-   VID -> SO : vFW_vDNS Service \nInstantiation\n(base modules)
-   SO -> AAI : inventory update
-   VID -> SO : vFW_vDNS VNF Instantiation\n(base modules)
-   note left of AAI : VFWCL is two VNFs in one service\nso VNF instantiate occurs twice
-   SO -> AAI : inventory update
-   ONAP_User -> SDNC : VNF API Preload VNF/VF data
-   VID -> SO : vFW_vDNS VF Instantiation\n(base modules)
-   SO -> AAI : inventory update
-   SO -> SDNC : Generic VNF API\n(assign)
-   SO -> Multi_VIM : vFW_vDNS Heat template, \nENV file, preload parameters
-   Multi_VIM -> CloudAPI : vFW_vDNS Heat template,\nENV file, preload parameters or
-   CloudAPI -> Hypervisor : vFW_vDNS Infrastructure instantiation
-   Hypervisor -> vFW_vDNS : Nova/Neutron Instantiation
-   Hypervisor -> CloudAPI : complete
-   CloudAPI -> Multi_VIM : complete
-   Multi_VIM -> SO : complete
-   note right : SO may poll for completion
-   SO -> SDNC:  Generic VNF API\n(activated)
-   note left : on failure from Openstack SO issues rollback to SDNC
-   SDNC -> AAI : L3 Network resource update
-   SO -> VID : complete
-   note right : VID will poll for completion
-   ONAP_User -> Robot : run Heat Bridge
-   Robot -> CloudAPI  :  retrieve cloud data 
-   Robot -> AAI :  Update with cloud data
-   |||
-   @enduml
-
index 0d89bd0..aa38a79 100644 (file)
@@ -9,16 +9,15 @@ Design Service
 
 The goal of the design process is to create all artifacts (models)
 that are required to instantiate and manage resources, services,
-and products on the ONAP platform. The design process requires
-input from users with multiple roles.
+and products on the ONAP platform.
 
 Design progresses logically through a series of phases. Each phase:
 
 * is organized into steps that are completed in sequence
 
-* is accessed using a different role with specific responsibilities
-  generates artifacts that are used in other phases of design or when
-  instantiating or monitoring virtual functions.
+* generates artifacts that are used in other phases of design
+
+* is performed by multiple Design components
 
 The following figure show the different phases and tools involved in
 Onboarding, Design and Distribution process.
@@ -41,13 +40,12 @@ Onboarding, Design and Distribution process.
     (b) manual creation and import of artefacts created via external
     tools like the Controller Design Studio (CDS), responsible for the
     Controller Blueprint Design
-    The created VF will pass a testing workflow to be used
-    in a Service Model
+    The created VF Model will be used in a Service Model
 
 **Service Design**
     A Service Model is created as a composition of resources
     (e.g. V(N)Fs, PNFs,...), Policies, Workflows,...
-    The created Service Model will ber certified and handed over to
+    The created Service Model will be certified and handed over to
     the Service Distribution process
 
 **Service Distribution**
@@ -60,8 +58,8 @@ Onboarding, Design and Distribution process.
     The objective is to automate the resolution of resources for instantiation
     and any config provisioning operation, such as day0, day1 or day2
     configuration.
-    The Controller Blueprint archive (CBA) is the overall service design,
-    fully model-driven, intent based package needed to design self service
+    The Controller Blueprint archive (CBA) is a fully model-driven,
+    intent based package needed to design self service
     provisioning and configuration management automation.
     ONAP CDS (Controller Design Studio) is the controller that will process
     the Controller Blueprint archive (CBA) at run-time.
@@ -76,7 +74,7 @@ Onboarding, Design and Distribution process.
 
 **VNF LifeCycle Command templating**
     APPC Controller Design Tool (CDT) is used for self-service onboarding of
-    VNFs. VNF owners can create templates and other artifacts for APPC
+    VNFs. VNF owners can create templates and other artifacts for APPC
     Configure command (used to apply a post-instantiation configuration)
     as well as other life cycle commands.
 
@@ -85,16 +83,13 @@ Onboarding, Design and Distribution process.
     modify workflows to support Service/Resource change management scenarios
     executed by the Service Orchestrator.
 
-**Control Loop Design**
-    This phase includes the Design of a closed loop template and associate it
-    to a Service. The template represents the theoretical flow of the CL.
-    It generates a deployment artifact that can be ingested by the DCAE in
-    order to create the needed DCAE microservices in runtime.
-    The design is done in the SDC DCAE-DS (Design Studio).
-    The DCAE Design Studio enables to define and configure
-    the monitoring flows of DCAE.
-    The configuration and deployment of a Control Loop will be done with
-    Control Loop Automation Management (CLAMP) tool.
+**DCAE Onboard/Design**
+    This phase includes the Onboarding of DCAE Microservices and their
+    Policy Models, the Service Assurance Design and Distribution to Policy
+    and CLAMP for Closed Loop Automation Management.
+    The DCAE Onboard/Design component contains an own Design Catalog, which is
+    not yet integrated with the SDC Design Catalog to exchange models and
+    artefacts.
 
 The follwing sections will focus on the different Design steps:
 
@@ -120,7 +115,7 @@ The follwing sections will focus on the different Design steps:
 
 :ref:`Workflow Design<onap-sdc:workflow>`
 
-:ref:`Control Loop Design<onap-sdc:dcaedesigner>`
+:ref:`DCAE Onboard/Design<onap-dcaegen2:master_index>`
 
 :ref:`Control Loop Automation Management<onap-clamp:master_index>`
 
index 276e53f..3c1eea7 100644 (file)
Binary files a/docs/guides/onap-user/design/media/Design-Overview.png and b/docs/guides/onap-user/design/media/Design-Overview.png differ
index 64416a8..ecef261 100644 (file)
Binary files a/docs/guides/onap-user/design/media/Design-Overview.pptx and b/docs/guides/onap-user/design/media/Design-Overview.pptx differ
index 63f588d..067d77a 100644 (file)
@@ -16,11 +16,11 @@ Resource Onboarding
 |image0|
 
 **Steps**
-    * `Create a License Model`_
-    * `Create a License Key Group [Optional]`_
-    * `Create an Entitlement Pool`_
-    * `Create a Feature Group`_
-    * `Create a License Agreement`_
+    * `Create a License Model [Optional]`_
+        * `Create a License Key Group [Optional]`_
+        * `Create an Entitlement Pool`_
+        * `Create a Feature Group`_
+        * `Create a License Agreement`_
     * `Create a Vendor Software Product`_
     * `Update VFCs in a VSP [optional]`_
     * `Update a VSP [optional]`_
@@ -33,8 +33,8 @@ After updating the artifacts in a VSP, also update:
 
 .. _doc_guide_user_des_res-onb_cre-lic:
 
-Create a License Model
-----------------------
+Create a License Model [Optional]
+---------------------------------
 
 VSPs optionally require a license and entitlements to enable the service
 provider to track the usage.
index db56087..6633693 100644 (file)
Binary files a/docs/guides/onap-user/design/resource-onboarding/media/sdro-entitlement-pool.png and b/docs/guides/onap-user/design/resource-onboarding/media/sdro-entitlement-pool.png differ
index ed1e7ac..557e403 100644 (file)
Binary files a/docs/guides/onap-user/design/resource-onboarding/media/sdro-license-keygroup.png and b/docs/guides/onap-user/design/resource-onboarding/media/sdro-license-keygroup.png differ
index fc290cb..ce7fb9a 100644 (file)
@@ -9,6 +9,8 @@ Service Design
 
 **Goal:** Add models and other artifacts required to create, configure,
 instantiate, and manage services. Validate and certify the services.
+Besides the manual creation of a Service Model, an existing model can
+be imported via a CSAR file
 
 **Tool:** SDC
 
@@ -23,9 +25,10 @@ instantiate, and manage services. Validate and certify the services.
    #. `Create Service`_
    #. `Create a Management Workflow [optional]`_
    #. `Create a Network Callflow [optional]`_
-   #. `Add Service Inputs [optional]`_
+   #. `Manage Service Properties [optional]`_
    #. `Update Service [optional]`_
    #. `Certify Service`_
+   #. `Import Service CSAR [optional]`_
 
 .. _doc_guide_user_des_ser-cre_serv:
 
@@ -206,10 +209,11 @@ the service model.
 
 .. _doc_guide_user_des_ser-para_in:
 
-Add Service Inputs [optional]
------------------------------
+Manage Service Properties [optional]
+------------------------------------
 
-Select parameters as input fields during Service instantiation.
+Add new Service parameters and define as input fields
+during Service instantiation.
 
 
 **Prerequisites:** `Create service`_
@@ -307,6 +311,31 @@ architecture contains uncertified resources.
 #. A Message appears, that the Service is certified.
 
 
+Import Service CSAR [optional]
+------------------------------
+
+Note: This step can be used, when a Service Model already exists
+
+**Steps**
+
+#. From the SDC HOME page, hover over IMPORT and select *IMPORT SERVICE CSAR*.
+
+   |image0|
+
+#. In the File Upload Dialog, select the csar file and press *Open*.
+
+   |image10|
+
+#. In the General section, complete all fields.
+
+   |image11|
+
+#. Click Create.
+
+   A message displays when Service creation is complete.
+
+#. Continue with Service Design steps mentioned above
+
 .. |image0| image:: media/sdc-home.png
 .. |image1| image:: media/sdc-service-workflow.png
 .. |image2| image:: media/design_asdccanvas_connect_elements.png
@@ -316,4 +345,6 @@ architecture contains uncertified resources.
 .. |image6| image:: media/sdc-service-composition.png
 .. |image7| image:: media/sdc-service-workflow.png
 .. |image8| image:: media/sdc-service-properties.png
-.. |image9| image:: media/sdc-service-properties-input.png
\ No newline at end of file
+.. |image9| image:: media/sdc-service-properties-input.png
+.. |image10| image:: media/sdc-service-import.png
+.. |image11| image:: media/sdc-service-general-import.png
index 3b14c99..201383e 100644 (file)
Binary files a/docs/guides/onap-user/design/service-design/media/sdc-home.png and b/docs/guides/onap-user/design/service-design/media/sdc-home.png differ
diff --git a/docs/guides/onap-user/design/service-design/media/sdc-service-general-import.png b/docs/guides/onap-user/design/service-design/media/sdc-service-general-import.png
new file mode 100644 (file)
index 0000000..f050ff5
Binary files /dev/null and b/docs/guides/onap-user/design/service-design/media/sdc-service-general-import.png differ
diff --git a/docs/guides/onap-user/design/service-design/media/sdc-service-import.png b/docs/guides/onap-user/design/service-design/media/sdc-service-import.png
new file mode 100644 (file)
index 0000000..bf0c8c1
Binary files /dev/null and b/docs/guides/onap-user/design/service-design/media/sdc-service-import.png differ
index 03867f9..35ba661 100644 (file)
Binary files a/docs/guides/onap-user/design/service-design/media/sdc-service-workflow-design.png and b/docs/guides/onap-user/design/service-design/media/sdc-service-workflow-design.png differ
index fbd0d1b..72730d9 100644 (file)
@@ -29,8 +29,6 @@ Steps
 
 - `Distribute Service`_
 - `Monitor Distribution`_
-- `Verify that the DCAE Blueprint is Deployed`_
-
 
 .. _doc_guide_user_des_ser-dis-start:
 
@@ -79,16 +77,6 @@ Monitor Distribution
 #. If deploy errors are shown, the reason has to be investigated and the
    Service can be *Redistributed*
 
-.. _doc_guide_user_des_ser-dis-dcae:
-
-Verify that the DCAE Blueprint is Deployed
-------------------------------------------
-
-The DCAE controller requires a blueprint (or guideline) to be available
-at the site on which the first VNF is deployed. This blueprint is a
-management workflow and configuration description for a given VNF, and
-it must be available after completing the service distribution process
-and before beginning the instantiation process.
 
 .. |image1| image:: media/sdc-service-distribution-workflow.png
 .. |image2| image:: media/sdc-service-distribute.png
index 16578cb..4222f85 100644 (file)
Binary files a/docs/guides/onap-user/design/service-distribution/media/sdc-service-distribution-workflow.png and b/docs/guides/onap-user/design/service-distribution/media/sdc-service-distribution-workflow.png differ
index 14928bb..0eacd40 100644 (file)
@@ -35,7 +35,7 @@ Create a VF/PNF by VSP import
 
 **Steps**
 
-#. From the SDC HOME page, click the *Import VSP*
+#. From the SDC HOME page, hover over *Import*, then click on *IMPORT VSP*
 
    |image2|
 
@@ -94,7 +94,7 @@ Create a VF/PNF manually
 
 **Steps**
 
-#. From the SDC HOME page, click the *ADD VF* or *ADD PNF*
+#. From the SDC HOME page, hover over *Add*, then click on *ADD VF* or *ADD PNF*.
 
    |image2|
 
@@ -160,7 +160,7 @@ Update a VF/PNF [optional]
 
 **Steps**
 
-#. From the SDC HOME page, click *CATALOG* and search for the VF/PNF.
+#. From the SDC HOME page, click *CATALOG* and search for the VF/PNF, click on selected VF/PNF to update.
 
 #. In the General section, click *Check Out*.
    The *VSP* field is displays.
@@ -173,7 +173,8 @@ Update a VF/PNF [optional]
    |image4|
 
 #. Click *Update VSP*
-   A progress bar displays.|image5|
+   A progress bar displays.
+   |image5|
 
 #. Click *Deployment Artifact* to edit, upload, or delete associated [Optional]
    deployment artifacts.
@@ -206,7 +207,9 @@ Certify VF/PNF
 **Steps**
 
 #. When a VF/PNF is ready for certification,
-   click *CATALOG* and search for the checked-in VF/PNF.
+   On the SDC HOME page, click *CATALOG* and search for the checked-in VF/PNF.
+   Bottom half of the VN/PNF will say “In Design Check In”.
+
 #. Click the VF/PNF and click *Certify*.
 
    |image7|
index 3b14c99..201383e 100644 (file)
Binary files a/docs/guides/onap-user/design/vfcreation/media/sdc-home.png and b/docs/guides/onap-user/design/vfcreation/media/sdc-home.png differ
index 79698fc..d8432fb 100644 (file)
@@ -26,4 +26,5 @@ Verified Use Cases
 In the following page you find all use cases and functional requirements
 which have been officially verified in the actual release by the ONAP community.
 
-* :ref:`Verified Use Cases<onap-integration:docs_usecases>`
+* :ref:`Guilin Use Cases<onap-integration:docs_usecases_release>`
+* :ref:`Deprecated Use Cases<onap-integration:docs_usecases>`
index 84a7da7..67141c5 100644 (file)
@@ -10,67 +10,35 @@ Release Notes
 
 This document provides the release notes for the documentation project.
 
-Frankfurt Maintenance Release 6.0.1
-===================================
+Guilin Release
+==============
 
 Release data
 ============
 
 +--------------------------------------+--------------------------------------+
-| **Project**                          | Open Network Automation Platform     |
-|                                      | (ONAP)                               |
-+--------------------------------------+--------------------------------------+
-| **Release name**                     | Frankfurt                            |
+| **Project**                          | Documentation Project                |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release version**                  | 6.0.1                                |
+| **Release name**                     | Guilin                               |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | August 17th 2020                     |
+| **Release version**                  | 7.0.0                                |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
 
-New features
-------------
-
-- no updates
-
-Frankfurt Release 6.0.0
-=======================
-
-Release Data
-------------
-
-+--------------------------------------+--------------------------------------+
-| **Project**                          | Documentation                        |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Release name**                     | Frankfurt                            |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Release version**                  | Frankfurt 6.0.0                      |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Release date**                     | June 11th 2020                       |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
 
 New features
 ------------
 
-- Improved end to end user guides.
-- A refined release note template to be used by all projects in ONAP. To ensure
-  a common way of how to provide the release notes from a content such a look
-  and feel perspective.
+- Refined and improved parts of the documentation guide.
+- Continue with improving the user and admin documentation.
+- Minor corrections after the migration.
 - In addition the documentation project is continuously working with improving
   processes and tools for documentation. Enabling the community to as easy as
-  possible document all the aspects of the ONAP platform. During the Frankfurt
-  release cycle we have started the work to clean up available content, both on
-  the wiki and readthedocs (docs.onap.org) as well as moving the
-  documentation away from submodules according to the LFN documentation
-  strategy.
+  possible document all the aspects of the ONAP platform.
 
-All JIRA tickets for the Frankfurt release can be found
+All JIRA tickets for the Guilin release can be found
 `ONAP Documentation Jira`_
 
-.. _`ONAP Documentation Jira`: https://jira.onap.org/browse/DOC-617?jql=project%20%3D%20DOC%20AND%20fixVersion%20%3D%20%22Frankfurt%20Release%22%20
+.. _`ONAP Documentation Jira`: https://jira.onap.org/browse/DOC-674?jql=project%20%3D%20DOC%20AND%20fixVersion%20%3D%20%22Guilin%20Release%22
index 8c2035b..0a342d3 100644 (file)
@@ -4,10 +4,10 @@
 
 .. _release-notes:
 
-Frankfurt Release Notes
-^^^^^^^^^^^^^^^^^^^^^^^
+Guilin Release Notes
+^^^^^^^^^^^^^^^^^^^^
 
-This page provides the release notes for the ONAP Frankfurt release. This
+This page provides the release notes for the ONAP Guilin release. This
 includes details of software versions, known limitations, and outstanding
 trouble reports.
 
@@ -19,15 +19,14 @@ release notes and links to those release notes are provided below.
 Details on the specific items delivered in each release by each component is
 maintained in the component specific release notes.
 
-Frankfurt Releases
-==================
+Guilin Releases
+===============
 
-The following releases are available for Frankfurt:
-  - `Frankfurt Major Release 6.0.0`_
-  - `Frankfurt Maintenance Release 6.0.1`_
+The following releases are available for Guilin:
+  - `Guilin Major Release 7.0.0`_
 
-Frankfurt Maintenance Release 6.0.1
-===================================
+Guilin Major Release 7.0.0
+==========================
 
 Release data
 ============
@@ -36,53 +35,40 @@ Release data
 | **Project**                          | Open Network Automation Platform     |
 |                                      | (ONAP)                               |
 +--------------------------------------+--------------------------------------+
-| **Release name**                     | Frankfurt                            |
+| **Release name**                     | Guilin                               |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release version**                  | 6.0.1                                |
+| **Release version**                  | 7.0.0                                |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
-| **Release date**                     | August 17th 2020                     |
+| **Release date**                     | December 3rd 2020                    |
 |                                      |                                      |
 +--------------------------------------+--------------------------------------+
 
-Frankfurt Maintenance Release 6.0.1 delivered a number of fixes and updates
-across the following projects:
+Guilin Features
+===============
+ONAP Gulin focusses on:
 
-- AAF
-- OOM
-- CCSDK
-- CLAMP
-- DCAEGEN2
-- Integration
-- POLICY
-- SDC
-- SO
-- TEST
+* 5G network automation and services such as network slicing through RAN, core and transport
+* deepening O-RAN Software Community integration along with other leading SDOs
+* seamless orchestration of CNFs, VNFs and PNFs
+* and bringing several new ONAP Blueprint and docs updates.
 
-Details on the specific Jira tickets addressed by each project can be found in
-the component specific Release Notes. Link can be found below in section
-`Project Specific Release Notes`_.
+5G Network Slicing
+------------------
+In the industry evolution toward 5G networks, Guilin expands upon the end-to-end network slicing introduced with Frankfurt with the addition of RAN, core, and transport through Network Slice Subnet Management Function (NSSMF) which completes functionality with the Communication Service Management Function (CSMF) and Network Slice Management Function (NSMF) components. In addition to the NSSMF included in Guilin, ONAP supports an external RAN NSSMF. Next, the RAN domain also has initial support for a simple closed control loop and machine learning (ML) for intelligent slicing.
 
-Frankfurt Major Release 6.0.0
-=============================
+ONAP/O-RAN Alignment
+--------------------
+The release also marks greater ONAP + O-RAN Software Community harmonization by adding  support for the A1 interface (O-RAN A1-AP v1.1), adding to the existing O1 support. ONAP can now manage multiple A1 targets with different versions and includes a A1 Policy Management Service that interacts with the Near Real-Time RIC\19s policy instances and provides a transient cache for these policies. 
 
-Release data
-============
+CNF, VNF and PNF integration
+----------------------------
+Guilin contains a large number of new features classified into design time, run time, and ONAP operations to optimize the self-serve control loop and dashboard, make it easier to reuse existing models, make xNF pre-onboarding and onboarding easier, speed up UI development, and more. For Documentation (Usability), ONAP documentation made improvements such as setting up ONAP, Platform Operations, Service Design and Deployment, and User Guides. Specific to cloud native, The Service Design & Creation (SDC) project, the unified design time tool, now supports Helm types to natively support Cloud Native Network Functions (CNF).
 
-+--------------------------------------+--------------------------------------+
-| **Project**                          | Open Network Automation Platform     |
-|                                      | (ONAP)                               |
-+--------------------------------------+--------------------------------------+
-| **Release name**                     | Frankfurt                            |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Release version**                  | 6.0.0                                |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
-| **Release date**                     | June 11th 2020                       |
-|                                      |                                      |
-+--------------------------------------+--------------------------------------+
+Enhancements in ONAP Blueprints
+-------------------------------
+Other enhancements to the ONAP Blueprints includes a new Standard Defined VNF Event Stream (VES) event for Fault Management (FM) / Performance Management (PM) Data Collection, the first use of Machine Learning in Self-Organizing Networks (SON), and greater support for 5G RAN Wireless Network Resource Model (NRM) with Service Modeling and Definition and Intent Based Network supporting intent-drive 5G slice creation.
 
 Project Specific Release Notes
 ==============================
@@ -96,8 +82,8 @@ are compatible with a major release are made available.
 
 Documentation
 =============
-ONAP Frankfurt Release provides a set selection of documents,
-see `ONAP Documentation <https://docs.onap.org/en/frankfurt/index.html>`_.
+ONAP Guilin Release provides a set selection of documents,
+see `ONAP Documentation <https://docs.onap.org/en/guilin/index.html>`_.
 
 The `developer wiki <http://wiki.onap.org>`_ remains a good source of
 information on meeting plans and notes from committees, project teams and
@@ -113,6 +99,8 @@ ONAP has adopted the `CII Best Practice Badge Program <https://bestpractices.cor
 - `Badging Requirements <https://github.com/coreinfrastructure/best-practices-badge>`_
 - `Badging Status for all ONAP projects <https://bestpractices.coreinfrastructure.org/en/projects?q=onap>`_
 
+In the Guilin release, 24% projects pass the CII badge, 52% projects pass 75% of the CII silver badge tests (next badge up from the vanilla CII badge), 5% projects pass 84% of the CII silver badge tests, and 20% pass the entirety of the silver CII badge.
+
 Project specific details are in the :ref:`release notes<doc-releaserepos>` for
 each project.
 
@@ -120,12 +108,16 @@ each project.
 
 ONAP Maturity Testing Notes
 ===========================
-For the Frankfurt release, ONAP continues to improve in multiple areas of
+For the Guilin release, ONAP continues to improve in multiple areas of
 Scalability, Security, Stability and Performance (S3P) metrics.
 
-The Integration team ran the 72 hours stability testing (100% passing rate)
-and full resilience testing (99.4% passing rate) at ONAP OpenLabs. More details
-in :ref:`ONAP Maturity Testing Notes <integration-s3p>`
+In Guilin the Integration team focussed in
+
+- Automating ONAP Testing to improve the overall quality
+- Adding security and E2E tests
+- Integrated new ONAP Python SDK in E2E testing
+
+More details in :ref:`ONAP Integration Project<onap-integration:master_index>`
 
 Known Issues and Limitations
 ============================
index 5ff18d2..b573b1a 100644 (file)
@@ -11,32 +11,33 @@ Project Specific Release Notes
 .. toctree::
    :maxdepth: 1
 
-| :ref:`Active and Available Inventory<onap-aai-aai-common:release_notes>`
-| :ref:`Application Authorization Framework<onap-aaf-authz:release_notes>`
-| :ref:`Application Controller<onap-appc:release_notes>`
-| :ref:`Common Controller Software Development Kit<onap-ccsdk-distribution:release_notes>`
-| :ref:`Closed Loop Automation Platform<onap-clamp:release_notes>`
-| :ref:`Data Collection Analysis and Events<onap-dcaegen2:release_notes>`
-| :ref:`DMAAP Message Router (MR)<onap-dmaap-messagerouter-messageservice:release_notes>`
-| :ref:`DMAAP Dmaap Data Router (DR)<onap-dmaap-datarouter:release_notes>`
-| :ref:`DMAAP Dmaap Bus Controller (BC)<onap-dmaap-buscontroller:release_notes>`
-| :ref:`Documentation<doc_release_notes>`
-| :ref:`External API   NorthBound Interface<onap-externalapi-nbi:release_notes>`
-| :ref:`Integration<onap-integration:release_notes>`
-| :ref:`Modeling etsicatalog<onap-modeling-etsicatalog:release_notes>`
-| :ref:`Micro Services Bus<onap-msb-apigateway:release_notes>`
-| :ref:`Music<onap-music:release_notes>`
-| :ref:`MultiVIM Cloud <onap-multicloud-framework:master_index>`
-| :ref:`ONAP Operations Manager<onap-oom:release_notes>`
-| :ref:`Optimization Framework<onap-optf-osdf:release_notes>`
-| :ref:`Policy Framework<onap-policy-parent:release_notes>`
-| :ref:`Portal Platform<onap-portal:release_notes>`
-| :ref:`Service Design & Creation<onap-sdc:release_notes>`
-| :ref:`Service Orchestration<onap-so:release_notes>`
-| :ref:`Software Defined Network Controller<onap-sdnc-oam:release_notes>`
-| :ref:`Use Case User Interface<onap-usecase-ui:release_notes>`
-| :ref:`Virtual Function Controller<onap-vfc-nfvo-lcm:release_notes>`
-| :ref:`Virtual Infrastructure Deployment<onap-vid:release_notes>`
-| :ref:`VNF Requirements<onap-vnfrqts-requirements:release_notes>`
-| :ref:`VNF Software Development Kit<onap-vnfsdk-model:release_notes>`
-| :ref:`VNF Validation Project<onap-vvp-documentation:release_notes>`
+| :ref:`Project: Integration<onap-integration:release_notes>`
+| :ref:`Project: Model Specification<onap-modeling-modelspec:release_notes>`
+| :ref:`Project: VNF Requirements<onap-vnfrqts-requirements:release_notes>`
+| :ref:`AAI - Active and Available Inventory<onap-aai-aai-common:release_notes>`
+| :ref:`CCSDK - Common Controller Software Development Kit<onap-ccsdk-distribution:release_notes>`
+| :ref:`CLAMP - Control Loop Automation Platform<onap-clamp:release_notes>`
+| :ref:`CLI - Command Line Interface<onap-cli:release_notes>`
+| :ref:`DCAE - Data Collection Analysis and Events<onap-dcaegen2:release_notes>`
+| :ref:`DMAAP - Message Router (MR)<onap-dmaap-messagerouter-messageservice:release_notes>`
+| :ref:`DMAAP - Data Router (DR)<onap-dmaap-datarouter:release_notes>`
+| :ref:`DMAAP - Bus Controller (BC)<onap-dmaap-buscontroller:release_notes>`
+| :ref:`DOC - Documentation<doc_release_notes>`
+| :ref:`EXTAPI - External API NorthBound Interface<onap-externalapi-nbi:release_notes>`
+| :ref:`HOLMES - Rule Management<onap-holmes-rule-management:release_notes>`
+| :ref:`MODELING - Modeling ETSI catalog<onap-modeling-etsicatalog:release_notes>`
+| :ref:`MSB - Micro Services Bus<onap-msb-apigateway:release_notes>`
+| :ref:`MULTICLOUD - MultiCloud Framework<onap-multicloud-framework:release_notes>`
+| :ref:`OOF - Optimization Framework<onap-optf-osdf:release_notes>`
+| :ref:`OOM - ONAP Operations Manager<onap-oom:release_notes>`
+| :ref:`OOM - Certification Service<onap-oom-platform-cert-service:release_notes>`
+| :ref:`POLICY- Policy Framework<onap-policy-parent:release_notes>`
+| :ref:`PORTAL - Portal Platform<onap-portal:release_notes>`
+| :ref:`SDC - Service Design & Creation<onap-sdc:release_notes>`
+| :ref:`SDNC - Software Defined Network Controller<onap-sdnc-oam:release_notes>`
+| :ref:`SO - Service Orchestration<onap-so:release_notes>`
+| :ref:`UUI - Use Case User Interface<onap-usecase-ui:release_notes>`
+| :ref:`VFC - Virtual Function Controller<onap-vfc-nfvo-lcm:release_notes>`
+| :ref:`VID - Virtual Infrastructure Deployment<onap-vid:release_notes>`
+| :ref:`VNFSDK - VNF Software Development Kit<onap-vnfsdk-model:release_notes>`
+| :ref:`VVP - VNF Validation Project<onap-vvp-documentation:release_notes>`
diff --git a/docs/use-cases/index.rst b/docs/use-cases/index.rst
deleted file mode 100644 (file)
index cc076b1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-.. 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.
-
-ONAP Use Cases
-==============
-
-Example uses case descriptions and sequence diagrams illustrating
-interactions between platform components.
-
-.. toctree::
-   :maxdepth: 1
-
-   vfw.rst
diff --git a/docs/use-cases/vfw.rst b/docs/use-cases/vfw.rst
deleted file mode 100644 (file)
index beef17c..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-.. 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.
-
-.. _vfirewall_usecase:
-
-vFirewall
-=========
-
-Description
------------
-
-Onboarding
-----------
-
-.. uml::
-
-   @startuml
-   title vFW/vFWCL and vDNS VNF Onboarding (R1)\nVFW/vFWCL and vDNS use the same flows but they are separate VNFs/Services
-   ONAP_User -> SDC : vFW_vDNS resource onboarding  (HEAT)
-   note right : vFWCL (vpg & vfw,vsn)\nvFW (vpg, vfw, vsn)\nvDNS (vpg, vlb,vdns) + DNSScaling (vdns)\
-   ONAP_User -> SDC : vFW_vDNS service onboarding
-   ONAP_User -> SDC : vFW_vDNS distribution
-   |||
-   SDC -> SO : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   SDC -> AAI : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   SDC -> SDNC : artifact distribution\nNOTIFY,DOWNLOAD,DEPLOY_OK
-   @enduml
-
-Instantiation
--------------
-
-.. uml::
-
- @startuml
-   title vFW vDNS Instantiation (R1)\nvFW and vDNS use the same flows but they are separate VNFs/Services
-   participant ONAP_User
-   participant Robot
-   Participant SDC
-   Participant VID
-   Participant SO
-   ONAP_User -> AAI : populate cloud inventory
-   note left of AAI:  manual via curl or POSTMAN
-   |||
-   ONAP_User -> VID : vFW_vDNS deployment
-   VID -> SDC : Lookup VNF artifacts
-   VID -> AAI : Lookup cloud locations, subscriber
-   VID -> SO : vFW_vDNS Service \nInstantiation\n(base modules)
-   SO -> AAI : inventory update
-   VID -> SO : vFW_vDNS VNF Instantiation\n(base modules)
-   note left of AAI : VFWCL is two VNFs in one service\nso VNF instantiate occurs twice
-   SO -> AAI : inventory update
-   ONAP_User -> SDNC : VNF API Preload VNF/VF data
-   VID -> SO : vFW_vDNS VF Instantiation\n(base modules)
-   SO -> AAI : inventory update
-   SO -> SDNC : Generic VNF API\n(assign)
-   SO -> Multi_VIM : vFW_vDNS Heat template, \nENV file, preload parameters
-   Multi_VIM -> CloudAPI : vFW_vDNS Heat template,\nENV file, preload parameters or
-   CloudAPI -> Hypervisor : vFW_vDNS Infrastructure instantiation
-   Hypervisor -> vFW_vDNS : Nova/Neutron Instantiation
-   Hypervisor -> CloudAPI : complete
-   CloudAPI -> Multi_VIM : complete
-   Multi_VIM -> SO : complete
-   note right : SO may poll for completion
-   SO -> SDNC:  Generic VNF API\n(activated)
-   note left : on failure from Openstack SO issues rollback to SDNC
-   SDNC -> AAI : L3 Network resource update
-   SO -> VID : complete
-   note right : VID will poll for completion
-   ONAP_User -> Robot : run Heat Bridge
-   Robot -> CloudAPI  :  retrieve cloud data
-   Robot -> AAI :  Update with cloud data
-   |||
-   @enduml
diff --git a/tools/checkdocs.sh b/tools/checkdocs.sh
new file mode 100755 (executable)
index 0000000..1f7f10b
--- /dev/null
@@ -0,0 +1,723 @@
+#!/bin/bash
+#set -x # uncomment for bash script debugging
+
+### ============================================================================
+### Licensed under the Apache License, Version 2.0 (the "License");
+### you may not use this file except in compliance with the License.
+### You may obtain a copy of the License at
+###
+###       http://www.apache.org/licenses/LICENSE-2.0
+###
+### Unless required by applicable law or agreed to in writing, software
+### distributed under the License is distributed on an "AS IS" BASIS,
+### WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+### See the License for the specific language governing permissions and
+### limitations under the License.
+### ============LICENSE_END=====================================================
+
+###
+### checkdocs.sh
+###
+### AUTHOR(S):
+### Thomas Kulik, Deutsche Telekom AG, 2020
+###
+### DESCRIPTION:
+### Retrieves a full list of ONAP repos from gerrit inluding their state.
+### Clones all active repos of the ONAP master branch plus other requested ONAP
+### branches. Then the script does some docs related analyses depending on the
+### clone results. It creates logfiles containing filtered results. In addition
+### a table.csv is created which can be used to import it in a spreadsheed.
+### Also a zip-file is created which contains all the results.
+###
+### IMPORTANT:
+### - in the output, repo names are shown in square brackets for readability
+###   e.g [aai/aai-common]/docs/release-notes.rst
+### - in the table.csv file you see data for the requested branch if available.
+###   if not available, data is retrieved from the master branch. it will be
+###   denoted in round brackets, e.g. (3) (tox.ini)
+###
+### REQUIREMENTS:
+### curl
+### jq
+###
+
+###
+### SOME HELPING COMMANDS TO PROCESS LOG FILES:
+### create repo list
+### curl -s https://git.onap.org/ | grep "^<tr><td class='toplevel-repo'><a title='" | sed -r "s:^<tr><td class='toplevel-repo'><a title='::" | sed -r "s:'.*::"
+###
+### remove branchname from the line
+### cat frankfurt_gerritclone.log | sed 's:frankfurt|::'
+###
+### list only image names
+### cat master_dockerimagesfull.log | grep image | sed -r 's:image\:::' | sed -r 's:^ +::' | sed '/^[[:space:]]*$/d'
+###
+### more interesting stuff ...
+### curl https://gerrit.onap.org/r/projects/?d
+### LONG:  curl -s 'https://gerrit.onap.org/r/projects/?d' | awk '{if(NR>1)print}' | jq -c '.[] | {id, state}' | sed -r 's:%2F:/:g' | sed -r 's:["{}]::g' | sed -r 's:id\:::' | sed -r 's:,state\::|:' | sed '/All-Projects/d' | sed '/All-Users/d'
+### SHORT: curl -s 'https://gerrit.onap.org/r/projects/?d' | awk '{if(NR>1)print}' | jq -c '.[] | {id, state}' | sed -r 's:%2F:/:g; s:["{}]::g; s:id\:::; s:,state\::|:; /All-Projects/d; /All-Users/d'
+###
+
+script_version="1.2 (2020-11-18)"
+
+# save command for the restart with logging enabled
+command=$0
+arguments=$@
+fullcommand="${command} ${arguments}"
+
+###
+### functions
+###
+
+# print usage
+function usage() {
+  echo "                                                           "
+  echo " checkdocs.sh Version ${script_version}"
+  echo "                                                           "
+  echo " USAGE:                                                    "
+  echo "  ./checkdocs.sh <arguments>                               "
+  echo "                                                           "
+  echo " ARGUMENTS:                                                "
+  echo "  -u|--user username                                       "
+  echo "  linux foundation username used to clone ONAP Gerrit repos"
+  echo "                                                           "
+  echo "  -b|--branches branch1,branch2,branch3                    "
+  echo "  list of branches to be cloned. master is automatically   "
+  echo "  added to the list. do not add manually!                  "
+  echo "                                                           "
+  echo "  -d|--dev                                                 "
+  echo "  development-mode - limits number of repos to be cloned   "
+  echo "                                                           "
+}
+
+# draw a simple line
+function drawline {
+  echo "*******************************************************************************"
+}
+
+# remove lockfile in case script is interrupted
+trap InterruptedScript SIGINT SIGTERM SIGHUP SIGKILL SIGSTOP
+function InterruptedScript {
+  echo " "
+  echo "Script was interrupted."
+  if [ -f $lockfile ] ; then
+    rm $lockfile
+  fi
+  exit 0
+}
+
+###
+### arguments handling
+###
+
+PARAMS=""
+
+while (( "$#" )); do
+  case "$1" in
+    -d|--dev)
+      devmode="TRUE"
+      shift
+      ;;
+    -b|--branches)
+      if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
+        branches_csv=$2
+        shift 2
+      else
+        echo "Error: Argument for $1 is missing" >&2
+        usage
+        exit 1
+      fi
+      ;;
+    -u|--user)
+      if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then
+        lfusername=$2
+        shift 2
+      else
+        echo "Error: Argument for $1 is missing" >&2
+        usage
+        exit 1
+      fi
+        ;;
+    -*|--*=) # unsupported flags
+      echo "Error: Unsupported argument $1" >&2
+      usage
+      exit 1
+      ;;
+    *) # preserve positional arguments
+      PARAMS="$PARAMS $1"
+      shift
+      ;;
+  esac
+done
+
+# set positional arguments in their proper place
+eval set -- "$PARAMS"
+
+# old: declare -a branches=("master" "frankfurt" "guilin")
+if [[ $branches_csv == "" || $lfusername == "" ]]; then
+  usage
+  exit -1
+fi
+
+# master branch is automatically added and must not part of the user arguments
+if [[ $branches_csv == *"master"* ]]; then
+  usage
+  exit -1
+fi
+# clone master first, the the other branches
+branches_csv="master,${branches_csv}"
+
+# create the branches array by readinging in the values from the variable
+IFS=',' read -r -a branches <<< "${branches_csv}"
+
+#echo "DBUG: devmode      = \"${devmode}\""
+#echo "DBUG: branches_csv = \"${branches_csv}\""
+#echo "DBUG: lfusername   = \"${lfusername}\""
+#echo "DBUG: branches     = \"${branches[@]}\""
+
+# restart script with logging enabled
+lockfile="checkdocs-runtime-lockfile"
+if [ ! -f $lockfile ] ; then
+  touch $lockfile
+  echo "Restarting script with logging enabled."
+  ${fullcommand} 2>&1 | tee checkdocs.log
+  rm $lockfile
+  exit
+fi
+
+echo " "
+echo "checkdocs.sh Version ${script_version}"
+echo " "
+
+# curl must be installed
+if ! command -v curl &> /dev/null
+then
+  echo "ERROR: curl command could not be found"
+  exit -1
+fi
+
+today=$(date '+%Y-%m-%d');
+repolist="gerrit-repos-master-"$today".txt";
+unique=$(date +%s)
+
+echo "Retrieving a full list of ONAP repositories (master) from gerrit.onap.org."
+
+# retrieve the full repolist from gerrit
+# workaround because of the (wrong?) response of gerrit.onap.org which makes jq command fail
+# "| awk '{if(NR>1)print}'" filters the first line of the response so that jq will work again (thx marek)
+curl -s 'https://gerrit.onap.org/r/projects/?d' | awk '{if(NR>1)print}' | jq -c '.[] | {id, state}' | sed -r 's:%2F:/:g; s:["{}]::g; s:id\:::; s:,state\::|:; /All-Projects/d; /All-Users/d' >./$repolist
+
+# process the created repolist
+# only active projects will be cloned in case the requested branch of the project exists
+echo "Accessing gerrit.onap.org with username \"${lfusername}\"."
+echo "Start cloning of repositories."
+
+for branch in "${branches[@]}"
+do
+
+  echo " "
+  echo "###"
+  echo "### ${branch}"
+  echo "###"
+  echo " "
+
+  branch_upper=$(echo "${branch}" | tr '[:lower:]' '[:upper:]')
+
+  mkdir $branch
+  cp $repolist $branch
+  cd $branch
+
+  devcounter=0
+
+  # process repolist
+  while read line
+  do
+
+  if [[ $devmode == "TRUE" ]]; then
+    devcounter=$((devcounter+1))
+  fi
+
+  if [[ $devcounter -lt "11" ]]; then
+
+      if [[ $devmode == "TRUE" ]]; then
+        echo "INFO: devmode! counter=${devcounter}"
+      fi
+
+      drawline
+      reponame=$(echo $line | awk -F "|" '{print $1}');
+      repostate=$(echo $line | awk -F "|" '{print $2}');
+      echo $reponame
+      echo $repostate
+
+      if [[ $repostate == "ACTIVE" ]]; then
+        echo "Cloning \"${branch}\" branch of ACTIVE project ${reponame}..."
+
+        git clone --branch ${branch} --recurse-submodules ssh://${lfusername}@gerrit.onap.org:29418/$reponame ./$reponame
+        gitexitcode=$?
+
+        if [[ ! ${gitexitcode} == "0" ]]; then
+          errormsg=$(tail -1 ../checkdocs.log)
+        else
+          errormsg="cloned"
+        fi
+
+        # gerritclone.log format:  $1=gitexitcode|$2=reponame|$3=repostate|$4=errormsg
+        echo "${gitexitcode}|${reponame}|${repostate}|${errormsg}" | tee -a ${branch}_gerritclone.log
+
+      elif [[ $repostate == "READ_ONLY" ]]; then
+        echo "-|${reponame}|${repostate}|ignored" | tee -a ${branch}_gerritclone.log
+      else
+        echo "-|${reponame}|unknown repo state \"${repostate}\"|-" | tee -a ${branch}_gerritclone.log
+      fi
+
+      # examine repo
+      if [[ ${gitexitcode} == "0" ]]; then
+
+        printf "\ndocs directories:\n"
+        find ./$reponame -type d -name docs | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_docs.log
+
+        printf "\nrst files:\n"
+        find ./$reponame -type f -name *.rst | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_rstfiles.log
+
+        printf "\nrelease notes rst:\n"
+        find ./$reponame -type f | grep 'release.*note.*.rst' | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_releasenotes.log
+
+        printf "\ntox.ini files:\n"
+        find ./$reponame -type f -name tox.ini | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_toxini.log
+
+        printf "\nconf.py files:\n"
+        find ./$reponame -type f -name conf.py | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_confpy.log
+
+        printf "\nindex.rst files:\n"
+        find ./$reponame -type f -name index.rst | sed -r 's:./::' | sed -r s:${reponame}:[${reponame}]: | tee -a ${branch}_indexrst.log
+
+      fi
+
+    # end defcounter loop
+    fi
+
+    gitexitcode=""
+
+  done <${repolist}
+
+  # examine repos
+  drawline
+  find . -type f -name values.yaml -print -exec grep "image:" {} \; | sed -r 's:^ +::' | tee ${branch}_dockerimagesfull.log
+  drawline
+  ls --format single-column -d */ | sed 's:/$::' | tee ${branch}_directories.log
+  drawline
+  cat ${branch}_dockerimagesfull.log | grep image | sed -r 's:image\:::' | sed -r 's:^ +::' | sed '/^[[:space:]]*$/d' >${branch}_dockerimages.log
+  drawline
+  ls --format single-column -d oom/kubernetes/*/ | tee ${branch}_oomkubernetes.log
+  drawline
+
+  # examine docs
+  readarray -t docs_array < ./${branch}_docs.log;
+
+  for line in "${docs_array[@]}"
+  do
+
+    echo $line | tee -a ${branch}_docsconfig.log
+
+    # remove [ and ] which are distinguish the project name in the output
+    line=$(echo $line | sed -r 's:\[:: ; s:\]::')
+
+    if [ -f ./${line}/conf.py ] ; then
+      echo "  conf.py ..... found" | tee -a ${branch}_docsconfig.log
+    else
+      echo "  conf.py ..... NOT FOUND" | tee -a ${branch}_docsconfig.log
+    fi
+
+    if [ -f ./${line}/index.rst ] ; then
+      echo "  index.rst ... found" | tee -a ${branch}_docsconfig.log
+    else
+      echo "  index.rst ... NOT FOUND" | tee -a ${branch}_docsconfig.log
+    fi
+
+    if [ -f ./${line}/tox.ini ] ; then
+      echo "  tox.ini ..... found" | tee -a ${branch}_docsconfig.log
+    else
+      echo "  tox.ini ..... NOT FOUND" | tee -a ${branch}_docsconfig.log
+    fi
+
+    echo " " | tee -a ${branch}_docsconfig.log
+
+  done
+  unset docs_array
+
+  drawline
+
+  ###
+  ### build a csv table that combines results
+  ###
+
+  #
+  # csv column #1: project name
+  #
+
+  readarray -t array < ./${repolist};
+  i=0
+  csv[i]="project"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    reponame=$(echo $line | awk -F "|" '{print $1}');
+    project=$(echo $reponame | sed 's:/.*$::')
+    #echo "DBUG: reponame=${reponame}"
+    #echo "DBUG:  project=${project}"
+    #echo "DBUG:        i=${i}"
+    csv[i]=${project}
+    ((i++))
+  done
+  unset array
+  unset i
+  unset reponame
+  unset project
+
+  #
+  # csv column #2: repo name
+  #
+
+  readarray -t array < ./${repolist};
+  i=0
+  csv[i]="${csv[i]},MASTER repo name"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    reponame=$(echo $line | awk -F "|" '{print $1}');
+    csv[i]="${csv[i]},${reponame}"
+    ((i++))
+  done
+  unset array
+  unset i
+  unset reponame
+
+  #
+  # csv column #3: repo state
+  #
+
+  readarray -t array < ./${repolist};
+  i=0
+  csv[i]="${csv[i]},MASTER repo state"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    repostate=$(echo $line | awk -F "|" '{print $2}');
+    csv[i]="${csv[i]},${repostate}"
+    ((i++))
+  done
+  unset array
+  unset i
+  unset repostate
+
+  #
+  # csv column #4: clone message
+  #
+
+  readarray -t array < ./${branch}_gerritclone.log;
+  i=0
+  csv[i]="${csv[i]},${branch_upper} clone message"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    # gerritclone.log format:  $1=gitexitcode|$2=reponame|$3=repostate|$4=errormsg
+    errormsg=$(echo $line | awk -F "|" '{print $4}');
+    csv[i]="${csv[i]},${errormsg}"
+    ((i++))
+  done
+  unset array
+  unset i
+  unset errormsg
+
+  #
+  # csv column #5: RELEASE component (yes|no|maybe)
+  # to be filled with values of the planned release config file maintained by
+  # the onap release manager
+  #
+
+  # gerritclone.log format:  $1=gitexitcode|$2=reponame|$3=repostate|$4=errormsg
+  readarray -t array < ./${branch}_gerritclone.log;
+  i=0
+  csv[i]="${csv[i]},${branch_upper} component"
+  ((i++))
+  for line in "${array[@]}"
+  do
+
+    # gerritclone.log format:  $1=gitexitcode|$2=reponame|$3=repostate|$4=errormsg
+    gitexitcode=$(echo $line | awk -F "|" '{print $1}');
+       reponame=$(echo $line | awk -F "|" '{print $2}');
+      repostate=$(echo $line | awk -F "|" '{print $3}');
+       errormsg=$(echo $line | awk -F "|" '{print $4}');
+
+    if [[ ${repostate} == "ACTIVE" && ${gitexitcode} == "0" ]]; then
+      releasecomponent="yes"
+    elif [[ ${repostate} == "ACTIVE" && ${gitexitcode} == "128" ]]; then
+      releasecomponent="maybe"
+    elif [ ${repostate} == "READ_ONLY" ]; then
+      releasecomponent="no"
+    else
+      releasecomponent="unknown"
+    fi
+
+    csv[i]="${csv[i]},${releasecomponent}"
+    ((i++))
+  done
+  unset array
+  unset i
+  unset gitexitcode
+  unset reponame
+  unset repostate
+  unset errormsg
+  unset releasecomponent
+
+  #
+  # csv column #6: docs (at repo root directory only; no recursive search!)
+  # csv column #7: conf.py
+  # csv column #8: tox.ini
+  # csv column #9: index.rst
+  #
+  # columns are filled with values from requested branch.
+  # if data is not available values from master branch are used.
+  # to identify master branch values, data is put into brackets "(...)"
+  #
+
+  readarray -t array < ./${repolist};
+  i=0
+  csv[$i]="${csv[i]},docs,conf.py,tox.ini,index.rst"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    line=$(echo $line | sed 's:|.*$::')
+    #echo "DBUG: line=${line}"
+    #echo "DBUG: i=${i}"
+
+    # docs
+    if [ -d ./${line}/docs ] ; then
+      docs="docs"
+    elif [ -d ../master/${line}/docs ] ; then
+      docs="(docs)"
+    else
+      docs="-"
+    fi
+
+    # conf.py
+    if [ -f ./${line}/docs/conf.py ] ; then
+      docs="${docs},conf.py"
+    elif [ -f ../master/${line}/docs/conf.py ] ; then
+      docs="${docs},(conf.py)"
+    else
+      docs="${docs},-"
+    fi
+
+    # tox.ini
+    if [ -f ./${line}/docs/tox.ini ] ; then
+      docs="${docs},tox.ini"
+    elif [ -f ../master/${line}/docs/tox.ini ] ; then
+      docs="${docs},(tox.ini)"
+    else
+      docs="${docs},-"
+    fi
+
+    # index.rst
+    if [ -f ./${line}/docs/index.rst ] ; then
+      docs="${docs},index.rst"
+    elif [ -f ../master/${line}/docs/index.rst ] ; then
+      docs="${docs},(index.rst)"
+    else
+      docs="${docs},-"
+    fi
+
+    #echo "DBUG: docs=${docs}"
+    line="${csv[i]},${docs}"
+    csv[$i]=${line}
+    ((i++))
+  done
+  unset array
+  unset i
+  unset docs
+
+  #
+  # csv column #10: index.html@RTD accessibility check
+  # csv column #11: index.html url
+  #
+
+  readarray -t array < ./${branch}_gerritclone.log;
+  i=0
+  csv[i]="${csv[i]},index.html@RTD,index.html url"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    # gerritclone.log format:  $1=gitexitcode|$2=reponame|$3=repostate|$4=errormsg
+    gitexitcode=$(echo $line | awk -F "|" '{print $1}');
+       reponame=$(echo $line | awk -F "|" '{print $2}');
+      repostate=$(echo $line | awk -F "|" '{print $3}');
+       errormsg=$(echo $line | awk -F "|" '{print $4}');
+
+            url=""
+    curl_result=""
+
+    # this routine works only with release "frankfurt" and later because
+    # earlier releases are using submodule structure for documentation files
+    if echo "$branch" | grep -q '^[abcde]'; then
+      curl_result="unsupported release"
+      url="-"
+    else
+
+      # we are working on "frankfurt" branch or later ...
+      # only if repostate IS ACTIVE a curl test is required
+      if [[ ${repostate} == "ACTIVE" ]]; then
+
+        # OPTIONAL: USE ALSO GITEXITCODE AS A FILTER CRITERIA ???
+
+        # url base
+        # important! only doc project needs a different url base
+        if [[ ${reponame} == "doc" ]]; then
+          url_start="https://docs.onap.org"
+        else
+          url_start="https://docs.onap.org/projects/onap"
+        fi
+        url_lang="en"
+        url_branch=${branch}
+
+        # "master" branch documentation is available as "latest" in RTD
+        if [[ ${url_branch} == "master" ]]; then
+          url_branch="latest"
+        fi
+
+        # replace all / characters in repo name with - charachter
+        url_repo=$(echo ${reponame} | sed -r 's/\//-/g')
+        url_file="index.html"
+
+        # build the full url
+        if [[ ${reponame} == "doc" ]]; then
+          # build the full url for the doc project
+          url="${url_start}/${url_lang}/${url_branch}/${url_file}"
+        else
+          # build the full url for the other projects
+          url="${url_start}-${url_repo}/${url_lang}/${url_branch}/${url_file}"
+        fi
+        #echo "DBUG: url=$url"
+
+        # test accessibility of url
+        curl --head --silent --fail "${url}?${unique}" >/dev/null
+        curl_result=$?
+
+        # convert numeric results to text
+        if [ "${curl_result}" = "0" ]; then
+          curl_result="accessible"
+        elif [ "${curl_result}" = "22" ]; then
+          curl_result="does not exist"
+        else
+          curl_result="ERROR:${curl_result}"
+        fi
+
+        # url does not exist for this branch.
+        # in case the requested url is not already for "master" branch,
+        # we try to access the url of the master branch and denote the
+        # result by using round brackets (result)
+        if [[ ${curl_result} == "does not exist" && ! $branch == "master" ]]; then
+
+          # build the full (master/latest) url
+          url="${url_start}-${url_repo}/${url_lang}/latest/${url_file}"
+          #echo "DBUG: url=$url"
+
+          # test accessibility of url in "master branch" (latest)
+          curl --head --silent --fail "${url}?${unique}" >/dev/null
+          curl_result=$?
+          # denote result as a value from "master" branch (latest)
+          url="(${url})"
+
+          # convert numeric results to text
+          if [ "${curl_result}" = "0" ]; then
+            curl_result="(accessible)"
+          elif [ "${curl_result}" = "22" ]; then
+            curl_result="(does not exist)"
+          else
+            curl_result="(ERROR:${curl_result})"
+          fi
+
+        fi
+      else
+        # repostate IS NOT ACTIVE - no curl test required
+        curl_result="-"
+        url="-"
+      fi
+    fi
+
+    echo "$url ... $curl_result"
+    csv[i]="${csv[i]},${curl_result},${url}"
+    #echo "DBUG: csv line=${csv[i]}"
+
+    ((i++))
+  done
+
+  #
+  # csv column #12: release notes
+  #
+
+  readarray -t array < ../${repolist};
+  i=0
+  csv[i]="${csv[i]},release notes"
+  ((i++))
+  for line in "${array[@]}"
+  do
+    line=$(echo $line | sed 's:|.*$::')
+    #echo "DBUG: line=\"${line}\""
+    #echo "DBUG: i=${i}"
+    relnote=""
+
+    # put repo name in square brackets for increased grep hit rate
+    # escape minus and bracket characters to avoid problems with the grep command
+    #repo_grepable=$(echo ${line} | sed -r s:${line}:[${line}]: | sed -r 's/-/\\-/g' | sed -r 's/\[/\\[/g' | sed -r 's/\]/\\]/g')
+    #echo "DBUG: repo_grepable=\"${repo_grepable}\""
+
+    # check if repo dir exists in this branch
+    if [ -d ./${line} ] ; then
+      # if yes, check if repo name appears in the branch releasenotes.log
+      relnote=$(find "./${line}" -type f | grep 'release.*note.*.rst' | wc -l);
+      # repo dir DOES NOT exist in this branch - so check if repo dir exists in MASTER branch
+    elif [ -d ../master/${line} ] ; then
+      # if yes, check if repo name appears in the MASTER releasenotes.log
+      # count release notes files in MASTER branch (in repo root and its subdirectories)
+      relnote=$(find "../master/${line}" -type f | grep 'release.*note.*.rst' | wc -l);
+      # put results in round brackets to show that this is MASTER data
+      relnote=$(echo ${relnote} | sed -r s:${relnote}:\(${relnote}\):)
+    else
+      relnote="-"
+    fi
+
+    line="${csv[i]},${relnote}"
+    csv[i]=${line}
+    ((i++))
+
+  done
+  unset array
+  unset i
+  unset relnote
+  unset repo_grepable
+
+  #
+  # build the table.csv file
+  #
+
+  for i in "${csv[@]}"
+  do
+    echo "$i" | tee -a ./${branch}_table.csv
+  done
+
+  #
+  # create data package for this branch and zip it
+  #
+
+  datadir=${branch}_data
+  mkdir $datadir
+  cp $repolist $datadir
+  cp ${branch}_table.csv $datadir
+  cp ${branch}_*.log $datadir
+  zip -r ${datadir}.zip $datadir
+
+  # return from the branch directory
+  cd ..
+
+# return and work on the next requested branch ... or exit
+done
diff --git a/tools/checkrtd.sh b/tools/checkrtd.sh
new file mode 100755 (executable)
index 0000000..e626dd9
--- /dev/null
@@ -0,0 +1,86 @@
+#!/bin/bash
+#set -x # uncomment for bash script debugging
+
+# branch, e.g. "master" or "guilin"
+branch=$1
+# logfile produced by checkdocs that contains the list of links
+file_to_process=$2
+
+#
+# NOTE: works NOT with elalto release and below because of the submodule structure used for documentation
+#
+
+# url
+# important! only doc project needs a different url base
+url_lang="en"
+url_branch=${branch}
+unique=$(date +%s)
+
+# "master" branch documentation is available as "latest" in RTD
+if [[ ${url_branch} == "master" ]]; then
+  url_branch="latest"
+fi
+
+#readarray -t array < ./${branch}_releasenotes.log;
+readarray -t array < ${file_to_process};
+for line in "${array[@]}"
+do
+
+  reponame=$(echo ${line} | cut -d "[" -f2 | cut -d "]" -f1)
+  #reponame="[${reponame}]"
+  #echo "DBUG: reponame=${reponame}"
+
+  # example line: [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst
+  # example url:  https://docs.onap.org/projects/onap-dmaap-messagerouter-messageservice/en/frankfurt/release-notes/release-notes.html
+
+  # extract repo name which comes in square bracktes ([...]) and convert slash (/) to minus (-)
+  # line:   [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst
+  # output:  dmaap-messagerouter-messageservice
+  url_repo=$(echo ${line} | sed -r 's/].+$//' | sed -r 's/\[//' | sed -r 's/\//-/g')
+
+  # extract rst filename and its path; replace .rst ending with .html
+  # warning: path does not always contain "docs"!
+  # line:   [dmaap/messagerouter/messageservice]/docs/release-notes/release-notes.rst
+  # output:                                           release-notes/release-notes.html
+  url_file=$(echo ${line} | sed -r 's/^.+\]//' | sed -r 's/^.*\/docs\///' | sed -r 's/\.rst$/\.html/' )
+
+  #echo "DBUG:     line = ${line}"
+  #echo "DBUG: url_file = ${url_file}"
+  #echo "DBUG: url_repo = ${url_repo}"
+  #echo "DBUG: reponame = ${reponame}"
+
+  # build the full url
+  if [[ ${reponame} == "doc" ]]; then
+    # build the full url for the doc project
+    url_start="https://docs.onap.org"
+    url="${url_start}/${url_lang}/${url_branch}/${url_file}"
+  else
+    # build the full url for the other projects
+    url_start="https://docs.onap.org/projects/onap"
+    url="${url_start}-${url_repo}/${url_lang}/${url_branch}/${url_file}"
+  fi
+
+  #echo "DBUG:      url = $url"
+
+  # check with curl if html page is accessible (no content check!)
+  # to prevent (server side) cached results a unique element is added to the request
+  curl --head --silent --fail "${url}?${unique}" >/dev/null
+  curl_result=$?
+
+  # "0" and "22" are expected as a curl result
+  if [ "${curl_result}" = "0" ]; then
+    curl_result="accessible"
+  elif [ "${curl_result}" = "22" ]; then
+    curl_result="does not exist"
+  fi
+
+  #echo -e "DBUG:       ${line}"
+  #echo -e "DBUG: ${curl_result} ${url}"
+  #echo " "
+
+  echo "${line},${url},${curl_result}"
+
+  ((i++))
+done
+unset array
+unset i