From f1aafc40ad8f15b61faa3631e5a56fcf7c34bf49 Mon Sep 17 00:00:00 2001 From: "Singal, Kapil (ks220y)" Date: Thu, 24 Sep 2020 12:47:56 -0400 Subject: Refactoring Docs Issue-ID: CCSDK-2846 Signed-off-by: Singal, Kapil (ks220y) Change-Id: I34e469deb914fc4e452159a2c3419270f8eb97bc --- docs/CBA/index.rst | 72 ++- docs/CBA/media/CDS_Architecture.jpg | Bin 0 -> 290332 bytes docs/CBA/media/CDS_Data_Flow.jpg | Bin 0 -> 321865 bytes docs/CBA/media/CDS_architecture.jpg | Bin 102560 -> 0 bytes docs/CBA/media/Functional_Decomposition.jpg | Bin 0 -> 209297 bytes docs/CBA/media/image0.PNG | Bin 93418 -> 0 bytes docs/CBA/media/image0.jpg | Bin 150033 -> 0 bytes docs/CBA/media/image1.PNG | Bin 111684 -> 0 bytes docs/CBA/media/image1.jpg | Bin 167601 -> 0 bytes docs/CBA/media/image2.PNG | Bin 77925 -> 0 bytes docs/CBA/media/image2.jpg | Bin 114351 -> 0 bytes docs/CDS_Architecture_Design.pptx | Bin 1004974 -> 0 bytes docs/CDS_Designer_Guide.rst | 413 ------------ docs/datadictionary/complexResponse.rst | 23 - docs/datadictionary/create_netbox_ip_address.rst | 38 -- docs/datadictionary/dbsystemcode.rst | 19 - docs/datadictionary/dt-netbox-ip.rst | 25 - docs/datadictionary/index.rst | 70 --- docs/datadictionary/media/capabilitytable.JPG | Bin 57448 -> 0 bytes docs/datadictionary/media/mandatory.JPG | Bin 48105 -> 0 bytes docs/datadictionary/media/optional.JPG | Bin 79730 -> 0 bytes docs/datadictionary/media/resttable.JPG | Bin 79877 -> 0 bytes docs/datadictionary/media/sqltable.JPG | Bin 36259 -> 0 bytes docs/datadictionary/resourcedefinitioncodesnip.rst | 51 -- docs/datadictionary/resourcesource.rst | 155 ----- docs/datadictionary/restauth.rst | 60 -- docs/datadictionary/restsourcecode.rst | 92 --- docs/datadictionary/sourcecapabilitycode.rst | 44 -- docs/datadictionary/sourcedefaultcode.rst | 16 - docs/datadictionary/sourceinputcode.rst | 16 - docs/datadictionary/sourceprimarydbcode.rst | 57 -- docs/designtime.rst | 50 -- docs/developerguide/developer-guide.rst | 13 - docs/developerguide/media/build_logs.png | Bin 126733 -> 0 bytes .../media/create_run_config_java.png | Bin 83005 -> 0 bytes docs/developerguide/media/create_run_config_kt.png | Bin 99443 -> 0 bytes docs/developerguide/media/expand_vm_options.PNG | Bin 17547 -> 0 bytes docs/developerguide/media/import_project.png | Bin 33478 -> 0 bytes docs/developerguide/media/reimport_maven.png | Bin 138930 -> 0 bytes docs/developerguide/media/run_config_java.png | Bin 73102 -> 0 bytes docs/developerguide/media/run_config_kt.png | Bin 56159 -> 0 bytes docs/developerguide/media/run_debug.png | Bin 4509 -> 0 bytes docs/developerguide/media/vsc_logs.png | Bin 161184 -> 0 bytes .../developerguide/running-bp-processor-in-ide.rst | 449 ------------- docs/index.rst | 83 +-- docs/installation.rst | 88 --- docs/logging.rst | 16 - docs/media/CDS.png | Bin 23391 -> 0 bytes docs/media/CDS_Architecture_Design.pptx | Bin 0 -> 1004252 bytes docs/media/CDS_architecture.jpg | Bin 0 -> 512128 bytes docs/media/CDS_architecture_latest.png | Bin 204735 -> 0 bytes docs/media/dd_mapping_template_rel.jpg | Bin 0 -> 68773 bytes docs/media/dd_mapping_template_rel.png | Bin 62055 -> 0 bytes docs/microservices/bluePrintsProcessorMS.rst | 87 --- docs/microservices/blueprintsProcessorMS.rst | 86 +++ docs/microservices/controllerBlueprintMS.rst | 20 + .../controllerBlueprintStudioProcessorMS.rst | 20 - docs/microservices/dynamicapi.rst | 5 +- docs/microservices/enrichment.rst | 13 +- docs/microservices/expression.rst | 45 -- docs/microservices/flexibleplugin.rst | 17 - docs/microservices/images/blueprintprocessor.jpg | Bin 47208 -> 0 bytes docs/microservices/media/Enrichment-UI1.png | Bin 33981 -> 42383 bytes docs/microservices/media/Enrichment-UI2.png | Bin 90202 -> 109402 bytes docs/microservices/media/blueprintprocessor.jpg | Bin 0 -> 63829 bytes docs/microservices/media/dyanmicapi.jpg | Bin 72238 -> 118101 bytes docs/modelingconcepts/artifact-type.rst | 80 +-- docs/modelingconcepts/cba.rst | 49 +- docs/modelingconcepts/data-dictionary.rst | 49 +- docs/modelingconcepts/data-type.rst | 105 ++-- docs/modelingconcepts/dynamic-payload.rst | 72 +-- docs/modelingconcepts/enrichment.rst | 14 +- docs/modelingconcepts/expression.rst | 48 +- docs/modelingconcepts/external-system.rst | 120 ++++ docs/modelingconcepts/flexible-plug-in.rst | 122 ---- docs/modelingconcepts/index.rst | 48 ++ docs/modelingconcepts/node-type.rst | 698 ++++++++++----------- docs/modelingconcepts/overview.rst | 48 -- docs/modelingconcepts/scripts.rst | 8 +- docs/modelingconcepts/southbound-interfaces.rst | 10 +- docs/modelingconcepts/template.rst | 6 +- docs/modelingconcepts/test.rst | 26 +- docs/modelingconcepts/tosca-meta.rst | 21 +- docs/modelingconcepts/workflow.rst | 338 +++++----- docs/resourceassignment.rst | 73 --- docs/resourcedefinition/index.rst | 107 ++++ docs/resourcedefinition/media/capabilitytable.JPG | Bin 0 -> 57448 bytes docs/resourcedefinition/media/mandatory.JPG | Bin 0 -> 48105 bytes docs/resourcedefinition/media/optional.JPG | Bin 0 -> 79730 bytes docs/resourcedefinition/media/sqltable.JPG | Bin 0 -> 36259 bytes docs/resourcedefinition/resourcesource.rst | 421 +++++++++++++ docs/ui/designer.rst | 416 ++++++++++++ docs/usecases/use-cases.rst | 2 +- docs/usecases/wordpress-cnf-poc.rst | 2 +- docs/userguide/designtime.rst | 50 ++ docs/userguide/developer-guide.rst | 13 + docs/userguide/installation.rst | 92 +++ docs/userguide/media/build_logs.png | Bin 0 -> 126733 bytes docs/userguide/media/create_run_config_java.png | Bin 0 -> 83005 bytes docs/userguide/media/create_run_config_kt.png | Bin 0 -> 99443 bytes docs/userguide/media/expand_vm_options.PNG | Bin 0 -> 17547 bytes docs/userguide/media/import_project.png | Bin 0 -> 33478 bytes docs/userguide/media/reimport_maven.png | Bin 0 -> 138930 bytes docs/userguide/media/run_config_java.png | Bin 0 -> 73102 bytes docs/userguide/media/run_config_kt.png | Bin 0 -> 56159 bytes docs/userguide/media/run_debug.png | Bin 0 -> 4509 bytes docs/userguide/media/vsc_logs.png | Bin 0 -> 161184 bytes docs/userguide/resourceassignment.rst | 73 +++ docs/userguide/running-bp-processor-in-ide.rst | 445 +++++++++++++ 109 files changed, 2732 insertions(+), 2967 deletions(-) create mode 100644 docs/CBA/media/CDS_Architecture.jpg create mode 100644 docs/CBA/media/CDS_Data_Flow.jpg delete mode 100644 docs/CBA/media/CDS_architecture.jpg create mode 100644 docs/CBA/media/Functional_Decomposition.jpg delete mode 100644 docs/CBA/media/image0.PNG delete mode 100644 docs/CBA/media/image0.jpg delete mode 100644 docs/CBA/media/image1.PNG delete mode 100644 docs/CBA/media/image1.jpg delete mode 100644 docs/CBA/media/image2.PNG delete mode 100644 docs/CBA/media/image2.jpg delete mode 100644 docs/CDS_Architecture_Design.pptx delete mode 100644 docs/CDS_Designer_Guide.rst delete mode 100644 docs/datadictionary/complexResponse.rst delete mode 100644 docs/datadictionary/create_netbox_ip_address.rst delete mode 100644 docs/datadictionary/dbsystemcode.rst delete mode 100644 docs/datadictionary/dt-netbox-ip.rst delete mode 100644 docs/datadictionary/index.rst delete mode 100644 docs/datadictionary/media/capabilitytable.JPG delete mode 100644 docs/datadictionary/media/mandatory.JPG delete mode 100644 docs/datadictionary/media/optional.JPG delete mode 100644 docs/datadictionary/media/resttable.JPG delete mode 100644 docs/datadictionary/media/sqltable.JPG delete mode 100644 docs/datadictionary/resourcedefinitioncodesnip.rst delete mode 100644 docs/datadictionary/resourcesource.rst delete mode 100644 docs/datadictionary/restauth.rst delete mode 100644 docs/datadictionary/restsourcecode.rst delete mode 100644 docs/datadictionary/sourcecapabilitycode.rst delete mode 100644 docs/datadictionary/sourcedefaultcode.rst delete mode 100644 docs/datadictionary/sourceinputcode.rst delete mode 100644 docs/datadictionary/sourceprimarydbcode.rst delete mode 100644 docs/designtime.rst delete mode 100644 docs/developerguide/developer-guide.rst delete mode 100644 docs/developerguide/media/build_logs.png delete mode 100644 docs/developerguide/media/create_run_config_java.png delete mode 100644 docs/developerguide/media/create_run_config_kt.png delete mode 100644 docs/developerguide/media/expand_vm_options.PNG delete mode 100644 docs/developerguide/media/import_project.png delete mode 100644 docs/developerguide/media/reimport_maven.png delete mode 100644 docs/developerguide/media/run_config_java.png delete mode 100644 docs/developerguide/media/run_config_kt.png delete mode 100644 docs/developerguide/media/run_debug.png delete mode 100644 docs/developerguide/media/vsc_logs.png delete mode 100644 docs/developerguide/running-bp-processor-in-ide.rst delete mode 100644 docs/installation.rst delete mode 100644 docs/logging.rst delete mode 100644 docs/media/CDS.png create mode 100644 docs/media/CDS_Architecture_Design.pptx create mode 100644 docs/media/CDS_architecture.jpg delete mode 100644 docs/media/CDS_architecture_latest.png create mode 100644 docs/media/dd_mapping_template_rel.jpg delete mode 100644 docs/media/dd_mapping_template_rel.png delete mode 100644 docs/microservices/bluePrintsProcessorMS.rst create mode 100644 docs/microservices/blueprintsProcessorMS.rst create mode 100644 docs/microservices/controllerBlueprintMS.rst delete mode 100644 docs/microservices/controllerBlueprintStudioProcessorMS.rst delete mode 100644 docs/microservices/expression.rst delete mode 100644 docs/microservices/flexibleplugin.rst delete mode 100644 docs/microservices/images/blueprintprocessor.jpg create mode 100644 docs/microservices/media/blueprintprocessor.jpg create mode 100644 docs/modelingconcepts/external-system.rst delete mode 100644 docs/modelingconcepts/flexible-plug-in.rst create mode 100644 docs/modelingconcepts/index.rst delete mode 100644 docs/modelingconcepts/overview.rst delete mode 100644 docs/resourceassignment.rst create mode 100644 docs/resourcedefinition/index.rst create mode 100644 docs/resourcedefinition/media/capabilitytable.JPG create mode 100644 docs/resourcedefinition/media/mandatory.JPG create mode 100644 docs/resourcedefinition/media/optional.JPG create mode 100644 docs/resourcedefinition/media/sqltable.JPG create mode 100644 docs/resourcedefinition/resourcesource.rst create mode 100644 docs/ui/designer.rst create mode 100644 docs/userguide/designtime.rst create mode 100644 docs/userguide/developer-guide.rst create mode 100644 docs/userguide/installation.rst create mode 100644 docs/userguide/media/build_logs.png create mode 100644 docs/userguide/media/create_run_config_java.png create mode 100644 docs/userguide/media/create_run_config_kt.png create mode 100644 docs/userguide/media/expand_vm_options.PNG create mode 100644 docs/userguide/media/import_project.png create mode 100644 docs/userguide/media/reimport_maven.png create mode 100644 docs/userguide/media/run_config_java.png create mode 100644 docs/userguide/media/run_config_kt.png create mode 100644 docs/userguide/media/run_debug.png create mode 100644 docs/userguide/media/vsc_logs.png create mode 100644 docs/userguide/resourceassignment.rst create mode 100644 docs/userguide/running-bp-processor-in-ide.rst (limited to 'docs') diff --git a/docs/CBA/index.rst b/docs/CBA/index.rst index c29eca8d9..b9e31119c 100644 --- a/docs/CBA/index.rst +++ b/docs/CBA/index.rst @@ -4,28 +4,58 @@ .. _cds_cba-doc: -Controller Blueprint Archived Designer Tool(CBA) -================================================ +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| +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| -|image3| +Data Flow +--------- +|image2| Installation @@ -79,16 +109,14 @@ Steps Functional Decomposition ------------------------ -|image2| +|image3| + +.. |image1| image:: media/CDS_Architecture.jpg + :width: 500pt -.. |image0| image:: media/image0.jpg - :width: 7.88889in - :height: 4.43750in +.. |image2| image:: media/CDS_Data_Flow.jpg + :width: 500pt -.. |image2| image:: media/image2.jpg - :width: 7.88889in - :height: 4.43750in +.. |image3| image:: media/Functional_Decomposition.jpg + :width: 500pt -.. |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 new file mode 100644 index 000000000..720d29aa2 Binary files /dev/null and b/docs/CBA/media/CDS_Architecture.jpg 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 Binary files /dev/null and b/docs/CBA/media/CDS_Data_Flow.jpg differ diff --git a/docs/CBA/media/CDS_architecture.jpg b/docs/CBA/media/CDS_architecture.jpg deleted file mode 100644 index 6401e6bbd..000000000 Binary files a/docs/CBA/media/CDS_architecture.jpg and /dev/null differ diff --git a/docs/CBA/media/Functional_Decomposition.jpg b/docs/CBA/media/Functional_Decomposition.jpg new file mode 100644 index 000000000..2b8257474 Binary files /dev/null and b/docs/CBA/media/Functional_Decomposition.jpg differ diff --git a/docs/CBA/media/image0.PNG b/docs/CBA/media/image0.PNG deleted file mode 100644 index 1c5d8c5ff..000000000 Binary files a/docs/CBA/media/image0.PNG and /dev/null differ diff --git a/docs/CBA/media/image0.jpg b/docs/CBA/media/image0.jpg deleted file mode 100644 index 8e53a2d98..000000000 Binary files a/docs/CBA/media/image0.jpg and /dev/null differ diff --git a/docs/CBA/media/image1.PNG b/docs/CBA/media/image1.PNG deleted file mode 100644 index 7a4b96d5c..000000000 Binary files a/docs/CBA/media/image1.PNG and /dev/null differ diff --git a/docs/CBA/media/image1.jpg b/docs/CBA/media/image1.jpg deleted file mode 100644 index 9a5cd63e4..000000000 Binary files a/docs/CBA/media/image1.jpg and /dev/null differ diff --git a/docs/CBA/media/image2.PNG b/docs/CBA/media/image2.PNG deleted file mode 100644 index e6a0cf8d3..000000000 Binary files a/docs/CBA/media/image2.PNG and /dev/null differ diff --git a/docs/CBA/media/image2.jpg b/docs/CBA/media/image2.jpg deleted file mode 100644 index 20fc26250..000000000 Binary files a/docs/CBA/media/image2.jpg and /dev/null differ diff --git a/docs/CDS_Architecture_Design.pptx b/docs/CDS_Architecture_Design.pptx deleted file mode 100644 index fbadc4285..000000000 Binary files a/docs/CDS_Architecture_Design.pptx and /dev/null differ diff --git a/docs/CDS_Designer_Guide.rst b/docs/CDS_Designer_Guide.rst deleted file mode 100644 index 802b8650d..000000000 --- a/docs/CDS_Designer_Guide.rst +++ /dev/null @@ -1,413 +0,0 @@ - - -CDS Designer Guide -================== - -**Table of Contents** - -- `Getting - Started `__ - -- `What is CDS Designer - UI? `__ - -- `What’s - new? `__ - -- `Overview of CDS - Interface `__ - -- `CBA - Packages `__ - - - `Package - list `__ - - - `Create a CBA - Package `__ - - - `User - Flow `__ - - - `Create a New - Package `__ - - - `MetaData <#CDSDesignerGuide-MetaData>`__ - - - `Template & Mapping <#CDSDesignerGuide-TemplateMapping>`__ - - - `Scripts <#CDSDesignerGuide-Scripts>`__ - - - `Definitions <#CDSDesignerGuide-Definitions>`__ - - - `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 | | -| the **resolution of resources** for | |image1| | -| **instantiation** and any **config** | | -| provisioning operation, such as day0, day1, | | -| or day2 configuration. | | -| | | -| 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 `__. | | -| 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| | -| | | | -| Create full CBA | Import old packages | Create sophisticated | -| packages from | for edit and | package workflows in | -| built-in forms | collaboration | a no-code graphical | -| without programming | | designer | -| | | | -| |image5| | |image6| | |image7| | -| | | | -| Customizable CBA | Easily create and | Integration between | -| Package actions | manage lists of data | CDS UI and SDC | -| | via interface (Data | Services | -| | Dictionary, | | -| | controller catalog, | | -| | and config | | -| | management) | | -+----------------------+----------------------+----------------------+ - -Overview of CDS Interface -========================= - -Full CDS UI screens are available in -`InVision `__ - -|image8| - -1. **CDS main menu:** Access all CDS module list including Packages, - Data Dictionary, Controller Catalog, etc. - -2. **Profile:** Access user profile information - -3. **Module Title:** See the current module name and the total number of - items in the module list - -4. **Module list:** View all active items in module and tools for search - and filtering - -CBA Packages -============ - -- .. rubric:: Package List - :name: package-list - -It gives you quick access to all and most recent created/edit packages - -|image9| - -1. **Module Tabs:** Access All, Deployed, Under Construction, or - Archived packages - -2. **Search:** Search for a package by title - -3. **Filter:** Filter packages by package tags - -4. **Package Sort:** Sort packages by recent or alphanumeric (name) or - version - -5. **List Pagination:** navigate between package list pages - -6. **Create Package:** Create a new CBA package - -7. **Import Package:** Import other packages that are created - previously on CDS Editor or Designer or created by other/current - user - -8. **Package box:** It shows a brief detail of the package and gives - access to some actions of the package - -9. **Package name and version** - -10. **More menu:** Access a list of actions including Clone, Archive, - Download, and Delete - -11. **Last modified:** Shows user name and date and time of last - modifications made in the package - -12. **Package Description** - -13. **Collaborators:** See who's collaborating to edit in the package - -14. **Configuration button:** Go directly to package configuration - -15. **Designer Mode:** It indicates package mode (Designer, Scripting, - 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 - -|image10| - -- .. rubric:: Create a New Package - :name: 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. - -**Create/Import Package** - -You can’t create/import a CBA package that has the same name and version -of an existing package. Packages can be in the same name but in -different version number (ex., Package one v1.0.0 & Package one v1.0.1). - -**Create a New Custom CBA Package** - -From the Packages page, click on the **Create Package** button to -navigate to **Package** **Configuration** - -|image11| - -- .. rubric:: `MetaData `__ - :name: metadata - -In **MetaData Tab,** select Package Mode, enter package Name, Version, -Description and other configurations - -|image12| - -Once you fill all required inputs, you can save this package by click -**Save** button in the Actions menu - -|image13| - -**Package Info Box:** It is in top of configurations tabs and it appears -after you save a package for the first time - -|image14| - -You can continue adding package configuration or go directly to -**Designer Mode** screen from Package infobox - -All changes will be saved when you click on **Save** button - -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 `__ - :name: template-mapping - -You can create as many templates using -`artifact-mapping-resource `__ -or/and -`artifact-template-velocity. `__ - -|image15| - -1. **Template name** - -2. **Template Section:** Where you include template attributes - -3. **Manage Mapping:** Here the automapping process occurs to template - attributes to refer to the data dictionary that will be used to - resolve a particular resource. - -**Template Section** - -|image16| - -1. **Template Type:** Template is defined by one of three templates - (Velocity, Jinja, Kotlin) - -2. **Import Template Attributes/Parameters:** You can add attributes by - Import attribute list file or by - -3. **Insert Template Attributes/Parameters Manually:** You can insert - Attributes manually in the code editor. Code editor validates - attributes according to the pre-selected template type - -**Import Template Attributes** - -|image17| - -After import attributes, you can add/edit/delete attributes in the code -editor. - -|image18| - -**Manage Mapping Section** - -|image19| - -1. **Use current Template Instance:** You can use attributes from - Template section - -2. **Upload Attributes List:** In case you don’t have existing - attributes in Template section or have different attributes, you can - upload attributes list - -Once you select the source of attributes, you get a confirmation of -success fetching. - -|image20| - -Then the Mapped Table appears to show the Resource Dictionary reference. - -|image21| - -When you finish the creation process, you must click on **the Finish -button (1)** to submit the template, or you can clear all data by click -on **the Clear button** **(2).** - -|image22| - -- .. rubric:: `Scripts `__ - :name: scripts - -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 - -|image23| - -2. **Import File** - -|image24| - -By adding script file/s, you can: - -1. Edit file: You can edit each script file from the code editor - -2. Delete file - -|image25| - -- .. rubric:: `Definitions `__ - :name: definitions - -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 - -|image26| - -2. **Import File** - -|image27| - -By adding definition file/s, you can: - -1. Edit file: You can edit each definition file from the code editor - -2. Delete file - -|image28| - -- .. rubric:: `External System Authentication - Properties `__ - :name: external-system-authentication-properties - -In order to populate the system information within the package, you have -to provide **dsl_definitions** - -|image29| - - -.. |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 -.. |image3| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%202.png?version=1&modificationDate=1591032225000&api=v2 - :width: 47pt -.. |image4| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%203.png?version=1&modificationDate=1591032226000&api=v2 - :width: 47pt -.. |image5| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%204.png?version=1&modificationDate=1591032227000&api=v2 - :width: 60pt -.. |image6| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%205.png?version=1&modificationDate=1591032227000&api=v2 - :width: 50pt -.. |image7| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%206.png?version=1&modificationDate=1591032228000&api=v2 - :width: 30pt -.. |image8| image:: https://wiki.onap.org/download/attachments/84650426/Interface.jpg?version=1&modificationDate=1591033366000&api=v2 - :width: 500pt -.. |image9| image:: https://wiki.onap.org/download/attachments/84650426/Package%20List.jpg?version=1&modificationDate=1591033938000&api=v2 - :width: 500pt -.. |image10| image:: https://wiki.onap.org/download/attachments/84650426/Create%20Package%20User%20flow.jpg?version=1&modificationDate=1591034050000&api=v2 - :width: 500pt -.. |image11| image:: https://wiki.onap.org/download/attachments/84650426/Create%20Package.jpg?version=1&modificationDate=1591034193000&api=v2 - :width: 500pt -.. |image12| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20MetaData.jpg?version=1&modificationDate=1591034297000&api=v2 - :width: 500pt -.. |image13| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20Action%20Menu.jpg?version=1&modificationDate=1591034344000&api=v2 - :width: 500pt -.. |image14| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20Info%20Box.jpg?version=1&modificationDate=1591034382000&api=v2 - :width: 500pt -.. |image15| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%201.jpg?version=1&modificationDate=1591638883000&api=v2 - :width: 500pt -.. |image16| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%202.jpg?version=1&modificationDate=1591638960000&api=v2 - :width: 500pt -.. |image17| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%203.jpg?version=1&modificationDate=1591639023000&api=v2 - :width: 500pt -.. |image18| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%206.jpg?version=1&modificationDate=1591639059000&api=v2 - :width: 500pt -.. |image19| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%207.jpg?version=1&modificationDate=1591639152000&api=v2 - :width: 500pt -.. |image20| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%208.jpg?version=1&modificationDate=1591639203000&api=v2 - :width: 500pt -.. |image21| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%209.jpg?version=1&modificationDate=1591639235000&api=v2 - :width: 500pt -.. |image22| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%2011.jpg?version=1&modificationDate=1591639260000&api=v2 - :width: 500pt -.. |image23| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%201.jpg?version=1&modificationDate=1591639325000&api=v2 - :width: 500pt -.. |image24| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%202.jpg?version=1&modificationDate=1591639391000&api=v2 - :width: 500pt -.. |image25| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%203.jpg?version=1&modificationDate=1591639425000&api=v2 - :width: 500pt -.. |image26| image:: https://wiki.onap.org/download/attachments/84650426/Definitions%201.jpg?version=1&modificationDate=1591639459000&api=v2 - :width: 500pt -.. |image27| image:: https://wiki.onap.org/download/attachments/84650426/Definitions%202.jpg?version=1&modificationDate=1591639514000&api=v2 - :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 - :width: 500pt \ No newline at end of file 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": "", - "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/index.rst b/docs/datadictionary/index.rst deleted file mode 100644 index 4039cca6d..000000000 --- a/docs/datadictionary/index.rst +++ /dev/null @@ -1,70 +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 Definition -------------------- -.. toctree:: - :maxdepth: 1 - -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. - -A Resource definition can have multiple sources to handle resolution in different ways. The main goal of Resource definition is to define re-usable entity that could be shared. - -Creation of Resource definition is a standalone activity, separated from the blueprint design. - -As part of modelling a Resource definition entry, the following generic information should be provided: - -|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. - -|image1| - - -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 - - -Resource source: -================ - -Defines the contract to resolve a resource. - -A resource source is modeled, following TOSCA_ node type definition and derives from the Resource_ source. - -Also please click below for resource source available details - -.. toctree:: - :maxdepth: 1 - - 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 -.. _Resource: https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-NodeResourceSource - - -.. |image0| image:: media/mandatory.JPG - :width: 7.88889in - :height: 4.43750in - -.. |image1| image:: media/optional.JPG - :width: 7.88889in - :height: 4.43750in \ No newline at end of file diff --git a/docs/datadictionary/media/capabilitytable.JPG b/docs/datadictionary/media/capabilitytable.JPG deleted file mode 100644 index 7db4715ea..000000000 Binary files a/docs/datadictionary/media/capabilitytable.JPG and /dev/null differ diff --git a/docs/datadictionary/media/mandatory.JPG b/docs/datadictionary/media/mandatory.JPG deleted file mode 100644 index 074d20076..000000000 Binary files a/docs/datadictionary/media/mandatory.JPG and /dev/null differ diff --git a/docs/datadictionary/media/optional.JPG b/docs/datadictionary/media/optional.JPG deleted file mode 100644 index a27502a75..000000000 Binary files a/docs/datadictionary/media/optional.JPG and /dev/null differ diff --git a/docs/datadictionary/media/resttable.JPG b/docs/datadictionary/media/resttable.JPG deleted file mode 100644 index 568ad0a9f..000000000 Binary files a/docs/datadictionary/media/resttable.JPG and /dev/null differ diff --git a/docs/datadictionary/media/sqltable.JPG b/docs/datadictionary/media/sqltable.JPG deleted file mode 100644 index 15d246743..000000000 Binary files a/docs/datadictionary/media/sqltable.JPG and /dev/null 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" : "" - } - } - } - -basic-auth: -~~~~~~~~~~~ - -.. code-block:: json - :linenos: - - { - "dsl_definitions": { - "dynamic-rest-source": { - "type" : "basic-auth", - "url" : "http://localhost:32778", - "username" : "", - "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": "", - "sslKey": "keystore", - "sslKeyPassword": "" - } - } - } 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/designtime.rst b/docs/designtime.rst deleted file mode 100644 index 250640b8c..000000000 --- a/docs/designtime.rst +++ /dev/null @@ -1,50 +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. - -Design Time User Guide -====================== - -Below are the requirements to enable automation for a service within ONAP. - -For instantiation, the goal is to be able to automatically resolve all the HEAT/Helm variables, called cloud parameters. - -For post-instantiation, the goal is to configure the VNF with initial configuration. - -Prerequisite ------------- - -* Gather the cloud parameters: - -Instantiation: -~~~~~~~~~~~~~~ - -Have the HEAT template along with the HEAT environment file (or) Have the Helm chart along with the Values.yaml file - -(CDS supports, but whether SO → Multicloud support for Helm/K8S is different story) - - -Post-instantiation: -~~~~~~~~~~~~~~~~~~~ - -Have the configuration template to apply on the VNF. - -* XML for NETCONF -* JSON / XML for RESTCONF -* not supported yet - CLI -* JSON for Ansible [not supported yet] -* Identify which template parameters are static and dynamic -* Create and fill-in the a table for all the dynamic values - -While doing so, identify the resources using the same process to be resolved; for instance, if two IPs has to be resolved through the same IPAM, the process the resolve the IP is the same. - - -Services: ---------- - -.. toctree:: - :maxdepth: 1 - - CBA/index - datadictionary/index - resourceassignment diff --git a/docs/developerguide/developer-guide.rst b/docs/developerguide/developer-guide.rst deleted file mode 100644 index 3f8112244..000000000 --- a/docs/developerguide/developer-guide.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. This work is a derivative of https://wiki.onap.org/display/DW/Running+Blueprints+Processor+Microservice+in+an+IDE -.. 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. - -Developer Guide -================= - -.. toctree:: - :caption: Table of Contents - :maxdepth: 1 - - running-bp-processor-in-ide \ No newline at end of file diff --git a/docs/developerguide/media/build_logs.png b/docs/developerguide/media/build_logs.png deleted file mode 100644 index 558fd60a8..000000000 Binary files a/docs/developerguide/media/build_logs.png and /dev/null differ diff --git a/docs/developerguide/media/create_run_config_java.png b/docs/developerguide/media/create_run_config_java.png deleted file mode 100644 index 5d006e2ac..000000000 Binary files a/docs/developerguide/media/create_run_config_java.png and /dev/null differ diff --git a/docs/developerguide/media/create_run_config_kt.png b/docs/developerguide/media/create_run_config_kt.png deleted file mode 100644 index 6f86a7e3a..000000000 Binary files a/docs/developerguide/media/create_run_config_kt.png and /dev/null differ diff --git a/docs/developerguide/media/expand_vm_options.PNG b/docs/developerguide/media/expand_vm_options.PNG deleted file mode 100644 index 9cb98d3f9..000000000 Binary files a/docs/developerguide/media/expand_vm_options.PNG and /dev/null differ diff --git a/docs/developerguide/media/import_project.png b/docs/developerguide/media/import_project.png deleted file mode 100644 index 06b36c53d..000000000 Binary files a/docs/developerguide/media/import_project.png and /dev/null differ diff --git a/docs/developerguide/media/reimport_maven.png b/docs/developerguide/media/reimport_maven.png deleted file mode 100644 index bc49b3dc8..000000000 Binary files a/docs/developerguide/media/reimport_maven.png and /dev/null differ diff --git a/docs/developerguide/media/run_config_java.png b/docs/developerguide/media/run_config_java.png deleted file mode 100644 index 4da5d7f34..000000000 Binary files a/docs/developerguide/media/run_config_java.png and /dev/null differ diff --git a/docs/developerguide/media/run_config_kt.png b/docs/developerguide/media/run_config_kt.png deleted file mode 100644 index 4e88d2d0a..000000000 Binary files a/docs/developerguide/media/run_config_kt.png and /dev/null differ diff --git a/docs/developerguide/media/run_debug.png b/docs/developerguide/media/run_debug.png deleted file mode 100644 index 3aa90577f..000000000 Binary files a/docs/developerguide/media/run_debug.png and /dev/null differ diff --git a/docs/developerguide/media/vsc_logs.png b/docs/developerguide/media/vsc_logs.png deleted file mode 100644 index 886d1b3c5..000000000 Binary files a/docs/developerguide/media/vsc_logs.png and /dev/null differ diff --git a/docs/developerguide/running-bp-processor-in-ide.rst b/docs/developerguide/running-bp-processor-in-ide.rst deleted file mode 100644 index 83554e2c7..000000000 --- a/docs/developerguide/running-bp-processor-in-ide.rst +++ /dev/null @@ -1,449 +0,0 @@ -.. This work is a derivative of https://wiki.onap.org/display/DW/Running+Blueprints+Processor+Microservice+in+an+IDE -.. 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. - -Running Blueprints Processor Microservice in an IDE -==================================================== - -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 -~~~~~~~~~~~~~~~~~~~ - -Check out the code from Gerrit: https://gerrit.onap.org/r/#/admin/projects/ccsdk/cds - -Build it locally -~~~~~~~~~~~~~~~~~~ - -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 - -Spin up a Docker container with the database -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The Blueprints Processor project uses a database to store information about the blueprints -and therefore it needs to be online before attempting to run it. - -One way to create the database is by using the :file:`docker-compose.yaml` -file present on the distribution module. This database will require a local directory to mount a volume, before running docker-compose remember to create following directory: - -.. code-block:: bash - - mkdir -p -m 755 /opt/app/cds/mysql/data - -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 - - .. 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 - - .. code-block:: bash - - ms/blueprintsprocessor/distribution/src/main/dc - -And run docker-composer: - -.. code-block:: bash - - docker-compose up -d db - -This should spin up a container of the MariaDB image in the background. -To check if it has worked, this command can be used: - -.. code-block:: bash - - docker-compose logs -f - -The phrase ``mysqld: ready for connections`` indicates that the database was started correctly. - -From now on, the Docker container will be available on the computer; if it ever gets stopped, -it can be started again by the command: - -.. code-block:: bash - - docker start - - -Set permissions on the local file system -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Blueprints processor uses the local file system for some operations and, therefore, -need some existing and accessible paths to run properly. - -Execute the following commands to create the needed directories, and grant access to the current user to modify them: - -.. code-block:: bash - - mkdir -p -m 755 /opt/app/onap/blueprints/archive - mkdir -p -m 755 /opt/app/onap/blueprints/deploy - mkdir -p -m 755 /opt/app/onap/scripts - sudo chown -R $(id -u):$(id -g) /opt/app/onap/ - -Import the project into the IDE -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. tabs:: - - .. tab:: IntelliJ IDEA - - Go to *File | Open* and choose the :file:`pom.xml` file of the cds directory: - - |imageImportProject| - - Sometimes it may be necessary to reimport Maven project: - - |imageReimportMaven| - - - **Override some application properties:** - - After the project is compiled, a Run Configuration profile overriding some application properties - with custom values needs to be created, to reflect the local environment characteristics. - - .. 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= - - .. group-tab:: Frankfurt - - 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= - - .. group-tab:: El Alto - - Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class: - - ``ms/blueprintsprocessor/application/src/main/java/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.java.`` - - Right-click inside it, at any point, to load the context menu and select create - BlueprintProcessorApplication configuration from context: - - |imageCreateRunConfigJava| - - **The following window will open:** - - |imageRunConfigJava| - - **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= - - .. group-tab:: Dublin - - Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class: - - ``ms/blueprintsprocessor/application/src/main/java/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.java``. - - Right-click inside it, at any point, to load the context menu and select create - BlueprintProcessorApplication configuration from context: - - |imageCreateRunConfigJava| - - **The following window will open:** - - |imageRunConfigJava| - - **Add the following in that field:** - - .. code-block:: java - :caption: **Custom values for properties** - - -DappName=ControllerBluePrints - -Dms_name=org.onap.ccsdk.apps.controllerblueprints - -DappVersion=1.0.0 - -Dspring.config.location=opt/app/onap/config/ - -Dspring.datasource.url=jdbc:mysql://127.0.0.1:3306/sdnctl - -Dspring.datasource.username=sdnctl - -Dspring.datasource.password=sdnctl - -Dcontrollerblueprints.loadInitialData=true - -Dblueprintsprocessor.restclient.sdncodl.url=http://localhost:8282/ - -Dblueprintsprocessor.db.primary.url=jdbc:mysql://localhost:3306/sdnctl - -Dblueprintsprocessor.db.primary.username=sdnctl - -Dblueprintsprocessor.db.primary.password=sdnctl - -Dblueprintsprocessor.db.primary.driverClassName=org.mariadb.jdbc.Driver - -Dblueprintsprocessor.db.primary.hibernateHbm2ddlAuto=update - -Dblueprintsprocessor.db.primary.hibernateDDLAuto=none - -Dblueprintsprocessor.db.primary.hibernateNamingStrategy=org.hibernate.cfg.ImprovedNamingStrategy - -Dblueprintsprocessor.db.primary.hibernateDialect=org.hibernate.dialect.MySQL5InnoDBDialect - -Dblueprints.processor.functions.python.executor.executionPath=./components/scripts/python/ccsdk_blueprints - -Dblueprints.processor.functions.python.executor.modulePaths=./components/scripts/python/ccsdk_blueprints,./components/scripts/python/ccsdk_netconf,./components/scripts/python/ccsdk_restconf - -Dblueprintsprocessor.restconfEnabled=true - -Dblueprintsprocessor.restclient.sdncodl.type=basic-auth - -Dblueprintsprocessor.restclient.sdncodl.url=http://localhost:8282/ - -Dblueprintsprocessor.restclient.sdncodl.username=admin - -Dblueprintsprocessor.restclient.sdncodl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U - -Dblueprintsprocessor.grpcEnable=false - -Dblueprintsprocessor.grpcPort=9111 - -Dblueprintsprocessor.blueprintDeployPath=/opt/app/onap/blueprints/deploy - -Dblueprintsprocessor.blueprintArchivePath=/opt/app/onap/blueprints/archive - -Dblueprintsprocessor.blueprintWorkingPath=/opt/app/onap/blueprints/work - -Dsecurity.user.password={bcrypt}$2a$10$duaUzVUVW0YPQCSIbGEkQOXwafZGwQ/b32/Ys4R1iwSSawFgz7QNu - -Dsecurity.user.name=ccsdkapps - -Dblueprintsprocessor.messageclient.self-service-api.kafkaEnable=false - -Dblueprintsprocessor.messageclient.self-service-api.topic=producer.t - -Dblueprintsprocessor.messageclient.self-service-api.type=kafka-basic-auth - -Dblueprintsprocessor.messageclient.self-service-api.bootstrapServers=127.0.0.1:9092 - -Dblueprintsprocessor.messageclient.self-service-api.consumerTopic=receiver.t - -Dblueprintsprocessor.messageclient.self-service-api.groupId=receiver-id - -Dblueprintsprocessor.messageclient.self-service-api.clientId=default-client-id - -Dspring.profiles.active=dev - -Dblueprintsprocessor.httpPort=8080 - -Dserver.port=55555 - - - **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:** - - .. code-block:: java - - blueprintsprocessor.grpcclient.remote-python.type=token-auth - blueprintsprocessor.grpcclient.remote-python.host=localhost - blueprintsprocessor.grpcclient.remote-python.port=50051 - blueprintsprocessor.grpcclient.remote-python.token=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw== - - blueprintprocessor.remoteScriptCommand.enabled=true - - - **Run the application:** - - Select either run or debug for this Run Configuration to start the Blueprints Processor: - - |imageRunDebug| - - |imageBuildLogs| - - .. tab:: Visual Studio Code - - .. tabs:: - - .. group-tab:: 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 `_ - * **Step #3** - On the top menu click *Run | Open Configurations* - - .. warning:: This should open the file called `launch.json` but in some cases you'll need to wait for the Kotlin Language Server to be installed before you can do anything. - Please watch the bottom bar in Visual Studio Code for messages about things getting installed. - - * **Step #4** - add configuration shown below to your configurations list. - - .. 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" - } - - .. warning:: The `projectRoot` path assumes that you created your Workspace in the main CDS repository folder. If not - please change the path accordingly - - .. note:: The `mainClass` contains a spring profile param before the full class name. This is done because `args` is not supported by Kotlin launch.json configuration. - If you have a cleaner idea how to solve this - please let us know. - - **Add/replace the following in Blueprint's application-dev.properties file:** - - .. code-block:: java - - blueprintsprocessor.grpcclient.remote-python.type=token-auth - blueprintsprocessor.grpcclient.remote-python.host=localhost - blueprintsprocessor.grpcclient.remote-python.port=50051 - blueprintsprocessor.grpcclient.remote-python.token=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw== - - blueprintprocessor.remoteScriptCommand.enabled=true - - **Currently the following entries need to be added in VSC too:** - - .. code-block:: java - - logging.level.web=DEBUG - logging.level.org.springframework.web: DEBUG - - #Encrypted username and password for health check service - endpoints.user.name=eHbVUbJAj4AG2522cSbrOQ== - endpoints.user.password=eHbVUbJAj4AG2522cSbrOQ== - - #BaseUrls for health check blueprint processor services - blueprintprocessor.healthcheck.baseUrl=http://localhost:8080/ - blueprintprocessor.healthcheck.mapping-service-name-with-service-link=[Execution service,/api/v1/execution-service/health-check],[Resources service,/api/v1/resources/health-check],[Template service,/api/v1/template/health-check] - - #BaseUrls for health check Cds Listener services - cdslistener.healthcheck.baseUrl=http://cds-sdc-listener:8080/ - cdslistener.healthcheck.mapping-service-name-with-service-link=[SDC Listener service,/api/v1/sdclistener/healthcheck] - - #Actuator properties - management.endpoints.web.exposure.include=* - management.endpoint.health.show-details=always - management.info.git.mode=full - - In VSC the properties are read from target folder, thats why the following maven command needs to be rerun: - - .. code-block:: bash - - mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none - - Click Run in Menu bar. - - |imageLogsVSC| - - -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. - -To upload custom blueprints, the endpoint ``api/v1/execution-service/publish`` is used. - -To process, the endpoint is ``api/v1/execution-service/process``. - -Postman is a software that can be used to send these request, and an example of -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? -***************************************************************************** - -1. Rebuild with ``maven install ...`` (see above) -2. Potentially change Maven home directory in Settings -3. Maven reimport in IDE - -Compilation error? -******************** - -* Change Java Version to 11 or 8 - - -.. image alignment inside tabs doesn't work - -.. |imageRunConfigJava| image:: media/run_config_java.png - :scale: 75 % - :align: middle - -.. |imageRunConfigKt| image:: media/run_config_kt.png - :scale: 75 % - :align: middle - -.. |imageCreateRunConfigJava| image:: media/create_run_config_java.png - :scale: 75 % - :align: middle - -.. |imageCreateRunConfigKt| image:: media/create_run_config_kt.png - :scale: 75 % - :align: middle - -.. |imageImportProject| image:: media/import_project.png - :scale: 75 % - :align: middle - -.. |imageReimportMaven| image:: media/reimport_maven.png - :scale: 75 % - :align: middle - -.. |imageRunDebug| image:: media/run_debug.png - :scale: 75 % - :align: middle - -.. |imageRunDebug| image:: media/run_debug.png - :align: middle - :scale: 75 % - -.. |imageBuildLogs| image:: media/build_logs.png - :align: middle - :scale: 75 % - -.. |imageLogsVSC| image:: media/vsc_logs.png - :align: middle - :scale: 75 % \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index 942abc6d1..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,62 +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. - -The helper can be found in below link: -https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/common.py + When executing a component executor script, designer might want to perform + resource resolution along with template meshing directly from the script + itself. -.. |image0| image:: media/tosca_model.jpg - :width: 7.88889in - :height: 4.43750in + The helper can be found in below link: + https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/common.py -.. |cdsArchitectureImage| image:: media/CDS_architecture_latest.png - :scale: 30 % +.. |toscaModel| image:: media/tosca_model.jpg + :width: 500pt -Developer Guide ----------- - -.. toctree:: - :maxdepth: 2 - - developerguide/developer-guide +.. |cdsArchitectureImage| image:: media/CDS_architecture.jpg + :width: 500pt User Guide ---------- .. toctree:: - :maxdepth: 1 + :maxdepth: 3 - installation - designtime + userguide/developer-guide + userguide/installation + userguide/designtime Use Cases ----------- +--------- .. toctree:: :maxdepth: 2 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 ` diff --git a/docs/installation.rst b/docs/installation.rst deleted file mode 100644 index 6d3f0695c..000000000 --- a/docs/installation.rst +++ /dev/null @@ -1,88 +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. - - -User Guide -========== - -Installation ------------- - -ONAP is meant to be deployed within a Kubernetes environment. Hence, the de-facto way to deploy CDS is through Kubernetes. - -ONAP also package Kubernetes manifest as Chart, using Helm. - -Prerequisite ------------- - -https://docs.onap.org/en/latest/guides/onap-developer/settingup/index.html - -Setup local Helm ----------------- - -helm repo - -* helm serve & -* helm repo add local http://127.0.0.1:8879 - -Get the chart -------------- - -Make sure to checkout the release to use, by replacing $release-tag in bellow command - -git clone https://gerrit.onap.org/r/oom -git checkout tags/$release-tag -cd oom/kubernetes -make cds - -Install CDS ------------ - -helm install --name cds cds - -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 8080/TCP,9111/TCP 2m - service/cds NodePort 10.43.254.69 3000:30397/TCP 2m - service/cds-db ClusterIP None 3306/TCP 2m - service/controller-blueprints ClusterIP 10.43.207.152 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: ---------------- - -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 - - -Loopback Server: -~~~~~~~~~~~~~~~~ - -npm install in the directory cds/cds-ui/server -npm start should bring you the CDS UI page in your local machine with the link https://127.0.0.1:3000/ 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 Binary files a/docs/media/CDS.png and /dev/null differ diff --git a/docs/media/CDS_Architecture_Design.pptx b/docs/media/CDS_Architecture_Design.pptx new file mode 100644 index 000000000..19022c3c9 Binary files /dev/null and b/docs/media/CDS_Architecture_Design.pptx differ diff --git a/docs/media/CDS_architecture.jpg b/docs/media/CDS_architecture.jpg new file mode 100644 index 000000000..163a0b854 Binary files /dev/null and b/docs/media/CDS_architecture.jpg differ diff --git a/docs/media/CDS_architecture_latest.png b/docs/media/CDS_architecture_latest.png deleted file mode 100644 index 45ecc0f2e..000000000 Binary files a/docs/media/CDS_architecture_latest.png and /dev/null 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 Binary files /dev/null and b/docs/media/dd_mapping_template_rel.jpg 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 Binary files a/docs/media/dd_mapping_template_rel.png and /dev/null differ diff --git a/docs/microservices/bluePrintsProcessorMS.rst b/docs/microservices/bluePrintsProcessorMS.rst deleted file mode 100644 index 292f99e51..000000000 --- a/docs/microservices/bluePrintsProcessorMS.rst +++ /dev/null @@ -1,87 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons. -.. Copyright (C) 2019 IBM. - -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. - -Architecture: -------------- - -|image0| - -.. |image0| image:: images/blueprintprocessor.jpg - :height: 600px - :width: 800px - -Running Blueprints Processor Microservice Locally: --------------------------------------------------- - -The purpose of this page is to show how to run the Blueprints Processor microservice locally, using the docker-compose.yaml file provided in the project. - -Check out the CDS' code: - -Check out the latest code from Gerrit: https://gerrit.onap.org/r/#/admin/projects/ccsdk/cds - -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 - -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. - -The first step is to create any custom image needed, by building the distribution module. From the CDS home directory (where the code was checked out), navigate to the module: - -.. 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. - - -To verify the logs generated by docker-composer, type: - -.. code-block:: none - - docker-compose logs -f - - -Testing the environment: ------------------------- - -Point your browser to http://localhost:8000/api/v1/execution-service/ping (please note that the port is 8000, not 8080) - -To authenticate, use login user id and password. \ No newline at end of file diff --git a/docs/microservices/blueprintsProcessorMS.rst b/docs/microservices/blueprintsProcessorMS.rst new file mode 100644 index 000000000..e447c3ff9 --- /dev/null +++ b/docs/microservices/blueprintsProcessorMS.rst @@ -0,0 +1,86 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons. +.. Copyright (C) 2019 IBM. + +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. + +Architecture: +------------- + +|image0| + +.. |image0| image:: media/blueprintprocessor.jpg + :width: 400pt + +Running Blueprints Processor Microservice Locally: +-------------------------------------------------- + +The purpose of this page is to show how to run the Blueprints Processor microservice locally, using the docker-compose.yaml file provided in the project. + +Check out the CDS' code: + +Check out the latest code from Gerrit: https://gerrit.onap.org/r/#/admin/projects/ccsdk/cds + +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 + +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. + +The first step is to create any custom image needed, by building the distribution module. From the CDS home directory (where the code was checked out), navigate to the module: + +.. 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. + + +To verify the logs generated by docker-composer, type: + +.. code-block:: none + + docker-compose logs -f + + +Testing the environment: +------------------------ + +Point your browser to http://localhost:8000/api/v1/execution-service/ping (please note that the port is 8000, not 8080) + +To authenticate, use login user id and password. \ No newline at end of file diff --git a/docs/microservices/controllerBlueprintMS.rst b/docs/microservices/controllerBlueprintMS.rst new file mode 100644 index 000000000..2326e95c0 --- /dev/null +++ b/docs/microservices/controllerBlueprintMS.rst @@ -0,0 +1,20 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons. +.. Copyright (C) 2019 IBM. + +Controller Blueprints Studio Processor +====================================== + +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. + +Controller Blueprint Microservices: +----------------------------------- + +.. toctree:: + :maxdepth: 1 + + dynamicapi + enrichment diff --git a/docs/microservices/controllerBlueprintStudioProcessorMS.rst b/docs/microservices/controllerBlueprintStudioProcessorMS.rst deleted file mode 100644 index 9dcd31187..000000000 --- a/docs/microservices/controllerBlueprintStudioProcessorMS.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons. -.. Copyright (C) 2019 IBM. - -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 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..0f50beca4 100644 --- a/docs/microservices/enrichment.rst +++ b/docs/microservices/enrichment.rst @@ -27,13 +27,10 @@ CDS UI: |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 Binary files a/docs/microservices/images/blueprintprocessor.jpg and /dev/null differ diff --git a/docs/microservices/media/Enrichment-UI1.png b/docs/microservices/media/Enrichment-UI1.png index 62b870cab..082af6128 100644 Binary files a/docs/microservices/media/Enrichment-UI1.png and b/docs/microservices/media/Enrichment-UI1.png differ diff --git a/docs/microservices/media/Enrichment-UI2.png b/docs/microservices/media/Enrichment-UI2.png index 44497050a..90be708b5 100644 Binary files a/docs/microservices/media/Enrichment-UI2.png and b/docs/microservices/media/Enrichment-UI2.png differ diff --git a/docs/microservices/media/blueprintprocessor.jpg b/docs/microservices/media/blueprintprocessor.jpg new file mode 100644 index 000000000..429876a13 Binary files /dev/null and b/docs/microservices/media/blueprintprocessor.jpg differ diff --git a/docs/microservices/media/dyanmicapi.jpg b/docs/microservices/media/dyanmicapi.jpg index 3e00da3e8..5cc1ae176 100644 Binary files a/docs/microservices/media/dyanmicapi.jpg and b/docs/microservices/media/dyanmicapi.jpg differ diff --git a/docs/modelingconcepts/artifact-type.rst b/docs/modelingconcepts/artifact-type.rst index 8da7f59d1..173f22bee 100644 --- a/docs/modelingconcepts/artifact-type.rst +++ b/docs/modelingconcepts/artifact-type.rst @@ -6,9 +6,9 @@ .. _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 `_ @@ -19,9 +19,9 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC :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 `_ - `Here `_ + `Here `_ is the TOSCA artifact type: .. 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`. @@ -82,12 +82,12 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC :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,7 +104,7 @@ 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 `_ @@ -114,15 +114,15 @@ This node was created, derived from ``tosca.artifacts.Root`` to be the root TOSC :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 `_ * execute * block * return * break - * exit + * exit `Here `_ 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..1a5a41f44 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 `_ - 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: @@ -84,30 +84,29 @@ Here is how input-key-mapping, output-key-mapping and key-dependencies can be us * - vf-module-label data dictionary * - .. 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..a231e5aa5 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: ":/api/v1/model-type" .. code-block:: python :caption: **Payload:** { - "model-name": "", "derivedFrom": "tosca.datatypes.Root", - "definitionType": "data_type", - "definition": { - "description": "", - "version": "", - "properties": {}, - "derived_from": "tosca.datatypes.Root" - }, - "description": "", - "tags": ",datatypes.Root.data_type", - "creationDate": "", - "updatedBy": "" - } -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: ``_ -`TOSCA specification +`TOSCA specification `_ **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 @@ -124,44 +111,44 @@ List of existing data type: .. 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 @@ -192,9 +179,9 @@ List of existing data type: :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" @@ -226,6 +213,6 @@ List of existing data type: "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..554517a7e 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: 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 `_ **Example:** ``_ - .. 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 `_ **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 `_ **Example:** ``_ - .. 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 `_ **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 `_ **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..c23d19f58 --- /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 `_, +`info 2 `_. + +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 -`_, -`info 2 `_. - -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/index.rst b/docs/modelingconcepts/index.rst new file mode 100644 index 000000000..1b9d93c98 --- /dev/null +++ b/docs/modelingconcepts/index.rst @@ -0,0 +1,48 @@ +.. This work is a derivative of https://wiki.onap.org/display/DW/Modeling+Concepts +.. 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. + +Modeling Concepts +================= + +CDS is a framework to automate the **resolution of resources** for +**instantiation** and any **config** provisioning operation, such as +day0, day1 or day2 configuration. + +CDS has a 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 produce a :ref:`CBA Package`. Its **content** is driven from a +**catalog** of **reusable data dictionary** and **component**, +delivering a reusable and simplified **self service** experience. + +DS modelling is mainly based on `TOSCA +standard, `_ +using JSON as reprensentation. + +Most of the TOSCA modeled entity presented in the bellow documentation +can be found +`here `_. + +.. toctree:: + :caption: Table of Contents + :maxdepth: 1 + + cba + Tosca.Meta + dynamic-payload + enrichment + external-system + expression + data-dictionary + data-type + artifact-type + node-type + workflow + template + scripts + southbound-interfaces + test + + diff --git a/docs/modelingconcepts/node-type.rst b/docs/modelingconcepts/node-type.rst index 4c2e7f7fc..b436ae553 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 `_ -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 `_ + `Here `_ 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 `, this attribute can be retrieve to be + Using the :ref:`undefined `, 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 `_ + `Here `_ 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,9 +207,9 @@ 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": { @@ -236,7 +236,7 @@ listed in the other section. "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, @@ -260,7 +260,7 @@ listed in the other section. } }, "derived_from": "tosca.nodes.Component" - } + } .. tab:: remote-script-executor @@ -274,18 +274,18 @@ 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 @@ -306,11 +306,11 @@ listed in the other section. } ] - 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", @@ -325,83 +325,82 @@ listed in the other section. ] } } - } - 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 `_ 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,38 @@ listed in the other section. Defines the **contract** to resolve a resource. - `Here `_ + `Here `_ 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 `_ + `Here `_ 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 +541,17 @@ listed in the other section. Expects the **value to be defaulted** in the model itself. - `Here `_ + `Here `_ 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 +560,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 +591,107 @@ listed in the other section. * - expression-type - Path expression type - default value is JSON_PATH - Optional - - `Here `_ + + `Here `_ 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 +710,60 @@ listed in the other section. - Statement to execute - Mandatory - - `Here `_ + + `Here `_ 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 +778,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 `_ - is the definition: + `Here `_ + 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 +845,65 @@ listed in the other section. * - Property - Description - Scope - * - dependency-node-templates + * - dependency-node-templates - The node template the workflow depends on - Required - `Here `_ - is the definition: + `Here `_ + 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. @@ -945,7 +954,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 +1006,3 @@ listed in the other section. }, "derived_from": "tosca.nodes.Vnf" } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/modelingconcepts/overview.rst b/docs/modelingconcepts/overview.rst deleted file mode 100644 index 2ca70c719..000000000 --- a/docs/modelingconcepts/overview.rst +++ /dev/null @@ -1,48 +0,0 @@ -.. This work is a derivative of https://wiki.onap.org/display/DW/Modeling+Concepts -.. 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. - -Modeling Concepts -================== - -CDS is a framework to automate the **resolution of resources** for -**instantiation** and any **config** provisioning operation, such as -day0, day1 or day2 configuration. - -CDS has a 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 produce a :ref:`CBA Package`. Its **content** is driven from a -**catalog** of **reusable data dictionary** and **component**, -delivering a reusable and simplified **self service** experience. - -DS modelling is mainly based on `TOSCA -standard, `_ -using JSON as reprensentation. - -Most of the TOSCA modeled entity presented in the bellow documentation -can be found -`here `_. - -.. toctree:: - :caption: Table of Contents - :maxdepth: 1 - - CBA - Tosca.Meta - dynamic-payload - enrichment - Flexible Plug-in - expression - data-dictionary - data-type - artifact-type - node-type - workflow - template - scripts - southbound-interfaces - test - - 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=@ -F uat=@ -F uat=@ 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=@ 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 `_. -As UAT is part of unit testing, it runs in jenkins job -`ccsdk-cds-master-verify-java `_ +As UAT is part of unit testing, it runs in jenkins 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 `. -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 `_ @@ -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 -`_ +`Link of example +`_ .. 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 `_ diff --git a/docs/resourceassignment.rst b/docs/resourceassignment.rst deleted file mode 100644 index f4fab4ee3..000000000 --- a/docs/resourceassignment.rst +++ /dev/null @@ -1,73 +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 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. - -A template is parameterized and each parameter must be defined in a corresponding mapping file. - -In order to know which mapping correlate to which template, the file name must start with an artifact-prefix, serving as identifier to the overall template + mapping. - -The requirement is as follow: - -${artifact-prefix}-template -${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: - -- name -- required / optional -- type (support complex type) -- dictionary-name -- 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. - -These templates are specific to the pre-instantiation scenario, and relies on GR-API within SDNC. - -It is composed of the following sections: - -resource-accumulator-resolved-data: defines all the resources that can be resolved directly from the context. It expresses a direct mapping between the name of the resource and its value. - -capability-data: defines what capability to use to create a specific resource, along with the ingredients required to invoke the capability and the output mapping. - -- Scripts -- 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 netconf-component-executor. - -The client can be find here: https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/netconfclient.py \ No newline at end of file diff --git a/docs/resourcedefinition/index.rst b/docs/resourcedefinition/index.rst new file mode 100644 index 000000000..a91d5999f --- /dev/null +++ b/docs/resourcedefinition/index.rst @@ -0,0 +1,107 @@ +.. 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 Definition +------------------- +.. toctree:: + :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. + +A Resource definition can have multiple sources to handle resolution in different ways. The main goal of Resource definition is to define re-usable entity that could be shared. + +Creation of Resource definition is a standalone activity, separated from the blueprint design. + +As part of modelling a Resource definition entry, the following generic information should be provided: + +|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. + +|image1| + + +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: + +.. 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. + +A resource source is modeled, following TOSCA_ node type definition and derives from the Resource_ source. + +Also please click below for resource source available details + +.. toctree:: + :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 +.. _Resource: https://wiki.onap.org/display/DW/Modeling+Concepts#ModelingConcepts-NodeResourceSource + + +.. |image0| image:: media/mandatory.JPG + :width: 400pt + +.. |image1| image:: media/optional.JPG + :width: 400pt \ No newline at end of file diff --git a/docs/resourcedefinition/media/capabilitytable.JPG b/docs/resourcedefinition/media/capabilitytable.JPG new file mode 100644 index 000000000..7db4715ea Binary files /dev/null and b/docs/resourcedefinition/media/capabilitytable.JPG differ diff --git a/docs/resourcedefinition/media/mandatory.JPG b/docs/resourcedefinition/media/mandatory.JPG new file mode 100644 index 000000000..074d20076 Binary files /dev/null and b/docs/resourcedefinition/media/mandatory.JPG differ diff --git a/docs/resourcedefinition/media/optional.JPG b/docs/resourcedefinition/media/optional.JPG new file mode 100644 index 000000000..a27502a75 Binary files /dev/null and b/docs/resourcedefinition/media/optional.JPG differ diff --git a/docs/resourcedefinition/media/sqltable.JPG b/docs/resourcedefinition/media/sqltable.JPG new file mode 100644 index 000000000..15d246743 Binary files /dev/null and b/docs/resourcedefinition/media/sqltable.JPG differ diff --git a/docs/resourcedefinition/resourcesource.rst b/docs/resourcedefinition/resourcesource.rst new file mode 100644 index 000000000..4b7c8c73e --- /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": "", + "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" : "" + } + } + } + +basic-auth: +~~~~~~~~~~~ + +.. code-block:: json + :linenos: + + { + "dsl_definitions": { + "dynamic-rest-source": { + "type" : "basic-auth", + "url" : "http://localhost:32778", + "username" : "", + "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": "", + "sslKey": "keystore", + "sslKeyPassword": "" + } + } + } + +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/ui/designer.rst b/docs/ui/designer.rst new file mode 100644 index 000000000..e964f02fb --- /dev/null +++ b/docs/ui/designer.rst @@ -0,0 +1,416 @@ +.. 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 +=============== + +**Table of Contents** + +- `Getting + Started `__ + +- `What is CDS Designer + UI? `__ + +- `What's + new? `__ + +- `Overview of CDS + Interface `__ + +- `CBA + Packages `__ + + - `Package + list `__ + + - `Create a CBA + Package `__ + + - `User + Flow `__ + + - `Create a New + Package `__ + + - `MetaData <#CDSDesignerGuide-MetaData>`__ + + - `Template & Mapping <#CDSDesignerGuide-TemplateMapping>`__ + + - `Scripts <#CDSDesignerGuide-Scripts>`__ + + - `Definitions <#CDSDesignerGuide-Definitions>`__ + + - `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 | | +| the **resolution of resources** for | |image1| | +| **instantiation** and any **config** | | +| provisioning operation, such as day0, day1, | | +| or day2 configuration. | | +| | | +| 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 `__. | | +| 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| | +| | | | +| Create full CBA | Import old packages | Create sophisticated | +| packages from | for edit and | package workflows in | +| built-in forms | collaboration | a no-code graphical | +| without programming | | designer | +| | | | +| |image5| | |image6| | |image7| | +| | | | +| Customizable CBA | Easily create and | Integration between | +| Package actions | manage lists of data | CDS UI and SDC | +| | via interface (Data | Services | +| | Dictionary, | | +| | controller catalog, | | +| | and config | | +| | management) | | ++----------------------+----------------------+----------------------+ + +Overview of CDS Interface +------------------------- + +Full CDS UI screens are available in +`InVision `__ + +|image8| + +1. **CDS main menu:** Access all CDS module list including Packages, + Data Dictionary, Controller Catalog, etc. + +2. **Profile:** Access user profile information + +3. **Module Title:** See the current module name and the total number of + items in the module list + +4. **Module list:** View all active items in module and tools for search + and filtering + +CBA Packages +------------ + +- .. rubric:: Package List + :name: package-list + +It gives you quick access to all and most recent created/edit packages + +|image9| + +1. **Module Tabs:** Access All, Deployed, Under Construction, or + Archived packages + +2. **Search:** Search for a package by title + +3. **Filter:** Filter packages by package tags + +4. **Package Sort:** Sort packages by recent or alphanumeric (name) or + version + +5. **List Pagination:** navigate between package list pages + +6. **Create Package:** Create a new CBA package + +7. **Import Package:** Import other packages that are created + previously on CDS Editor or Designer or created by other/current + user + +8. **Package box:** It shows a brief detail of the package and gives + access to some actions of the package + +9. **Package name and version** + +10. **More menu:** Access a list of actions including Clone, Archive, + Download, and Delete + +11. **Last modified:** Shows user name and date and time of last + modifications made in the package + +12. **Package Description** + +13. **Collaborators:** See who's collaborating to edit in the package + +14. **Configuration button:** Go directly to package configuration + +15. **Designer Mode:** It indicates package mode (Designer, Scripting, + 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 + +|image10| + +- .. rubric:: Create a New Package + :name: 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. + +**Create/Import Package** + +You can’t create/import a CBA package that has the same name and version +of an existing package. Packages can be in the same name but in +different version number (ex., Package one v1.0.0 & Package one v1.0.1). + +**Create a New Custom CBA Package** + +From the Packages page, click on the **Create Package** button to +navigate to **Package** **Configuration** + +|image11| + +- .. rubric:: `MetaData `__ + :name: metadata + +In **MetaData Tab,** select Package Mode, enter package Name, Version, +Description and other configurations + +|image12| + +Once you fill all required inputs, you can save this package by click +**Save** button in the Actions menu + +|image13| + +**Package Info Box:** It is in top of configurations tabs and it appears +after you save a package for the first time + +|image14| + +You can continue adding package configuration or go directly to +**Designer Mode** screen from Package infobox + +All changes will be saved when you click on **Save** button + +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 `__ + :name: template-mapping + +You can create as many templates using +`artifact-mapping-resource `__ +or/and +`artifact-template-velocity. `__ + +|image15| + +1. **Template name** + +2. **Template Section:** Where you include template attributes + +3. **Manage Mapping:** Here the automapping process occurs to template + attributes to refer to the data dictionary that will be used to + resolve a particular resource. + +**Template Section** + +|image16| + +1. **Template Type:** Template is defined by one of three templates + (Velocity, Jinja, Kotlin) + +2. **Import Template Attributes/Parameters:** You can add attributes by + Import attribute list file or by + +3. **Insert Template Attributes/Parameters Manually:** You can insert + Attributes manually in the code editor. Code editor validates + attributes according to the pre-selected template type + +**Import Template Attributes** + +|image17| + +After import attributes, you can add/edit/delete attributes in the code +editor. + +|image18| + +**Manage Mapping Section** + +|image19| + +1. **Use current Template Instance:** You can use attributes from + Template section + +2. **Upload Attributes List:** In case you don’t have existing + attributes in Template section or have different attributes, you can + upload attributes list + +Once you select the source of attributes, you get a confirmation of +success fetching. + +|image20| + +Then the Mapped Table appears to show the Resource Dictionary reference. + +|image21| + +When you finish the creation process, you must click on **the Finish +button (1)** to submit the template, or you can clear all data by click +on **the Clear button** **(2).** + +|image22| + +- .. rubric:: `Scripts `__ + :name: scripts + +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 + +|image23| + +2. **Import File** + +|image24| + +By adding script file/s, you can: + +1. Edit file: You can edit each script file from the code editor + +2. Delete file + +|image25| + +- .. rubric:: `Definitions `__ + :name: definitions + +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 + +|image26| + +2. **Import File** + +|image27| + +By adding definition file/s, you can: + +1. Edit file: You can edit each definition file from the code editor + +2. Delete file + +|image28| + +- .. rubric:: `External System Authentication + Properties `__ + :name: external-system-authentication-properties + +In order to populate the system information within the package, you have +to provide **dsl_definitions** + +|image29| + + +.. |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 +.. |image3| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%202.png?version=1&modificationDate=1591032225000&api=v2 + :width: 47pt +.. |image4| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%203.png?version=1&modificationDate=1591032226000&api=v2 + :width: 47pt +.. |image5| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%204.png?version=1&modificationDate=1591032227000&api=v2 + :width: 60pt +.. |image6| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%205.png?version=1&modificationDate=1591032227000&api=v2 + :width: 50pt +.. |image7| image:: https://wiki.onap.org/download/thumbnails/84650426/Feature%206.png?version=1&modificationDate=1591032228000&api=v2 + :width: 30pt +.. |image8| image:: https://wiki.onap.org/download/attachments/84650426/Interface.jpg?version=1&modificationDate=1591033366000&api=v2 + :width: 500pt +.. |image9| image:: https://wiki.onap.org/download/attachments/84650426/Package%20List.jpg?version=1&modificationDate=1591033938000&api=v2 + :width: 500pt +.. |image10| image:: https://wiki.onap.org/download/attachments/84650426/Create%20Package%20User%20flow.jpg?version=1&modificationDate=1591034050000&api=v2 + :width: 500pt +.. |image11| image:: https://wiki.onap.org/download/attachments/84650426/Create%20Package.jpg?version=1&modificationDate=1591034193000&api=v2 + :width: 500pt +.. |image12| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20MetaData.jpg?version=1&modificationDate=1591034297000&api=v2 + :width: 500pt +.. |image13| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20Action%20Menu.jpg?version=1&modificationDate=1591034344000&api=v2 + :width: 500pt +.. |image14| image:: https://wiki.onap.org/download/attachments/84650426/Package%20Configuration%20-%20Info%20Box.jpg?version=1&modificationDate=1591034382000&api=v2 + :width: 500pt +.. |image15| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%201.jpg?version=1&modificationDate=1591638883000&api=v2 + :width: 500pt +.. |image16| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%202.jpg?version=1&modificationDate=1591638960000&api=v2 + :width: 500pt +.. |image17| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%203.jpg?version=1&modificationDate=1591639023000&api=v2 + :width: 500pt +.. |image18| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%206.jpg?version=1&modificationDate=1591639059000&api=v2 + :width: 500pt +.. |image19| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%207.jpg?version=1&modificationDate=1591639152000&api=v2 + :width: 500pt +.. |image20| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%208.jpg?version=1&modificationDate=1591639203000&api=v2 + :width: 500pt +.. |image21| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%209.jpg?version=1&modificationDate=1591639235000&api=v2 + :width: 500pt +.. |image22| image:: https://wiki.onap.org/download/attachments/84650426/Temp%20%26%20Mapp%2011.jpg?version=1&modificationDate=1591639260000&api=v2 + :width: 500pt +.. |image23| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%201.jpg?version=1&modificationDate=1591639325000&api=v2 + :width: 500pt +.. |image24| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%202.jpg?version=1&modificationDate=1591639391000&api=v2 + :width: 500pt +.. |image25| image:: https://wiki.onap.org/download/attachments/84650426/Scripts%203.jpg?version=1&modificationDate=1591639425000&api=v2 + :width: 500pt +.. |image26| image:: https://wiki.onap.org/download/attachments/84650426/Definitions%201.jpg?version=1&modificationDate=1591639459000&api=v2 + :width: 500pt +.. |image27| image:: https://wiki.onap.org/download/attachments/84650426/Definitions%202.jpg?version=1&modificationDate=1591639514000&api=v2 + :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 + :width: 500pt \ No newline at end of file diff --git a/docs/usecases/use-cases.rst b/docs/usecases/use-cases.rst index 59761a6a0..282f6a600 100644 --- a/docs/usecases/use-cases.rst +++ b/docs/usecases/use-cases.rst @@ -3,7 +3,7 @@ .. Copyright (C) 2020 Deutsche Telekom AG. Use Cases -================= +========= .. toctree:: :caption: Table of Contents diff --git a/docs/usecases/wordpress-cnf-poc.rst b/docs/usecases/wordpress-cnf-poc.rst index 90b92be07..31e0a509d 100644 --- a/docs/usecases/wordpress-cnf-poc.rst +++ b/docs/usecases/wordpress-cnf-poc.rst @@ -3,7 +3,7 @@ .. 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. diff --git a/docs/userguide/designtime.rst b/docs/userguide/designtime.rst new file mode 100644 index 000000000..3ec9ebf95 --- /dev/null +++ b/docs/userguide/designtime.rst @@ -0,0 +1,50 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2019 IBM. + +Design Time Tools Guide +======================= + +Below are the requirements to enable automation for a service within ONAP. + +For instantiation, the goal is to be able to automatically resolve all the HEAT/Helm variables, called cloud parameters. + +For post-instantiation, the goal is to configure the VNF with initial configuration. + +Prerequisite +------------ + +* Gather the cloud parameters: + +Instantiation: +~~~~~~~~~~~~~~ + +Have the HEAT template along with the HEAT environment file (or) Have the Helm chart along with the Values.yaml file + +(CDS supports, but whether SO → Multicloud support for Helm/K8S is different story) + + +Post-instantiation: +~~~~~~~~~~~~~~~~~~~ + +Have the configuration template to apply on the VNF. + +* XML for NETCONF +* JSON / XML for RESTCONF +* not supported yet - CLI +* JSON for Ansible [not supported yet] +* Identify which template parameters are static and dynamic +* Create and fill-in the a table for all the dynamic values + +While doing so, identify the resources using the same process to be resolved; for instance, if two IPs has to be resolved through the same IPAM, the process the resolve the IP is the same. + + +Services: +--------- + +.. toctree:: + :maxdepth: 2 + + ../CBA/index + ../resourcedefinition/index + resourceassignment diff --git a/docs/userguide/developer-guide.rst b/docs/userguide/developer-guide.rst new file mode 100644 index 000000000..3f8112244 --- /dev/null +++ b/docs/userguide/developer-guide.rst @@ -0,0 +1,13 @@ +.. This work is a derivative of https://wiki.onap.org/display/DW/Running+Blueprints+Processor+Microservice+in+an+IDE +.. 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. + +Developer Guide +================= + +.. toctree:: + :caption: Table of Contents + :maxdepth: 1 + + running-bp-processor-in-ide \ No newline at end of file diff --git a/docs/userguide/installation.rst b/docs/userguide/installation.rst new file mode 100644 index 000000000..4e15e980b --- /dev/null +++ b/docs/userguide/installation.rst @@ -0,0 +1,92 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2019 IBM. + + +Installation Guide +================== + +Installation +------------ + +ONAP is meant to be deployed within a Kubernetes environment. Hence, the de-facto way to deploy CDS is through Kubernetes. + +ONAP also package Kubernetes manifest as Chart, using Helm. + +Prerequisite +------------ + +https://docs.onap.org/en/latest/guides/onap-developer/settingup/index.html + +Setup local Helm +---------------- + +helm repo + +* helm serve & +* helm repo add local http://127.0.0.1:8879 + +Get the chart +------------- + +Make sure to checkout the release to use, by replacing $release-tag in bellow command + +git clone https://gerrit.onap.org/r/oom +git checkout tags/$release-tag +cd oom/kubernetes +make cds + +Install CDS +----------- + +helm install --name cds cds + +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 8080/TCP,9111/TCP 2m + service/cds NodePort 10.43.254.69 3000:30397/TCP 2m + service/cds-db ClusterIP None 3306/TCP 2m + service/controller-blueprints ClusterIP 10.43.207.152 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: +--------------- + +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 + + +Loopback Server: +~~~~~~~~~~~~~~~~ + +npm install in the directory cds/cds-ui/server +npm start should bring you the CDS UI page in your local machine with the link https://127.0.0.1:3000/ diff --git a/docs/userguide/media/build_logs.png b/docs/userguide/media/build_logs.png new file mode 100644 index 000000000..558fd60a8 Binary files /dev/null and b/docs/userguide/media/build_logs.png differ diff --git a/docs/userguide/media/create_run_config_java.png b/docs/userguide/media/create_run_config_java.png new file mode 100644 index 000000000..5d006e2ac Binary files /dev/null and b/docs/userguide/media/create_run_config_java.png differ diff --git a/docs/userguide/media/create_run_config_kt.png b/docs/userguide/media/create_run_config_kt.png new file mode 100644 index 000000000..6f86a7e3a Binary files /dev/null and b/docs/userguide/media/create_run_config_kt.png differ diff --git a/docs/userguide/media/expand_vm_options.PNG b/docs/userguide/media/expand_vm_options.PNG new file mode 100644 index 000000000..9cb98d3f9 Binary files /dev/null and b/docs/userguide/media/expand_vm_options.PNG differ diff --git a/docs/userguide/media/import_project.png b/docs/userguide/media/import_project.png new file mode 100644 index 000000000..06b36c53d Binary files /dev/null and b/docs/userguide/media/import_project.png differ diff --git a/docs/userguide/media/reimport_maven.png b/docs/userguide/media/reimport_maven.png new file mode 100644 index 000000000..bc49b3dc8 Binary files /dev/null and b/docs/userguide/media/reimport_maven.png differ diff --git a/docs/userguide/media/run_config_java.png b/docs/userguide/media/run_config_java.png new file mode 100644 index 000000000..4da5d7f34 Binary files /dev/null and b/docs/userguide/media/run_config_java.png differ diff --git a/docs/userguide/media/run_config_kt.png b/docs/userguide/media/run_config_kt.png new file mode 100644 index 000000000..4e88d2d0a Binary files /dev/null and b/docs/userguide/media/run_config_kt.png differ diff --git a/docs/userguide/media/run_debug.png b/docs/userguide/media/run_debug.png new file mode 100644 index 000000000..3aa90577f Binary files /dev/null and b/docs/userguide/media/run_debug.png differ diff --git a/docs/userguide/media/vsc_logs.png b/docs/userguide/media/vsc_logs.png new file mode 100644 index 000000000..886d1b3c5 Binary files /dev/null and b/docs/userguide/media/vsc_logs.png differ diff --git a/docs/userguide/resourceassignment.rst b/docs/userguide/resourceassignment.rst new file mode 100644 index 000000000..f4fab4ee3 --- /dev/null +++ b/docs/userguide/resourceassignment.rst @@ -0,0 +1,73 @@ +.. 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 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. + +A template is parameterized and each parameter must be defined in a corresponding mapping file. + +In order to know which mapping correlate to which template, the file name must start with an artifact-prefix, serving as identifier to the overall template + mapping. + +The requirement is as follow: + +${artifact-prefix}-template +${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: + +- name +- required / optional +- type (support complex type) +- dictionary-name +- 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. + +These templates are specific to the pre-instantiation scenario, and relies on GR-API within SDNC. + +It is composed of the following sections: + +resource-accumulator-resolved-data: defines all the resources that can be resolved directly from the context. It expresses a direct mapping between the name of the resource and its value. + +capability-data: defines what capability to use to create a specific resource, along with the ingredients required to invoke the capability and the output mapping. + +- Scripts +- 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 netconf-component-executor. + +The client can be find here: https://github.com/onap/ccsdk-apps/blob/master/components/scripts/python/ccsdk_netconf/netconfclient.py \ No newline at end of file diff --git a/docs/userguide/running-bp-processor-in-ide.rst b/docs/userguide/running-bp-processor-in-ide.rst new file mode 100644 index 000000000..1404c42b5 --- /dev/null +++ b/docs/userguide/running-bp-processor-in-ide.rst @@ -0,0 +1,445 @@ +.. This work is a derivative of https://wiki.onap.org/display/DW/Running+Blueprints+Processor+Microservice+in+an+IDE +.. 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. + +Running Blueprints Processor Microservice in an IDE +==================================================== + +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 +~~~~~~~~~~~~~~~~~~~ + +Check out the code from Gerrit: https://gerrit.onap.org/r/#/admin/projects/ccsdk/cds + +Build it locally +~~~~~~~~~~~~~~~~~~ + +In the checked out directory, type + +.. code-block:: bash + + mvn clean install -Pq -Dadditionalparam=-Xdoclint:none + +Spin up a Docker container with the database +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The Blueprints Processor project uses a database to store information about the blueprints +and therefore it needs to be online before attempting to run it. + +One way to create the database is by using the :file:`docker-compose.yaml` +file present on the distribution module. This database will require a local directory to mount a volume, before running docker-compose remember to create following directory: + +.. code-block:: bash + + mkdir -p -m 755 /opt/app/cds/mysql/data + +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 + + .. 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 + + .. code-block:: bash + + ms/blueprintsprocessor/distribution/src/main/dc + +And run docker-composer: + +.. code-block:: bash + + docker-compose up -d db + +This should spin up a container of the MariaDB image in the background. +To check if it has worked, this command can be used: + +.. code-block:: bash + + docker-compose logs -f + +The phrase ``mysqld: ready for connections`` indicates that the database was started correctly. + +From now on, the Docker container will be available on the computer; if it ever gets stopped, +it can be started again by the command: + +.. code-block:: bash + + docker start + + +Set permissions on the local file system +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Blueprints processor uses the local file system for some operations and, therefore, +need some existing and accessible paths to run properly. + +Execute the following commands to create the needed directories, and grant access to the current user to modify them: + +.. code-block:: bash + + mkdir -p -m 755 /opt/app/onap/blueprints/archive + mkdir -p -m 755 /opt/app/onap/blueprints/deploy + mkdir -p -m 755 /opt/app/onap/scripts + sudo chown -R $(id -u):$(id -g) /opt/app/onap/ + +Import the project into the IDE +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. tabs:: + + .. tab:: IntelliJ IDEA + + Go to *File | Open* and choose the :file:`pom.xml` file of the cds directory: + + |imageImportProject| + + Sometimes it may be necessary to reimport Maven project: + + |imageReimportMaven| + + + **Override some application properties:** + + After the project is compiled, a Run Configuration profile overriding some application properties + with custom values needs to be created, to reflect the local environment characteristics. + + .. 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= + + .. group-tab:: Frankfurt + + 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= + + .. group-tab:: El Alto + + Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class: + + ``ms/blueprintsprocessor/application/src/main/java/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.java.`` + + Right-click inside it, at any point, to load the context menu and select create + BlueprintProcessorApplication configuration from context: + + |imageCreateRunConfigJava| + + **The following window will open:** + + |imageRunConfigJava| + + **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= + + .. group-tab:: Dublin + + Navigate to the main class of the Blueprints Processor, the BlueprintProcessorApplication class: + + ``ms/blueprintsprocessor/application/src/main/java/org/onap/ccsdk/cds/blueprintsprocessor/BlueprintProcessorApplication.java``. + + Right-click inside it, at any point, to load the context menu and select create + BlueprintProcessorApplication configuration from context: + + |imageCreateRunConfigJava| + + **The following window will open:** + + |imageRunConfigJava| + + **Add the following in that field:** + + .. code-block:: java + :caption: **Custom values for properties** + + -DappName=ControllerBluePrints + -Dms_name=org.onap.ccsdk.apps.controllerblueprints + -DappVersion=1.0.0 + -Dspring.config.location=opt/app/onap/config/ + -Dspring.datasource.url=jdbc:mysql://127.0.0.1:3306/sdnctl + -Dspring.datasource.username=sdnctl + -Dspring.datasource.password=sdnctl + -Dcontrollerblueprints.loadInitialData=true + -Dblueprintsprocessor.restclient.sdncodl.url=http://localhost:8282/ + -Dblueprintsprocessor.db.primary.url=jdbc:mysql://localhost:3306/sdnctl + -Dblueprintsprocessor.db.primary.username=sdnctl + -Dblueprintsprocessor.db.primary.password=sdnctl + -Dblueprintsprocessor.db.primary.driverClassName=org.mariadb.jdbc.Driver + -Dblueprintsprocessor.db.primary.hibernateHbm2ddlAuto=update + -Dblueprintsprocessor.db.primary.hibernateDDLAuto=none + -Dblueprintsprocessor.db.primary.hibernateNamingStrategy=org.hibernate.cfg.ImprovedNamingStrategy + -Dblueprintsprocessor.db.primary.hibernateDialect=org.hibernate.dialect.MySQL5InnoDBDialect + -Dblueprints.processor.functions.python.executor.executionPath=./components/scripts/python/ccsdk_blueprints + -Dblueprints.processor.functions.python.executor.modulePaths=./components/scripts/python/ccsdk_blueprints,./components/scripts/python/ccsdk_netconf,./components/scripts/python/ccsdk_restconf + -Dblueprintsprocessor.restconfEnabled=true + -Dblueprintsprocessor.restclient.sdncodl.type=basic-auth + -Dblueprintsprocessor.restclient.sdncodl.url=http://localhost:8282/ + -Dblueprintsprocessor.restclient.sdncodl.username=admin + -Dblueprintsprocessor.restclient.sdncodl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U + -Dblueprintsprocessor.grpcEnable=false + -Dblueprintsprocessor.grpcPort=9111 + -Dblueprintsprocessor.blueprintDeployPath=/opt/app/onap/blueprints/deploy + -Dblueprintsprocessor.blueprintArchivePath=/opt/app/onap/blueprints/archive + -Dblueprintsprocessor.blueprintWorkingPath=/opt/app/onap/blueprints/work + -Dsecurity.user.password={bcrypt}$2a$10$duaUzVUVW0YPQCSIbGEkQOXwafZGwQ/b32/Ys4R1iwSSawFgz7QNu + -Dsecurity.user.name=ccsdkapps + -Dblueprintsprocessor.messageclient.self-service-api.kafkaEnable=false + -Dblueprintsprocessor.messageclient.self-service-api.topic=producer.t + -Dblueprintsprocessor.messageclient.self-service-api.type=kafka-basic-auth + -Dblueprintsprocessor.messageclient.self-service-api.bootstrapServers=127.0.0.1:9092 + -Dblueprintsprocessor.messageclient.self-service-api.consumerTopic=receiver.t + -Dblueprintsprocessor.messageclient.self-service-api.groupId=receiver-id + -Dblueprintsprocessor.messageclient.self-service-api.clientId=default-client-id + -Dspring.profiles.active=dev + -Dblueprintsprocessor.httpPort=8080 + -Dserver.port=55555 + + + **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:** + + .. code-block:: java + + blueprintsprocessor.grpcclient.remote-python.type=token-auth + blueprintsprocessor.grpcclient.remote-python.host=localhost + blueprintsprocessor.grpcclient.remote-python.port=50051 + blueprintsprocessor.grpcclient.remote-python.token=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw== + + blueprintprocessor.remoteScriptCommand.enabled=true + + + **Run the application:** + + Select either run or debug for this Run Configuration to start the Blueprints Processor: + + |imageRunDebug| + + |imageBuildLogs| + + .. tab:: Visual Studio Code + + .. tabs:: + + .. group-tab:: 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 `_ + * **Step #3** - On the top menu click *Run | Open Configurations* + + .. warning:: This should open the file called `launch.json` but in some cases you'll need to wait for the Kotlin Language Server to be installed before you can do anything. + Please watch the bottom bar in Visual Studio Code for messages about things getting installed. + + * **Step #4** - add configuration shown below to your configurations list. + + .. 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" + } + + .. warning:: The `projectRoot` path assumes that you created your Workspace in the main CDS repository folder. If not - please change the path accordingly + + .. note:: The `mainClass` contains a spring profile param before the full class name. This is done because `args` is not supported by Kotlin launch.json configuration. + If you have a cleaner idea how to solve this - please let us know. + + **Add/replace the following in Blueprint's application-dev.properties file:** + + .. code-block:: java + + blueprintsprocessor.grpcclient.remote-python.type=token-auth + blueprintsprocessor.grpcclient.remote-python.host=localhost + blueprintsprocessor.grpcclient.remote-python.port=50051 + blueprintsprocessor.grpcclient.remote-python.token=Basic Y2NzZGthcHBzOmNjc2RrYXBwcw== + + blueprintprocessor.remoteScriptCommand.enabled=true + + **Currently the following entries need to be added in VSC too:** + + .. code-block:: java + + logging.level.web=DEBUG + logging.level.org.springframework.web: DEBUG + + #Encrypted username and password for health check service + endpoints.user.name=eHbVUbJAj4AG2522cSbrOQ== + endpoints.user.password=eHbVUbJAj4AG2522cSbrOQ== + + #BaseUrls for health check blueprint processor services + blueprintprocessor.healthcheck.baseUrl=http://localhost:8080/ + blueprintprocessor.healthcheck.mapping-service-name-with-service-link=[Execution service,/api/v1/execution-service/health-check],[Resources service,/api/v1/resources/health-check],[Template service,/api/v1/template/health-check] + + #BaseUrls for health check Cds Listener services + cdslistener.healthcheck.baseUrl=http://cds-sdc-listener:8080/ + cdslistener.healthcheck.mapping-service-name-with-service-link=[SDC Listener service,/api/v1/sdclistener/healthcheck] + + #Actuator properties + management.endpoints.web.exposure.include=* + management.endpoint.health.show-details=always + management.info.git.mode=full + + In VSC the properties are read from target folder, thats why the following maven command needs to be rerun: + + .. code-block:: bash + + mvn clean install -DskipTests=true -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -Dadditionalparam=-Xdoclint:none + + Click Run in Menu bar. + + |imageLogsVSC| + + +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. + +To upload custom blueprints, the endpoint ``api/v1/execution-service/publish`` is used. + +To process, the endpoint is ``api/v1/execution-service/process``. + +Postman is a software that can be used to send these request, and an example of +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? +***************************************************************************** + +1. Rebuild with ``maven install ...`` (see above) +2. Potentially change Maven home directory in Settings +3. Maven reimport in IDE + +Compilation error? +******************** + +* Change Java Version to 11 + + +.. image alignment inside tabs doesn't work + +.. |imageRunConfigJava| image:: media/run_config_java.png + :width: 500pt + :align: middle + +.. |imageRunConfigKt| image:: media/run_config_kt.png + :width: 500pt + :align: middle + +.. |imageCreateRunConfigJava| image:: media/create_run_config_java.png + :width: 500pt + :align: middle + +.. |imageCreateRunConfigKt| image:: media/create_run_config_kt.png + :width: 500pt + :align: middle + +.. |imageImportProject| image:: media/import_project.png + :width: 300pt + :align: middle + +.. |imageReimportMaven| image:: media/reimport_maven.png + :width: 400pt + :align: middle + +.. |imageRunDebug| image:: media/run_debug.png + :width: 500pt + :align: middle + +.. |imageBuildLogs| image:: media/build_logs.png + :width: 500pt + :align: middle + +.. |imageLogsVSC| image:: media/vsc_logs.png + :width: 500pt + :align: middle -- cgit 1.2.3-korg