.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

========
Delivery
========


SDC Dockers Images
======================

Overview
--------

+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| Name                       | Content of the image                                                | On Startup                                     |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-cassandra-init         | Logic for creating the **schemas for SDC catalog** server           | Creates the **schemas**                        |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-onboard-cassandra-init | Logic for creating the **schemas for SDC onboarding** server        | Creates the **schemas**                        |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-cassandra              | **Cassandra** server, this is optional as SDC uses shared ONAP      | Starts **Cassandra**                           |
|                            | Cassandra by default                                                |                                                |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-onboard-backend        | Onboarding **Backend** Jetty server                                 | Starts Jetty with the application.             |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-backend-all-plugins    | **Backend** Jetty server                                            | Starts Jetty with the application.             |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-backend-init           | Logic for importing the SDC **Tosca normative types**               | Executes the rest calls for the catalog server |
|                            | Logic for configuring **external users** for SDC external api's     |                                                |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-frontend               | SDC **Frontend** Jetty server                                       | Starts Jetty with our application.             |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-workflow-init          | Logic for configuring **Workflow Designer**                         | Executes configuration tasks of the WFD        |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-workflow-backend       | SDC Workflow **Backend** Jetty server                               | Starts Jetty with our application.             |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-workflow-frontend      | SDC Workflow **Frontend** Jetty server                              | Starts Jetty with our application.             |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+
| sdc-helm-validator         | SDC container for Helm package validation                           | Starts server with our application.            |
+----------------------------+---------------------------------------------------------------------+------------------------------------------------+


Deployment dependency map
--------------------------

.. blockdiag::

    orientation = portrait
    class job [color = "#FFA300", style = dotted, shape = "box"]
    class app [color = "#29ADFF", shape = "roundedbox"]
    fe [label = "sdc-frontend", class = "app"];
    be [label = "sdc-backend", class = "app"];
    onboarding-be [label = "sdc-onboard-backend", class = "app"];
    cs [label = "sdc-cassandra", class = "app"];
    be-init [label = "sdc-backend-init", class = "job"];
    cs-init [label = "sdc-cassandra-init", class = "job"];
    cs-onboarding-init [label = "sdc-cassandra-onboard-init", class = "job"];
    sdc-wfd-fe [label = "sdc-workflow-fe", class = "app"];
    sdc-wfd-be [label = "sdc-workflow-be", class = "app"];
    sdc-wfd-be-init [label = "sdc-workflow-init", class = "job"];
    job [class = "job"];
    app [class = "app"];

    onboarding-be -> cs-onboarding-init -> cs-init -> cs;
    be-init -> be -> cs-init -> cs;
    sdc-wfd-fe -> sdc-wfd-be-init -> sdc-wfd-be -> cs-init -> cs;
    fe;

Connectivity Matrix
-------------------

+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+
| Name                | API purpose                                                  | protocol    | port number / range | TCP / UDP |
+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+
| sdc-cassandra       | SDC backend uses the two protocols to access Cassandra       | trift/async | 9042 / 9160         | TCP       |
+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+
| sdc-onboard-backend | Access the onboarding functionality                          | http(s)     | 8081 / 8445         | TCP       |
+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+
| sdc-backend         | Access the catalog functionality                             | http(s)     | 8080 / 8443         | TCP       |
+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+
| sdc-frontend        | Access SDC UI and proxy requests to SDC backend              | http(s)     | 8181 / 9443         | TCP       |
+---------------------+--------------------------------------------------------------+-------------+---------------------+-----------+

Offered APIs
------------

+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+
| container / vm name | address           | API purpose                                                                             | protocol | port number | TCP / UDP |
+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+
| sdc-frontend        | /sdc1/feproxy/*   | Proxy for all REST calls from SDC UI                                                    | HTTP(S)  | 8181 / 8443 | TCP       |
+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+
| sdc-backend         | /sdc2/*           | Internal APIs used by the UI. Request is passed through front end proxy                 | HTTP(S)  | 8080 / 8443 | TCP       |
+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+
|                     | /sdc/*            | External APIs offered to the different components for retrieving info from SDC catalog. | HTTP(S)  | 8080 / 8443 | TCP       |
+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+
| sdc-onboarding-be   | /onboarding/api/* | Internal APIs used by the UI                                                            | HTTP(S)  | 8080 / 8443 | TCP       |
+---------------------+-------------------+-----------------------------------------------------------------------------------------+----------+-------------+-----------+


Structure
---------

Below is a diagram of the SDC project docker containers and the connections between them.

.. blockdiag::


    blockdiag delivery {
        node_width = 140;
        orientation = portrait;
        sdc-cassandra[shape = flowchart.database , color = grey]
        sdc-frontend [color = blue, textcolor="white"]
        sdc-backend [color = yellow]
        sdc-onboarding-backend [color = yellow]
        sdc-backend [color = yellow]
        sdc-wfd-frontend [color = brown]
        sdc-wfd-backend [color = brown]
        sdc-wfd-be-init [color = brown]
        sdc-cassandra-Config [color = orange]
        sdc-backend-config [color = orange]
        sdc-onboarding-init [color = orange]
        sdc-wfd-be-init -> sdc-wfd-backend;
        sdc-onboarding-init -> sdc-onboarding-backend;
        sdc-cassandra-Config -> sdc-cassandra;
        sdc-backend-config -> sdc-backend;
        sdc-wss-simulator -> sdc-frontend;
        sdc-wfd-frontend -> sdc-wfd-backend;
        sdc-frontend -> sdc-backend, sdc-onboarding-backend;
        sdc-wfd-backend -> sdc-cassandra;
        sdc-backend -> sdc-cassandra;
        sdc-onboarding-backend -> sdc-cassandra;
        sdc-sanity -> sdc-backend;
        sdc-ui-sanity -> sdc-frontend;
        group deploy_group {
            color = green;
            label = "Application Layer"
            sdc-backend; sdc-onboarding-backend; sdc-frontend; sdc-cassandra; sdc-cassandra-Config; sdc-backend-config; sdc-onboarding-init; sdc-wfd-frontend; sdc-wfd-backend; sdc-wfd-be-init;
        }
        group testing_group {
            color = purple;
            label = "Testing Layer";
            sdc-sanity; sdc-ui-sanity
        }
        group util_group {
            color = purple;
            label = "Util Layer";
            sdc-wss-simulator;
        }
    }
