summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/CBA/index.rst94
-rw-r--r--docs/CBA/media/CDS_architecture.jpgbin102560 -> 0 bytes
-rw-r--r--docs/CBA/media/image0.PNGbin93418 -> 0 bytes
-rw-r--r--docs/CBA/media/image0.jpgbin150033 -> 0 bytes
-rw-r--r--docs/CBA/media/image1.PNGbin111684 -> 0 bytes
-rw-r--r--docs/CBA/media/image1.jpgbin167601 -> 0 bytes
-rw-r--r--docs/CBA/media/image2.PNGbin77925 -> 0 bytes
-rw-r--r--docs/CBA/media/image2.jpgbin114351 -> 0 bytes
-rw-r--r--docs/cba/index.rst125
-rw-r--r--docs/cba/media/CDS_Architecture.jpgbin0 -> 290332 bytes
-rw-r--r--docs/cba/media/CDS_Data_Flow.jpgbin0 -> 321865 bytes
-rw-r--r--docs/cba/media/Functional_Decomposition.jpgbin0 -> 209297 bytes
-rw-r--r--docs/datadictionary/complexResponse.rst23
-rw-r--r--docs/datadictionary/create_netbox_ip_address.rst38
-rw-r--r--docs/datadictionary/dbsystemcode.rst19
-rw-r--r--docs/datadictionary/dt-netbox-ip.rst25
-rw-r--r--docs/datadictionary/media/resttable.JPGbin79877 -> 0 bytes
-rw-r--r--docs/datadictionary/resourcedefinitioncodesnip.rst51
-rw-r--r--docs/datadictionary/resourcesource.rst155
-rw-r--r--docs/datadictionary/restauth.rst60
-rw-r--r--docs/datadictionary/restsourcecode.rst92
-rw-r--r--docs/datadictionary/sourcecapabilitycode.rst44
-rw-r--r--docs/datadictionary/sourcedefaultcode.rst16
-rw-r--r--docs/datadictionary/sourceinputcode.rst16
-rw-r--r--docs/datadictionary/sourceprimarydbcode.rst57
-rw-r--r--docs/index.rst83
-rw-r--r--docs/logging.rst16
-rw-r--r--docs/media/CDS.pngbin23391 -> 0 bytes
-rw-r--r--docs/media/CDS_Architecture_Design.pptx (renamed from docs/CDS_Architecture_Design.pptx)bin1226310 -> 1004252 bytes
-rw-r--r--docs/media/CDS_architecture.jpgbin0 -> 512128 bytes
-rw-r--r--docs/media/CDS_architecture_latest.pngbin204735 -> 0 bytes
-rw-r--r--docs/media/dd_mapping_template_rel.jpgbin0 -> 68773 bytes
-rw-r--r--docs/media/dd_mapping_template_rel.pngbin62055 -> 0 bytes
-rw-r--r--docs/microservices/blueprintsProcessorMS.rst (renamed from docs/microservices/bluePrintsProcessorMS.rst)30
-rw-r--r--docs/microservices/controllerBlueprintMS.rst (renamed from docs/microservices/controllerBlueprintStudioProcessorMS.rst)9
-rw-r--r--docs/microservices/dynamicapi.rst5
-rw-r--r--docs/microservices/enrichment.rst16
-rw-r--r--docs/microservices/expression.rst45
-rw-r--r--docs/microservices/flexibleplugin.rst17
-rw-r--r--docs/microservices/images/blueprintprocessor.jpgbin47208 -> 0 bytes
-rw-r--r--docs/microservices/media/Enrichment-UI1.pngbin33981 -> 42383 bytes
-rw-r--r--docs/microservices/media/Enrichment-UI2.pngbin90202 -> 109402 bytes
-rw-r--r--docs/microservices/media/blueprintprocessor.jpgbin0 -> 63829 bytes
-rw-r--r--docs/microservices/media/dyanmicapi.jpgbin72238 -> 118101 bytes
-rw-r--r--docs/microservices/workflow.rst10
-rw-r--r--docs/modelingconcepts/artifact-type.rst88
-rw-r--r--docs/modelingconcepts/cba.rst49
-rw-r--r--docs/modelingconcepts/data-dictionary.rst50
-rw-r--r--docs/modelingconcepts/data-type.rst163
-rw-r--r--docs/modelingconcepts/dynamic-payload.rst72
-rw-r--r--docs/modelingconcepts/enrichment.rst16
-rw-r--r--docs/modelingconcepts/expression.rst48
-rw-r--r--docs/modelingconcepts/external-system.rst120
-rw-r--r--docs/modelingconcepts/flexible-plug-in.rst122
-rw-r--r--docs/modelingconcepts/index.rst (renamed from docs/modelingconcepts/overview.rst)6
-rw-r--r--docs/modelingconcepts/node-type.rst841
-rw-r--r--docs/modelingconcepts/scripts.rst8
-rw-r--r--docs/modelingconcepts/southbound-interfaces.rst10
-rw-r--r--docs/modelingconcepts/template.rst6
-rw-r--r--docs/modelingconcepts/test.rst26
-rw-r--r--docs/modelingconcepts/tosca-meta.rst21
-rw-r--r--docs/modelingconcepts/workflow.rst338
-rw-r--r--docs/requirements-docs.txt2
-rw-r--r--docs/resourcedefinition/index.rst (renamed from docs/datadictionary/index.rst)74
-rw-r--r--docs/resourcedefinition/media/capabilitytable.JPG (renamed from docs/datadictionary/media/capabilitytable.JPG)bin57448 -> 57448 bytes
-rw-r--r--docs/resourcedefinition/media/mandatory.JPG (renamed from docs/datadictionary/media/mandatory.JPG)bin48105 -> 48105 bytes
-rw-r--r--docs/resourcedefinition/media/optional.JPG (renamed from docs/datadictionary/media/optional.JPG)bin79730 -> 79730 bytes
-rw-r--r--docs/resourcedefinition/media/sqltable.JPG (renamed from docs/datadictionary/media/sqltable.JPG)bin36259 -> 36259 bytes
-rw-r--r--docs/resourcedefinition/resourcesource.rst421
-rw-r--r--docs/ui/designer.rst (renamed from docs/CDS_Designer_Guide.rst)150
-rw-r--r--docs/usecases/media/dd-postman-runner.pngbin0 -> 140243 bytes
-rw-r--r--docs/usecases/media/pnf-simulator-demo-cba.zipbin0 -> 31920 bytes
-rw-r--r--docs/usecases/media/pnf-simulator.postman_collection.json1092
-rw-r--r--docs/usecases/media/save-response-postman.pngbin0 -> 154196 bytes
-rw-r--r--docs/usecases/pnf-simulator.rst940
-rw-r--r--docs/usecases/use-cases.rst13
-rw-r--r--docs/usecases/wordpress-cnf-poc.rst28
-rw-r--r--docs/userguide/designtime.rst (renamed from docs/designtime.rst)12
-rw-r--r--docs/userguide/developer-guide.rst (renamed from docs/developerguide/developer-guide.rst)0
-rw-r--r--docs/userguide/installation.rst (renamed from docs/installation.rst)19
-rw-r--r--docs/userguide/media/build_logs.png (renamed from docs/developerguide/media/build_logs.png)bin126733 -> 126733 bytes
-rw-r--r--docs/userguide/media/create_run_config_java.png (renamed from docs/developerguide/media/create_run_config_java.png)bin83005 -> 83005 bytes
-rw-r--r--docs/userguide/media/create_run_config_kt.png (renamed from docs/developerguide/media/create_run_config_kt.png)bin99443 -> 99443 bytes
-rw-r--r--docs/userguide/media/expand_vm_options.PNG (renamed from docs/developerguide/media/expand_vm_options.PNG)bin17547 -> 17547 bytes
-rw-r--r--docs/userguide/media/import_project.png (renamed from docs/developerguide/media/import_project.png)bin33478 -> 33478 bytes
-rw-r--r--docs/userguide/media/reimport_maven.png (renamed from docs/developerguide/media/reimport_maven.png)bin138930 -> 138930 bytes
-rw-r--r--docs/userguide/media/run_config_java.png (renamed from docs/developerguide/media/run_config_java.png)bin73102 -> 73102 bytes
-rw-r--r--docs/userguide/media/run_config_kt.png (renamed from docs/developerguide/media/run_config_kt.png)bin56159 -> 56159 bytes
-rw-r--r--docs/userguide/media/run_debug.png (renamed from docs/developerguide/media/run_debug.png)bin4509 -> 4509 bytes
-rw-r--r--docs/userguide/media/vsc_logs.png (renamed from docs/developerguide/media/vsc_logs.png)bin161184 -> 161184 bytes
-rw-r--r--docs/userguide/resourceassignment.rst (renamed from docs/resourceassignment.rst)21
-rw-r--r--docs/userguide/running-bp-processor-in-ide.rst (renamed from docs/developerguide/running-bp-processor-in-ide.rst)96
92 files changed, 3835 insertions, 2063 deletions
diff --git a/docs/CBA/index.rst b/docs/CBA/index.rst
deleted file mode 100644
index c29eca8d9..000000000
--- a/docs/CBA/index.rst
+++ /dev/null
@@ -1,94 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0
-.. International License. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-.. _cds_cba-doc:
-
-Controller Blueprint Archived Designer Tool(CBA)
-================================================
-.. toctree::
- :maxdepth: 1
-
-Introduction
-------------
-The Controller Blueprint Archived is the overall service design, fully
-model-driven, package needed to automate the resolution of resources for
-instantiation and any config provisioning operation, such as day0,
-day1 or day2 configuration.
-
-The CBA is .zip file, comprised of the following folder structure, the
-files may vary:
-
-|image0|
-
-
-Architecture
-------------
-
-|image3|
-
-
-Installation
-------------
-
-Building client html and js files
-.................................
-
- * FROM alpine:3.8 as builder
- * RUN apk add --no-cache npm
- * WORKDIR /opt/cds-ui/client/
- * COPY client/package.json /opt/cds-ui/client/
- * RUN npm install
- * COPY client /opt/cds-ui/client/
- * RUN npm run build
-
-Building and creating server
-............................
-
- * FROM alpine:3.8
- * WORKDIR /opt/cds-ui/
- * RUN apk add --no-cache npm
- * COPY server/package.json /opt/cds-ui/
- * RUN npm install
- * COPY server /opt/cds-ui/
- * COPY --from=builder /opt/cds-ui/server/public /opt/cds-ui/public
- * RUN npm run build
- * EXPOSE 3000
- * CMD [ "npm", "start" ]
-
-Development
------------
-
-Pre-requiste
-............
- * Visual Studio code editor
- * Git bash
- * Node.js & npm
- * loopback 4 cl
-
-Steps
-.....
- To compile CDS code:
-
- 1. Make sure your local Maven settings file ($HOME/.m2/settings.xml)
- contains references to the ONAP repositories and OpenDaylight
- repositories.
- 2. git clone https://(LFID)@gerrit.onap.org/r/a/ccsdk/cds
- 3. cd cds ; mvn clean install ; cd ..
- 4. Open the cds-ui/client code for development
-
-Functional Decomposition
-------------------------
-|image2|
-
-.. |image0| image:: media/image0.jpg
- :width: 7.88889in
- :height: 4.43750in
-
-.. |image2| image:: media/image2.jpg
- :width: 7.88889in
- :height: 4.43750in
-
-.. |image3| image:: media/CDS_architecture.jpg
- :height: 4.43750in
- :width: 7.88889in
diff --git a/docs/CBA/media/CDS_architecture.jpg b/docs/CBA/media/CDS_architecture.jpg
deleted file mode 100644
index 6401e6bbd..000000000
--- a/docs/CBA/media/CDS_architecture.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image0.PNG b/docs/CBA/media/image0.PNG
deleted file mode 100644
index 1c5d8c5ff..000000000
--- a/docs/CBA/media/image0.PNG
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image0.jpg b/docs/CBA/media/image0.jpg
deleted file mode 100644
index 8e53a2d98..000000000
--- a/docs/CBA/media/image0.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image1.PNG b/docs/CBA/media/image1.PNG
deleted file mode 100644
index 7a4b96d5c..000000000
--- a/docs/CBA/media/image1.PNG
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image1.jpg b/docs/CBA/media/image1.jpg
deleted file mode 100644
index 9a5cd63e4..000000000
--- a/docs/CBA/media/image1.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image2.PNG b/docs/CBA/media/image2.PNG
deleted file mode 100644
index e6a0cf8d3..000000000
--- a/docs/CBA/media/image2.PNG
+++ /dev/null
Binary files differ
diff --git a/docs/CBA/media/image2.jpg b/docs/CBA/media/image2.jpg
deleted file mode 100644
index 20fc26250..000000000
--- a/docs/CBA/media/image2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/cba/index.rst b/docs/cba/index.rst
new file mode 100644
index 000000000..70ed2aef8
--- /dev/null
+++ b/docs/cba/index.rst
@@ -0,0 +1,125 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2019 IBM.
+
+.. _cds_cba-doc:
+
+Controller Blueprint Archived Designer Tool (CBA)
+=================================================
+.. toctree::
+ :maxdepth: 1
+
+Introduction
+------------
+The **C**\ ontroller **B**\ lueprint **A**\ rchive is the overall service design, fully model-driven, intent based
+**package** needed for SELF SERVICE provisioning and configuration management automation.
+
+The CBA is **.zip** file, comprised of the following folder structure, the files may vary:
+
+.. code-block language is required for ReadTheDocs to render code-blocks. Python set as default.
+
+.. code-block:: python
+
+ ├── Definitions
+ │ ├── blueprint.json Overall TOSCA service template (workflow + node_template)
+ │ ├── artifact_types.json (generated by enrichment)
+ │ ├── data_types.json (generated by enrichment)
+ │ ├── policy_types.json (generated by enrichment)
+ │ ├── node_types.json (generated by enrichment)
+ │ ├── relationship_types.json (generated by enrichment)
+ │ ├── resources_definition_types.json (generated by enrichment, based on Data Dictionaries)
+ │ └── *-mapping.json One per Template
+ │
+ ├── Environments Contains *.properties files as required by the service
+ │
+ ├── Plans Contains Directed Graph
+ │
+ ├── Tests Contains uat.yaml file for testing cba actions within a cba package
+ │
+ ├── Scripts Contains scripts
+ │ ├── python Python scripts
+ │ └── kotlin Kotlin scripts
+ │
+ ├── TOSCA-Metadata
+ │ └── TOSCA.meta Meta-data of overall package
+ │
+ └── Templates Contains combination of mapping and template
+
+To process a CBA for any service we need to enrich it first. This will gather all the node- type, data-type,
+artifact-type, data-dictionary definitions provided in the blueprint.json.
+
+
+Architecture
+------------
+|image1|
+
+
+Data Flow
+---------
+|image2|
+
+
+Installation
+------------
+
+Building client html and js files
+.................................
+
+ * FROM alpine:3.8 as builder
+ * RUN apk add --no-cache npm
+ * WORKDIR /opt/cds-ui/client/
+ * COPY client/package.json /opt/cds-ui/client/
+ * RUN npm install
+ * COPY client /opt/cds-ui/client/
+ * RUN npm run build
+
+Building and creating server
+............................
+
+ * FROM alpine:3.8
+ * WORKDIR /opt/cds-ui/
+ * RUN apk add --no-cache npm
+ * COPY server/package.json /opt/cds-ui/
+ * RUN npm install
+ * COPY server /opt/cds-ui/
+ * COPY --from=builder /opt/cds-ui/server/public /opt/cds-ui/public
+ * RUN npm run build
+ * EXPOSE 3000
+ * CMD [ "npm", "start" ]
+
+
+Development
+-----------
+
+Pre-requiste
+............
+ * Visual Studio code editor
+ * Git bash
+ * Node.js & npm
+ * loopback 4 cl
+
+Steps
+.....
+ To compile CDS code:
+
+ 1. Make sure your local Maven settings file ($HOME/.m2/settings.xml)
+ contains references to the ONAP repositories and OpenDaylight
+ repositories.
+ 2. git clone https://(LFID)@gerrit.onap.org/r/a/ccsdk/cds
+ 3. cd cds ; mvn clean install ; cd ..
+ 4. Open the cds-ui/client code for development
+
+
+Functional Decomposition
+------------------------
+|image3|
+
+.. |image1| image:: media/CDS_Architecture.jpg
+ :width: 500pt
+
+.. |image2| image:: media/CDS_Data_Flow.jpg
+ :width: 500pt
+
+.. |image3| image:: media/Functional_Decomposition.jpg
+ :width: 500pt
+
diff --git a/docs/cba/media/CDS_Architecture.jpg b/docs/cba/media/CDS_Architecture.jpg
new file mode 100644
index 000000000..720d29aa2
--- /dev/null
+++ b/docs/cba/media/CDS_Architecture.jpg
Binary files differ
diff --git a/docs/cba/media/CDS_Data_Flow.jpg b/docs/cba/media/CDS_Data_Flow.jpg
new file mode 100644
index 000000000..59e144710
--- /dev/null
+++ b/docs/cba/media/CDS_Data_Flow.jpg
Binary files differ
diff --git a/docs/cba/media/Functional_Decomposition.jpg b/docs/cba/media/Functional_Decomposition.jpg
new file mode 100644
index 000000000..2b8257474
--- /dev/null
+++ b/docs/cba/media/Functional_Decomposition.jpg
Binary files differ
diff --git a/docs/datadictionary/complexResponse.rst b/docs/datadictionary/complexResponse.rst
deleted file mode 100644
index 3864c48e2..000000000
--- a/docs/datadictionary/complexResponse.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-complex Response code
-=====================
-
-.. code-block:: json
- :linenos:
-
- {
- "id": 4,
- "address": "192.168.10.2/32",
- "vrf": null,
- "tenant": null,
- "status": 1,
- "role": null,
- "interface": null,
- "description": "",
- "nat_inside": null,
- "created": "2018-08-30",
- "last_updated": "2018-08-30T14:59:05.277820Z"
- }
diff --git a/docs/datadictionary/create_netbox_ip_address.rst b/docs/datadictionary/create_netbox_ip_address.rst
deleted file mode 100644
index 3ba733a18..000000000
--- a/docs/datadictionary/create_netbox_ip_address.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-create_netbox_ip_address code
-=============================
-
-.. code-block:: json
-
- {
- "tags" : "oam-local-ipv4-address",
- "name" : "create_netbox_ip",
- "property" : {
- "description" : "netbox ip",
- "type" : "dt-netbox-ip"
- },
- "updated-by" : "adetalhouet",
- "sources" : {
- "config-data" : {
- "type" : "source-rest",
- "properties" : {
- "type" : "JSON",
- "verb" : "POST",
- "endpoint-selector" : "ipam-1",
- "url-path" : "/api/ipam/prefixes/$prefixId/available-ips/",
- "path" : "",
- "input-key-mapping" : {
- "prefixId" : "prefix-id"
- },
- "output-key-mapping" : {
- "address" : "address",
- "id" : "id"
- },
- "key-dependencies" : [ "prefix-id" ]
- }
- }
- }
- }
diff --git a/docs/datadictionary/dbsystemcode.rst b/docs/datadictionary/dbsystemcode.rst
deleted file mode 100644
index 22bdb9732..000000000
--- a/docs/datadictionary/dbsystemcode.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Dbsystemcode
-============
-.. code-block:: json
- :linenos:
-
- {
- "dsl_definitions": {
- "dynamic-db-source": {
- "type": "maria-db",
- "url": "jdbc:mysql://localhost:3306/sdnctl",
- "username": "<username>",
- "password": "<password>"
- }
- }
- }
diff --git a/docs/datadictionary/dt-netbox-ip.rst b/docs/datadictionary/dt-netbox-ip.rst
deleted file mode 100644
index 6dc3c8464..000000000
--- a/docs/datadictionary/dt-netbox-ip.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-dt-netbox-ip code
-=================
-
-.. code-block:: none
- :linenos:
-
- {
- "version": "1.0.0",
- "description": "This is Netbox IP Data Type",
- "properties": {
- "address": {
- "required": true,
- "type": "string"
- },
- "id": {
- "required": true,
- "type": "integer"
- }
- },
- "derived_from": "tosca.datatypes.Root"
- }
diff --git a/docs/datadictionary/media/resttable.JPG b/docs/datadictionary/media/resttable.JPG
deleted file mode 100644
index 568ad0a9f..000000000
--- a/docs/datadictionary/media/resttable.JPG
+++ /dev/null
Binary files differ
diff --git a/docs/datadictionary/resourcedefinitioncodesnip.rst b/docs/datadictionary/resourcedefinitioncodesnip.rst
deleted file mode 100644
index 785614bc5..000000000
--- a/docs/datadictionary/resourcedefinitioncodesnip.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Source Capability Code
-======================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Component Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "script-type": {
- "required": true,
- "type": "string",
- "default": "kotlin",
- "constraints": [
- {
- "valid_values": [
- "kotlin",
- "jython"
- ]
- }
- ]
- },
- "script-class-reference": {
- "description": "Capability reference name for internal and kotlin, for jython script file path",
- "required": true,
- "type": "string"
- },
- "instance-dependencies": {
- "required": false,
- "description": "Instance dependency Names to Inject to Kotlin / Jython Script.",
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- },
- "key-dependencies": {
- "description": "Resource Resolution dependency dictionary names.",
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
diff --git a/docs/datadictionary/resourcesource.rst b/docs/datadictionary/resourcesource.rst
deleted file mode 100644
index 4d4619a0e..000000000
--- a/docs/datadictionary/resourcesource.rst
+++ /dev/null
@@ -1,155 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Resource Source
----------------
-
-Input:
-======
-Expects the value to be provided as input to the request.
-
-
-.. code-block:: json
- :linenos:
-
- {
- "source-input" :
- {
- "description": "This is Input Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
- }
- }
-
-
-
-Default:
-========
-Expects the value to be defaulted in the model itself.
-
-
-.. code-block:: json
- :linenos:
-
- {
- "source-default" :
- {
- "description": "This is Default Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
- }
- }
-
-
-sql:
-====
-
-Expects the SQL query to be modeled; that SQL query can be parameterized, and the parameters be other resources resolved through other means. If that's the case, this data dictionary definition will have to define key-dependencies along with input-key-mapping.
-
-CDS is currently deployed along the side of SDNC, hence the primary database connection provided by the framework is to SDNC database.
-
-|image0|
-
-.. |image0| image:: media/sqltable.JPG
- :width: 7.88889in
- :height: 4.43750in
-
-.. toctree::
- :maxdepth: 1
-
- sourceprimarydbcode
-
-Connection to a specific database can be expressed through the endpoint-selector property, which refers to a macro defining the information about the database the connect to. Understand TOSCA Macro in the context of CDS.
-
-.. toctree::
- :maxdepth: 1
-
- dbsystemcode
-
-
-REST:
-=====
-
-Expects the URI along with the VERB and the payload, if needed.
-
-CDS is currently deployed along the side of SDNC, hence the default rest connection provided by the framework is to SDNC MDSAL.
-
-|image1|
-
-.. |image1| image:: media/resttable.JPG
- :width: 7.88889in
- :height: 4.43750in
-
-.. toctree::
- :maxdepth: 1
-
- restsourcecode
-
-Connection to a specific REST system can be expressed through the endpoint-selector property, which refers to a macro defining the information about the REST system the connect to. Understand TOSCA Macro in the context of CDS.
-
-Few ways are available to authenticate to the REST system:
-
- * token-auth
- * basic-auth
- * ssl-basic-auth
-
-For source code of Authentication click below link:
-
-.. toctree::
- :maxdepth: 1
-
- restauth
-
-Capability:
-===========
-
-Expects a script to be provided.
-
-|image2|
-
-.. |image2| image:: media/capabilitytable.JPG
- :width: 7.88889in
- :height: 4.43750in
-
-
-.. toctree::
- :maxdepth: 1
-
- sourcecapabilitycode
-
-Complex Type:
-=============
-
-Value will be resolved through REST., and output will be a complex type.
-
-Modeling reference: Modeling Concepts#rest
-
-In this example, we're making a POST request to an IPAM system with no payload.
-
-Some ingredients are required to perform the query, in this case, $prefixId. Hence It is provided as an input-key-mapping and defined as a key-dependencies. Please refer to the modeling guideline for more in depth understanding.
-
-As part of this request, the expected response will be as below.
-
-.. toctree::
- :maxdepth: 1
-
- complexResponse
-
-What is of interest is the address and id fields. For the process to return these two values, we need to create a custom data-type, as bellow
-
-.. toctree::
- :maxdepth: 1
-
- dt-netbox-ip
-
-The type of the data dictionary will be dt-netbox-ip.
-
-To tell the resolution framework what is of interest in the response, the output-key-mapping section is used. The process will map the output-key-mapping to the defined data-type.
-
-.. toctree::
- :maxdepth: 1
-
- create_netbox_ip_address \ No newline at end of file
diff --git a/docs/datadictionary/restauth.rst b/docs/datadictionary/restauth.rst
deleted file mode 100644
index 8051a6ae2..000000000
--- a/docs/datadictionary/restauth.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-
-Resource Rest Authentication
-----------------------------
-
-token-auth:
-~~~~~~~~~~~
-
-.. code-block:: json
- :linenos:
-
- {
- "dsl_definitions": {
- "dynamic-rest-source": {
- "type" : "token-auth",
- "url" : "http://localhost:32778",
- "token" : "<token>"
- }
- }
- }
-
-basic-auth:
-~~~~~~~~~~~
-
-.. code-block:: json
- :linenos:
-
- {
- "dsl_definitions": {
- "dynamic-rest-source": {
- "type" : "basic-auth",
- "url" : "http://localhost:32778",
- "username" : "<username>",
- "password": "<password>"
- }
- }
- }
-
-ssl-basic-auth:
-~~~~~~~~~~~~~~~
-
-.. code-block:: json
- :linenos:
-
- {
- "dsl_definitions": {
- "dynamic-rest-source": {
- "type" : "ssl-basic-auth",
- "url" : "http://localhost:32778",
- "keyStoreInstance": "JKS or PKCS12",
- "sslTrust": "trusture",
- "sslTrustPassword": "<password>",
- "sslKey": "keystore",
- "sslKeyPassword": "<password>"
- }
- }
- }
diff --git a/docs/datadictionary/restsourcecode.rst b/docs/datadictionary/restsourcecode.rst
deleted file mode 100644
index c59bcd23a..000000000
--- a/docs/datadictionary/restsourcecode.rst
+++ /dev/null
@@ -1,92 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Rest Source Code:
-=================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Rest Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "type": {
- "required": false,
- "type": "string",
- "default": "JSON",
- "constraints": [
- {
- "valid_values": [
- "JSON"
- ]
- }
- ]
- },
- "verb": {
- "required": false,
- "type": "string",
- "default": "GET",
- "constraints": [
- {
- "valid_values": [
- "GET", "POST", "DELETE", "PUT"
- ]
- }
- ]
- },
- "payload": {
- "required": false,
- "type": "string",
- "default": ""
- },
- "endpoint-selector": {
- "required": false,
- "type": "string"
- },
- "url-path": {
- "required": true,
- "type": "string"
- },
- "path": {
- "required": true,
- "type": "string"
- },
- "expression-type": {
- "required": false,
- "type": "string",
- "default": "JSON_PATH",
- "constraints": [
- {
- "valid_values": [
- "JSON_PATH",
- "JSON_POINTER"
- ]
- }
- ]
- },
- "input-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
- },
- "output-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
- },
- "key-dependencies": {
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
diff --git a/docs/datadictionary/sourcecapabilitycode.rst b/docs/datadictionary/sourcecapabilitycode.rst
deleted file mode 100644
index d2f66c7e0..000000000
--- a/docs/datadictionary/sourcecapabilitycode.rst
+++ /dev/null
@@ -1,44 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Source Capability Code
-======================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Component Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "script-type": {
- "required": true,
- "type": "string",
- "default": "kotlin",
- "constraints": [
- {
- "valid_values": [
- "kotlin",
- "jython"
- ]
- }
- ]
- },
- "script-class-reference": {
- "description": "Capability reference name for internal and kotlin, for jython script file path",
- "required": true,
- "type": "string"
- },
- "key-dependencies": {
- "description": "Resource Resolution dependency dictionary names.",
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
-
diff --git a/docs/datadictionary/sourcedefaultcode.rst b/docs/datadictionary/sourcedefaultcode.rst
deleted file mode 100644
index 41c19336c..000000000
--- a/docs/datadictionary/sourcedefaultcode.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Source Default code
-===================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Default Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
- }
diff --git a/docs/datadictionary/sourceinputcode.rst b/docs/datadictionary/sourceinputcode.rst
deleted file mode 100644
index a70ff6ab9..000000000
--- a/docs/datadictionary/sourceinputcode.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Source Input code
-=================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Input Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
- }
diff --git a/docs/datadictionary/sourceprimarydbcode.rst b/docs/datadictionary/sourceprimarydbcode.rst
deleted file mode 100644
index 2243e0ce0..000000000
--- a/docs/datadictionary/sourceprimarydbcode.rst
+++ /dev/null
@@ -1,57 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Source Primary DB Code:
-=======================
-
-.. code-block:: json
- :linenos:
-
- {
- "description": "This is Database Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "type": {
- "required": true,
- "type": "string",
- "constraints": [
- {
- "valid_values": [
- "SQL"
- ]
- }
- ]
- },
- "endpoint-selector": {
- "required": false,
- "type": "string"
- },
- "query": {
- "required": true,
- "type": "string"
- },
- "input-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
- },
- "output-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
- },
- "key-dependencies": {
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
diff --git a/docs/index.rst b/docs/index.rst
index 2b4593d64..e551b53e1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -12,12 +12,13 @@ CONTROLLER DESIGN STUDIO (CDS)
Introduction
------------
-The system is designed to be self service, which means that users, not just
+ The system is designed to be self service, which means that users, not just
programmers, can reconfigure the software system as needed to meet customer
requirements. To accomplish this goal, the system is built around models that
provide for real-time changes in how the system operates. Users merely need
to change a model to change how a service operates.
-Self service is a completely new way of delivering services. It removes the
+
+ Self service is a completely new way of delivering services. It removes the
dependence on code releases and the delays they cause and puts the control of
services into the hands of the service providers. They can change a model and
its parameters and create a new service without writing a single line of code.
@@ -30,13 +31,14 @@ The Controller Design Studio is composed of two major components:
* The GUI (or frontend)
* The Run Time (or backend)
-The GUI handles direct user input and allows for displaying both design time
+ The GUI handles direct user input and allows for displaying both design time
and run time activities. For design time, it allows for the creation of
controller blueprint, from selecting the DGs to be included, to incorporating
the artifact templates, to adding necessary components. For run time, it
allows the user to direct the system to resolve the unresolved elements of the
controller blueprint and download the resulting configuration into a VNF.
-At a more basic level, it allows for creation of data dictionaries,
+
+ At a more basic level, it allows for creation of data dictionaries,
capabilities catalogs, and controller blueprint, the basic elements that are
used to generate a configuration. The essential function of the Controller
Design Studio is to create and populate a controller blueprint, create a
@@ -49,11 +51,11 @@ configuration file (configlet) to a VNF/PNF.
Modeling Concept
----------------
-In Dublin release, the CDS community has contributed a framework to automate
+ In Dublin release, the CDS community has contributed a framework to automate
the resolution of resources for instantiation and any config provisioning
operation, such as day0, day1 or day2 configuration.
-The content of the CBA Package is driven from a catalog of reusable data
+ The content of the CBA Package is driven from a catalog of reusable data
dictionary, component and workflow, delivering a reusable and simplified
self service experience.
@@ -66,7 +68,7 @@ https://github.com/onap/ccsdk-cds/tree/master/components/model-catalog/definitio
Tosca Model Reference:
-|image0|
+|toscaModel|
Modeling Concept Links:
~~~~~~~~~~~~~~~~~~~~~~~
@@ -74,22 +76,9 @@ Modeling Concept Links:
.. toctree::
:maxdepth: 1
- modelingconcepts/overview
- microservices/controllerBlueprintStudioProcessorMS
- microservices/bluePrintsProcessorMS
- microservices/expression
- microservices/dynamicapi
- microservices/flexibleplugin
-
-
-Design tools
-------------
-.. toctree::
- :maxdepth: 1
- :glob:
-
- CBA/index
- datadictionary/index
+ modelingconcepts/index
+ microservices/controllerBlueprintMS
+ microservices/blueprintsProcessorMS
Scripts
-------
@@ -99,54 +88,54 @@ Library
* NetconfClient
-In order to facilitate NETCONF interaction within scripts, a python NetconfClient binded to our Kotlin implementation is made available. This NetconfClient can be used when using the component-netconf-executor.
+ In order to facilitate NETCONF interaction within scripts, a python NetconfClient binded to our Kotlin implementation is made available. This NetconfClient can be used when using the component-netconf-executor.
-The client can be find here: https://github.com/onap/ccsdk-cds/blob/master/components/scripts/python/ccsdk_netconf/netconfclient.py
+ The client can be find here: https://github.com/onap/ccsdk-cds/blob/master/components/scripts/python/ccsdk_netconf/netconfclient.py
* ResolutionHelper
-When executing a component executor script, designer might want to perform
-resource resolution along with template meshing directly from the script
-itself.
+ When executing a component executor script, designer might want to perform
+ resource resolution along with template meshing directly from the script
+ itself.
-The helper can be found in below link:
-https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/common.py
+ The helper can be found in below link:
+ https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/common.py
-.. |image0| image:: media/tosca_model.jpg
- :width: 7.88889in
- :height: 4.43750in
+.. |toscaModel| image:: media/tosca_model.jpg
+ :width: 500pt
-.. |cdsArchitectureImage| image:: media/CDS_architecture_latest.png
- :scale: 30 %
+.. |cdsArchitectureImage| image:: media/CDS_architecture.jpg
+ :width: 500pt
-Developer Guide
+User Guide
----------
.. toctree::
- :maxdepth: 1
+ :maxdepth: 3
- developerguide/developer-guide
+ userguide/developer-guide
+ userguide/installation
+ userguide/designtime
-User Guide
-----------
+Use Cases
+---------
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
- installation
- designtime
+ usecases/use-cases
-CDS Desginer UI
+CDS Designer UI
---------------
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
- CDS_Designer_Guide
+ ui/designer
Controller Design Studio Presentation
-------------------------------------
Details about CDS Architecture and Design detail, Please click the link.
-:download:`CDS_Architecture_Design.pptx`
+:download:`CDS_Architecture_Design <media/CDS_Architecture_Design.pptx>`
diff --git a/docs/logging.rst b/docs/logging.rst
deleted file mode 100644
index c6cfad9ef..000000000
--- a/docs/logging.rst
+++ /dev/null
@@ -1,16 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Logging
--------
-.. toctree::
- :maxdepth: 1
-
-CCSDK uses slf4j to log messages to the standard OpenDaylight karaf.log
-log file.
-
-Where to Access Information
----------------------------
-Logs are found within the SDNC docker container, in the directory
-/opt/opendaylight/current/data/logs. \ No newline at end of file
diff --git a/docs/media/CDS.png b/docs/media/CDS.png
deleted file mode 100644
index 65f4115f8..000000000
--- a/docs/media/CDS.png
+++ /dev/null
Binary files differ
diff --git a/docs/CDS_Architecture_Design.pptx b/docs/media/CDS_Architecture_Design.pptx
index a6c158d8d..19022c3c9 100644
--- a/docs/CDS_Architecture_Design.pptx
+++ b/docs/media/CDS_Architecture_Design.pptx
Binary files differ
diff --git a/docs/media/CDS_architecture.jpg b/docs/media/CDS_architecture.jpg
new file mode 100644
index 000000000..163a0b854
--- /dev/null
+++ b/docs/media/CDS_architecture.jpg
Binary files differ
diff --git a/docs/media/CDS_architecture_latest.png b/docs/media/CDS_architecture_latest.png
deleted file mode 100644
index 45ecc0f2e..000000000
--- a/docs/media/CDS_architecture_latest.png
+++ /dev/null
Binary files differ
diff --git a/docs/media/dd_mapping_template_rel.jpg b/docs/media/dd_mapping_template_rel.jpg
new file mode 100644
index 000000000..24be089aa
--- /dev/null
+++ b/docs/media/dd_mapping_template_rel.jpg
Binary files differ
diff --git a/docs/media/dd_mapping_template_rel.png b/docs/media/dd_mapping_template_rel.png
deleted file mode 100644
index cfe98e140..000000000
--- a/docs/media/dd_mapping_template_rel.png
+++ /dev/null
Binary files differ
diff --git a/docs/microservices/bluePrintsProcessorMS.rst b/docs/microservices/blueprintsProcessorMS.rst
index 292f99e51..9f13c0e5d 100644
--- a/docs/microservices/bluePrintsProcessorMS.rst
+++ b/docs/microservices/blueprintsProcessorMS.rst
@@ -8,7 +8,7 @@ Blueprints Processor
.. toctree::
:maxdepth: 1
:titlesonly:
-
+
Micro service to Manage Controller Blueprint Models, such as Resource Dictionary, Service Models, Velocity Templates etc, which will serve service for Controller Design Studio and Controller runtimes.
This microservice is used to deploy Controller Blueprint Archive file in Run time database. This also helps to test the Valid Blueprint.
@@ -18,10 +18,9 @@ Architecture:
|image0|
-.. |image0| image:: images/blueprintprocessor.jpg
- :height: 600px
- :width: 800px
-
+.. |image0| image:: media/blueprintprocessor.jpg
+ :width: 400pt
+
Running Blueprints Processor Microservice Locally:
--------------------------------------------------
@@ -35,9 +34,9 @@ Build CDS locally:
In the checked out directory, type
.. code-block:: none
-
- mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none
-
+
+ mvn clean install -Pq -Dadditionalparam=-Xdoclint:none
+
Create the needed Docker images:
The Blueprints Processor microservice project has a module, called distribution, that provides a docker-compose.yaml file that can be used to spin up Docker containers to run this microservice.
@@ -47,28 +46,29 @@ The first step is to create any custom image needed, by building the distributio
.. code-block:: none
cd ms/blueprintsprocessor/distribution/
-
+
Build it using the Maven profile called Docker:
.. code-block:: none
mvn clean install -Pdocker
-
+
+
Start Docker containers using docker-composer:
----------------------------------------------
Navigate to the docker-compose file in the distribution module:
.. code-block:: none
-
+
cd src/main/dc/
-
+
From there, start the containers:
.. code-block:: none
docker-compose up -d
-
+
This will spin the Docker containers declared inside the docker-compose.yaml file in the background.
@@ -77,8 +77,8 @@ To verify the logs generated by docker-composer, type:
.. code-block:: none
docker-compose logs -f
-
-
+
+
Testing the environment:
------------------------
diff --git a/docs/microservices/controllerBlueprintStudioProcessorMS.rst b/docs/microservices/controllerBlueprintMS.rst
index 9dcd31187..6b9fb49a2 100644
--- a/docs/microservices/controllerBlueprintStudioProcessorMS.rst
+++ b/docs/microservices/controllerBlueprintMS.rst
@@ -5,16 +5,17 @@
Controller Blueprints Studio Processor
======================================
-The Controller Blueprint Archive is the overall service design, fully model-driven, intent based package needed for SELF SERVICE provisioning and configuration management automation.
+The **C**\ ontroller **B**\ lueprint **A**\ rchive is the overall service design, fully model-driven, intent based
+**package** needed for SELF SERVICE provisioning and configuration management automation.
+
+The CBA is .zip file, which is saved in Controller Blueprint Database.
-The CBA is .zip file which is saved in Controller Blueprint Database.
Controller Blueprint Microservices:
-----------------------------------
.. toctree::
:maxdepth: 1
-
+
dynamicapi
enrichment
- \ No newline at end of file
diff --git a/docs/microservices/dynamicapi.rst b/docs/microservices/dynamicapi.rst
index c732bd09d..264dcc570 100644
--- a/docs/microservices/dynamicapi.rst
+++ b/docs/microservices/dynamicapi.rst
@@ -3,7 +3,7 @@
.. Copyright (C) 2019 IBM.
Dynamic API
------------
+===========
The nature of the API request and response is meant to be model driven and dynamic. They both share the same definition.
@@ -20,5 +20,4 @@ Here is how the a generic request and response look like.
|image0|
.. |image0| image:: media/dyanmicapi.jpg
- :height: 4.43750in
- :width: 7.88889in \ No newline at end of file
+ :width: 500pt \ No newline at end of file
diff --git a/docs/microservices/enrichment.rst b/docs/microservices/enrichment.rst
index 306cdbcc5..5ddb23bb4 100644
--- a/docs/microservices/enrichment.rst
+++ b/docs/microservices/enrichment.rst
@@ -14,26 +14,20 @@ The following shows 2 ways to run CBA enrichment
REST API request:
-----------------
-
|image0|
CDS UI:
-------
-
|image1|
-
|image2|
.. |image0| image:: media/Enrichment-REST.png
- :width: 7.88889in
- :height: 4.43750in
-
+ :width: 500pt
+
.. |image1| image:: media/Enrichment-UI1.png
- :width: 7.88889in
- :height: 4.43750in
-
+ :width: 500pt
+
.. |image2| image:: media/Enrichment-UI2.png
- :width: 7.88889in
- :height: 4.43750in \ No newline at end of file
+ :width: 500pt \ No newline at end of file
diff --git a/docs/microservices/expression.rst b/docs/microservices/expression.rst
deleted file mode 100644
index 38a7d624c..000000000
--- a/docs/microservices/expression.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0
-.. International License. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Expression
-==========
-
-TOSCA provides for a set of functions to reference elements within the template or to retrieve runtime values.
-
-Below is a list of supported expressions
-
-get_input
----------
-
-The get_input function is used to retrieve the values of properties declared within the inputs section of a TOSCA Service Template.
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454178
-
-get_property
-------------
-
-The get_property function is used to retrieve property values between modelable entities defined in the same service template.
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454178
-
-get_attribute
--------------
-
-The get_attribute function is used to retrieve the values of named attributes declared by the referenced node or relationship template name.
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454179
-
-get_operation_output
---------------------
-
-The get_operation_output function is used to retrieve the values of variables exposed / exported from an interface operation.
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454180
-
-get_artifact
-------------
-
-The get_artifact function is used to retrieve artifact location between modelable entities defined in the same service template.
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454182
diff --git a/docs/microservices/flexibleplugin.rst b/docs/microservices/flexibleplugin.rst
deleted file mode 100644
index 5c83ac9b7..000000000
--- a/docs/microservices/flexibleplugin.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2019 IBM.
-
-Flexible Plug-in
-----------------
-
-Interaction with external systems is made plug-able, removing development cycle to support new endpoint.
-
-Currently, REST or SQL external systems are supported.
-
-An external system might be used by multiple resources, or by multiple scripts.
-
-In order to share the external system information, TOSCA provides a way to create macros using dsl_definitions:
-
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454160
-http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454173
diff --git a/docs/microservices/images/blueprintprocessor.jpg b/docs/microservices/images/blueprintprocessor.jpg
deleted file mode 100644
index c618e0e32..000000000
--- a/docs/microservices/images/blueprintprocessor.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/microservices/media/Enrichment-UI1.png b/docs/microservices/media/Enrichment-UI1.png
index 62b870cab..082af6128 100644
--- a/docs/microservices/media/Enrichment-UI1.png
+++ b/docs/microservices/media/Enrichment-UI1.png
Binary files differ
diff --git a/docs/microservices/media/Enrichment-UI2.png b/docs/microservices/media/Enrichment-UI2.png
index 44497050a..90be708b5 100644
--- a/docs/microservices/media/Enrichment-UI2.png
+++ b/docs/microservices/media/Enrichment-UI2.png
Binary files differ
diff --git a/docs/microservices/media/blueprintprocessor.jpg b/docs/microservices/media/blueprintprocessor.jpg
new file mode 100644
index 000000000..429876a13
--- /dev/null
+++ b/docs/microservices/media/blueprintprocessor.jpg
Binary files differ
diff --git a/docs/microservices/media/dyanmicapi.jpg b/docs/microservices/media/dyanmicapi.jpg
index 3e00da3e8..5cc1ae176 100644
--- a/docs/microservices/media/dyanmicapi.jpg
+++ b/docs/microservices/media/dyanmicapi.jpg
Binary files differ
diff --git a/docs/microservices/workflow.rst b/docs/microservices/workflow.rst
index b6ea1e6fd..5a564870c 100644
--- a/docs/microservices/workflow.rst
+++ b/docs/microservices/workflow.rst
@@ -4,7 +4,6 @@
Workflow
========
-
A workflow defines an overall action to be taken on the service, hence is an entry-point for the run-time execution of the CBA package.
A workflow also defines inputs and outputs that will defined the payload contract of the request and response (see Dynamic API)
@@ -13,11 +12,12 @@ A workflow can be composed of one or multiple sub-actions to execute.
A CBA package can have as many workflows as needed.
+
Single action
-------------
-
The workflow is directly backed by a node_template of type tosca.nodes.Component
+
Multiple sub-actions
--------------------
The workflow is backed by Directed Graph engine, node_template of type dg-generic, and are imperative workflows.
@@ -27,11 +27,9 @@ A DG used as workflow for CDS is composed of multiple execute nodes; each indivi
Below the properties of a workflow:
-
Workflow Example
----------------
-
-::
+.. code-block:: json
{
"workflow": {
@@ -41,7 +39,7 @@ Workflow Example
"required": true,
"type": "string"
},
- "resource-assignment-properties": { <- dynamic inputs
+ "resource-assignment-properties": { <- dynamic inputs
"required": true,
"type": "dt-resource-assignment-properties"
}
diff --git a/docs/modelingconcepts/artifact-type.rst b/docs/modelingconcepts/artifact-type.rst
index 8da7f59d1..3dda2c4ed 100644
--- a/docs/modelingconcepts/artifact-type.rst
+++ b/docs/modelingconcepts/artifact-type.rst
@@ -6,22 +6,22 @@
.. _artifact_type:
Artifact Type
--------------------------------------
+-------------
-Represents the **type of a artifact**, used to **identify** the
+Represents the **type of a artifact**, used to **identify** the
**implementation** of the functionality supporting this type of artifact.
`TOSCA definition <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454213>`_
This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSCA node for all artifact.
-.. code-block:: JSON
+.. code-block:: json
:caption: **tosca.artifacts.Implementation**
{
- "description": "TOSCA base type for implementation artifacts",
- "version": "1.0.0",
- "derived_from": "tosca.artifacts.Root"
+ "description": "TOSCA base type for implementation artifacts",
+ "version": "1.0.0",
+ "derived_from": "tosca.artifacts.Root"
}
**Bellow is a list of supported artifact types**
@@ -38,24 +38,24 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
File must have **.vtl** extension.
- The **template** can represent anything, such as device config, payload to interact with 3rd party systems,
+ The **template** can represent anything, such as device config, payload to interact with 3rd party systems,
:ref:`resource-accumulator template`, etc...
- Often a template will be **parameterized**, and each **parameter**
+ Often a template will be **parameterized**, and each **parameter**
must be defined within an mapping file (see 'Mapping' in this tab).
`Velocity reference document <http://velocity.apache.org/engine/1.7/user-guide.html>`_
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/artifact_type/artifact-template-velocity.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/artifact_type/artifact-template-velocity.json>`_
is the TOSCA artifact type:
- .. code-block:: JSON
+ .. code-block:: json
:caption: **artifact-template-velocity**
{
- "description": "TOSCA base type for implementation artifacts",
- "version": "1.0.0",
- "derived_from": "tosca.artifacts.Root"
+ "description": "TOSCA base type for implementation artifacts",
+ "version": "1.0.0",
+ "derived_from": "tosca.artifacts.Root"
}
.. tab:: Jinja
@@ -68,7 +68,7 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
File must have **.jinja** extension.
- The **template** can represent **anything**, such as device config,
+ The **template** can represent **anything**, such as device config,
payload to interact with 3rd party systems, :ref:`resource-accumulator template`, etc...
Often a template will be parameterized, and each parameter must be defined within an :ref:`mapping file`.
@@ -78,16 +78,16 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
`Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/artifact_type/artifact-template-jinja.json>`_
is the TOSCA artifact type:
- .. code-block:: JSON
+ .. code-block:: json
:caption: **artifact-template-jinja**
{
- "description": " Jinja Template used for Configuration",
- "version": "1.0.0",
- "file_ext": [
+ "description": " Jinja Template used for Configuration",
+ "version": "1.0.0",
+ "file_ext": [
"jinja"
- ],
- "derived_from": "tosca.artifacts.Implementation"
+ ],
+ "derived_from": "tosca.artifacts.Implementation"
}
.. tab:: Mapping
@@ -96,7 +96,7 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
This type is meant to represent **mapping** files defining the **contract of each resource** to be resolved.
- Each **parameter** in a template **must** have a corresponding mapping definition,
+ Each **parameter** in a template **must** have a corresponding mapping definition,
modeled using datatype-resource-assignment (see :ref:`data_type`-> resources-asignment).
Hence the mapping file is meant to be a list of entries defined using datatype-resource-assignment
@@ -104,25 +104,25 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
File must have **.json** extension.
- The **template** can represent **anything**, such as device config,
+ The **template** can represent **anything**, such as device config,
payload to interact with 3rd party systems, resource-accumulator template, etc...
`Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/artifact_type/artifact-mapping-resource.json>`_
is the TOSCA artifact type:
- .. code-block:: JSON
+ .. code-block:: json
:caption: **artifact-mapping-resource**
{
- "description": "Resource Mapping File used along with Configuration template",
- "version": "1.0.0",
- "file_ext": [
+ "description": "Resource Mapping File used along with Configuration template",
+ "version": "1.0.0",
+ "file_ext": [
"json"
- ],
- "derived_from": "tosca.artifacts.Implementation"
+ ],
+ "derived_from": "tosca.artifacts.Implementation"
}
-
- The mapping file basically contains a reference to the data dictionary to use
+
+ The mapping file basically contains a reference to the data dictionary to use
to resolve a particular resource.
The data dictionary defines the HOW and the mapping defines the WHAT.
@@ -131,23 +131,23 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
Below are two examples using color coding to help understand the relationships.
- In orange is the information regarding the template. As mentioned before,
- template is part of the blueprint itself, and for the blueprint to know what template to use,
+ In orange is the information regarding the template. As mentioned before,
+ template is part of the blueprint itself, and for the blueprint to know what template to use,
the name has to match.
- In green is the relationship between the value resolved within the template,
+ In green is the relationship between the value resolved within the template,
and how it's mapped coming from the blueprint.
In blue is the relationship between a resource mapping to a data dictionary.
In red is the relationship between the resource name to be resolved and the HEAT environment variables.
- The key takeaway here is that whatever the value is for each color, it has to match all across.
- This means both right and left hand side are equivalent; it's all on the designer to express
+ The key takeaway here is that whatever the value is for each color, it has to match all across.
+ This means both right and left hand side are equivalent; it's all on the designer to express
the modeling for the service. That said, best practice is example 1.
- .. image:: ../media/dd_mapping_template_rel.png
- :scale: 100 %
+ .. image:: ../media/dd_mapping_template_rel.jpg
+ :width: 500pt
:align: center
.. tab:: Directed Graph
@@ -160,14 +160,14 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
File must have **.xml** extension.
- Here is the list of executors currently supported (see here for explanation and full potential list:
+ Here is the list of executors currently supported (see here for explanation and full potential list:
`Service Logic Interpreter Nodes <https://wiki.onap.org/display/DW/Service+Logic+Interpreter+Nodes>`_
* execute
* block
* return
* break
- * exit
+ * exit
`Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/artifact_type/artifact-directed-graph.json>`_
is the TOSCA artifact type:
@@ -176,11 +176,11 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC
:caption: **artifact-directed-graph**
{
- "description": "Directed Graph File",
- "version": "1.0.0",
- "file_ext": [
+ "description": "Directed Graph File",
+ "version": "1.0.0",
+ "file_ext": [
"json",
"xml"
- ],
- "derived_from": "tosca.artifacts.Implementation"
+ ],
+ "derived_from": "tosca.artifacts.Implementation"
}
diff --git a/docs/modelingconcepts/cba.rst b/docs/modelingconcepts/cba.rst
index a89190b0d..41baa9924 100644
--- a/docs/modelingconcepts/cba.rst
+++ b/docs/modelingconcepts/cba.rst
@@ -2,14 +2,15 @@
.. This work is licensed under a Creative Commons Attribution 4.0
.. International License. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2020 Deutsche Telekom AG.
+.. Copyright (C) 2020 AT&T.
.. _cba:
Controller Blueprint Archive (.cba)
--------------------------------------
+-----------------------------------
The **C**\ ontroller **B**\ lueprint **A**\ rchive is the overall service design, fully model-driven, intent based
-**package** needed for provisioning and configuration management automation.
+**package** needed for SELF SERVICE provisioning and configuration management automation.
The CBA is **.zip** file, comprised of the following folder structure, the files may vary:
@@ -17,22 +18,30 @@ The CBA is **.zip** file, comprised of the following folder structure, the files
.. code-block:: python
- ├── Definitions
- │ ├── blueprint.json Overall TOSCA service template (worfklow + node_template)
- │ ├── artifact_types.json (generated by enrichment)
- │ ├── data_types.json (generated by enrichment)
- │ ├── node_types.json (generated by enrichment)
- │ ├── relationship_types.json (generated by enrichment)
- │ └── resources_definition_types.json (generated by enrichment)
- ├── Environments Contains *.properties files as required by the service
- ├── Plans Contains Directed Graph
- ├── Tests Contains uat.yaml file for testing the cba actions within a cba **package
- ├── Scripts Contains scripts
- │ ├── python Python scripts
- │ └── kotlin Kotlin scripts
- ├── TOSCA-Metadata
- │ └── TOSCA.meta Meta-data of overall package
- └── Templates Contains combination of mapping and template
-
-To process a CBA for any service we need to enrich it first. This will gather all the node- type, data-type,
+ ├── Definitions
+ │ ├── blueprint.json Overall TOSCA service template (workflow + node_template)
+ │ ├── artifact_types.json (generated by enrichment)
+ │ ├── data_types.json (generated by enrichment)
+ │ ├── policy_types.json (generated by enrichment)
+ │ ├── node_types.json (generated by enrichment)
+ │ ├── relationship_types.json (generated by enrichment)
+ │ ├── resources_definition_types.json (generated by enrichment, based on Data Dictionaries)
+ │ └── *-mapping.json One per Template
+ │
+ ├── Environments Contains *.properties files as required by the service
+ │
+ ├── Plans Contains Directed Graph
+ │
+ ├── Tests Contains uat.yaml file for testing cba actions within a cba package
+ │
+ ├── Scripts Contains scripts
+ │ ├── python Python scripts
+ │ └── kotlin Kotlin scripts
+ │
+ ├── TOSCA-Metadata
+ │ └── TOSCA.meta Meta-data of overall package
+ │
+ └── Templates Contains combination of mapping and template
+
+To process a CBA for any service we need to enrich it first. This will gather all the node- type, data-type,
artifact-type, data-dictionary definitions provided in the blueprint.json. \ No newline at end of file
diff --git a/docs/modelingconcepts/data-dictionary.rst b/docs/modelingconcepts/data-dictionary.rst
index af0f89797..bfc86d0c9 100644
--- a/docs/modelingconcepts/data-dictionary.rst
+++ b/docs/modelingconcepts/data-dictionary.rst
@@ -6,7 +6,7 @@
.. _data_dictionary:
Data Dictionary
------------------
+---------------
A data dictionary **models the how** a specific **resource** can be **resolved**.
@@ -32,7 +32,7 @@ As part of modelling a data dictionary entry, the following generic information
- The creator
- Mandatory
* - tags
- - Information related
+ - Information related
- Mandatory
* - sources
- List of resource source instance (see :ref:`resource source`)
@@ -42,11 +42,11 @@ As part of modelling a data dictionary entry, the following generic information
- Mandatory
* - name
- Data dictionary name
- - Mandatory
-
+ - Mandatory
+
**Bellow are properties that all the resource source can have**
-The modeling does allow for **data translation** between external capability
+The modeling does allow for **data translation** between external capability
and CDS for both input and output key mapping.
.. list-table::
@@ -57,22 +57,22 @@ and CDS for both input and output key mapping.
- Description
- Scope
* - input-key-mapping
- - map of resources required to perform the request/query. The left hand-side is what is used within
+ - map of resources required to perform the request/query. The left hand-side is what is used within
the query/request, the right hand side refer to a data dictionary instance.
- Optional
* - output-key-mapping
- - name of the resource to be resolved mapped to the value resolved by the request/query.
+ - name of the resource to be resolved mapped to the value resolved by the request/query.
- Optional
* - key-dependencies
- | list of data dictionary instances to be resolved prior the resolution of this specific resource.
- | during run time execution the key dependencies are recursively sorted and resolved
- in batch processing using the `acyclic graph algorithm
+ | during run time execution the key dependencies are recursively sorted and resolved
+ in batch processing using the `acyclic graph algorithm
<https://en.wikipedia.org/wiki/Directed_acyclic_graph>`_
- Optional
-
+
**Example:**
-``vf-module-model-customization-uuid`` and ``vf-module-label`` are two data dictionaries.
+``vf-module-model-customization-uuid`` and ``vf-module-label`` are two data dictionaries.
A SQL table, VF_MODULE_MODEL, exist to correlate them.
Here is how input-key-mapping, output-key-mapping and key-dependencies can be used:
@@ -82,32 +82,30 @@ Here is how input-key-mapping, output-key-mapping and key-dependencies can be us
:header-rows: 1
* - vf-module-label data dictionary
- * - .. code-block:: JSON
+ * - .. code-block:: json
-
- {
+ {
"name" : "vf-module-label",
"tags" : "vf-module-label",
"updated-by" : "adetalhouet",
"property" : {
- "description" : "vf-module-label",
- "type" : "string"
+ "description" : "vf-module-label",
+ "type" : "string"
},
"sources" : {
- "primary-db" : {
- "type" : "source-primary-db",
- "properties" : {
+ "primary-db" : {
+ "type" : "source-primary-db",
+ "properties" : {
"type" : "SQL",
- "query" : "select sdnctl.VF_MODULE_MODEL.vf_module_label as vf_module_label
- from sdnctl.VF_MODULE_MODEL where sdnctl.VF_MODULE_MODEL.customization_uuid=:customizationid",
+ "query" : "select sdnctl.VF_MODULE_MODEL.vf_module_label as vf_module_label from sdnctl.VF_MODULE_MODEL where sdnctl.VF_MODULE_MODEL.customization_uuid=:customizationid",
"input-key-mapping" : {
- "customizationid" : "vf-module-model-customization-uuid"
+ "customizationid" : "vf-module-model-customization-uuid"
},
"output-key-mapping" : {
- "vf-module-label" : "vf_module_label"
+ "vf-module-label" : "vf_module_label"
},
"key-dependencies" : [ "vf-module-model-customization-uuid" ]
- }
- }
+ }
+ }
}
- } \ No newline at end of file
+ } \ No newline at end of file
diff --git a/docs/modelingconcepts/data-type.rst b/docs/modelingconcepts/data-type.rst
index 72eb12591..29143de80 100644
--- a/docs/modelingconcepts/data-type.rst
+++ b/docs/modelingconcepts/data-type.rst
@@ -6,7 +6,7 @@
.. _data_type:
Data type
--------------------------------------
+---------
Represents the **schema** of a specific type of **data**.
@@ -28,6 +28,7 @@ Supports both **primitive** and **complex** data types:
- * json
* list
* array
+
For complex data type, an **entry schema** is required, defining the
type of value contained within the complex type, if list or array.
@@ -37,61 +38,47 @@ Users can **create** as many **data type** as needed.
**Creating Custom Data Types:**
- To create a custom data-type you can use a POST call to CDS endpoint:
+ To create a custom data-type you can use a POST call to CDS endpoint:
"<cds-ip>:<cds-port>/api/v1/model-type"
.. code-block:: python
:caption: **Payload:**
{
-
- "model-name": "<model-name>",
- "derivedFrom": "tosca.datatypes.Root",
-
- "definitionType": "data_type",
-
- "definition": {
-
+ "model-name": "<model-name>",
+ "derivedFrom": "tosca.datatypes.Root",
+ "definitionType": "data_type",
+ "definition": {
"description": "<description>",
-
"version": "<version-number: eg 1.0.0>",
-
"properties": {<add properties of your custom data type in JSON format>},
-
"derived_from": "tosca.datatypes.Root"
-
- },
-
- "description": "<description",
-
- "version": "<version>",
-
- "tags": "<model-name>,datatypes.Root.data_type",
-
- "creationDate": "<creation timestamp>",
-
- "updatedBy": "<name>"
-
+ },
+ "description": "<description",
+ "version": "<version>",
+ "tags": "<model-name>,datatypes.Root.data_type",
+ "creationDate": "<creation timestamp>",
+ "updatedBy": "<name>"
}
-Data type are useful to manipulate data during resource resolution.
+Data type are useful to manipulate data during resource resolution.
They can be used to format the JSON output as needed.
-List of existing data type:
+List of existing data type:
`<https://github.com/onap/ccsdk-cds/tree/master/components/model-catalog/definition-type/starter-type/data_type>`_
-`TOSCA specification
+`TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454187>`_
**Below is a list of existing data types**
.. tabs::
-
+
.. tab:: resource-assignment
**datatype-resource-assignment**
- Used to define entries within artifact-mapping-resource
+ Used to define entries within artifact-mapping-resource
(see tab Artifact Type -> artifact-mapping-resource)
That datatype represent a **resource** to be resolved. We also refer
@@ -121,47 +108,47 @@ List of existing data type:
`<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/data_type/datatype-resource-assignment.json>`_
- .. code-block:: JSON
+ .. code-block:: json
:caption: **datatype-resource-assignment**
- {
+ {
"version": "1.0.0",
"description": "This is Resource Assignment Data Type",
"properties": {
- "property": {
- "required": true,
- "type": "datatype-property"
- },
- "input-param": {
- "required": true,
- "type": "boolean"
- },
- "dictionary-name": {
- "required": false,
- "type": "string"
- },
- "dictionary-source": {
- "required": false,
- "type": "string"
- },
- "dependencies": {
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- },
- "updated-date": {
- "required": false,
- "type": "string"
- },
- "updated-by": {
- "required": false,
- "type": "string"
- }
+ "property": {
+ "required": true,
+ "type": "datatype-property"
+ },
+ "input-param": {
+ "required": true,
+ "type": "boolean"
+ },
+ "dictionary-name": {
+ "required": false,
+ "type": "string"
+ },
+ "dictionary-source": {
+ "required": false,
+ "type": "string"
+ },
+ "dependencies": {
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "updated-date": {
+ "required": false,
+ "type": "string"
+ },
+ "updated-by": {
+ "required": false,
+ "type": "string"
+ }
},
"derived_from": "tosca.datatypes.Root"
- }
+ }
.. tab:: property
@@ -188,44 +175,44 @@ List of existing data type:
`<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/data_type/datatype-property.json>`_
- .. code-block:: JSON
+ .. code-block:: json
:caption: **datatype-property**
{
- "version": "1.0.0",
- "description": "This is Resource Assignment Data Type",
- "properties": {
+ "version": "1.0.0",
+ "description": "This is Resource Assignment Data Type",
+ "properties": {
"property": {
- "required": true,
- "type": "datatype-property"
+ "required": true,
+ "type": "datatype-property"
},
"input-param": {
- "required": true,
- "type": "boolean"
+ "required": true,
+ "type": "boolean"
},
"dictionary-name": {
- "required": false,
- "type": "string"
+ "required": false,
+ "type": "string"
},
"dictionary-source": {
- "required": false,
- "type": "string"
+ "required": false,
+ "type": "string"
},
"dependencies": {
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
},
"updated-date": {
- "required": false,
- "type": "string"
+ "required": false,
+ "type": "string"
},
"updated-by": {
- "required": false,
- "type": "string"
+ "required": false,
+ "type": "string"
}
- },
- "derived_from": "tosca.datatypes.Root"
+ },
+ "derived_from": "tosca.datatypes.Root"
} \ No newline at end of file
diff --git a/docs/modelingconcepts/dynamic-payload.rst b/docs/modelingconcepts/dynamic-payload.rst
index a2a4cb72b..8f378c069 100644
--- a/docs/modelingconcepts/dynamic-payload.rst
+++ b/docs/modelingconcepts/dynamic-payload.rst
@@ -4,7 +4,7 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Dynamic Payload
--------------------------------------
+---------------
One of the most important API provided by the run time is to execute a CBA Package.
@@ -21,45 +21,45 @@ Here is how the a **generic request** and **response** look like.
- response
* - .. code-block:: json
- {
- "commonHeader": {
- "originatorId": "",
- "requestId": "",
- "subRequestId": ""
- },
- "actionIdentifiers": {
- "blueprintName": "",
- "blueprintVersion": "",
- "actionName": "",
- "mode": ""
- },
- "payload": {
- "$actionName-request": {
- "$actionName-properties": {
- }
+ {
+ "commonHeader": {
+ "originatorId": "",
+ "requestId": "",
+ "subRequestId": ""
+ },
+ "actionIdentifiers": {
+ "blueprintName": "",
+ "blueprintVersion": "",
+ "actionName": "",
+ "mode": ""
+ },
+ "payload": {
+ "$actionName-request": {
+ "$actionName-properties": {
}
- }
+ }
}
+ }
- .. code-block:: json
-
- {
- "commonHeader": {
- "originatorId": "",
- "requestId": "",
- "subRequestId": ""
- },
- "actionIdentifiers": {
- "blueprintName": "",
- "blueprintVersion": "",
- "actionName": "",
- "mode": ""
- },
- "payload": {
- "$actionName-response": {
- }
- }
+
+ {
+ "commonHeader": {
+ "originatorId": "",
+ "requestId": "",
+ "subRequestId": ""
+ },
+ "actionIdentifiers": {
+ "blueprintName": "",
+ "blueprintVersion": "",
+ "actionName": "",
+ "mode": ""
+ },
+ "payload": {
+ "$actionName-response": {
+ }
}
+ }
The ``actionName``, under the ``actionIdentifiers`` refers to the name of a
Workflow (see :ref:`workflow`)
@@ -74,5 +74,5 @@ Then the **content within this element** is fully based on the
During the :ref:`enrichment` CDS will aggregate all the resources
defined to be resolved as input (see :ref:`node_type` -> Source -> Input), within mapping definition files
-(see :ref:`artifact_type` -> Mapping), as data-type, that will then be use as type
+(see :ref:`artifact_type` -> Mapping), as data-type, that will then be use as type
of an input called ``$actionName-properties``. \ No newline at end of file
diff --git a/docs/modelingconcepts/enrichment.rst b/docs/modelingconcepts/enrichment.rst
index 1533debe9..b88493448 100644
--- a/docs/modelingconcepts/enrichment.rst
+++ b/docs/modelingconcepts/enrichment.rst
@@ -6,7 +6,7 @@
.. _enrichment:
Enrichment
------------
+----------
The idea is that the CBA is a self-sufficient package, hence requires
all the various types definition its using.
@@ -22,22 +22,22 @@ definition of types used:
* gather all the node-type used and put them into a :file:`node_types.json` file
* gather all the data-type used and put them into a :file:`data_types.json` file
* gather all the artifact-type used and put them into a :file:`artifact_types.json` file
-* gather all the data dictionary definitions used from within the mapping files and put them
+* gather all the data dictionary definitions used from within the mapping files and put them
into a :file:`resources_definition_types.json` file
.. warning::
- Before uploading a CBA, it must be enriched. If your package is already enrich,
+ Before uploading a CBA, it must be enriched. If your package is already enrich,
you do not need to perform enrichment again.
-The enrichment can be run using REST API, and required the **.zip** file as input.
+The enrichment can be run using REST API, and required the **.zip** file as input.
It will return an :file:`enriched-cba.zip` file.
.. code-block:: bash
curl -X POST \
- 'http://{{ip}}:{{cds-designtime}}/api/v1/blueprint-model/enrich' \
- -H 'content-type: multipart/form-data' \
- -F file=@cba.zip
+ 'http://{{ip}}:{{cds-designtime}}/api/v1/blueprint-model/enrich' \
+ -H 'content-type: multipart/form-data' \
+ -F file=@cba.zip
The enrichment process will also, for all resources to be resolved as input and default:
@@ -46,7 +46,7 @@ The enrichment process will also, for all resources to be resolved as input and
Example for workflow named *resource-assignment*:
-.. code-block:: JSON
+.. code-block:: json
:caption: **dynamic input**
{
diff --git a/docs/modelingconcepts/expression.rst b/docs/modelingconcepts/expression.rst
index 27d9de5d4..059cf7cd1 100644
--- a/docs/modelingconcepts/expression.rst
+++ b/docs/modelingconcepts/expression.rst
@@ -7,7 +7,7 @@
.. _expression:
Expression
--------------------------------------
+----------
TOSCA provides for a set of functions to reference elements within the template or to retrieve runtime values.
@@ -19,54 +19,56 @@ TOSCA provides for a set of functions to reference elements within the template
**get_input**
- The **get_input** function is used to retrieve the values of properties declared
+ The **get_input** function is used to retrieve the values of properties declared
within the inputs section of a TOSCA Service Template.
Within CDS, this is mainly Workflow inputs.
- `TOSCA specification
+ `TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454178>`_
**Example:**
`<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/golden/Definitions/golden-blueprint.json#L210>`_
- .. code-block:: JSON
-
+ .. code-block:: json
+
"resolution-key": {
- "get_input": "resolution-key"
+ "get_input": "resolution-key"
}
-
+
.. tab:: get_property
**get_property**
- The **get_property** function is used to retrieve property values between modelable
+ The **get_property** function is used to retrieve property values between modelable
entities defined in the same service template.
- `TOSCA specification
+ `TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454178>`_
**Example:**
- TBD
+ .. code-block:: json
+
+ "get_property": ["SELF", "property-name"]
.. tab:: get_attribute
**get_attribute**
- The **get_attribute** function is used to retrieve the values of named attributes declared
+ The **get_attribute** function is used to retrieve the values of named attributes declared
by the referenced node or relationship template name.
- `TOSCA specification
+ `TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454178>`_
**Example:**
`<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/golden/Definitions/golden-blueprint.json#L64-L67>`_
- .. code-block:: JSON
-
+ .. code-block:: json
+
"get_attribute": [
"resource-assignment",
"assignment-params"
@@ -76,26 +78,30 @@ TOSCA provides for a set of functions to reference elements within the template
**get_operation_output**
- The **get_operation_output** function is used to retrieve property values between modelable
- entities defined in the same service template.
+ The **get_operation_output** function is used to retrieve the values of variables
+ exposed / exported from an interface operation.
- `TOSCA specification
+ `TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454180>`_
**Example:**
- TBD
+ .. code-block:: json
+
+ "get_operation_output": ["SELF", "interface-name", "operation-name", "output-property-name"]
.. tab:: get_artifact
**get_artifact**
- The **get_artifact** function is used to retrieve property values between modelable
+ The **get_artifact** function is used to retrieve artifact location between modelable
entities defined in the same service template.
- `TOSCA specification
+ `TOSCA specification
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454182>`_
**Example:**
- TBD \ No newline at end of file
+ .. code-block:: json
+
+ "get_artifact" : ["SELF", "artifact-template", "location", true] \ No newline at end of file
diff --git a/docs/modelingconcepts/external-system.rst b/docs/modelingconcepts/external-system.rst
new file mode 100644
index 000000000..806600f4d
--- /dev/null
+++ b/docs/modelingconcepts/external-system.rst
@@ -0,0 +1,120 @@
+.. This work is a derivative of https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts-2026349199
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2020 Deutsche Telekom AG.
+
+External Systems support
+------------------------
+
+Interaction with **external systems** is made **dynamic** and **plug-able**
+removing development cycle to support new endpoint.
+In order to share the external system information, TOSCA provides a way to create macros using **dsl_definitions**:
+Link to TOSCA spec:
+`info 1 <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454160>`_,
+`info 2 <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454173>`_.
+
+Use cases:
+* Resource resolution using **REST** (see tab Node Type) or **SQL** (see tab Node Type) external systems
+* **gRPC** is supported for remote execution
+* Any REST endpoint can be dynamically injected as part of the scripting framework.
+
+Here are some examples on how to populate the system information within the package:
+
+.. list-table::
+ :widths: 100
+ :header-rows: 1
+
+ * - token-auth
+ * - .. code-block:: json
+
+ {
+ . . .
+ "dsl_definitions": {
+ "ipam-1": {
+ "type": "token-auth",
+ "url": "http://netbox-nginx.netprog:8080",
+ "token": "Token 0123456789abcdef0123456789abcdef01234567"
+ }
+ }
+
+.. list-table::
+ :widths: 100
+ :header-rows: 1
+
+ * - basic-auth
+ * - .. code-block:: json
+
+ {
+ . . .
+ "dsl_definitions": {
+ "ipam-1": {
+ "type": "basic-auth",
+ "url": "http://localhost:8080",
+ "username": "bob",
+ "password": "marley"
+ }
+ }
+ . . .
+ }
+
+.. list-table::
+ :widths: 100
+ :header-rows: 1
+
+ * - ssl-basic-auth
+ * - .. code-block:: json
+
+ {
+ . . .
+ "dsl_definitions": {
+ "ipam-1": {
+ "type" : "ssl-basic-auth",
+ "url" : "http://localhost:32778",
+ "keyStoreInstance": "JKS or PKCS12",
+ "sslTrust": "trusture",
+ "sslTrustPassword": "trustore password",
+ "sslKey": "keystore",
+ "sslKeyPassword: "keystore password"
+ }
+ }
+ . . .
+ }
+
+.. list-table::
+ :widths: 100
+ :header-rows: 1
+
+ * - grpc-executor
+ * - .. code-block:: json
+
+ {
+ . . .
+ "dsl_definitions": {
+ "remote-executor": {
+ "type": "token-auth",
+ "host": "cds-command-executor.netprog",
+ "port": "50051",
+ "token": "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw=="
+ }
+ }
+ . . .
+ }
+
+.. list-table::
+ :header-rows: 1
+
+ * - maria-db
+ * - .. code-block:: json
+
+ {
+ . . .
+ "dsl_definitions": {
+ "netprog-db": {
+ "type": "maria-db",
+ "url": "jdbc:mysql://10.195.196.123:32050/netprog",
+ "username": "netprog",
+ "password": "netprog"
+ }
+ }
+ . . .
+ }
diff --git a/docs/modelingconcepts/flexible-plug-in.rst b/docs/modelingconcepts/flexible-plug-in.rst
deleted file mode 100644
index 62749dcec..000000000
--- a/docs/modelingconcepts/flexible-plug-in.rst
+++ /dev/null
@@ -1,122 +0,0 @@
-.. This work is a derivative of https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts-2026349199
-.. This work is licensed under a Creative Commons Attribution 4.0
-.. International License. http://creativecommons.org/licenses/by/4.0
-.. Copyright (C) 2020 Deutsche Telekom AG.
-
-External Systems support
--------------------------------------
-
-Interaction with **external systems** is made **dynamic**, removing
-development cycle to support new endpoint.
-
-In order to define the external system information, TOSCA provides
-**dsl_definitions**. Link to TOSCA spec `info 1
-<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454160>`_,
-`info 2 <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454173>`_.
-
-Use cases:
-
-* Resource resolution using **REST** (see tab Node Type) or **SQL** (see tab Node Type) external systems
-* **gRPC** is supported for remote execution
-* Any REST endpoint can be dynamically injected as part of the scripting framework.
-
-Here are some examples on how to populate the system information within the package:
-
-.. list-table::
- :widths: 100
- :header-rows: 1
-
- * - token-auth
- * - .. code-block:: JSON
-
- {
- . . .
- "dsl_definitions": {
- "ipam-1": {
- "type": "token-auth",
- "url": "http://netbox-nginx.netprog:8080",
- "token": "Token 0123456789abcdef0123456789abcdef01234567"
- }
- }
-
-.. list-table::
- :widths: 100
- :header-rows: 1
-
- * - basic-auth
- * - .. code-block:: JSON
-
- {
- . . .
- "dsl_definitions": {
- "ipam-1": {
- "type": "basic-auth",
- "url": "http://localhost:8080",
- "username": "bob",
- "password": "marley"
- }
- }
- . . .
- }
-
-.. list-table::
- :widths: 100
- :header-rows: 1
-
- * - ssl-basic-auth
- * - .. code-block:: JSON
-
- {
- . . .
- "dsl_definitions": {
- "ipam-1": {
- "type" : "ssl-basic-auth",
- "url" : "http://localhost:32778",
- "keyStoreInstance": "JKS or PKCS12",
- "sslTrust": "trusture",
- "sslTrustPassword": "trustore password",
- "sslKey": "keystore",
- "sslKeyPassword: "keystore password"
- }
- }
- . . .
- }
-
-.. list-table::
- :widths: 100
- :header-rows: 1
-
- * - grpc-executor
- * - .. code-block:: JSON
-
- {
- . . .
- "dsl_definitions": {
- "remote-executor": {
- "type": "token-auth",
- "host": "cds-command-executor.netprog",
- "port": "50051",
- "token": "Basic Y2NzZGthcHBzOmNjc2RrYXBwcw=="
- },
- }
- . . .
- }
-
-.. list-table::
- :header-rows: 1
-
- * - maria-db
- * - .. code-block:: JSON
-
- {
- . . .
- "dsl_definitions": {
- "netprog-db": {
- "type": "maria-db",
- "url": "jdbc:mysql://10.195.196.123:32050/netprog",
- "username": "netprog",
- "password": "netprog"
- }
- }
- . . .
- } \ No newline at end of file
diff --git a/docs/modelingconcepts/overview.rst b/docs/modelingconcepts/index.rst
index 2ca70c719..1b9d93c98 100644
--- a/docs/modelingconcepts/overview.rst
+++ b/docs/modelingconcepts/index.rst
@@ -4,7 +4,7 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Modeling Concepts
-==================
+=================
CDS is a framework to automate the **resolution of resources** for
**instantiation** and any **config** provisioning operation, such as
@@ -29,11 +29,11 @@ can be found
:caption: Table of Contents
:maxdepth: 1
- CBA <cba>
+ cba
Tosca.Meta <tosca-meta>
dynamic-payload
enrichment
- Flexible Plug-in <flexible-plug-in>
+ external-system
expression
data-dictionary
data-type
diff --git a/docs/modelingconcepts/node-type.rst b/docs/modelingconcepts/node-type.rst
index 4c2e7f7fc..070f6f65c 100644
--- a/docs/modelingconcepts/node-type.rst
+++ b/docs/modelingconcepts/node-type.rst
@@ -6,12 +6,12 @@
.. _node_type:
Node type
------------
+---------
-`TOSCA definition
+`TOSCA definition
<http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454215>`_
-In CDS, we have mainly two distinct types: components and source. We have some other type as well,
+In CDS, we have mainly two distinct types: components and source. We have some other type as well,
listed in the other section.
.. tabs::
@@ -22,41 +22,41 @@ listed in the other section.
Used to represent a **functionality** along with its **contract**, such as **inputs**, **ouputs**, and **attributes**
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/tosca.nodes.Component.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/tosca.nodes.Component.json>`_
is the root component TOSCA node type from which other node type will derive:
-
+
.. code-block:: json
:caption: **tosca.nodes.Component**
{
- "description": "This is default Component Node",
- "version": "1.0.0",
- "derived_from": "tosca.nodes.Root"
+ "description": "This is default Component Node",
+ "version": "1.0.0",
+ "derived_from": "tosca.nodes.Root"
}
**Bellow is a list of supported components**
.. tabs::
-
+
.. tab:: resource-resolution
**component-resource-resolution:**
Used to perform resolution of **resources**.
- Requires as many as artifact-mapping-resource (see :ref:`artifact_type` -> Mapping) AND
+ Requires as many as artifact-mapping-resource (see :ref:`artifact_type` -> Mapping) AND
artifact-template-velocity (see :ref:`artifact_type` -> Jinja) as needed.
**Output result:**
Will put the resolution result as an **attribute** in the workflow context called **assignment-params**.
- Using the :ref:`undefined <get_attribute expression>`, this attribute can be retrieve to be
+ Using the :ref:`undefined <get_attribute expression>`, this attribute can be retrieve to be
provided as workflow output (see :ref:`workflow`).
**Specify which template to resolve:**
- Currently, resolution is bounded to a template. To specify which template to use, you
+ Currently, resolution is bounded to a template. To specify which template to use, you
need to fill in the `artifact-prefix-names` field.
See :ref:`template` to understand what the artifact prefix name is.
@@ -67,36 +67,36 @@ listed in the other section.
Also, when storing the data, it must be in the context of either a `resource-id` and `resource-type`, or based on a given `resolution-key`
-
- The concept of resource-id / resource-type, or resolution-key, is to uniquely identify a specific resolution that
+
+ The concept of resource-id / resource-type, or resolution-key, is to uniquely identify a specific resolution that
has been performed for a given action. Hence the resolution-key has to be unique for a given blueprint name, blueprint version, action name.
Through the combination of the fields mentioned previously, one could retrieved what has been resolved. This is useful to manage the life-cycle of the resolved resource, the life-cycle of the template, along with sharing with external systems the outcome of a given resolution.
The resource-id / resource-type combo is more geared to uniquely identify a resource in AAI, or external system. For example, for a given AAI resource, say a PNF, you can trigger a given CDS action, and then you will be able to manage all the resolved resources bound to this PNF. Even we could have a history of what has been assigned, unassigned for this given AAI resource.
- .. warning:: Important not to confuse and AAI resource (e.g. a topology element,
- or service related element) with the resources resolved by CDS, which can be seen
+ .. warning:: Important not to confuse and AAI resource (e.g. a topology element,
+ or service related element) with the resources resolved by CDS, which can be seen
as parameters required to derived a network configuration.
**Run the resolution multiple time:**
- If you need to run the same resolution component multiple times, use the field `occurence`.
- This will add the notion of occurrence to the resolution, and if storing the results, resources
+ If you need to run the same resolution component multiple times, use the field `occurence`.
+ This will add the notion of occurrence to the resolution, and if storing the results, resources
and templates, they will be accessible for each occurrence.
- Occurrence is a number between 1 and N; when retrieving information
+ Occurrence is a number between 1 and N; when retrieving information
for a given occurrence, the first iteration starts at 1.
This feature is useful when you need to apply the same configuration accross network elements.
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/component-resource-resolution.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/component-resource-resolution.json>`_
is the definition:
.. code-block:: json
- :caption: **component-resource-resolution**
+ :caption: **component-resource-resolution**
- {
+ {
"description": "This is Resource Assignment Component API",
"version": "1.0.0",
"attributes": {
@@ -180,20 +180,20 @@ listed in the other section.
}
},
"derived_from": "tosca.nodes.Component"
- }
+ }
.. tab:: script-executor
**component-script-executor:**
- Used to **execute** a script to perform **NETCONF, RESTCONF, SSH commands**
+ Used to **execute** a script to perform **NETCONF, RESTCONF, SSH commands**
from within the runtime container of CDS.
Two type of scripts are supported:
- * Kotlin: offer a way more integrated scripting framework, along
+ * Kotlin: offer a way more integrated scripting framework, along
with a way faster processing capability. See more about Kotlin script: https://github.com/Kotlin/KEEP/blob/master/proposals/scripting-support.md
- * Python: uses Jython which is bound to Python 2.7, end of life Januray 2020.
+ * Python: uses Jython which is bound to Python 2.7, end of life Januray 2020.
See more about Jython: https://www.jython.org/
The `script-class-reference` field need to reference
@@ -207,60 +207,60 @@ listed in the other section.
.. _test_test_test:
.. code-block:: json
- :caption: **component-script-executor**
+ :caption: **component-script-executor**
- {
- "description": "This is Netconf Transaction Configuration Component API",
- "version": "1.0.0",
- "interfaces": {
- "ComponentScriptExecutor": {
+ {
+ "description": "This is Netconf Transaction Configuration Component API",
+ "version": "1.0.0",
+ "interfaces": {
+ "ComponentScriptExecutor": {
"operations": {
- "process": {
- "inputs": {
+ "process": {
+ "inputs": {
"script-type": {
- "description": "Script type, kotlin type is supported",
- "required": true,
- "type": "string",
- "default": "internal",
- "constraints": [
- {
+ "description": "Script type, kotlin type is supported",
+ "required": true,
+ "type": "string",
+ "default": "internal",
+ "constraints": [
+ {
"valid_values": [
- "kotlin",
- "jython",
- "internal"
+ "kotlin",
+ "jython",
+ "internal"
]
- }
- ]
+ }
+ ]
},
"script-class-reference": {
- "description": "Kotlin Script class name with full package or jython script name.",
- "required": true,
- "type": "string"
- },
+ "description": "Kotlin Script class name with full package or jython script name.",
+ "required": true,
+ "type": "string"
+ },
"dynamic-properties": {
- "description": "Dynamic Json Content or DSL Json reference.",
- "required": false,
- "type": "json"
+ "description": "Dynamic Json Content or DSL Json reference.",
+ "required": false,
+ "type": "json"
}
- },
- "outputs": {
+ },
+ "outputs": {
"response-data": {
- "description": "Execution Response Data in JSON format.",
- "required": false,
- "type": "string"
+ "description": "Execution Response Data in JSON format.",
+ "required": false,
+ "type": "string"
},
"status": {
- "description": "Status of the Component Execution ( success or failure )",
- "required": true,
- "type": "string"
+ "description": "Status of the Component Execution ( success or failure )",
+ "required": true,
+ "type": "string"
}
- }
- }
+ }
+ }
}
- }
- },
- "derived_from": "tosca.nodes.Component"
- }
+ }
+ },
+ "derived_from": "tosca.nodes.Component"
+ }
.. tab:: remote-script-executor
@@ -274,134 +274,133 @@ listed in the other section.
execute-command-logs: will contain the execution logs of the script, that were printed into stdout
- Using the get_attribute expression (see :ref:`expression` -> get_attribute),
+ Using the get_attribute expression (see :ref:`expression` -> get_attribute),
this attribute can be retrieve to be provided as workflow output (see :ref:`workflow`).
**Params:**
- The `command` field need to reference the path from the Scripts folder of the
+ The `command` field need to reference the path from the Scripts folder of the
scripts to execute, e.g. Scripts/python/Bob.py
- The `packages` field allow to provide a list of **PIP package** to install in the target environment,
+ The `packages` field allow to provide a list of **PIP package** to install in the target environment,
or a requirements.txt file. Also, it supports **Ansible role**.
- If **requirements.txt** is specified, then it should be **provided** as
+ If **requirements.txt** is specified, then it should be **provided** as
part of the **Environment** folder of the CBA.
.. code-block:: json
:caption: **Example**
"packages": [
- {
- "type": "pip",
- "package": [
+ {
+ "type": "pip",
+ "package": [
"requirements.txt"
- ]
- },
- {
- "type": "ansible_galaxy",
- "package": [
+ ]
+ },
+ {
+ "type": "ansible_galaxy",
+ "package": [
"juniper.junos"
- ]
- }
+ ]
+ }
]
- The `argument-properties` allows to specified input argument to the script to execute. They should be
- expressed in a DSL, and they will be ordered as specified.
+ The `argument-properties` allows to specified input argument to the script to execute. They should be
+ expressed in a DSL, and they will be ordered as specified.
.. code-block:: json
- :caption: **Example**
+ :caption: **Example**
"ansible-argument-properties": {
- "arg0": "-i",
- "arg1": "Scripts/ansible/inventory.yaml",
- "arg2": "--extra-vars",
- "arg3": {
- "get_attribute": [
+ "arg0": "-i",
+ "arg1": "Scripts/ansible/inventory.yaml",
+ "arg2": "--extra-vars",
+ "arg3": {
+ "get_attribute": [
"resolve-ansible-vars",
"",
"assignment-params",
"ansible-vars"
- ]
- }
- }
+ ]
+ }
}
- The `dynamic-properties` can be anything that needs to be passed to the
- script that couldn't be passed as an argument, such as JSON object, etc... If used, they will be passed
+ The `dynamic-properties` can be anything that needs to be passed to the
+ script that couldn't be passed as an argument, such as JSON object, etc... If used, they will be passed
in as the last argument of the Python script.
`Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/component-remote-python-executor.json>`_
is the definition
.. code-block:: json
- :caption: **component-remote-script-executor**
+ :caption: **component-remote-script-executor**
{
- "description": "This is Remote Python Execution Component.",
- "version": "1.0.0",
- "attributes": {
+ "description": "This is Remote Python Execution Component.",
+ "version": "1.0.0",
+ "attributes": {
"prepare-environment-logs": {
- "required": false,
- "type": "string"
+ "required": false,
+ "type": "string"
},
"execute-command-logs": {
- "required": false,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
+ "required": false,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
},
"response-data": {
- "required": false,
- "type": "json"
+ "required": false,
+ "type": "json"
}
- },
- "capabilities": {
+ },
+ "capabilities": {
"component-node": {
- "type": "tosca.capabilities.Node"
+ "type": "tosca.capabilities.Node"
}
- },
- "interfaces": {
+ },
+ "interfaces": {
"ComponentRemotePythonExecutor": {
- "operations": {
- "process": {
+ "operations": {
+ "process": {
"inputs": {
- "endpoint-selector": {
- "description": "Remote Container or Server selector name.",
- "required": false,
- "type": "string",
- "default": "remote-python"
- },
- "dynamic-properties": {
- "description": "Dynamic Json Content or DSL Json reference.",
- "required": false,
- "type": "json"
- },
- "argument-properties": {
- "description": "Argument Json Content or DSL Json reference.",
- "required": false,
- "type": "json"
- },
- "command": {
- "description": "Command to execute.",
- "required": true,
- "type": "string"
- },
- "packages": {
- "description": "Packages to install based on type.",
- "required": false,
- "type" : "list",
- "entry_schema" : {
+ "endpoint-selector": {
+ "description": "Remote Container or Server selector name.",
+ "required": false,
+ "type": "string",
+ "default": "remote-python"
+ },
+ "dynamic-properties": {
+ "description": "Dynamic Json Content or DSL Json reference.",
+ "required": false,
+ "type": "json"
+ },
+ "argument-properties": {
+ "description": "Argument Json Content or DSL Json reference.",
+ "required": false,
+ "type": "json"
+ },
+ "command": {
+ "description": "Command to execute.",
+ "required": true,
+ "type": "string"
+ },
+ "packages": {
+ "description": "Packages to install based on type.",
+ "required": false,
+ "type" : "list",
+ "entry_schema" : {
"type" : "dt-system-packages"
- }
- }
+ }
+ }
}
- }
- }
+ }
+ }
}
- },
- "derived_from": "tosca.nodes.Component"
+ },
+ "derived_from": "tosca.nodes.Component"
}
.. tab:: remote-ansible-executor
@@ -428,71 +427,71 @@ listed in the other section.
.. code-block:: json
:caption: **component-remote-script-executor**
- {
- "description": "This is Remote Ansible Playbook (AWX) Execution Component.",
- "version": "1.0.0",
- "attributes": {
- "ansible-command-status": {
+ {
+ "description": "This is Remote Ansible Playbook (AWX) Execution Component.",
+ "version": "1.0.0",
+ "attributes": {
+ "ansible-command-status": {
"required": true,
"type": "string"
- },
- "ansible-command-logs": {
+ },
+ "ansible-command-logs": {
"required": true,
"type": "string"
- }
- },
- "capabilities": {
- "component-node": {
+ }
+ },
+ "capabilities": {
+ "component-node": {
"type": "tosca.capabilities.Node"
- }
- },
- "interfaces": {
- "ComponentRemoteAnsibleExecutor": {
+ }
+ },
+ "interfaces": {
+ "ComponentRemoteAnsibleExecutor": {
"operations": {
- "process": {
- "inputs": {
+ "process": {
+ "inputs": {
"job-template-name": {
- "description": "Primary key or name of the job template to launch new job.",
- "required": true,
- "type": "string"
+ "description": "Primary key or name of the job template to launch new job.",
+ "required": true,
+ "type": "string"
},
"limit": {
- "description": "Specify host limit for job template to run.",
- "required": false,
- "type": "string"
+ "description": "Specify host limit for job template to run.",
+ "required": false,
+ "type": "string"
},
"inventory": {
- "description": "Specify inventory for job template to run.",
- "required": false,
- "type": "string"
+ "description": "Specify inventory for job template to run.",
+ "required": false,
+ "type": "string"
},
- "extra-vars" : {
- "required" : false,
- "type" : "json",
- "description": "json formatted text that contains extra variables to pass on."
+ "extra-vars": {
+ "required": false,
+ "type": "json",
+ "description": "json formatted text that contains extra variables to pass on."
},
"tags": {
- "description": "Specify tagged actions in the playbook to run.",
- "required": false,
- "type": "string"
+ "description": "Specify tagged actions in the playbook to run.",
+ "required": false,
+ "type": "string"
},
"skip-tags": {
- "description": "Specify tagged actions in the playbook to omit.",
- "required": false,
- "type": "string"
+ "description": "Specify tagged actions in the playbook to omit.",
+ "required": false,
+ "type": "string"
},
"endpoint-selector": {
- "description": "Remote AWX Server selector name.",
- "required": true,
- "type": "string"
+ "description": "Remote AWX Server selector name.",
+ "required": true,
+ "type": "string"
}
- }
- }
+ }
+ }
}
- }
- },
- "derived_from": "tosca.nodes.Component"
- }
+ }
+ },
+ "derived_from": "tosca.nodes.Component"
+ }
.. tab:: Source
@@ -502,38 +501,39 @@ listed in the other section.
Defines the **contract** to resolve a resource.
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/tosca.nodes.ResourceSource.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/tosca.nodes.ResourceSource.json>`_
is the root component TOSCA node type from which other node type will derive:
.. code-block::
:caption: **tosca.nodes.Component**
{
- "description": "TOSCA base type for Resource Sources",
- "version": "1.0.0",
- "derived_from": "tosca.nodes.Root"
+ "description": "TOSCA base type for Resource Sources",
+ "version": "1.0.0",
+ "derived_from": "tosca.nodes.Root"
}
**Bellow is a list of supported sources**
- .. tabs::
+ .. tabs::
+
.. tab:: input
**Input:**
Expects the **value to be provided as input** to the request.
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-input.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-input.json>`_
is the Definition
- .. code-block::
+ .. code-block::
:caption: **source-input**
{
- "description": "This is Input Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
+ "description": "This is Input Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {},
+ "derived_from": "tosca.nodes.ResourceSource"
}
.. tab:: default
@@ -542,17 +542,17 @@ listed in the other section.
Expects the **value to be defaulted** in the model itself.
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-default.json>`_
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-default.json>`_
is the Definition
.. code-block:: json
:caption: **source-default**
{
- "description": "This is Default Resource Source Node Type",
- "version": "1.0.0",
- "properties": {},
- "derived_from": "tosca.nodes.ResourceSource"
+ "description": "This is Default Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {},
+ "derived_from": "tosca.nodes.ResourceSource"
}
.. tab:: rest
@@ -561,7 +561,7 @@ listed in the other section.
Expects the **URI along with the VERB and the payload**, if needed.
- CDS is currently deployed along the side of SDNC, hence the **default** rest
+ CDS is currently deployed along the side of SDNC, hence the **default** rest
**connection** provided by the framework is to **SDNC MDSAL**.
.. list-table::
@@ -592,105 +592,107 @@ listed in the other section.
* - expression-type
- Path expression type - default value is JSON_PATH
- Optional
-
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-rest.json>`_
+
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-rest.json>`_
is the definition:
.. code-block:: json
:caption: **source-rest**
- {
- "description": "This is Rest Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "type": {
- "required": false,
- "type": "string",
- "default": "JSON",
- "constraints": [
- {
- "valid_values": [
- "JSON"
- ]
- }
- ]
- },
- "verb": {
- "required": false,
- "type": "string",
- "default": "GET",
- "constraints": [
- {
- "valid_values": [
- "GET", "POST", "DELETE", "PUT"
- ]
- }
- ]
- },
- "payload": {
- "required": false,
- "type": "string",
- "default": ""
- },
- "endpoint-selector": {
- "required": false,
- "type": "string"
- },
- "url-path": {
- "required": true,
- "type": "string"
- },
- "path": {
- "required": true,
- "type": "string"
- },
- "expression-type": {
- "required": false,
- "type": "string",
- "default": "JSON_PATH",
- "constraints": [
- {
- "valid_values": [
- "JSON_PATH",
- "JSON_POINTER"
- ]
- }
- ]
- },
- "input-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
- },
- "output-key-mapping": {
- "required": false,
- "type": "map",
- "entry_schema": {
- "type": "string"
- }
+ {
+ "description": "This is Rest Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "type": {
+ "required": false,
+ "type": "string",
+ "default": "JSON",
+ "constraints": [
+ {
+ "valid_values": [
+ "JSON"
+ ]
+ }
+ ]
+ },
+ "verb": {
+ "required": false,
+ "type": "string",
+ "default": "GET",
+ "constraints": [
+ {
+ "valid_values": [
+ "GET",
+ "POST",
+ "DELETE",
+ "PUT"
+ ]
+ }
+ ]
+ },
+ "payload": {
+ "required": false,
+ "type": "string",
+ "default": ""
+ },
+ "endpoint-selector": {
+ "required": false,
+ "type": "string"
+ },
+ "url-path": {
+ "required": true,
+ "type": "string"
+ },
+ "path": {
+ "required": true,
+ "type": "string"
+ },
+ "expression-type": {
+ "required": false,
+ "type": "string",
+ "default": "JSON_PATH",
+ "constraints": [
+ {
+ "valid_values": [
+ "JSON_PATH",
+ "JSON_POINTER"
+ ]
+ }
+ ]
+ },
+ "input-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "output-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
},
- "key-dependencies": {
- "required": true,
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
-
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
.. tab:: sql
**SQL**
- Expects the **SQL query** to be modeled; that SQL query can be parameterized,
- and the parameters be other resources resolved through other means.
+ Expects the **SQL query** to be modeled; that SQL query can be parameterized,
+ and the parameters be other resources resolved through other means.
If that's the case, this data dictionary definition will have to define ``key-dependencies`` along with ``input-key-mapping``.
- CDS is currently deployed along the side of SDNC, hence the **primary** database
+ CDS is currently deployed along the side of SDNC, hence the **primary** database
**connection** provided by the framework is to **SDNC database**.
.. list-table::
@@ -709,60 +711,60 @@ listed in the other section.
- Statement to execute
- Mandatory
-
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-processor-db.json>`_
+
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-processor-db.json>`_
is the definition:
.. code-block:: json
:caption: **source-db**
- {
- "description": "This is Database Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "type": {
+ {
+ "description": "This is Database Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "type": {
"required": true,
"type": "string",
"constraints": [
- {
- "valid_values": [
+ {
+ "valid_values": [
"SQL"
- ]
- }
+ ]
+ }
]
- },
- "endpoint-selector": {
+ },
+ "endpoint-selector": {
"required": false,
"type": "string"
- },
- "query": {
+ },
+ "query": {
"required": true,
"type": "string"
- },
- "input-key-mapping": {
+ },
+ "input-key-mapping": {
"required": false,
"type": "map",
"entry_schema": {
- "type": "string"
+ "type": "string"
}
- },
- "output-key-mapping": {
+ },
+ "output-key-mapping": {
"required": false,
"type": "map",
"entry_schema": {
- "type": "string"
+ "type": "string"
}
- },
- "key-dependencies": {
+ },
+ "key-dependencies": {
"required": true,
"type": "list",
"entry_schema": {
- "type": "string"
+ "type": "string"
}
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
.. tab:: capability
@@ -777,53 +779,53 @@ listed in the other section.
* - Property
- Description
- Scope
- * - script-type
+ * - script-type
- The type of the script - default value is Koltin
- Optional
* - script-class-reference
- The name of the class to use to create an instance of the script
- Mandatory
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-capability.json>`_
- is the definition:
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/source-capability.json>`_
+ is the definition:
.. code-block:: json
- :caption: **source-capability**
+ :caption: **source-capability**
- {
- "description": "This is Component Resource Source Node Type",
- "version": "1.0.0",
- "properties": {
- "script-type": {
+ {
+ "description": "This is Component Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "script-type": {
"required": true,
"type": "string",
"default": "kotlin",
"constraints": [
- {
- "valid_values": [
+ {
+ "valid_values": [
"internal",
"kotlin",
"jython"
- ]
- }
+ ]
+ }
]
- },
- "script-class-reference": {
+ },
+ "script-class-reference": {
"description": "Capability reference name for internal and kotlin, for jython script file path",
"required": true,
"type": "string"
- },
- "key-dependencies": {
+ },
+ "key-dependencies": {
"description": "Resource Resolution dependency dictionary names.",
"required": true,
"type": "list",
"entry_schema": {
- "type": "string"
+ "type": "string"
}
- }
- },
- "derived_from": "tosca.nodes.ResourceSource"
- }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
.. tab:: Other
@@ -844,57 +846,65 @@ listed in the other section.
* - Property
- Description
- Scope
- * - dependency-node-templates
+ * - dependency-node-templates
- The node template the workflow depends on
- Required
- `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/dg-generic.json>`_
- is the definition:
+ `Here <https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/definition-type/starter-type/node_type/dg-generic.json>`_
+ is the definition:
.. code-block:: json
:caption: **dg-generic**
- {
- "description": "This is Generic Directed Graph Type",
- "version": "1.0.0",
- "properties": {
- "content": {
- "required": true,
- "type": "string"
+ {
+ "description": "This is Generic Directed Graph Type",
+ "version": "1.0.0",
+ "properties": {
+ "content": {
+ "required": true,
+ "type": "string"
+ },
+ "dependency-node-templates": {
+ "required": true,
+ "description": "Dependent Step Components NodeTemplate name.",
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
},
- "dependency-node-templates": {
- "required": true,
- "description": "Dependent Step Components NodeTemplate name.",
- "type": "list",
- "entry_schema": {
- "type": "string"
- }
- }
- },
- "derived_from": "tosca.nodes.DG"
- }
+ "derived_from": "tosca.nodes.DG"
+ }
- A node_template of this type always provide one artifact, of type artifact-directed-graph,
+ A node_template of this type always provide one artifact, of type artifact-directed-graph,
which will be located under the Plans/ folder within the CBA.
.. code-block:: json
:caption: **node_template example**
- "config-deploy-process" : {
- "type" : "dg-generic",
- "properties" : {
- "content" : {
- "get_artifact" : [ "SELF", "dg-config-deploy-process" ]
- },
- "dependency-node-templates" : [ "nf-account-collection", "execute" ]
- },
- "artifacts" : {
- "dg-config-deploy-process" : {
- "type" : "artifact-directed-graph",
- "file" : "Plans/CONFIG_ConfigDeploy.xml"
+ {
+ "config-deploy-process": {
+ "type": "dg-generic",
+ "properties": {
+ "content": {
+ "get_artifact": [
+ "SELF",
+ "dg-config-deploy-process"
+ ]
+ },
+ "dependency-node-templates": [
+ "nf-account-collection",
+ "execute"
+ ]
+ },
+ "artifacts": {
+ "dg-config-deploy-process": {
+ "type": "artifact-directed-graph",
+ "file": "Plans/CONFIG_ConfigDeploy.xml"
+ }
+ }
}
- }
- }
+ }
In the DG bellow, the execute node refers to the node_template.
@@ -907,24 +917,24 @@ listed in the other section.
xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='CONFIG' version='1.0.0'>
<method rpc='ConfigDeploy' mode='sync'>
<block atomic="true">
- <execute plugin="nf-account-collection" method="process">
- <outcome value='failure'>
- <return status="failure">
- </return>
- </outcome>
- <outcome value='success'>
- <execute plugin="execute" method="process">
- <outcome value='failure'>
- <return status="failure">
- </return>
- </outcome>
- <outcome value='success'>
- <return status='success'>
- </return>
- </outcome>
- </execute>
- </outcome>
- </execute>
+ <execute plugin="nf-account-collection" method="process">
+ <outcome value='failure'>
+ <return status="failure">
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <execute plugin="execute" method="process">
+ <outcome value='failure'>
+ <return status="failure">
+ </return>
+ </outcome>
+ <outcome value='success'>
+ <return status='success'>
+ </return>
+ </outcome>
+ </execute>
+ </outcome>
+ </execute>
</block>
</method>
</service-logic>
@@ -945,7 +955,7 @@ listed in the other section.
"version": "1.0.0",
"derived_from": "tosca.nodes.Root"
}
-
+
**vnf-netconf-device**
Represents the VNF information to **establish** a **NETCONF communication**.
@@ -997,36 +1007,3 @@ listed in the other section.
},
"derived_from": "tosca.nodes.Vnf"
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/modelingconcepts/scripts.rst b/docs/modelingconcepts/scripts.rst
index db79496c2..39330f166 100644
--- a/docs/modelingconcepts/scripts.rst
+++ b/docs/modelingconcepts/scripts.rst
@@ -4,7 +4,7 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Scripts
--------------
+-------
Library
+++++++++++++++++
@@ -12,7 +12,7 @@ Library
NetconfClient
+++++++++++++++++
-In order to facilitate NETCONF interaction within scripts, a python NetconfClient binded to our Kotlin implementation is made available.
+In order to facilitate NETCONF interaction within scripts, a python NetconfClient binded to our Kotlin implementation is made available.
This NetconfClient can be used when using the component-netconf-executor.
The client can be find here: https://github.com/onap/ccsdk-cds/blob/master/components/scripts/python/ccsdk_netconf/netconfclient.py
@@ -20,8 +20,8 @@ The client can be find here: https://github.com/onap/ccsdk-cds/blob/master/compo
ResolutionHelper
+++++++++++++++++
-When executing a component executor script, designer might want to perform
+When executing a component executor script, designer might want to perform
resource resolution along with template meshing directly from the script itself.
-The helper can be find here:
+The helper can be find here:
https://github.com/onap/ccsdk-cds/blob/master/components/scripts/python/ccsdk_netconf/common.py \ No newline at end of file
diff --git a/docs/modelingconcepts/southbound-interfaces.rst b/docs/modelingconcepts/southbound-interfaces.rst
index 865e89620..d2bde92a8 100644
--- a/docs/modelingconcepts/southbound-interfaces.rst
+++ b/docs/modelingconcepts/southbound-interfaces.rst
@@ -4,11 +4,11 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Southbound Interfaces
--------------------------
+---------------------
-CDS comes with native python 3.6 support and Ansible AWX (Ansible Tower):
-idea is Network Ops are familiar with Python and/or Ansible, and our goal is not to dictate the SBI to use for
-their operations. Ansible and Python provide already many, and well adopted,
+CDS comes with native python 3.6 support and Ansible AWX (Ansible Tower):
+idea is Network Ops are familiar with Python and/or Ansible, and our goal is not to dictate the SBI to use for
+their operations. Ansible and Python provide already many, and well adopted,
SBI libraries, hence they could be utilized as needed.
CDS also provide native support for the following libraries:
@@ -19,5 +19,5 @@ CDS also provide native support for the following libraries:
* SSH
* gRPC (hence gNMI / gNOI should be supported)
-CDS also has extensible REST support, meaning any RESTful interface used for network interaction can be used,
+CDS also has extensible REST support, meaning any RESTful interface used for network interaction can be used,
such as external VNFM or EMS. \ No newline at end of file
diff --git a/docs/modelingconcepts/template.rst b/docs/modelingconcepts/template.rst
index d8d35189a..75fe56a43 100644
--- a/docs/modelingconcepts/template.rst
+++ b/docs/modelingconcepts/template.rst
@@ -6,14 +6,14 @@
.. _template:
Template
------------
+--------
-A template is an **artifact**, and uses artifact-mapping-resource (see :ref:`artifact_type` -> Mapping)
+A template is an **artifact**, and uses artifact-mapping-resource (see :ref:`artifact_type` -> Mapping)
and artifact-template-velocity (see :ref:`artifact_type` -> Velocity).
A template is **parameterized** and each parameter must be defined in a corresponding **mapping file**.
-In order to know which mapping correlates to which template, the file name must start with an ``artifact-prefix``,
+In order to know which mapping correlates to which template, the file name must start with an ``artifact-prefix``,
serving as identifier to the overall template + mapping.
The **requirement** is as follows:
diff --git a/docs/modelingconcepts/test.rst b/docs/modelingconcepts/test.rst
index ba806354e..53bbc1adf 100644
--- a/docs/modelingconcepts/test.rst
+++ b/docs/modelingconcepts/test.rst
@@ -4,15 +4,15 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Tests
---------
+-----
-The **tests** folder contains the **uat.yaml** file for execution the cba actions for sunny day and rainy day
-scenario using mock data. The process to generate the uat file is documented TBD. The file can be dragged
-and drop to the Tests folder after the test for all actions are executed.
+The **tests** folder contains the **uat.yaml** file for execution the cba actions for sunny day and rainy day
+scenario using mock data. The process to generate the uat file is documented TBD. The file can be dragged
+and drop to the Tests folder after the test for all actions are executed.
-NOTE: You need to activate the "uat" Spring Boot profile in order to enable the spy/verify endpoints.
-They are disabled by default because the mocks created at runtime can potentially cause collateral problems in production.
-You can either pass an option to JVM (``-Dspring.profiles.active=uat``) or set and export an
+NOTE: You need to activate the "uat" Spring Boot profile in order to enable the spy/verify endpoints.
+They are disabled by default because the mocks created at runtime can potentially cause collateral problems in production.
+You can either pass an option to JVM (``-Dspring.profiles.active=uat``) or set and export an
environment variable (``export spring_profiles_active=uat``).
A quick outline of the UAT generation process follows:
@@ -20,21 +20,21 @@ A quick outline of the UAT generation process follows:
1. Create a minimum :file:`uat.yaml` containing only the NB requests to be sent to the BlueprintsProcessor (BPP) service;
2. Submit the blueprint CBA and this draft :file:`uat.yaml` to BPP in a single HTTP POST call:
- ``curl -u ccsdkapps:ccsdkapps -F cba=@<path to your CBA file> -F uat=@<path to the
+ ``curl -u ccsdkapps:ccsdkapps -F cba=@<path to your CBA file> -F uat=@<path to the
draft uat.yaml> http://localhost:8080/api/v1/uat/spy``
3. If your environment is properly setup, at the end this service will generate the complete :file:`uat.yaml`;
4. Revise the generate file, eventually removing superfluous message fields;
5. Include this file in your CBA under :file:`Tests/uat.yaml`;
-6. Submit the candidate CBA + UAT to be validated by BPP, that now will create runtime mocks to simulate
+6. Submit the candidate CBA + UAT to be validated by BPP, that now will create runtime mocks to simulate
all SB collaborators, by running:
``$ curl -u ccsdkapps:ccsdkapps -F cba=@<path to your CBA file> http://localhost:8080/api/v1/uat/verify``
-7. Once validated, your CBA enhanced with its corresponding UAT is eligible
+7. Once validated, your CBA enhanced with its corresponding UAT is eligible
to be integrated into the CDS project, under the folder :file:`components/model-catalog/blueprint-model/uat-blueprints`.
-Reference link for sample generated uat.yaml file for pnf plug & play use case:
+Reference link for sample generated uat.yaml file for pnf plug & play use case:
`uat.yaml file <https://gerrit.onap.org/r/gitweb?p=ccsdk/cds.git;a=tree;f=components/model-catalog/blueprint-model/uat-blueprints/pnf_config/Tests;h=230d506720c4a1066784c1fe9e0ba0206bbb13cf;hb=refs/heads/master>`_.
-As UAT is part of unit testing, it runs in jenkins job
-`ccsdk-cds-master-verify-java <https://jenkins.onap.org/job/ccsdk-cds-master-verify-java/>`_
+As UAT is part of unit testing, it runs in jenkins job
+`ccsdk-cds-master-verify-java <https://jenkins.onap.org/job/ccsdk-cds-master-verify-java/>`_
whenever a new commit/patch pushed on gerrit in ccsdk/cds repo. \ No newline at end of file
diff --git a/docs/modelingconcepts/tosca-meta.rst b/docs/modelingconcepts/tosca-meta.rst
index d27277016..938af315a 100644
--- a/docs/modelingconcepts/tosca-meta.rst
+++ b/docs/modelingconcepts/tosca-meta.rst
@@ -4,7 +4,7 @@
.. Copyright (C) 2020 Deutsche Telekom AG.
Tosca Meta
-------------
+----------
Tosca meta file captures the model entities that compose the cba package name, version, type and searchable tags.
@@ -41,23 +41,20 @@ Tosca meta file captures the model entities that compose the cba package name, v
- Required
- String
- | The attribute that holds the blueprint version
- |
- | X.Y.Z
- |
+ | **X.Y.Z**
| X=Major version
| Y=Minor Version
| Z=Revision Version
- |
- | X=Ex. 1.0.0
+ | X=Ex. 1.0.0
* - Template-Type
- Required
- String
- | The attribute that holds the blueprint package types.
| Valid Options:
* "DEFAULT" – .JSON file consistent of tosca based cba package that describes the package intent.
- * "KOTLIN_DSL" – .KT file consistent of tosca based cba package that describes the package intent
- composed using Domain Specific Language (DSL).
- * "GENERIC_SCRIPT" – Script file consistent of NONE tosca based cba package that describes the package intent
+ * "KOTLIN_DSL" – .KT file consistent of tosca based cba package that describes the package intent
+ composed using Domain Specific Language (DSL).
+ * "GENERIC_SCRIPT" – Script file consistent of NONE tosca based cba package that describes the package intent
using DSL Language.
| If not specified in the tosca.meta file the default is "DEFAULT"
* - Template-Tags
@@ -69,12 +66,12 @@ Tosca meta file captures the model entities that compose the cba package name, v
**Default Template Type**
-https://gerrit.onap.org/r/gitweb?p=ccsdk/cds.git;a=blob;f=components/model-catalog/blueprint-model/test-blueprint/capability_cli/TOSCA-Metadata/TOSCA.meta;hb=refs/heads/master
+https://git.onap.org/ccsdk/cds/tree/components/model-catalog/blueprint-model/test-blueprint/capability_cli/TOSCA-Metadata/TOSCA.meta
**KOTLIN_DSL Template Type**
-https://gerrit.onap.org/r/gitweb?p=ccsdk/cds.git;a=blob;f=components/model-catalog/blueprint-model/test-blueprint/resource-audit/TOSCA-Metadata/TOSCA.meta;hb=refs/heads/master
+https://git.onap.org/ccsdk/cds/tree/components/model-catalog/blueprint-model/test-blueprint/resource-audit/TOSCA-Metadata/TOSCA.meta
**GENERIC_SCRIPT Template Type**
-https://gerrit.onap.org/r/gitweb?p=ccsdk/cds.git;a=tree;f=ms/py-executor/test/resources/sample-cba/1.0.0;hb=refs/heads/master \ No newline at end of file
+https://git.onap.org/ccsdk/cds/tree/components/model-catalog/blueprint-model/test-blueprint/capability_python/TOSCA-Metadata/TOSCA.meta \ No newline at end of file
diff --git a/docs/modelingconcepts/workflow.rst b/docs/modelingconcepts/workflow.rst
index 8216819ac..9b9bd5220 100644
--- a/docs/modelingconcepts/workflow.rst
+++ b/docs/modelingconcepts/workflow.rst
@@ -6,19 +6,19 @@
.. _workflow:
Workflow
----------
+--------
.. note::
**Workflow Scope within CDS Framework**
- The workflow is within the scope of the micro provisioning and configuration
- management in **controller domain** and does NOT account for the MACRO service orchestration workflow which is covered by the SO Project.
+ The workflow is within the scope of the micro provisioning and configuration
+ management in **controller domain** and does NOT account for the MACRO service orchestration workflow which is covered by the SO Project.
-A workflow defines an overall action to be taken on the service, hence is an
+A workflow defines an overall action to be taken on the service, hence is an
entry-point for the run-time execution of the :ref:`CBA Package <cba>`.
-A workflow also defines **inputs** and **outputs** that will defined the **payload contract**
+A workflow also defines **inputs** and **outputs** that will defined the **payload contract**
of the **request** and **response** (see :ref:`Dynamic API`)
A workflow can be **composed** of one or multiple **sub-actions** to execute.
@@ -32,10 +32,10 @@ Single action
The workflow is directly backed by a component (see :ref:`node_type` -> Component).
-In the example bellow, the target of the workflow's steps resource-assignment is ``resource-assignment``
+In the example bellow, the target of the workflow's steps resource-assignment is ``resource-assignment``
which actually is the name of the ``node_template`` defined after, of type ``component-resource-resolution``.
-`Link to example
+`Link to example
<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/golden/Definitions/golden-blueprint.json#L40-L71>`_
@@ -43,168 +43,170 @@ which actually is the name of the ``node_template`` defined after, of type ``com
:caption: **Example**
. . .
- "topology_template": {
- "workflows": {
- "resource-assignment": {
- "steps": {
- "resource-assignment": {
- "description": "Resource Assign Workflow",
- "target": "resource-assignment"
- ]
+ "topology_template": {
+ "workflows": {
+ "resource-assignment": {
+ "steps": {
+ "resource-assignment": {
+ "description": "Resource Assign Workflow",
+ "target": "resource-assignment"
+ }
}
- },
- "inputs": {
+ },
+ "inputs": {
"resource-assignment-properties": {
- "description": "Dynamic PropertyDefinition for workflow(resource-assignment).",
- "required": true,
- "type": "dt-resource-assignment-properties"
+ "description": "Dynamic PropertyDefinition for workflow(resource-assignment).",
+ "required": true,
+ "type": "dt-resource-assignment-properties"
}
- },
- "outputs": {
+ },
+ "outputs": {
"meshed-template": {
- "type": "json",
- "value": {
- "get_attribute": [
+ "type": "json",
+ "value": {
+ "get_attribute": [
"resource-assignment",
"assignment-params"
- ]
- }
+ ]
+ }
}
- }
- },
- "node_templates": {
- "resource-assignment": {
- "type": "component-resource-resolution",
- "interfaces": {
- "ResourceResolutionComponent": {
- "operations": {
- "process": {
- "inputs": {
- "artifact-prefix-names": [
- "vf-module-1"
- ]
+ }
+ },
+ "node_templates": {
+ "resource-assignment": {
+ "type": "component-resource-resolution",
+ "interfaces": {
+ "ResourceResolutionComponent": {
+ "operations": {
+ "process": {
+ "inputs": {
+ "artifact-prefix-names": [
+ "vf-module-1"
+ ]
+ }
}
- }
- }
- }
- },
- "artifacts": {
- "vf-module-1-template": {
- "type": "artifact-template-velocity",
- "file": "Templates/vf-module-1-template.vtl"
+ }
+ }
},
- "vf-module-1-mapping": {
- "type": "artifact-mapping-resource",
- "file": "Templates/vf-module-1-mapping.json"
+ "artifacts": {
+ "vf-module-1-template": {
+ "type": "artifact-template-velocity",
+ "file": "Templates/vf-module-1-template.vtl"
+ },
+ "vf-module-1-mapping": {
+ "type": "artifact-mapping-resource",
+ "file": "Templates/vf-module-1-mapping.json"
+ }
}
- }
- }
+ }
+ }
}
- . . .
+ . . .
.. _workflow_multiple_actions:
Multiple sub-actions
**********************
-The workflow is backed by a Directed Graph engine, dg-generic (see :ref:`node_type` -> DG,
+The workflow is backed by a Directed Graph engine, dg-generic (see :ref:`node_type` -> DG,
and is an **imperative** workflow.
-A DG used as workflow for CDS is composed of multiple execute nodes; each individual
+A DG used as workflow for CDS is composed of multiple execute nodes; each individual
execute node refers to an modelled Component (see :ref:`node_type` -> Component) instance.
-In the example above, you can see the target of the workflow's steps execute-script is
+In the example above, you can see the target of the workflow's steps execute-script is
``execute-remote-ansible-process``, which is a node_template of type ``dg_generic``
-`Link of example
-<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Definitions/remote_scripts.json#L184-L204>`_
+`Link of example
+<https://github.com/onap/ccsdk-cds/blob/master/components/model-catalog/blueprint-model/test-blueprint/remote_scripts/Definitions/remote_scripts.json#L184-L204>`_
.. code-block:: json
:caption: **workflow plan example**
- . . .
- "topology_template": {
+ . . .
+ "topology_template": {
"workflows": {
- "execute-remote-ansible": {
- "steps": {
+ "execute-remote-ansible": {
+ "steps": {
"execute-script": {
- "description": "Execute Remote Ansible Script",
- "target": "execute-remote-ansible-process"
- ]
+ "description": "Execute Remote Ansible Script",
+ "target": "execute-remote-ansible-process"
}
- },
- "inputs": {
- "ip": {
- "required": false,
- "type": "string"
- },
- "username": {
- "required": false,
- "type": "string"
- },
- "password": {
- "required": false,
- "type": "string"
- },
- "execute-remote-ansible-properties": {
- "description": "Dynamic PropertyDefinition for workflow(execute-remote-ansible).",
- "required": true,
- "type": "dt-execute-remote-ansible-properties"
+ }
+ },
+ "inputs": {
+ "ip": {
+ "required": false,
+ "type": "string"
+ },
+ "username": {
+ "required": false,
+ "type": "string"
+ },
+ "password": {
+ "required": false,
+ "type": "string"
+ },
+ "execute-remote-ansible-properties": {
+ "description": "Dynamic PropertyDefinition for workflow(execute-remote-ansible).",
+ "required": true,
+ "type": "dt-execute-remote-ansible-properties"
+ }
+ },
+ "outputs": {
+ "ansible-variable-resolution": {
+ "type": "json",
+ "value": {
+ "get_attribute": [
+ "resolve-ansible-vars",
+ "assignment-params"
+ ]
}
- },
- "outputs": {
- "ansible-variable-resolution": {
- "type": "json",
- "value": {
- "get_attribute": [
- "resolve-ansible-vars",
- "assignment-params"
- ]
- }
- },
- "prepare-environment-logs": {
- "type": "string",
- "value": {
- "get_attribute": [
- "execute-remote-ansible",
- "prepare-environment-logs"
- ]
- }
- },
- "execute-command-logs": {
- "type": "string",
- "value": {
- "get_attribute": [
- "execute-remote-ansible",
- "execute-command-logs"
- ]
- }
+ },
+ "prepare-environment-logs": {
+ "type": "string",
+ "value": {
+ "get_attribute": [
+ "execute-remote-ansible",
+ "prepare-environment-logs"
+ ]
+ }
+ },
+ "execute-command-logs": {
+ "type": "string",
+ "value": {
+ "get_attribute": [
+ "execute-remote-ansible",
+ "execute-command-logs"
+ ]
}
- }
- }
- },
- "node_templates": {
- "execute-remote-ansible-process": {
- "type": "dg-generic",
- "properties": {
- "content": {
- "get_artifact": [
- "SELF",
- "dg-execute-remote-ansible-process"
- ]
+ }
+ },
+ "node_templates": {
+ "execute-remote-ansible-process": {
+ "type": "dg-generic",
+ "properties": {
+ "content": {
+ "get_artifact": [
+ "SELF",
+ "dg-execute-remote-ansible-process"
+ ]
+ },
+ "dependency-node-templates": [
+ "resolve-ansible-vars",
+ "execute-remote-ansible"
+ ]
},
- "dependency-node-templates": [
- "resolve-ansible-vars",
- "execute-remote-ansible"
- ]
- },
- "artifacts": {
- "dg-execute-remote-ansible-process": {
- "type": "artifact-directed-graph",
- "file": "Plans/CONFIG_ExecAnsiblePlaybook.xml"
+ "artifacts": {
+ "dg-execute-remote-ansible-process": {
+ "type": "artifact-directed-graph",
+ "file": "Plans/CONFIG_ExecAnsiblePlaybook.xml"
+ }
}
- }
- }
+ }
+ }
+ }
+ }
Properties of a workflow
**************************
@@ -219,12 +221,12 @@ Properties of a workflow
- Defines the name of the action that can be triggered by external system
* - inputs
- | They are two types of inputs, the dynamic ones, and the static one.
- |
+ |
.. tabs::
-
+
.. tab:: static
-
+
Specified at workflow level
* can be inputs for the Component(s), see the inputs section of the component of interest.
@@ -233,8 +235,8 @@ Properties of a workflow
These will end up under ``${actionName}-request`` section of the payload (see Dynamic API)
.. tab:: dynamic
-
- Represent the resources defined as input (see :ref:`node_type` -> Source -> Input)
+
+ Represent the resources defined as input (see :ref:`node_type` -> Source -> Input)
within mapping definition files (see :ref:`artifact_type` -> Mapping).
The **enrichment process** will (see :ref:`enrichment`)
@@ -265,17 +267,17 @@ Properties of a workflow
- value resolvable using :ref:`expression` -> get_attribute
* - steps
- | Defines the actual step to execute as part of the workflow
- |
+ |
.. list-table::
:widths: 25 25 50
- :header-rows: 1
-
+ :header-rows: 1
+
* - step-name
- description
- target
* - name of the step
- step description
- - | a node_template implementing on of the supported Node Type (see :ref:`node_type` -> DG),
+ - | a node_template implementing on of the supported Node Type (see :ref:`node_type` -> DG),
either a Component or a DG
| (see :ref:`workflow_single_action` or :ref:`workflow_multiple_actions`)
@@ -284,39 +286,39 @@ Example:
.. code-block:: json
:caption: **workflow example**
- {
- "workflow": {
- "resource-assignment": { <- workflow-name
+ {
+ "workflow": {
+ "resource-assignment": { <- workflow-name
"inputs": {
- "vnf-id": { <- static inputs
- "required": true,
- "type": "string"
- },
- "resource-assignment-properties": { <- dynamic inputs
- "required": true,
- "type": "dt-resource-assignment-properties"
- }
+ "vnf-id": { <- static inputs
+ "required": true,
+ "type": "string"
+ },
+ "resource-assignment-properties": { <- dynamic inputs
+ "required": true,
+ "type": "dt-resource-assignment-properties"
+ }
},
"steps": {
- "call-resource-assignment": { <- step-name
- "description": "Resource Assignment Workflow",
- "target": "resource-assignment-process" <- node_template targeted by the step
- }
+ "call-resource-assignment": { <- step-name
+ "description": "Resource Assignment Workflow",
+ "target": "resource-assignment-process" <- node_template targeted by the step
+ }
},
"outputs": {
- "template-properties": { <- output
- "type": "json", <- complex type
- "value": {
+ "template-properties": { <- output
+ "type": "json", <- complex type
+ "value": {
"get_attribute": [ <- uses expression to retrieve attribute from context
- "resource-assignment",
- "assignment-params"
+ "resource-assignment",
+ "assignment-params"
]
- }
- }
+ }
+ }
}
- }
+ }
+ }
}
- }
`TOSCA definition <http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.2/csd01/TOSCA-Simple-Profile-YAML-v1.2-csd01.html#_Toc494454203>`_
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
index b3188ddd3..8302a2dc4 100644
--- a/docs/requirements-docs.txt
+++ b/docs/requirements-docs.txt
@@ -1,5 +1,5 @@
tox
-Sphinx
+Sphinx>=2,<4
doc8
docutils
setuptools
diff --git a/docs/datadictionary/index.rst b/docs/resourcedefinition/index.rst
index 4039cca6d..aa83920cb 100644
--- a/docs/datadictionary/index.rst
+++ b/docs/resourcedefinition/index.rst
@@ -2,13 +2,13 @@
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2019 IBM.
-Resource Definition
--------------------
+Resource Definition
+===================
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
Introduction:
-=============
+-------------
A Resource definition models the how a specific resource can be resolved.
A resource is a variable/parameter in the context of the service. It can be anything, but it should not be confused with SDC or Openstack resources.
@@ -21,8 +21,6 @@ As part of modelling a Resource definition entry, the following generic informat
|image0|
-
-
Below are properties that all the resource source have will have
The modeling does allow for data translation between external capability and CDS for both input and output key mapping.
@@ -31,20 +29,60 @@ The modeling does allow for data translation between external capability and CDS
Example:
-========
+--------
vf-module-model-customization-uuid and vf-module-label are two data dictionaries. A SQL table, VF_MODULE_MODEL, exist to correlate them.
Here is how input-key-mapping, output-key-mapping and key-dependencies can be used:
-.. toctree::
- :maxdepth: 1
-
- resourcedefinitioncodesnip
+.. code-block:: json
+ :linenos:
+
+ {
+ "description": "This is Component Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "script-type": {
+ "required": true,
+ "type": "string",
+ "default": "kotlin",
+ "constraints": [
+ {
+ "valid_values": [
+ "kotlin",
+ "jython"
+ ]
+ }
+ ]
+ },
+ "script-class-reference": {
+ "description": "Capability reference name for internal and kotlin, for jython script file path",
+ "required": true,
+ "type": "string"
+ },
+ "instance-dependencies": {
+ "required": false,
+ "description": "Instance dependency Names to Inject to Kotlin / Jython Script.",
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "description": "Resource Resolution dependency dictionary names.",
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
Resource source:
-================
+----------------
Defines the contract to resolve a resource.
@@ -53,8 +91,8 @@ A resource source is modeled, following TOSCA_ node type definition and derives
Also please click below for resource source available details
.. toctree::
- :maxdepth: 1
-
+ :maxdepth: 4
+
resourcesource
.. _TOSCA: http://docs.oasis-open.org/tosca/TOSCA-Simple-Profile-YAML/v1.0/csprd01/TOSCA-Simple-Profile-YAML-v1.0-csprd01.html#DEFN_ENTITY_NODE_TYPE
@@ -62,9 +100,7 @@ Also please click below for resource source available details
.. |image0| image:: media/mandatory.JPG
- :width: 7.88889in
- :height: 4.43750in
-
+ :width: 400pt
+
.. |image1| image:: media/optional.JPG
- :width: 7.88889in
- :height: 4.43750in \ No newline at end of file
+ :width: 400pt \ No newline at end of file
diff --git a/docs/datadictionary/media/capabilitytable.JPG b/docs/resourcedefinition/media/capabilitytable.JPG
index 7db4715ea..7db4715ea 100644
--- a/docs/datadictionary/media/capabilitytable.JPG
+++ b/docs/resourcedefinition/media/capabilitytable.JPG
Binary files differ
diff --git a/docs/datadictionary/media/mandatory.JPG b/docs/resourcedefinition/media/mandatory.JPG
index 074d20076..074d20076 100644
--- a/docs/datadictionary/media/mandatory.JPG
+++ b/docs/resourcedefinition/media/mandatory.JPG
Binary files differ
diff --git a/docs/datadictionary/media/optional.JPG b/docs/resourcedefinition/media/optional.JPG
index a27502a75..a27502a75 100644
--- a/docs/datadictionary/media/optional.JPG
+++ b/docs/resourcedefinition/media/optional.JPG
Binary files differ
diff --git a/docs/datadictionary/media/sqltable.JPG b/docs/resourcedefinition/media/sqltable.JPG
index 15d246743..15d246743 100644
--- a/docs/datadictionary/media/sqltable.JPG
+++ b/docs/resourcedefinition/media/sqltable.JPG
Binary files differ
diff --git a/docs/resourcedefinition/resourcesource.rst b/docs/resourcedefinition/resourcesource.rst
new file mode 100644
index 000000000..f05f09c84
--- /dev/null
+++ b/docs/resourcedefinition/resourcesource.rst
@@ -0,0 +1,421 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2019 IBM.
+
+Resource Source
+===============
+.. toctree::
+ :maxdepth: 4
+
+Input:
+------
+Expects the value to be provided as input to the request.
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "source-input" :
+ {
+ "description": "This is Input Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {},
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
+ }
+
+Default:
+--------
+Expects the value to be defaulted in the model itself.
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "source-default" :
+ {
+ "description": "This is Default Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {},
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
+ }
+
+Sql:
+----
+
+Expects the SQL query to be modeled; that SQL query can be parameterized, and the parameters be other resources resolved through other means. If that's the case, this data dictionary definition will have to define key-dependencies along with input-key-mapping.
+
+CDS is currently deployed along the side of SDNC, hence the primary database connection provided by the framework is to SDNC database.
+
+|image0|
+
+.. |image0| image:: media/sqltable.JPG
+ :width: 400pt
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "description": "This is Database Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "type": {
+ "required": true,
+ "type": "string",
+ "constraints": [
+ {
+ "valid_values": [
+ "SQL"
+ ]
+ }
+ ]
+ },
+ "endpoint-selector": {
+ "required": false,
+ "type": "string"
+ },
+ "query": {
+ "required": true,
+ "type": "string"
+ },
+ "input-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "output-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
+
+Connection to a specific database can be expressed through the endpoint-selector property, which refers to a macro defining the information about the database the connect to. Understand TOSCA Macro in the context of CDS.
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "dsl_definitions": {
+ "dynamic-db-source": {
+ "type": "maria-db",
+ "url": "jdbc:mysql://localhost:3306/sdnctl",
+ "username": "<username>",
+ "password": "<password>"
+ }
+ }
+ }
+
+Rest:
+-----
+
+Expects the URI along with the VERB and the payload, if needed.
+
+CDS is currently deployed along the side of SDNC, hence the default rest connection provided by the framework is to SDNC MDSAL.
+
+|image1|
+
+.. |image1| image:: media/optional.JPG
+ :width: 400pt
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "description": "This is Rest Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "type": {
+ "required": false,
+ "type": "string",
+ "default": "JSON",
+ "constraints": [
+ {
+ "valid_values": [
+ "JSON"
+ ]
+ }
+ ]
+ },
+ "verb": {
+ "required": false,
+ "type": "string",
+ "default": "GET",
+ "constraints": [
+ {
+ "valid_values": [
+ "GET", "POST", "DELETE", "PUT"
+ ]
+ }
+ ]
+ },
+ "payload": {
+ "required": false,
+ "type": "string",
+ "default": ""
+ },
+ "endpoint-selector": {
+ "required": false,
+ "type": "string"
+ },
+ "url-path": {
+ "required": true,
+ "type": "string"
+ },
+ "path": {
+ "required": true,
+ "type": "string"
+ },
+ "expression-type": {
+ "required": false,
+ "type": "string",
+ "default": "JSON_PATH",
+ "constraints": [
+ {
+ "valid_values": [
+ "JSON_PATH",
+ "JSON_POINTER"
+ ]
+ }
+ ]
+ },
+ "input-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "output-key-mapping": {
+ "required": false,
+ "type": "map",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
+
+Connection to a specific REST system can be expressed through the endpoint-selector property, which refers to a macro defining the information about the REST system the connect to. Understand TOSCA Macro in the context of CDS.
+
+Few ways are available to authenticate to the REST system:
+ * token-auth
+ * basic-auth
+ * ssl-basic-auth
+
+token-auth:
+~~~~~~~~~~~
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "dsl_definitions": {
+ "dynamic-rest-source": {
+ "type" : "token-auth",
+ "url" : "http://localhost:32778",
+ "token" : "<token>"
+ }
+ }
+ }
+
+basic-auth:
+~~~~~~~~~~~
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "dsl_definitions": {
+ "dynamic-rest-source": {
+ "type" : "basic-auth",
+ "url" : "http://localhost:32778",
+ "username" : "<username>",
+ "password": "<password>"
+ }
+ }
+ }
+
+ssl-basic-auth:
+~~~~~~~~~~~~~~~
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "dsl_definitions": {
+ "dynamic-rest-source": {
+ "type" : "ssl-basic-auth",
+ "url" : "http://localhost:32778",
+ "keyStoreInstance": "JKS or PKCS12",
+ "sslTrust": "trusture",
+ "sslTrustPassword": "<password>",
+ "sslKey": "keystore",
+ "sslKeyPassword": "<password>"
+ }
+ }
+ }
+
+Capability:
+-----------
+
+Expects a script to be provided.
+
+|image2|
+
+.. |image2| image:: media/capabilitytable.JPG
+ :width: 400pt
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "description": "This is Component Resource Source Node Type",
+ "version": "1.0.0",
+ "properties": {
+ "script-type": {
+ "required": true,
+ "type": "string",
+ "default": "kotlin",
+ "constraints": [
+ {
+ "valid_values": [
+ "kotlin",
+ "jython"
+ ]
+ }
+ ]
+ },
+ "script-class-reference": {
+ "description": "Capability reference name for internal and kotlin, for jython script file path",
+ "required": true,
+ "type": "string"
+ },
+ "instance-dependencies": {
+ "required": false,
+ "description": "Instance dependency Names to Inject to Kotlin / Jython Script.",
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ },
+ "key-dependencies": {
+ "description": "Resource Resolution dependency dictionary names.",
+ "required": true,
+ "type": "list",
+ "entry_schema": {
+ "type": "string"
+ }
+ }
+ },
+ "derived_from": "tosca.nodes.ResourceSource"
+ }
+
+Complex Type:
+-------------
+
+Value will be resolved through REST., and output will be a complex type.
+
+Modeling reference: Modeling Concepts#rest
+
+In this example, we're making a POST request to an IPAM system with no payload.
+
+Some ingredients are required to perform the query, in this case, $prefixId. Hence It is provided as an input-key-mapping and defined as a key-dependencies. Please refer to the modeling guideline for more in depth understanding.
+
+As part of this request, the expected response will be as below.
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "id": 4,
+ "address": "192.168.10.2/32",
+ "vrf": null,
+ "tenant": null,
+ "status": 1,
+ "role": null,
+ "interface": null,
+ "description": "",
+ "nat_inside": null,
+ "created": "2018-08-30",
+ "last_updated": "2018-08-30T14:59:05.277820Z"
+ }
+
+What is of interest is the address and id fields. For the process to return these two values, we need to create a custom data-type, as bellow
+
+.. code-block:: json
+ :linenos:
+
+ {
+ "version": "1.0.0",
+ "description": "This is Netbox IP Data Type",
+ "properties": {
+ "address": {
+ "required": true,
+ "type": "string"
+ },
+ "id": {
+ "required": true,
+ "type": "integer"
+ }
+ },
+ "derived_from": "tosca.datatypes.Root"
+ }
+
+The type of the data dictionary will be dt-netbox-ip.
+
+To tell the resolution framework what is of interest in the response, the output-key-mapping section is used. The process will map the output-key-mapping to the defined data-type.
+
+.. code-block:: json
+
+ {
+ "tags" : "oam-local-ipv4-address",
+ "name" : "create_netbox_ip",
+ "property" : {
+ "description" : "netbox ip",
+ "type" : "dt-netbox-ip"
+ },
+ "updated-by" : "adetalhouet",
+ "sources" : {
+ "config-data" : {
+ "type" : "source-rest",
+ "properties" : {
+ "type" : "JSON",
+ "verb" : "POST",
+ "endpoint-selector" : "ipam-1",
+ "url-path" : "/api/ipam/prefixes/$prefixId/available-ips/",
+ "path" : "",
+ "input-key-mapping" : {
+ "prefixId" : "prefix-id"
+ },
+ "output-key-mapping" : {
+ "address" : "address",
+ "id" : "id"
+ },
+ "key-dependencies" : [ "prefix-id" ]
+ }
+ }
+ }
+ } \ No newline at end of file
diff --git a/docs/CDS_Designer_Guide.rst b/docs/ui/designer.rst
index 802b8650d..3f78c1fe9 100644
--- a/docs/CDS_Designer_Guide.rst
+++ b/docs/ui/designer.rst
@@ -1,57 +1,25 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2019 IBM.
+CDS Designer UI
+===============
-CDS Designer Guide
-==================
-
-**Table of Contents**
-
-- `Getting
- Started <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-GettingStarted>`__
-
-- `What is CDS Designer
- UI? <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-WhatIsCDS>`__
-
-- `What’s
- new? <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-WhatIsNew>`__
-
-- `Overview of CDS
- Interface <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-OverviewOfCDS>`__
-
-- `CBA
- Packages <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-CBAPackages>`__
-
- - `Package
- list <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-PackageList>`__
-
- - `Create a CBA
- Package <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-CreateNewCBAPackage>`__
-
- - `User
- Flow <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-UserFlow>`__
-
- - `Create a New
- Package <file:////pages/viewpage.action%3fpageId=84650427#CDSDesignerGuide-CreateNewPackage>`__
-
- - `MetaData <#CDSDesignerGuide-MetaData>`__
-
- - `Template & Mapping <#CDSDesignerGuide-TemplateMapping>`__
-
- - `Scripts <#CDSDesignerGuide-Scripts>`__
-
- - `Definitions <#CDSDesignerGuide-Definitions>`__
+.. toctree::
+ :caption: Table of Contents
+ :maxdepth: 4
- - `External System Authentication
- Properties <#CDSDesignerGuide-ExternalSystem>`__
Getting Started
-===============
+---------------
This is your CDS Designer UI guide. No matter how experienced you are or
what you want to achieve, it should cover everything you need to know —
from navigating the interface to making the most of different features.
+
What is CDS Designer UI?
-========================
+------------------------
+----------------------------------------------+--------------+
| CDS Designer UI is a framework to automate | |
@@ -63,25 +31,24 @@ What is CDS Designer UI?
| CDS has both **design-time** and | |
| **run-time** activities; during design time, | |
| **Designer** can **define** what **actions** | |
-| are required for a given service, along with | |
-| anything comprising the action. The design | |
-| produces a `CBA | |
-| Package <https://wik | |
-| i.onap.org/display/DW/Modeling+Concepts#Mode | |
-| lingConcepts-ControllerBlueprintArchive>`__. | |
-| Its **content** is driven from a **catalog** | |
-| of **reusable data dictionary** and | |
-| **component**, delivering a reusable and | |
-| simplified **self-service** experience. | |
-| | |
-| CDS modeling is mainly based on **the TOSCA | |
-| standard**, using JSON as a representation. | |
+| are required for a given service, along with | |
+| anything comprising the action. The design | |
+| produces a `CBA | |
+| Package <https://wik | |
+| i.onap.org/display/DW/Modeling+Concepts#Mode | |
+| lingConcepts-ControllerBlueprintArchive>`__. | |
+| Its **content** is driven from a **catalog** | |
+| of **reusable data dictionary** and | |
+| **component**, delivering a reusable and | |
+| simplified **self-service** experience. | |
+| | |
+| CDS modeling is mainly based on **the TOSCA | |
+| standard**, using JSON as a representation. | |
+----------------------------------------------+--------------+
-.. _section-3:
What's new?
-===========
+-----------
+----------------------+----------------------+----------------------+
| |image2| | |image3| | |image4| |
@@ -102,8 +69,9 @@ What's new?
| | management) | |
+----------------------+----------------------+----------------------+
+
Overview of CDS Interface
-=========================
+-------------------------
Full CDS UI screens are available in
`InVision <https://invis.io/PAUI9GLJH3Q>`__
@@ -121,11 +89,12 @@ Full CDS UI screens are available in
4. **Module list:** View all active items in module and tools for search
and filtering
+
CBA Packages
-============
+------------
-- .. rubric:: Package List
- :name: package-list
+Package List
+~~~~~~~~~~~~
It gives you quick access to all and most recent created/edit packages
@@ -170,16 +139,18 @@ It gives you quick access to all and most recent created/edit packages
and Generic scripting) and by clicking on it, it will load to mode
screen
+
Create a New CBA Package
-========================
+------------------------
-- .. rubric:: User Flow
- :name: user-flow
+User Flow
+~~~~~~~~~
|image10|
-- .. rubric:: Create a New Package
- :name: create-a-new-package
+
+Create a New Package
+~~~~~~~~~~~~~~~~~~~~
You can create a new CBA Package by creating a new custom package or by
import package file that is already created before.
@@ -197,8 +168,9 @@ navigate to **Package** **Configuration**
|image11|
-- .. rubric:: `MetaData <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts-958933373>`__
- :name: metadata
+
+`MetaData <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts-958933373>`__
+~~~~~~~~~
In **MetaData Tab,** select Package Mode, enter package Name, Version,
Description and other configurations
@@ -224,9 +196,9 @@ To close the package configuration and go back to the Package list,
navigate to the top left in breadcrumb and click the **CBA Packages**
link or click on **Packages** link in the Main menu.
-- .. rubric:: `Template &
- Mapping <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts--1256902502>`__
- :name: template-mapping
+
+`Template & Mapping <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts--1256902502>`__
+~~~~~~~~~~~~~~~~~~~
You can create as many templates using
`artifact-mapping-resource <https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-artifact-mapping-resource>`__
@@ -292,20 +264,20 @@ on **the Clear button** **(2).**
|image22|
-- .. rubric:: `Scripts <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts--703799064>`__
- :name: scripts
+
+`Scripts <https://wiki.onap.org/display/DW/Modeling+Concepts#Concepts--703799064>`__
+~~~~~~~~
Allowed file type: Kotlin(kt), Python(py)
To add script file/s, you have two options:
-1. **Enter file URL:** Script file can be stored in server and you can
- add this script file by copy and paste file URL in URL input then
- **press ENTER** key from the keyboard
+**Enter file URL:** Script file can be stored in server and you can add this script file by copy and paste file URL in URL input then
+**press ENTER** key from the keyboard
|image23|
-2. **Import File**
+**Import File**
|image24|
@@ -317,21 +289,21 @@ By adding script file/s, you can:
|image25|
-- .. rubric:: `Definitions <https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-dataType>`__
- :name: definitions
+
+`Definitions <https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-dataType>`__
+~~~~~~~~~~~~
Allowed file type: JSON
To define a data type that represents the **schema** of a specific type
of **data**, you have two options:
-1. ** Enter file URL:** Definition file can be stored in server and user can
- add this script file by copy and paste file URL in URL input then
- **press ENTER** key from the keyboard
+**Enter file URL:** Definition file can be stored in server and user can add this script file by copy and paste file URL in URL input then
+**press ENTER** key from the keyboard
|image26|
-2. **Import File**
+**Import File**
|image27|
@@ -343,9 +315,9 @@ By adding definition file/s, you can:
|image28|
-- .. rubric:: `External System Authentication
- Properties <https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-FlexiblePlugIn>`__
- :name: external-system-authentication-properties
+
+`External System Authentication Properties <https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-FlexiblePlugIn>`__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In order to populate the system information within the package, you have
to provide **dsl_definitions**
@@ -353,7 +325,7 @@ to provide **dsl_definitions**
|image29|
-.. |image1| image:: https://wiki.onap.org/download/attachments/84650426/CDS%20Logo.png?version=1&modificationDate=1591034588000&api=v2
+.. |image1| image:: https://wiki.onap.org/download/attachments/84650426/CDS%20Logo.png?version=1&modificationDate=1591034588000&api=v2
:width: 200pt
.. |image2| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%201.png?version=1&modificationDate=1591032224000&api=v2
:width: 50pt
@@ -409,5 +381,5 @@ to provide **dsl_definitions**
:width: 500pt
.. |image28| image:: https://wiki.onap.org/download/attachments/84650426/Definitions%203.jpg?version=1&modificationDate=1591639556000&api=v2
:width: 500pt
-.. |image29| image:: https://wiki.onap.org/download/attachments/84650426/External%20system.jpg?version=1&modificationDate=1591639581000&api=v2
+.. |image29| image:: https://wiki.onap.org/download/attachments/84650426/External%20system.jpg?version=1&modificationDate=1591639581000&api=v2
:width: 500pt \ No newline at end of file
diff --git a/docs/usecases/media/dd-postman-runner.png b/docs/usecases/media/dd-postman-runner.png
new file mode 100644
index 000000000..747e86231
--- /dev/null
+++ b/docs/usecases/media/dd-postman-runner.png
Binary files differ
diff --git a/docs/usecases/media/pnf-simulator-demo-cba.zip b/docs/usecases/media/pnf-simulator-demo-cba.zip
new file mode 100644
index 000000000..08ee91b76
--- /dev/null
+++ b/docs/usecases/media/pnf-simulator-demo-cba.zip
Binary files differ
diff --git a/docs/usecases/media/pnf-simulator.postman_collection.json b/docs/usecases/media/pnf-simulator.postman_collection.json
new file mode 100644
index 000000000..80a5975c8
--- /dev/null
+++ b/docs/usecases/media/pnf-simulator.postman_collection.json
@@ -0,0 +1,1092 @@
+{
+ "info": {
+ "_postman_id": "295cc7b7-a544-44f5-8045-54effcd41108",
+ "name": "CDS PNF Simulator Use Case",
+ "description": "This collection contains all API calls to do the \"PNF Simulator Day-N config-assign and config-deploy use case\" in CDS. ",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
+ },
+ "item": [
+ {
+ "name": "Bootstrap",
+ "protocolProfileBehavior": {
+ "disabledSystemHeaders": {}
+ },
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "type": "text",
+ "value": "",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n\"loadModelType\" : true,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : true\r\n}",
+ "options": {
+ "raw": {}
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model/bootstrap",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model",
+ "bootstrap"
+ ]
+ }
+ },
+ "response": [
+ {
+ "name": "CDS Bootstrap",
+ "originalRequest": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "value": "",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}",
+ "options": {
+ "raw": {}
+ }
+ },
+ "url": {
+ "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap",
+ "protocol": "http",
+ "host": [
+ "localhost"
+ ],
+ "port": "8081",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model",
+ "bootstrap"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "X-ONAP-RequestID",
+ "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01"
+ },
+ {
+ "key": "X-ONAP-InvocationID",
+ "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077"
+ },
+ {
+ "key": "X-ONAP-PartnerName",
+ "value": "cds-controller"
+ },
+ {
+ "key": "Vary",
+ "value": "Origin"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Method"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Headers"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "Content-Length",
+ "value": "0"
+ },
+ {
+ "key": "Cache-Control",
+ "value": "no-cache, no-store, max-age=0, must-revalidate"
+ },
+ {
+ "key": "Pragma",
+ "value": "no-cache"
+ },
+ {
+ "key": "Expires",
+ "value": "0"
+ },
+ {
+ "key": "X-Content-Type-Options",
+ "value": "nosniff"
+ },
+ {
+ "key": "X-Frame-Options",
+ "value": "DENY"
+ },
+ {
+ "key": "X-XSS-Protection",
+ "value": "1 ; mode=block"
+ },
+ {
+ "key": "Referrer-Policy",
+ "value": "no-referrer"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Get Blueprints",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ }
+ ]
+ },
+ "method": "GET",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "value": "",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n\"loadModelType\" : true,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}",
+ "options": {
+ "raw": {}
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model"
+ ]
+ }
+ },
+ "response": [
+ {
+ "name": "CDS Bootstrap",
+ "originalRequest": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "value": "",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}",
+ "options": {
+ "raw": {}
+ }
+ },
+ "url": {
+ "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap",
+ "protocol": "http",
+ "host": [
+ "localhost"
+ ],
+ "port": "8081",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model",
+ "bootstrap"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "X-ONAP-RequestID",
+ "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01"
+ },
+ {
+ "key": "X-ONAP-InvocationID",
+ "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077"
+ },
+ {
+ "key": "X-ONAP-PartnerName",
+ "value": "cds-controller"
+ },
+ {
+ "key": "Vary",
+ "value": "Origin"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Method"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Headers"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "Content-Length",
+ "value": "0"
+ },
+ {
+ "key": "Cache-Control",
+ "value": "no-cache, no-store, max-age=0, must-revalidate"
+ },
+ {
+ "key": "Pragma",
+ "value": "no-cache"
+ },
+ {
+ "key": "Expires",
+ "value": "0"
+ },
+ {
+ "key": "X-Content-Type-Options",
+ "value": "nosniff"
+ },
+ {
+ "key": "X-Frame-Options",
+ "value": "DENY"
+ },
+ {
+ "key": "X-XSS-Protection",
+ "value": "1 ; mode=block"
+ },
+ {
+ "key": "Referrer-Policy",
+ "value": "no-referrer"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Data Dictionary",
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "c927b543-b143-4ab9-963c-6289a7d1040e",
+ "exec": [
+ "var allDD = pm.environment.get(\"allDD\");\r",
+ "\r",
+ "if (!(allDD instanceof Array)) {\r",
+ " var allDD = [\r",
+ " {\r",
+ "\t\t\"name\": \"netconf-password\",\r",
+ "\t\t\"tags\": \"netconf-password\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"netconf-password\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"netconf-password\",\r",
+ "\t\t\t\"name\": \"netconf-password\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"netconf-password string attribute\",\r",
+ "\t\t\t\t\"type\": \"string\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-input\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\t},\r",
+ "\t{\r",
+ "\t\t\"name\": \"netconf-username\",\r",
+ "\t\t\"tags\": \"netconf-username\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"netconf-username\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"netconf-username\",\r",
+ "\t\t\t\"name\": \"netconf-username\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"netconf-username string attribute\",\r",
+ "\t\t\t\t\"type\": \"string\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-input\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\t},\r",
+ "\t{\r",
+ "\t\t\"name\": \"netconf-server-port\",\r",
+ "\t\t\"tags\": \"netconf-server-port\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"netconf-server-port\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"netconf-server-port\",\r",
+ "\t\t\t\"name\": \"netconf-server-port\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"netconf-server-port string attribute\",\r",
+ "\t\t\t\t\"type\": \"string\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-input\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\t},\r",
+ "\t{\r",
+ "\t\t\"name\": \"pnf-id\",\r",
+ "\t\t\"tags\": \"pnf-id\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"pnf-id\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"pnf-id\",\r",
+ "\t\t\t\"name\": \"pnf-id\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"pnf-id string attribute\",\r",
+ "\t\t\t\t\"type\": \"string\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-input\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\t},\r",
+ "\t{\r",
+ "\r",
+ "\t\t\"name\": \"pnf-ipv4-address\",\r",
+ "\t\t\"tags\": \"pnf-ipv4-address\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"pnf-ipv4-address\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"pnf-ipv4-address\",\r",
+ "\t\t\t\"name\": \"pnf-ipv4-address\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"pnf-ipv4-address string attribute\",\r",
+ "\t\t\t\t\"type\": \"string\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-input\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\r",
+ "\t},\r",
+ "\t{\r",
+ "\t\t\"name\": \"stream-count\",\r",
+ "\t\t\"tags\": \"stream-count\",\r",
+ "\t\t\"data_type\": \"string\",\r",
+ "\t\t\"description\": \"stream-count\",\r",
+ "\t\t\"entry_schema\": \"string\",\r",
+ "\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\"definition\": {\r",
+ "\t\t\t\"tags\": \"stream-count\",\r",
+ "\t\t\t\"name\": \"stream-count\",\r",
+ "\t\t\t\"property\": {\r",
+ "\t\t\t\t\"description\": \"stream-count string attribute\",\r",
+ "\t\t\t\t\"type\": \"integer\"\r",
+ "\t\t\t},\r",
+ "\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\r",
+ "\t\t\t\"sources\": {\r",
+ "\t\t\t\t\"input\": {\r",
+ "\t\t\t\t\t\"type\": \"source-default\",\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\t\t\t\t},\r",
+ "\t\t\t\t\"default\": {\r",
+ "\r",
+ "\t\t\t\t\t\"type\": \"source-default\",\r",
+ "\r",
+ "\t\t\t\t\t\"properties\": {}\r",
+ "\r",
+ "\t\t\t\t}\r",
+ "\t\t\t}\r",
+ "\t\t}\r",
+ "\t}]\r",
+ "}\r",
+ "\r",
+ "\r",
+ "var currentDD = JSON.stringify(allDD.shift());\r",
+ "pm.environment.set(\"DataDictionary\", currentDD);\r",
+ "console.log(currentDD);\r",
+ "pm.environment.set(\"allDD\", allDD);\r",
+ "\r",
+ "\r",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "id": "bd26b9e6-4237-4591-a037-0520f737439f",
+ "exec": [
+ "var allDD = pm.environment.get(\"allDD\");\r",
+ "\r",
+ "if (allDD instanceof Array && allDD.length > 0) {\r",
+ " postman.setNextRequest(\"Data Dictionary\");\r",
+ "} else {\r",
+ " postman.setNextRequest(null);\r",
+ " allDD = null;\r",
+ "}"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{{DataDictionary}}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/dictionary",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "dictionary"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Enrich Blueprint",
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "showPassword",
+ "value": false,
+ "type": "boolean"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Accept-Encoding",
+ "value": "gzip,deflate",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Referer",
+ "value": "http://84.39.39.116:30497/blueprint",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Origin",
+ "value": "http://84.39.39.116:30497",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "type": "file",
+ "src": "/home/jakob/CDS_Use_Cases/PNF-DEMO-ENRICHED_WORKING/pnf-demo.zip"
+ }
+ ],
+ "options": {
+ "formdata": {}
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model/enrich",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model",
+ "enrich"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Save Blueprint",
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "type": "text",
+ "value": "",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "type": "file",
+ "src": "/home/jakob/CDS_Use_Cases/PNF-DEMO-ENRICHED_WORKING/pnf-demo.zip"
+ }
+ ],
+ "options": {
+ "formdata": {}
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model"
+ ]
+ }
+ },
+ "response": [
+ {
+ "name": "CDS Bootstrap",
+ "originalRequest": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "",
+ "value": "",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}",
+ "options": {
+ "raw": {}
+ }
+ },
+ "url": {
+ "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap",
+ "protocol": "http",
+ "host": [
+ "localhost"
+ ],
+ "port": "8081",
+ "path": [
+ "api",
+ "v1",
+ "blueprint-model",
+ "bootstrap"
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "X-ONAP-RequestID",
+ "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01"
+ },
+ {
+ "key": "X-ONAP-InvocationID",
+ "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077"
+ },
+ {
+ "key": "X-ONAP-PartnerName",
+ "value": "cds-controller"
+ },
+ {
+ "key": "Vary",
+ "value": "Origin"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Method"
+ },
+ {
+ "key": "Vary",
+ "value": "Access-Control-Request-Headers"
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json"
+ },
+ {
+ "key": "Content-Length",
+ "value": "0"
+ },
+ {
+ "key": "Cache-Control",
+ "value": "no-cache, no-store, max-age=0, must-revalidate"
+ },
+ {
+ "key": "Pragma",
+ "value": "no-cache"
+ },
+ {
+ "key": "Expires",
+ "value": "0"
+ },
+ {
+ "key": "X-Content-Type-Options",
+ "value": "nosniff"
+ },
+ {
+ "key": "X-Frame-Options",
+ "value": "DENY"
+ },
+ {
+ "key": "X-XSS-Protection",
+ "value": "1 ; mode=block"
+ },
+ {
+ "key": "Referrer-Policy",
+ "value": "no-referrer"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ },
+ {
+ "name": "Create Config Assign Day-1",
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "showPassword",
+ "value": false,
+ "type": "boolean"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Accept-Encoding",
+ "value": "gzip,deflate",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Referer",
+ "value": "http://84.39.39.116:30497/blueprint",
+ "type": "text",
+ "disabled": true
+ },
+ {
+ "key": "Origin",
+ "value": "http://84.39.39.116:30497",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"actionIdentifiers\": {\n \"mode\": \"sync\",\n \"blueprintName\": \"pnf_netconf\",\n \"blueprintVersion\": \"1.0.0\",\n \"actionName\": \"config-assign\"\n },\n \"payload\": {\n \"config-assign-request\": {\n \"template-prefix\": [\n \"pnf\", \"netconfrpc\"\n ],\n \"resolution-key\": \"day-1\",\n \"config-assign-properties\": {\n \"pnf-id\": \"abcd\",\n \"pnf-ipv4-address\": \"172.17.0.2\",\n \"netconf-password\": \"netconf\",\n \"netconf-username\": \"netconf\",\n \"netconf-server-port\": \"830\",\n \"stream-count\": 5\n }\n }\n },\n \"commonHeader\": {\n \"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n \"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n \"originatorId\": \"SDNC_DG\"\n }\n}",
+ "options": {
+ "formdata": {},
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "execution-service",
+ "process"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Create Config Assign Day-2",
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "showPassword",
+ "value": false,
+ "type": "boolean"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "type": "text",
+ "value": "application/json",
+ "disabled": true
+ },
+ {
+ "key": "Accept-Encoding",
+ "type": "text",
+ "value": "gzip,deflate",
+ "disabled": true
+ },
+ {
+ "key": "Referer",
+ "type": "text",
+ "value": "http://84.39.39.116:30497/blueprint",
+ "disabled": true
+ },
+ {
+ "key": "Origin",
+ "type": "text",
+ "value": "http://84.39.39.116:30497",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"actionIdentifiers\": {\n \"mode\": \"sync\",\n \"blueprintName\": \"pnf_netconf\",\n \"blueprintVersion\": \"1.0.0\",\n \"actionName\": \"config-assign\"\n },\n \"payload\": {\n \"config-assign-request\": {\n \"template-prefix\": [\n \"pnf\", \"netconfrpc\"\n ],\n \"resolution-key\": \"day-2\",\n \"config-assign-properties\": {\n \"pnf-id\": \"abcd\",\n \"pnf-ipv4-address\": \"172.17.0.2\",\n \"netconf-password\": \"netconf\",\n \"netconf-username\": \"netconf\",\n \"netconf-server-port\": \"830\",\n \"stream-count\": 10\n }\n }\n },\n \"commonHeader\": {\n \"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n \"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n \"originatorId\": \"SDNC_DG\"\n }\n}",
+ "options": {
+ "formdata": {},
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "execution-service",
+ "process"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Config Assign Day-1 Deploy",
+ "request": {
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "username",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "password",
+ "value": "ccsdkapps",
+ "type": "string"
+ },
+ {
+ "key": "showPassword",
+ "value": false,
+ "type": "boolean"
+ }
+ ]
+ },
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "type": "text",
+ "value": "application/json",
+ "disabled": true
+ },
+ {
+ "key": "Accept-Encoding",
+ "type": "text",
+ "value": "gzip,deflate",
+ "disabled": true
+ },
+ {
+ "key": "Referer",
+ "type": "text",
+ "value": "http://84.39.39.116:30497/blueprint",
+ "disabled": true
+ },
+ {
+ "key": "Origin",
+ "type": "text",
+ "value": "http://84.39.39.116:30497",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n\t\"actionIdentifiers\": {\n\t\t\"mode\": \"sync\",\n\t\t\"blueprintName\": \"pnf_netconf\",\n\t\t\"blueprintVersion\": \"1.0.0\",\n\t\t\"actionName\": \"config-deploy\"\n\t},\n\t\"payload\": {\n\t\t\"config-deploy-request\": {\n\t\t\t\"resolution-key\": \"day-1\",\n\t\t\t\"config-deploy-properties\": {\n\t\t\t\t\"pnf-id\": \"abcd\",\n\t\t\t\t\"pnf-ipv4-address\": \"172.17.0.2\",\n\t\t\t\t\"netconf-password\": \"netconf\",\n\t\t\t\t\"netconf-username\": \"netconf\"\n\t\t\t}\n\t\t}\n\t}\n\n\t,\n\t\"commonHeader\": {\n\t\t\"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n\t\t\"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n\t\t\"originatorId\": \"SDNC_DG\"\n\t}\n}\n",
+ "options": {
+ "formdata": {},
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process",
+ "protocol": "http",
+ "host": [
+ "{{host}}"
+ ],
+ "port": "{{port}}",
+ "path": [
+ "api",
+ "v1",
+ "execution-service",
+ "process"
+ ]
+ }
+ },
+ "response": []
+ }
+ ],
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "id": "1d6b0502-1031-4cec-adec-6a02e2505fb2",
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "id": "a97568b2-3520-450b-89c0-c344945c40e4",
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ }
+ ],
+ "variable": [
+ {
+ "id": "f593c13c-9ebc-4b88-9622-a08889662808",
+ "key": "host",
+ "value": "localhost"
+ },
+ {
+ "id": "bcefbf57-f5df-41e3-be88-c3af5b76f916",
+ "key": "port",
+ "value": "8081"
+ }
+ ],
+ "protocolProfileBehavior": {}
+} \ No newline at end of file
diff --git a/docs/usecases/media/save-response-postman.png b/docs/usecases/media/save-response-postman.png
new file mode 100644
index 000000000..d46c0fe21
--- /dev/null
+++ b/docs/usecases/media/save-response-postman.png
Binary files differ
diff --git a/docs/usecases/pnf-simulator.rst b/docs/usecases/pnf-simulator.rst
new file mode 100644
index 000000000..61aa138a3
--- /dev/null
+++ b/docs/usecases/pnf-simulator.rst
@@ -0,0 +1,940 @@
+.. This work is a derivative of https://wiki.onap.org/display/DW/PNF+Simulator+Day-N+config-assign+and+config-deploy+use+case
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2020 Deutsche Telekom AG.
+
+PNF Simulator Day-N config-assign/deploy
+========================================
+
+Overview
+~~~~~~~~~~
+
+This use case shows in a very simple way how a blueprint model of a PNF is created in CDS and how the day-n configuration is
+assigned and deployed through CDS. A Netconf server (docker image `sysrepo/sysrepo-netopeer2`) is used for simulating the PNF.
+
+This use case (POC) solely requires a running CDS and the PNF Simulator running on a VM (Ubuntu is used by the author).
+No other module of ONAP is needed.
+
+There are different ways to run CDS, to run PNF simulator and to do configuration deployment. This guide will show
+different possible options to allow the greatest possible flexibility.
+
+Run CDS (Blueprint Processor)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+CDS can be run in Kubernetes (Minikube, Microk8s) or in an IDE. You can choose your favorite option.
+Just the blueprint processor of CDS is needed. If you have desktop access it is recommended to run CDS in an IDE since
+it is easy and enables debugging.
+
+* CDS in Microk8s: https://wiki.onap.org/display/DW/Running+CDS+on+Microk8s (RDT link to be added)
+* CDS in Minikube: https://wiki.onap.org/display/DW/Running+CDS+in+minikube (RDT link to be added)
+* CDS in an IDE: https://docs.onap.org/projects/onap-ccsdk-cds/en/latest/userguide/running-bp-processor-in-ide.html
+
+Run PNF Simulator and install module
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+There are many different ways to run a Netconf Server to simulate the PNF, in this guide `sysrepo/sysrepo-netopeer2`
+docker image is commonly used. The easiest way is to run the out-of-the-box docker container without any
+other configuration, modules or scripts. In the ONAP community there are other workflows existing for running the
+PNF Simulator. These workflows are also using `sysrepo/sysrepo-netopeer2` docker image. These workflow are also linked
+here but they are not tested by the author of this guide.
+
+.. tabs::
+
+ .. tab:: sysrepo/sysrepo-netopeer2 (latest)
+
+ .. warning::
+ Currently there is an issue for the SSH connection between CDS and the netconf server because of unmatching
+ exchange key algorhithms
+ (see `Stackoverflow <https://stackoverflow.com/questions/64047502/java-lang-illegalstateexception-unable-to-negotiate-key-exchange-for-server-hos>`_).
+ **Use legacy version (right tab) until the issue is resolved.**
+
+ Download and run docker container with ``docker run -d --name netopeer2 -p 830:830 -p 6513:6513 sysrepo/sysrepo-netopeer2:latest``
+
+ Enter the container with ``docker exec -it netopeer2 bin/bash``
+
+ Browse to the target location where all YANG modules exist: ``cd /etc/sysrepo/yang``
+
+ Create a simple mock YANG model for a packet generator (:file:`pg.yang`).
+
+ .. code-block:: sh
+ :caption: **pg.yang**
+
+ module sample-plugin {
+
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:sample-plugin";
+ prefix "sample-plugin";
+
+ description
+ "This YANG module defines the generic configuration and
+ operational data for sample-plugin in VPP";
+
+ revision "2016-09-18" {
+ description "Initial revision of sample-plugin model";
+ }
+
+ container sample-plugin {
+
+ uses sample-plugin-params;
+ description "Configuration data of sample-plugin in Honeycomb";
+
+ // READ
+ // curl -u admin:admin http://localhost:8181/restconf/config/sample-plugin:sample-plugin
+
+ // WRITE
+ // curl http://localhost:8181/restconf/operational/sample-plugin:sample-plugin
+
+ }
+
+ grouping sample-plugin-params {
+ container pg-streams {
+ list pg-stream {
+
+ key id;
+ leaf id {
+ type string;
+ }
+
+ leaf is-enabled {
+ type boolean;
+ }
+ }
+ }
+ }
+ }
+
+ Create the following sample XML data definition for the above model (:file:`pg-data.xml`).
+ Later on this will initialise one single PG stream.
+
+ .. code-block:: sh
+ :caption: **pg-data.xml**
+
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+
+ Execute the following command within netopeer docker container to install the pg.yang model
+
+ .. code-block:: sh
+
+ sysrepoctl -v3 -i pg.yang
+
+ .. note::
+ This command will just schedule the installation, it will be applied once the server is restarted.
+
+ Stop the container from outside with ``docker stop netopeer2`` and start it again with ``docker start netopeer2``
+
+ Enter the container like it's mentioned above with ``docker exec -it netopeer2 bin/bash``.
+
+ You can check all installed modules with ``sysrepoctl -l``. `sample-plugin` module should appear with ``I`` flag.
+
+ Execute the following the commands to initialise the Yang model with one pg-stream record.
+ We will be using CDS to perform the day-1 and day-2 configuration changes.
+
+ .. code-block:: sh
+
+ netopeer2-cli
+ > connect --host localhost --login root
+ # passwort is root
+ > get --filter-xpath /sample-plugin:*
+ # shows existing pg-stream records (empty)
+ > edit-config --target running --config=/etc/sysrepo/yang/pg-data.xml
+ # initialises Yang model with one pg-stream record
+ > get --filter-xpath /sample-plugin:*
+ # shows initialised pg-stream
+
+ If the output of the last command is like this, everything went successful:
+
+ .. code-block:: sh
+
+ DATA
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+
+
+ .. tab:: sysrepo/sysrepo-netopeer2 (legacy)
+
+ Download and run docker container with ``docker run -d --name netopeer2 -p 830:830 -p 6513:6513 sysrepo/sysrepo-netopeer2:legacy``
+
+ Enter the container with ``docker exec -it netopeer2 bin/bash``
+
+ Browse to the target location where all YANG modules exist: ``cd /opt/dev/sysrepo/yang``
+
+ Create a simple mock YANG model for a packet generator (:file:`pg.yang`).
+
+ .. code-block:: sh
+ :caption: **pg.yang**
+
+ module sample-plugin {
+
+ yang-version 1;
+ namespace "urn:opendaylight:params:xml:ns:yang:sample-plugin";
+ prefix "sample-plugin";
+
+ description
+ "This YANG module defines the generic configuration and
+ operational data for sample-plugin in VPP";
+
+ revision "2016-09-18" {
+ description "Initial revision of sample-plugin model";
+ }
+
+ container sample-plugin {
+
+ uses sample-plugin-params;
+ description "Configuration data of sample-plugin in Honeycomb";
+
+ // READ
+ // curl -u admin:admin http://localhost:8181/restconf/config/sample-plugin:sample-plugin
+
+ // WRITE
+ // curl http://localhost:8181/restconf/operational/sample-plugin:sample-plugin
+
+ }
+
+ grouping sample-plugin-params {
+ container pg-streams {
+ list pg-stream {
+
+ key id;
+ leaf id {
+ type string;
+ }
+
+ leaf is-enabled {
+ type boolean;
+ }
+ }
+ }
+ }
+ }
+
+ Create the following sample XML data definition for the above model (:file:`pg-data.xml`).
+ Later on this will initialise one single PG (packet-generator) stream.
+
+ .. code-block:: sh
+ :caption: **pg-data.xml**
+
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+
+ Execute the following command within netopeer docker container to install the pg.yang model
+
+ .. code-block:: sh
+
+ sysrepoctl -i -g pg.yang
+
+ You can check all installed modules with ``sysrepoctl -l``. `sample-plugin` module should appear with ``I`` flag.
+
+ In legacy version of `sysrepo/sysrepo-netopeer2` subscribers of a module are required, otherwise they are not
+ running and configurations changes are not accepted, see https://github.com/sysrepo/sysrepo/issues/1395. There is
+ an predefined application mock up which can be used for that. The usage is described
+ here: https://asciinema.org/a/160247. You need to run the following
+ commands to start the example application for subscribing to our sample-plugin YANG module.
+
+ .. code-block:: sh
+
+ cd /opt/dev/sysrepo/build/examples
+ ./application_example sample-plugin
+
+ Following output should appear:
+
+ .. code-block:: sh
+
+ ========== READING STARTUP CONFIG sample-plugin: ==========
+
+ /sample-plugin:sample-plugin (container)
+ /sample-plugin:sample-plugin/pg-streams (container)
+
+
+ ========== STARTUP CONFIG sample-plugin APPLIED AS RUNNING ==========
+
+
+ The terminal session needs to be kept open after application has started.
+
+ Open a new terminal and enter the container with ``docker exec -it netopeer2 bin/bash``.
+ Execute the following commands in the container to initialise the Yang model with one pg-stream record.
+ We will be using CDS to perform the day-1 configuration and day-2 configuration changes.
+
+ .. code-block:: sh
+
+ netopeer2-cli
+ > connect --host localhost --login netconf
+ # passwort is netconf
+ > get --filter-xpath /sample-plugin:*
+ # shows existing pg-stream records (empty)
+ > edit-config --target running --config=/opt/dev/sysrepo/yang/pg-data.xml
+ # initialises Yang model with one pg-stream record
+ > get --filter-xpath /sample-plugin:*
+ # shows initialised pg-stream
+
+ If the output of the last command is like this, everything went successful:
+
+ .. code-block:: sh
+
+ DATA
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+
+ You can also see that there are additional logs in the subscriber application after editing the configuration of our
+ YANG module.
+
+ .. tab:: PNF simulator integration project
+
+ .. warning::
+ This method of setting up the PNF simulator is not tested by the author of this guide
+
+ You can refer to `PnP PNF Simulator wiki page <https://wiki.onap.org/display/DW/PnP+PNF+Simulator>`_
+ to clone the GIT repo and start the required docker containers. We are interested in the
+ `sysrepo/sysrepo-netopeer2` docker container to load a simple YANG similar to vFW Packet Generator.
+
+ Start PNF simulator docker containers. You can consider changing the netopeer image verion to image:
+ `sysrepo/sysrepo-netopeer2:iop` in docker-compose.yml file If you find any issues with the default image.
+
+ .. code-block:: sh
+
+ cd $HOME
+
+ git clone https://github.com/onap/integration.git
+
+ Start PNF simulator
+
+ cd ~/integration/test/mocks/pnfsimulator
+
+ ./simulator.sh start
+
+ Verify that you have netopeer docker container are up and running. It will be mapped to host port 830.
+
+ .. code-block:: sh
+
+ docker ps -a | grep netopeer
+
+
+Config-assign and config-deploy in CDS
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In the following steps the CBA is published in CDS, config-assignment is done and the config is deployed to to the
+Netconf server through CDS in the last step. We will use this CBA: :download:`zip <media/pnf-simulator-demo-cba.zip>`.
+If you want to use scripts instead of Postman the CBA also contains all necessary scripts.
+
+.. tabs::
+
+ .. tab:: Scripts
+
+ **There will be different scripts depending on your CDS installation. For running it in an IDE always use scripts with**
+ **-ide.sh prefix. For running CDS in Kubernetes use scripts with -k8s.sh ending. In scripts with -ide.sh prefix**
+ **host will be localhost and port will be 8081. For K8s host ip adress gets automatically detected, port is 8000.**
+
+ **Set up CDS:**
+
+ Unzip the downloaded CBA and go to ``/Scripts/`` directory.
+
+ The below script will call Bootstrap API of CDS which loads the CDS default model artifacts into CDS DB.
+ You should get HTTP status 200 for the below command.
+
+ .. code-block:: sh
+
+ bash -x ./bootstrap-cds-ide.sh
+ # bash -x ./bootstrap-cds-k8s.sh
+
+ Call ``bash -x ./get-cds-blueprint-models-ide.sh`` / ``bash -x ./get-cds-blueprint-models-k8s.sh`` to get all blueprint models in the CDS database.
+ You will see a default model ``"artifactName": "vFW-CDS"`` which was loaded by calling bootstrap.
+
+ Push the PNF CDS blueprint model data dictionary to CDS by calling ``bash -x ./dd-microk8s-ide.sh ./dd.json`` /
+ ``bash -x ./dd-microk8s-k8s.sh ./dd.json``.
+ This will call the data dictionary endpoint of CDS.
+
+ Check CDS database for PNF data dictionaries by entering the DB. You should see 6 rows as shown below.
+
+ **For running CDS in an IDE (accessing mariadb container):**
+
+ .. code-block:: sh
+
+ sudo docker exec -it mariadb_container_id mysql -uroot -psdnctl
+ > USE sdnctl;
+ > select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>';
+
+ +---------------------+-----------+
+ | name | data_type |
+ +---------------------+-----------+
+ | netconf-password | string |
+ | netconf-server-port | string |
+ | netconf-username | string |
+ | pnf-id | string |
+ | pnf-ipv4-address | string |
+ | stream-count | integer |
+ +---------------------+-----------+
+
+ quit
+
+ Replace the container id with your running mariadb container id.
+
+
+ **For running CDS in K8s (accessing MariaDB pod):**
+
+ .. code-block:: sh
+
+ ./connect-cds-mariadb-k8s.sh
+
+ select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>';
+
+ +---------------------+-----------+
+ | name | data_type |
+ +---------------------+-----------+
+ | netconf-password | string |
+ | netconf-server-port | string |
+ | netconf-username | string |
+ | pnf-id | string |
+ | pnf-ipv4-address | string |
+ | stream-count | integer |
+ +---------------------+-----------+
+
+ quit
+
+ **Enrichment:**
+
+ Move to the main folder of the CBA with ``cd ..`` and archive all folders with ``zip -r pnf-demo.zip *``.
+
+ .. warning::
+ The provided CBA is already enriched, the following step anyhow will enrich the CBA again to show the full workflow.
+ For Frankfurt release this causes an issue when the configuration is deployed later on. This happens because some parameters
+ get deleted when enrichment is done a second time. Skip the next step until Deploy/Save Blueprint if you use
+ Frankfurt release and use the CBA as it is. In future this step should be fixed and executed based on an unenriched CBA.
+
+ Enrich the blueprint through calling the following script. Take care to provide the zip file you downloader earlier.
+
+ .. code-block:: sh
+
+ cd Scripts
+ bash -x ./enrich-and-download-cds-blueprint-ide.sh ../pnf-demo.zip
+ # bash -x ./enrich-and-download-cds-blueprint-k8s.sh ../pnf-demo.zip
+
+ Go to the enriched CBA folder with ``cd /tmp/CBA/`` and unzip with ``unzip pnf-demo.zip``.
+
+ **Deploy/Save the Blueprint into CDS database**
+
+ Go to Scripts folder with ``cd Scripts``.
+
+ Run the following script to save/deploy the Blueprint into the CDS database.
+
+ .. code-block:: sh
+
+ bash -x ./save-enriched-blueprint-ide.sh ../pnf-demo.zip
+ # bash -x ./save-enriched-blueprint-k8s.sh ../pnf-demo.zip
+
+ After that you should see the new model "artifactName": "pnf_netconf" by calling ``bash -x ./get-cds-blueprint-models.sh``
+
+ **Config-Assign**
+
+ The assumption is that we are using the same host to run PNF NETCONF simulator as well as CDS. You will need the
+ IP Adress of the Netconf server container which can be found out with
+ ``docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' netopeer2``. In the
+ following examples we will use 172.17.0.2.
+
+ Day-1 configuration:
+
+ .. code-block:: sh
+
+ bash -x ./create-config-assing-data-ide.sh day-1 172.17.0.2 5
+ # bash -x ./create-config-assing-data-k8s.sh day-1 172.17.0.2 5
+
+ You can verify the day-1 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 5
+ streams (fw_udp_1 TO fw_udp_5). Connect to the DB like mentioned above and run the below statement. You should
+ see the day-1 configuration as an output.
+
+ .. code-block:: sh
+
+ MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-1' AND artifact_name='netconfrpc';
+
+ <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
+ <edit-config>
+ <target>
+ <running/>
+ </target>
+ <config>
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ </config>
+ </edit-config>
+ </rpc>
+
+ Create PNF configuration for resolution-key = day-2 (stream-count = 10).
+ You can verify the CURL command JSON pay load file /tmp/day-n-pnf-config.json
+
+ .. code-block:: sh
+
+ bash -x ./create-config-assing-data-ide.sh day-2 172.17.0.2 10
+ # bash -x ./create-config-assing-data-k8s.sh day-2 172.17.0.2 10
+
+ You can verify the day-2 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 10
+ streams (fw_udp_1 TO fw_udp_10). Connect to the DB like mentioned above and run the below statement. You should
+ see the day-2 configuration as an output.
+
+ .. code-block:: sh
+
+ MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-2' AND artifact_name='netconfrpc';
+
+ <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
+ <edit-config>
+ <target>
+ <running/>
+ </target>
+ <config>
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_6</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_7</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_8</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_9</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_10</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ </config>
+ </edit-config>
+ </rpc>
+
+ .. note::
+ Until this step CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2
+ configurations and stored it in CDS database
+
+ **Config-Deploy:**
+
+ Now we will make the CDS REST API calls to push the day-1 and day-2 configuration changes to the PNF simulator.
+
+ If you run CDS in Kubernetes open a new terminal and keep it running with ``bash -x ./tail-cds-bp-log.sh``,
+ we can use this to review the config-deploy actions. If you run CDS in an IDE you can have a look into the IDE terminal.
+
+ Following command will deploy day-1 configuration.
+ Syntax is ``# bash -x ./process-config-deploy.sh RESOLUTION_KEY PNF_IP_ADDRESS``
+
+ .. code-block:: sh
+
+ bash -x ./process-config-deploy-ide.sh day-1 127.17.0.2
+ # bash -x ./process-config-deploy-k8s.sh day-1 127.17.0.2
+
+ Go back to PNF netopeer cli console like mentioned above and verify if you can see 5 streams fw_udp_1 to fw_udp_5 enabled. If the 5 streams
+ appear in the output as follows, the day-1 configuration got successfully deployed and the use case is successfully done.
+
+ .. code-block:: sh
+
+ > get --filter-xpath /sample-plugin:*
+ DATA
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ >
+
+ The same can be done for day-2 config (follow same steps just with day-2 configuration).
+
+ .. note::
+ Through deployment we did not deploy the PNF, we just modified the PNF. The PNF could also be installed by CDS
+ but this is not targeted in this guide.
+
+ .. tab:: Postman
+
+ Download the Postman collection :download:`json <media/pnf-simulator.postman_collection.json>` and import it into
+ your Postman application. Set the collection variables `ip adress` and `port` depending on your CDS installation.
+ This can be done by right clicking the collection, click `edit` and then go to variables.
+ For running CDS in an IDE host should be localhost and port should be 8081. If you run CDS in Kubernetes you can find
+ out ip adress and port number of CDS blueprint processor by executing following command:
+
+ .. code-block:: bash
+
+ kubectl get svc -n onap | grep 'cds-blueprints-processor-http'
+
+ cds-blueprints-processor-http ClusterIP 10.152.183.211 <none> 8080/TCP 3h19m
+
+ **Set up CDS:**
+
+ First run `Bootstrap` request which will call Bootstrap API of CDS. This loads the CDS default model artifacts into CDS DB.
+ You should get HTTP status 200 as a response.
+
+ You can execute `Get Blueprints` to get all blueprint models in the CDS database. You will see a default
+ model "artifactName": "vFW-CDS" in the response body which was loaded by calling bootstrap.
+
+ Push the PNF CDS blueprint model data dictionary to CDS with `Data Dictionary` request. Request body contains the
+ data from ``dd.json`` of the CBA. This will call the data dictionary endpoint of CDS.
+
+ .. note::
+ For every data dictionary entry CDS API needs to be called seperately. The postman collection contains a loop to
+ go through all entries of :file:`dd.json` and call data dictionary endpoint seperately. To execute this loop,
+ open `Runner` in Postman and run `Data Dictionary` request like it is shown in the picture below.
+
+ |imageDDPostmanRunner|
+
+ Check CDS database for PNF data dictionaries by entering the DB in a terminal. You should see 6 rows as shown below.
+
+ For running CDS in an IDE (accessing mariadb container):
+
+ .. code-block:: sh
+
+ sudo docker exec -it mariadb_container_id mysql -uroot -psdnctl
+ > USE sdnctl;
+ > select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>';
+
+ +---------------------+-----------+
+ | name | data_type |
+ +---------------------+-----------+
+ | netconf-password | string |
+ | netconf-server-port | string |
+ | netconf-username | string |
+ | pnf-id | string |
+ | pnf-ipv4-address | string |
+ | stream-count | integer |
+ +---------------------+-----------+
+
+ Replace the container id with your running mariadb container id.
+
+
+ For running CDS in K8s (accessing MariaDB pod):
+
+ Open a terminal and go to ``/Scripts`` directory of your CBA.
+
+ .. code-block:: sh
+
+ ./connect-cds-mariadb-k8s.sh
+
+ select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>';
+
+ +---------------------+-----------+
+ | name | data_type |
+ +---------------------+-----------+
+ | netconf-password | string |
+ | netconf-server-port | string |
+ | netconf-username | string |
+ | pnf-id | string |
+ | pnf-ipv4-address | string |
+ | stream-count | integer |
+ +---------------------+-----------+
+
+
+ **Enrichment:**
+
+ .. warning::
+ The provided CBA is already enriched, the following steps anyhow will enrich the CBA again to show the full workflow.
+ For Frankfurt release this causes an issue when the configuration is deployed later on. This happens because some parameters
+ get deleted when enrichment is done a second time. Skip the next steps until Deploy/Save Blueprint if you use
+ Frankfurt release and use the CBA as it is. In future this step should be fixed and executed based on an unenriched CBA.
+
+ Enrich the blueprint through executing the `Enrich Blueprint` request. Take care to provide the CBA file which you
+ downloaded earlier in the request body. After the request got executed save the response body, this will be the
+ enriched CBA file.
+
+ |saveResponseImage|
+
+
+ **Deploy/Save the Blueprint into CDS database**
+
+ Run `Save Blueprint` request to save/deploy the Blueprint into the CDS database. Take care to provide the enriched
+ CBA file in the request body.
+
+ After that you should see the new model "artifactName": "pnf_netconf" by calling `Get Blueprints` request.
+
+ **Config-Assign**
+
+ The assumption is that we are using the same host to run PNF NETCONF simulator as well as CDS. You will need the
+ IP Adress of the Netconf server container which can be found out in terminal with
+ ``docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' netopeer2``. In the provided
+ postman collection 172.17.0.2 is set as default.
+
+ For creating the day-n config we are using the template file ``day-n-pnf-config.template`` in the folder
+ ``Scripts/templates`` of the CBA. ``CONFIG_NAME``, ``PNF_IP_ADDRESS`` and ``STREAM_COUNT`` are replaced with specific values.
+
+ Day-1 configuration:
+
+ Execute the request `Create Config Assign Day-1`. Replace the values in the reqest body if needed.
+
+ You can verify the day-1 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 5
+ streams (fw_udp_1 TO fw_udp_5). Connect to the DB like mentioned above and run the below statement. You should
+ see the day-1 configuration as an output.
+
+ .. code-block:: sh
+
+ MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-1' AND artifact_name='netconfrpc';
+
+ <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
+ <edit-config>
+ <target>
+ <running/>
+ </target>
+ <config>
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ </config>
+ </edit-config>
+ </rpc>
+
+
+ **Day-2 configuration:**
+
+ Execute the request `Create Config Assign Day-2`. It will do the same request like in day-1-config just with
+ different values (resolution-key = day-2, stream-count = 10).
+
+ You can verify the day-2 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 10
+ streams (fw_udp_1 TO fw_udp_10). Connect to the DB like mentioned above and run the below statement. You should
+ see the day-2 configuration as an output.
+
+ .. code-block:: sh
+
+ MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-2' AND artifact_name='netconfrpc';
+
+ <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1">
+ <edit-config>
+ <target>
+ <running/>
+ </target>
+ <config>
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_6</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_7</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_8</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_9</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_10</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ </config>
+ </edit-config>
+ </rpc>
+
+ .. note::
+ Until this step CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2
+ configurations and stored it in CDS database
+
+ **Config-Deploy:**
+
+ Now we will make the CDS REST API calls to push the day-1 and day-2 configuration changes to the PNF simulator.
+
+ If you run CDS in Kubernetes open a terminal in `/Scripts` folder and keep it running with ``bash -x ./tail-cds-bp-log.sh``,
+ we can use this to review the config-deploy actions. If you run CDS in an IDE you can have a look into the IDE terminal.
+
+ Executing `Config Assign Day-1 Deploy` request will deploy day-1 configuration. Take care to provide the right PNF
+ IP Adress in the request body.
+
+ Go back to PNF netopeer cli console like mentioned above and verify if you can see 5 streams fw_udp_1 to fw_udp_5 enabled. If the 5 streams
+ appear in the output as follows, the day-1 configuration got successfully deployed and the use case is successfully done.
+
+ .. code-block:: sh
+
+ > get --filter-xpath /sample-plugin:*
+ DATA
+ <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin">
+ <pg-streams>
+ <pg-stream>
+ <id>1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_1</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_2</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_3</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_4</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ <pg-stream>
+ <id>fw_udp_5</id>
+ <is-enabled>true</is-enabled>
+ </pg-stream>
+ </pg-streams>
+ </sample-plugin>
+ >
+
+ Day-2 configuration can be deployed the same way, just use `day-2` as a resolution key in the `Config Assign Depoy`
+ request.
+
+ .. note::
+ Through deployment we did not deploy the PNF, we just modified the PNF. The PNF could also be installed by CDS
+ but this is not targeted in this guide.
+
+
+.. warning::
+ Both CBA file and Postman collection should be integrated into source code of CDS. There is already an approach for that,
+ see https://gerrit.onap.org/r/c/ccsdk/cds/+/112288. Updated Scripts and Postman collection needs to be added to this change.
+
+
+Creators of this guide
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Deutsche Telekom AG
+
+Jakob Krieg (Rocketchat @jakob.Krieg); Eli Halych (Rocketchat @elihalych)
+
+This guide is a derivate from https://wiki.onap.org/display/DW/PNF+Simulator+Day-N+config-assign+and+config-deploy+use+case.
+
+
+.. |saveResponseImage| image:: media/save-response-postman.png
+ :width: 500pt
+
+.. |imageDDPostmanRunner| image:: media/dd-postman-runner.png
+ :width: 500pt \ No newline at end of file
diff --git a/docs/usecases/use-cases.rst b/docs/usecases/use-cases.rst
new file mode 100644
index 000000000..d1449b70f
--- /dev/null
+++ b/docs/usecases/use-cases.rst
@@ -0,0 +1,13 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2020 Deutsche Telekom AG.
+
+Use Cases
+=========
+
+.. toctree::
+ :caption: Table of Contents
+ :maxdepth: 1
+
+ wordpress-cnf-poc
+ pnf-simulator \ No newline at end of file
diff --git a/docs/usecases/wordpress-cnf-poc.rst b/docs/usecases/wordpress-cnf-poc.rst
new file mode 100644
index 000000000..31e0a509d
--- /dev/null
+++ b/docs/usecases/wordpress-cnf-poc.rst
@@ -0,0 +1,28 @@
+.. This work is licensed under a Creative Commons Attribution 4.0
+.. International License. http://creativecommons.org/licenses/by/4.0
+.. Copyright (C) 2020 Deutsche Telekom AG.
+
+Wordpress CNF in CDS (POC)
+==========================
+
+This demo by CableLabs shows an easy to use POC how to use/deploy VNFs in CDS and do resource asignment.
+
+Detailed description will follow as soon as there is an acknowledgement from CableLabs that content can be published.
+
+Goal is to use CDS (ONAP) in a very simple and understandable way. Azure, AWS
+and Kubernetes are used as VIMs trough scripting. Wordpress is used as a VNF.
+
+This demo was tested on Frankfurt.
+
+Presentation of Gerald Karam (2020-09-08)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. raw:: html
+
+ <!-- original size of video is 1920x1080-->
+ <div style="position: relative; max-width: 100%; height: auto;">
+ <iframe width="800" height="450" src="https://www.youtube.com/embed/mgMpI_irp4I" frameborder="0"
+ allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
+ </div>
+
+| \ No newline at end of file
diff --git a/docs/designtime.rst b/docs/userguide/designtime.rst
index 250640b8c..805cfa89c 100644
--- a/docs/designtime.rst
+++ b/docs/userguide/designtime.rst
@@ -2,8 +2,8 @@
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2019 IBM.
-Design Time User Guide
-======================
+Design Time Tools Guide
+=======================
Below are the requirements to enable automation for a service within ONAP.
@@ -43,8 +43,8 @@ Services:
---------
.. toctree::
- :maxdepth: 1
-
- CBA/index
- datadictionary/index
+ :maxdepth: 2
+
+ ../cba/index
+ ../resourcedefinition/index
resourceassignment
diff --git a/docs/developerguide/developer-guide.rst b/docs/userguide/developer-guide.rst
index 3f8112244..3f8112244 100644
--- a/docs/developerguide/developer-guide.rst
+++ b/docs/userguide/developer-guide.rst
diff --git a/docs/installation.rst b/docs/userguide/installation.rst
index 6d3f0695c..10997294c 100644
--- a/docs/installation.rst
+++ b/docs/userguide/installation.rst
@@ -3,8 +3,8 @@
.. Copyright (C) 2019 IBM.
-User Guide
-==========
+Installation Guide
+==================
Installation
------------
@@ -46,31 +46,35 @@ Result
.. code-block:: bash
:linenos:
-
+
$ kubectl get all --selector=release=cds
NAME READY STATUS RESTARTS AGE
pod/cds-blueprints-processor-54f758d69f-p98c2 0/1 Running 1 2m
pod/cds-cds-6bd674dc77-4gtdf 1/1 Running 0 2m
pod/cds-cds-db-0 1/1 Running 0 2m
pod/cds-controller-blueprints-545bbf98cf-zwjfc 1/1 Running 0 2m
+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/blueprints-processor ClusterIP 10.43.139.9 <none> 8080/TCP,9111/TCP 2m
service/cds NodePort 10.43.254.69 <none> 3000:30397/TCP 2m
service/cds-db ClusterIP None <none> 3306/TCP 2m
service/controller-blueprints ClusterIP 10.43.207.152 <none> 8080/TCP 2m
+
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/cds-blueprints-processor 1 1 1 0 2m
deployment.apps/cds-cds 1 1 1 1 2m
deployment.apps/cds-controller-blueprints 1 1 1 1 2m
+
NAME DESIRED CURRENT READY AGE
replicaset.apps/cds-blueprints-processor-54f758d69f 1 1 0 2m
replicaset.apps/cds-cds-6bd674dc77 1 1 1 2m
replicaset.apps/cds-controller-blueprints-545bbf98cf 1 1 1 2m
+
NAME DESIRED CURRENT AGE
statefulset.apps/cds-cds-db 1 1 2m
-
-
-
+
+
+
Running CDS UI:
---------------
@@ -78,8 +82,7 @@ Client:
~~~~~~~
Install Node.js and angularCLI. Refer https://angular.io/guide/quickstart
npm install in the directory cds/cds-ui/client
-npm run build - to build UI module
-
+npm run build - to build UI module
Loopback Server:
~~~~~~~~~~~~~~~~
diff --git a/docs/developerguide/media/build_logs.png b/docs/userguide/media/build_logs.png
index 558fd60a8..558fd60a8 100644
--- a/docs/developerguide/media/build_logs.png
+++ b/docs/userguide/media/build_logs.png
Binary files differ
diff --git a/docs/developerguide/media/create_run_config_java.png b/docs/userguide/media/create_run_config_java.png
index 5d006e2ac..5d006e2ac 100644
--- a/docs/developerguide/media/create_run_config_java.png
+++ b/docs/userguide/media/create_run_config_java.png
Binary files differ
diff --git a/docs/developerguide/media/create_run_config_kt.png b/docs/userguide/media/create_run_config_kt.png
index 6f86a7e3a..6f86a7e3a 100644
--- a/docs/developerguide/media/create_run_config_kt.png
+++ b/docs/userguide/media/create_run_config_kt.png
Binary files differ
diff --git a/docs/developerguide/media/expand_vm_options.PNG b/docs/userguide/media/expand_vm_options.PNG
index 9cb98d3f9..9cb98d3f9 100644
--- a/docs/developerguide/media/expand_vm_options.PNG
+++ b/docs/userguide/media/expand_vm_options.PNG
Binary files differ
diff --git a/docs/developerguide/media/import_project.png b/docs/userguide/media/import_project.png
index 06b36c53d..06b36c53d 100644
--- a/docs/developerguide/media/import_project.png
+++ b/docs/userguide/media/import_project.png
Binary files differ
diff --git a/docs/developerguide/media/reimport_maven.png b/docs/userguide/media/reimport_maven.png
index bc49b3dc8..bc49b3dc8 100644
--- a/docs/developerguide/media/reimport_maven.png
+++ b/docs/userguide/media/reimport_maven.png
Binary files differ
diff --git a/docs/developerguide/media/run_config_java.png b/docs/userguide/media/run_config_java.png
index 4da5d7f34..4da5d7f34 100644
--- a/docs/developerguide/media/run_config_java.png
+++ b/docs/userguide/media/run_config_java.png
Binary files differ
diff --git a/docs/developerguide/media/run_config_kt.png b/docs/userguide/media/run_config_kt.png
index 4e88d2d0a..4e88d2d0a 100644
--- a/docs/developerguide/media/run_config_kt.png
+++ b/docs/userguide/media/run_config_kt.png
Binary files differ
diff --git a/docs/developerguide/media/run_debug.png b/docs/userguide/media/run_debug.png
index 3aa90577f..3aa90577f 100644
--- a/docs/developerguide/media/run_debug.png
+++ b/docs/userguide/media/run_debug.png
Binary files differ
diff --git a/docs/developerguide/media/vsc_logs.png b/docs/userguide/media/vsc_logs.png
index 886d1b3c5..886d1b3c5 100644
--- a/docs/developerguide/media/vsc_logs.png
+++ b/docs/userguide/media/vsc_logs.png
Binary files differ
diff --git a/docs/resourceassignment.rst b/docs/userguide/resourceassignment.rst
index f4fab4ee3..aa4f6b559 100644
--- a/docs/resourceassignment.rst
+++ b/docs/userguide/resourceassignment.rst
@@ -2,23 +2,23 @@
.. http://creativecommons.org/licenses/by/4.0
.. Copyright (C) 2019 IBM.
-Resource Assignment
--------------------
+Resource Assignment
+===================
.. toctree::
:maxdepth: 1
-
-
+
+
Component executor:
-===================
+-------------------
Workflow:
-=========
+~~~~~~~~~
A workflow defines an overall action to be taken for the service; it can be composed of a set of sub-actions to execute. Currently, workflows are backed by Directed Graph engine.
A CBA can have as many workflow as needed.
Template:
-=========
+~~~~~~~~~
A template is an artifact.
@@ -34,7 +34,7 @@ ${artifact-prefix}-mapping
A template can represent anything, such as device config, payload to interact with 3rd party systems, resource-accumulator template, etc...
Mapping:
-========
+~~~~~~~~
Defines the contract of each resource to be resolved. Each placeholder in the template must have a corresponding mapping definition.
A mapping is comprised of:
@@ -46,13 +46,14 @@ A mapping is comprised of:
- dictionary-source
Dependencies:
-=============
+~~~~~~~~~~~~~
This allows to make sure given resources get resolved prior the resolution of the resources defining the dependency.
The dictionary fields reference to a specific data dictionary.
+
Resource accumulator:
-=====================
+---------------------
In order to resolve HEAT environment variables, resource accumulator templates are being in used for Dublin.
diff --git a/docs/developerguide/running-bp-processor-in-ide.rst b/docs/userguide/running-bp-processor-in-ide.rst
index 83554e2c7..d27b9906a 100644
--- a/docs/developerguide/running-bp-processor-in-ide.rst
+++ b/docs/userguide/running-bp-processor-in-ide.rst
@@ -12,7 +12,6 @@ Objective
Have the blueprint processor running locally is to use the IDE to run the code, while having the database running in a container.
This way, code changes can be conveniently tested and debugged.
-
Check out the code
~~~~~~~~~~~~~~~~~~~
@@ -25,7 +24,7 @@ In the checked out directory, type
.. code-block:: bash
- mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none
+ mvn clean install -Pq -Dadditionalparam=-Xdoclint:none
Spin up a Docker container with the database
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -44,25 +43,13 @@ Navigate to the docker-compose file in the distribution module:
.. tabs::
- .. group-tab:: Latest
-
- .. code-block:: bash
-
- cd ms/blueprintsprocessor/application/src/main/dc
-
- .. group-tab:: Frankfurt
+ .. group-tab:: Frankfurt - Latest
.. code-block:: bash
cd ms/blueprintsprocessor/application/src/main/dc
- .. group-tab:: El Alto
-
- .. code-block:: bash
-
- ms/blueprintsprocessor/distribution/src/main/dc
-
- .. group-tab:: Dublin
+ .. group-tab:: El Alto - Dublin
.. code-block:: bash
@@ -90,7 +77,6 @@ it can be started again by the command:
docker start <id of mariadb container>
-
Set permissions on the local file system
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -121,7 +107,6 @@ Import the project into the IDE
|imageReimportMaven|
-
**Override some application properties:**
After the project is compiled, a Run Configuration profile overriding some application properties
@@ -129,35 +114,7 @@ Import the project into the IDE
.. tabs::
- .. group-tab:: Latest
-
- Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class:
-
- ``ms/blueprintsprocessor/application/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.kt``.
-
- Right-click inside it, at any point, to load the context menu and select create
- BlueprintProcessorApplication configuration from context:
-
- |imageCreateRunConfigkt|
-
- **The following window will open:**
-
- |imageRunConfigKt|
-
- **Add the following in the field `VM Options`:**
-
- .. code-block:: bash
- :caption: **Custom values for properties**
-
- -Dspring.profiles.active=dev
-
- You can override any value from **application-dev.properties** file here. Use the following pattern:
-
- .. code-block:: java
-
- -D<application-dev.properties key>=<application-dev.properties value>
-
- .. group-tab:: Frankfurt
+ .. group-tab:: Frankfurt - Latest
Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class:
@@ -276,7 +233,7 @@ Import the project into the IDE
-Dserver.port=55555
- **Browse Working Directory to your application path** ``.../cds/ms/blueprintsprocessor/application``
+ **Browse Working Directory to your application path** ``.../cds/ms/blueprintsprocessor/application``
**if path is not already specified correctly.**
**Add/replace the following in Blueprint's application-dev.properties file:**
@@ -303,7 +260,7 @@ Import the project into the IDE
.. tabs::
- .. group-tab:: Latest
+ .. group-tab:: Frankfurt - Latest
* **Step #1** - Make sure your installation of Visual Studio Code is up to date. This guide was writen using version 1.48
* **Step #2** - Install `Kotlin extension from the Visual Studio Code Marketplace <https://marketplace.visualstudio.com/items?itemName=fwcd.kotlin>`_
@@ -317,11 +274,11 @@ Import the project into the IDE
.. code-block:: json
{
- "type": "kotlin",
- "request": "launch",
- "name": "Blueprint Processor",
- "projectRoot": "${workspaceFolder}/ms/blueprintsprocessor/application",
- "mainClass": "-Dspring.profiles.active=dev org.onap.ccsdk.cds.blueprintsprocessor.BlueprintProcessorApplicationKt"
+ "type": "kotlin",
+ "request": "launch",
+ "name": "Blueprint Processor",
+ "projectRoot": "${workspaceFolder}/ms/blueprintsprocessor/application",
+ "mainClass": "-Dspring.profiles.active=dev org.onap.ccsdk.cds.blueprintsprocessor.BlueprintProcessorApplicationKt"
}
.. warning:: The `projectRoot` path assumes that you created your Workspace in the main CDS repository folder. If not - please change the path accordingly
@@ -376,7 +333,7 @@ Import the project into the IDE
Testing the application
-~~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~
There are two main features of the Blueprints Processor that can be of interest of a developer:
blueprint publish and blueprint process.
@@ -390,8 +347,9 @@ them is present on https://www.getpostman.com/collections/b99863b0cde7565a32fc.
A detailed description of the usage of different APIs of CDS will follow.
+
Possible Fixes
-~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~
Imported packages or annotiations are not found, Run Config not available?
*****************************************************************************
@@ -401,49 +359,45 @@ Imported packages or annotiations are not found, Run Config not available?
3. Maven reimport in IDE
Compilation error?
-********************
+*******************
-* Change Java Version to 11 or 8
+* Change Java Version to 11
.. image alignment inside tabs doesn't work
.. |imageRunConfigJava| image:: media/run_config_java.png
- :scale: 75 %
+ :width: 500pt
:align: middle
.. |imageRunConfigKt| image:: media/run_config_kt.png
- :scale: 75 %
+ :width: 500pt
:align: middle
.. |imageCreateRunConfigJava| image:: media/create_run_config_java.png
- :scale: 75 %
+ :width: 500pt
:align: middle
.. |imageCreateRunConfigKt| image:: media/create_run_config_kt.png
- :scale: 75 %
+ :width: 500pt
:align: middle
.. |imageImportProject| image:: media/import_project.png
- :scale: 75 %
+ :width: 300pt
:align: middle
.. |imageReimportMaven| image:: media/reimport_maven.png
- :scale: 75 %
- :align: middle
-
-.. |imageRunDebug| image:: media/run_debug.png
- :scale: 75 %
+ :width: 400pt
:align: middle
.. |imageRunDebug| image:: media/run_debug.png
+ :width: 500pt
:align: middle
- :scale: 75 %
.. |imageBuildLogs| image:: media/build_logs.png
+ :width: 500pt
:align: middle
- :scale: 75 %
.. |imageLogsVSC| image:: media/vsc_logs.png
+ :width: 500pt
:align: middle
- :scale: 75 % \ No newline at end of file