Background


  • For the ONAP Beijing release, the APPC project delivered the CDT design tool to support the APPC model driven design approach.
  • For the next ONAP releases Casablanca, we are proposing to develop a common design tool to support both SDNC and Generic L4-7 NFs (APPC, VFC) Controller integrated with SDC.
  • This common design tool, also called “Controller Design Studio”, will be built with associated data dictionary and an Ingredient Resource Resolution Microservice
  • The common design tool models shall be backwards compatible to the current use cases supported in Amsterdam and  Beijing release by Generic L4-7 NF (APP-C specific). 

Introduction

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 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.  This makes SERVICE PROVIDER(S) more responsive to its customers and able to deliver products that more closely match the needs of its customers.

Architecture

The Controller Design Studio is composed of two major components: the GUI (or frontend) and the Run Time (or backend).  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, 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 configuration file from this Controller blueprint, and download this configuration file (configlet) to a VNF/PNF.




Detailed Architecture PowerPoint Package:

Controller Design Studio.pptx

Proposed Work Items

Design Time

Feature
DescriptionJIRA  Owner Wiki PageNotes 

Controller Design Studio GUI





1Refactor and move the APP-C CDT to CCSDK for "Controller Design Studio" mS.


CCSDK-334 - Getting issue details... STATUS






AT&T

All Controller Design Studio will be maintained in the APP-C repo[appc/cdt]] for Casablanca Release.

JIRA can be canceled.

2

CDS Controller Blueprint Creation and Management including artifact model, component model, connectivity model, and dg modeling in "Controller Design Studio" mS.

APPC-1129 - Getting issue details... STATUS





AT&T


[appc/cdt]] - Srikanth V


APPC-1133 - Getting issue details... STATUS

APPC-1152 - Getting issue details... STATUS

APPC-1153 - Getting issue details... STATUS

APPC-1154 - Getting issue details... STATUS

APPC-1155 - Getting issue details... STATUS

APPC-1156 - Getting issue details... STATUS

APPC-1177 - Getting issue details... STATUS

APPC-1179 - Getting issue details... STATUS



3

CDS Catalog Creation and Management in "Controller Design Studio" mS.

4

CDS Data Dictionary Creation and Management in "Controller Design Studio" mS.

5

CDT enhance existing screen to support data dictionary panel layout and data dictionary reference model creation for existing APP-C Models.

APPC-1131 - Getting issue details... STATUS

AT&T  

Tech M

IBM

Bell Canada

Erickson


 [appc/cdt]]

In Progress


Girish - Tech M

6

Controller Design Time Studio app extension with SDC integration.


CCSDK-338 - Getting issue details... STATUS


AT&T  

Tech M

IBM

Bell Canada


Deferred to the next ONAP release


7  CDS Backend mS Support 

  CCSDK-458 - Getting issue details... STATUS

CCSDK-410 - Getting issue details... STATUS

CCSDK-415 - Getting issue details... STATUS

CCSDK-416 - Getting issue details... STATUS

AT&T   

ccsdk/apps

Brinda 


CCSDK-467 - Getting issue details... STATUS

CCSDK-468 - Getting issue details... STATUS

CCSDK-469 - Getting issue details... STATUS

CCSDK-483 - Getting issue details... STATUS

CCSDK-487 - Getting issue details... STATUS

CCSDK-488 - Getting issue details... STATUS

CCSDK-491 - Getting issue details... STATUS

CCSDK-429 - Getting issue details... STATUS  

CCSDK-431 - Getting issue details... STATUS

CCSDK-432 - Getting issue details... STATUS

CCSDK-484 - Getting issue details... STATUS


 8Policy Manager Naming Policy support for vFW Use case  AT&T 

 Support the vFW naming policy model and policy instance as part of PM deployment

POLICY-983 - Getting issue details... STATUS



Run Time 

Feature
DescriptionJIRA  ContributorsWiki Page NOTEs
  Instantiation  1Generic Resource API integration with netbox ip management capability for assign


CCSDK-339 - Getting issue details... STATUS






Bell Canada

Alexis/Marc - Implementation Completed for all the Self Service sub dg and integration with netbox capability. Target Completion Date (9/07) - Delivered


Ajay/Pat  - Push the latest Sub DG to ONAP and Refactor naming Gen Sub DG to call the naming mS Rest API directly.

  CCSDK-481 - Getting issue details... STATUS

CCSDK-482 - Getting issue details... STATUS



2Generic Resource API integration with netbox ip management capability for unassign 

CCSDK-340 - Getting issue details... STATUS

Bell Canada

Alexis/Marc - Implementation Completed for all the Self Service sub dg and integration with netbox capability. Target Completion Date (9/07) - Delivered

3netbox ip management REST API support in ONAP


CCSDK-341 - Getting issue details... STATUS






Bell Canada

Alexis/Marc - Implementation Completed for all the Netbox Client with Helm chart , pre-provisioning script and DB Creation. 


Create a helm chart for use case: CCSDK-366 - Getting issue details... STATUS

pre-provisioning scripts (Targeted for 8/17): 

CCSDK-460 - Getting issue details... STATUS

Netbox Client – (Reserve the IP) - Target for 8/17

CCSDK-462 - Getting issue details... STATUS


IPAM DB Creation: Target for 8/17

CCSDK-463 - Getting issue details... STATUS


4Policy driven naming mS in ONAP

CCSDK-342 - Getting issue details... STATUS

AT&T

[ccsdk/apps] 

Biju T: 7/20 for draft code submission and including draft template. (Preference with policy to boot with the artifacts)

8/17 – Submitted the Code

5Resource Resolution using data dictionary mS in ONAP

CCSDK-411 - Getting issue details... STATUS

CCSDK-412 - Getting issue details... STATUS


CCSDK-412 - Getting issue details... STATUS




AT&T  

[ccsdk/apps] - Dan T contributed the fist batch of code in draft version.

 Kapil S/Brinda S

In Progress

CCSDK-490 - Getting issue details... STATUS


6Template meshing mS in ONAP


CCSDK-344 - Getting issue details... STATUS







AT&T

[ccsdk/apps] - Dan T contributed the fist batch of code in draft version.

 Kapil S/Brinda S

In Progress 

  • Design Time (Draft Code Submitted and API testing in progress.)
  • Runtime (requires discussion)



7Controller Design Time Studio app extension with SDC integration ingest and store the artifact in the controller persona (SDN-C)


CCSDK-345 - Getting issue details... STATUS






AT&T  

Tech M

IBM

Bell Canada


Deferred to the next ONAP release


8Controller Design Time Studio app extension with SDC integration ingest and store the artifact in the controller persona (APP-C)

CCSDK-349 - Getting issue details... STATUS

AT&T

Tech M

IBM

Bell Canada


Deferred to the next ONAP release


Heat and SDC Tosca Update for VFW to include SDNC Controller Blueprint Model Information.
 

CCSDK-380 - Getting issue details... STATUS

 Bell Canada 

  CCSDK-493 - Getting issue details... STATUS

Post Instantiation

1APP-C Integration with resource resolution REST API based on data dictionary.

APPC-1077 - Getting issue details... STATUS

AT&T

Tech M

IBM

Bell Canada

Erickson


scale out use case. (include the discussion with Scott)


Krill


Swagger API for calling the RA API for data and artifact collection. Brinda/Kapil to provide this information.


Taka is the PTL for APP-C. Need to review the design with Taka before code contribution.


In Progress.



2

CDS Contribution for Configuration Generation, Preview and Deployment.


CCSDK-346 - Getting issue details... STATUS






AT&T

Kapil S/Brinda S


Deferred to Dublin Release





























Artifact

Instantiation

{

  "resource-accumulator-resolved-data": [

    {

"param-name": "service-instance-id",

      "param-value": "${service-instance-id}"

    },

    {

      "param-name": "vnf_id",

      "param-value": "${vnf-id}"

    },

    {

      "param-name": "vnf_name",

      "param-value": "${vnf-name}"

    },

    {

      "param-name": "vnf_model_customization_uuid",

      "param-value": "${vnf-model-customization-uuid}"

    },

    {

      "param-name": "vf_module_id",

      "param-value": "${vf-module-id}"

    },

    {

      "param-name": "vf_module_customization_uuid",

      "param-value": "${vf-module-model-customization-uuid}"

    },

    {

      "param-name": "aic-cloud-region",

      "param-value": "${aic-cloud-region}"

    },

    {

      "param-name": "aic_clli",

      "param-value": "${aic_clli}"

    },

    {

      "param-name": "avaiablity_zone_0",

      "param-value": "${avaiablity_zone_0}"

    },

    {

      "param-name": "cloud_env",

      "param-value": "openstack"

    },

    {

      "param-name": "repo_url_artifacts",

      "param-value": "

https://nexus.onap.org/content/groups/staging"

    },

    {

      "param-name": "repo_url_blob",

      "param-value": "

https://nexus.onap.org/content/repositories/raw"

    },

    {

      "param-name": "dcae_collector_port",

      "param-value": "8080"

    },

    {

      "param-name": "image_name",

      "param-value": "Ubuntu 14.04 LTS Generic"

    },

    {

      "param-name": "flavor_name",

      "param-value": "m1.medium"

    },

    {

      "param-name": "install_script_version",

      "param-value": "1.2.1-SNAPSHOT"

    },

    {

      "param-name": "demo_artifacts_version",

      "param-value": "1.2.1-SNAPSHOT"

    },

    {

      "param-name": "dcae_collector_ip",

      "param-value": "10.0.4.1"

    },

    {

      "param-name": "pub_key",

      "param-value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKXDgoo3+WOqcUG8/5uUbk81+yczgwC4Y8ywTmuQqbNxlY1oQ0YxdMUqUnhitSXs5S/yRuAVOYHwGg2mCs20oAINrP+mxBI544AMIb9itPjCtgqtE2EWo6MmnFGbHB4Sx3XioE7F4VPsh7japsIwzOjbrQe+Mua1TGQ5d4nfEOQaaglXLLPFfuc7WbhbJbK6Q7rHqZfRcOwAMXgDoBqlyqKeiKwnumddo2RyNT8ljYmvB6buz7KnMinzo7qB0uktVT05FH9Rg0CTWH5norlG5qXgP2aukL0gk1ph8iAt7uYLf1ktp+LJI2gaF6L0/qli9EmVCSLr1uJ38Q8CBflhkh"

    }

  ],

  "capability-data": [

    {

      "capability-name": "generate-name",

      "key-mapping": [

        {

          "payload": [

            {

              "param-name": "resource-name",

              "param-value": "vsn_name_0"

            },

            {

              "param-name": "external-key",

              "param-value": "${vf-module-id}_vsn_name_0"

            },

            {

              "param-name": "policy-instance-name",

              "param-value": "${vsn-naming-policy}"

            },

            {

              "param-name": "nf-role",

              "param-value": "${nf-role}"

            },

            {

              "param-name": "naming-type",

              "param-value": "VM"

            },

            {

              "param-name": "VNF_NAME",

              "param-value": "${vnf-name}"

            },

            {

              "param-name": "NFC_NAMING_CODE",

              "param-value": "${nfc-naming-code}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vsn_name_0",

              "resource-value": "${vsn_name_0}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "resource-name",

              "param-value": "vfw_name_0"

            },

            {

              "param-name": "external-key",

              "param-value": "${vf-module-id}_vfw_name_0"

            },

            {

              "param-name": "policy-instance-name",

              "param-value": "${vfw-naming-policy}"

            },

            {

              "param-name": "nf-role",

              "param-value": "${nf-role}"

            },

            {

              "param-name": "naming-type",

              "param-value": "VM"

            },

            {

              "param-name": "VNF_NAME",

              "param-value": "${vnf-name}"

            },

            {

              "param-name": "NFC_NAMING_CODE",

              "param-value": "${nfc-naming-code}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vsn_name_0",

              "resource-value": "${vfw_name_0}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "resource-name",

              "param-value": "vf-module-name"

            },

            {

              "param-name": "external-key",

              "param-value": "${vf-module-id}"

            },

            {

              "param-name": "policy-instance-name",

              "param-value": "${vf-naming-policy}"

            },

            {

              "param-name": "nf-role",

              "param-value": "${nf-role}"

            },

            {

              "param-name": "naming-type",

              "param-value": "VF-MODULE"

            },

            {

              "param-name": "VNF_NAME",

              "param-value": "${vnf-name}"

            },

            {

              "param-name": "VF_MODUEL_LABLE",

              "param-value": "${vf-module-label}"

            },

            {

              "param-name": "VF_MODUEL_TYPE",

              "param-value": "${vf-module-type}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vf_module_name",

              "resource-value": "${vf-module-name}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "resource-name",

              "param-value": "volume-name"

            },

            {

              "param-name": "policy-instance-name",

              "param-value": "${vf-naming-policy}"

            },

            {

              "param-name": "nf-role",

              "param-value": "${nf-role}"

            },

            {

              "param-name": "naming-type",

              "param-value": "VOLUME"

            },

            {

              "param-name": "VOLUME_GROUP_NAME",

              "param-value": "${volume-group-name}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vmxvre_volume_name_1",

              "resource-value": "${volume-name}"

            },

            {

              "resource-name": "vmxvre_volume_name_0",

              "resource-value": "${volume-name}"

            }

          ]

        }

      ]

    },

    {

      "capability-name": "netbox-ip-assignment",

      "key-mapping": [

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "protected_private_net_cidr",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "onap_private_net_cidr",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vpg_private_ip_0",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vfw_private_ip_2",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vfw_private_ip_1",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vfw_private_ip_0",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vsn_private_ip_1",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "vsn_private_ip_0",

              "resource-value": "${address}"

            }

          ]

        },

        {

          "payload": [

            {

              "param-name": "service-instance-id",

              "param-value": "${service-instance-id}"

            },

            {

              "param-name": "prefix-id",

              "param-value": "${prefix-id}"

            },

            {

              "param-name": "vf-module-id",

              "param-value": "${vf-module-id}"

            }

          ],

          "output-key-mapping": [

            {

              "resource-name": "unprotected_private_net_cidr",

              "resource-value": "${address}"

            }

          ]

        }

      ]

    }

  ]

}



Controller Design Studio Functionality Demo:






  • No labels

7 Comments

  1. i think some of the terminologies here needs to be addressed. are you planning to create service models in Tosca as part of the design tool?

  2. Its probably better if we change the service model creation to controller blueprint creation/management to avoid confusion.

    SDC include capability for additional modeling tools integration. In Casablanca release, the proposal is to integrate the Controller Design Studio APP ext with SDC.

    SDC shall make available the controller design studio app as part of the Service Model and/or VNF resource context for a service designer to create a controller blueprint at either level. The controller artifact will be add on artifact in the csar file. To keep it simple for Casablanca, we will not integrate the controller artifact inside of Tosca.


    IFRAME

    • Abstract for login management
      • Roles will be passed to the controller design time studio.  (AAF)
      • No New Roles will be expected to be added for just controller portal.
    • Abstraction of the service users are working on.
    • Abstraction of service certification and distribution.  (Artifact Management)
    • Front end service has a roll based (tester, designer) and context (Service, VNF, VF) configuration and that includes details the server location.
    • Use an external an API to upload an artifact for service specific.
    • Look and feel guidelines.
      • ASDC UI Library.
        • Angular JS and React
          • Fonts , style 
          • Meta can retrieve from SDC at Service/VNF Level using APIs.
          • Notification à SDC will notify if someone make changes outside the IFRAME block.
    • Isolated distribution of artifact within service  (roadmap)
      • This would a the right approach from long term perspective.


    1. yes, this will make thing clear.

      we will need to address how the design tool can edit an artifact that has already been attached and how it can match that artifact incases the service/vf version has been changed.

  3. Does Casablanca version of CDS allow a vendor provided YANG data model artifact to be used such that vendor specific configuration data for VNF/PNF can be included in closed loops?    And the configuration changes will be made via NETCONF interface from SDNC?  If so (or if only a portion of this is supported) where can I find details on how this is to be done?  

    1. HI Rebecca, For Dublin release the plan is to support the POST Instantiation capabilities.  In Casablanca release, we are focusing on the instantiation use cases. Please let me know if Erickson is interested in contributing to the CDS Initiative for Dublin release.  

      1. Thanks Yuriy Malakov.  For Casablanca does your focus also include the PNF instantiation (5G PNP) use case?  Or just for VNFs?

        1. In Casablanca release, the current focus is to provide platform capabilities to instantiation a Network Function in Casablanca release. The platform capabilities include Auto Naming Generation (using Network Naming mS) , Auto IP Assignment (using Netbox MS).

          In Casablanca release, the use case to test out the capabilities includes vFW (traffic generator and firewall).

          In Dublin release, we can work together to extend the automation capabilities to other use case such as PNF or vCPE. Please let us know if you interested so we can start the planning session for Dublin release within the next couple weeks.