...
- A design phase in which users define and deploy policies and closed-loops from CLAMP;
- Closed-loop- and Policy-based automation;
- Guard policies that allow/deny scale out operations based on frequency limits or max number of instances already scaled;
- New and improved workflow that leverages SO ability to compose building blocks on the fly;
- Use of Generic Resource APIs for VNF instantiation and lifecycle management (as opposed to the old VNF APIs);
- VNF health check;
- Support for multiple VNF types;
- Support for multiple VNF controllers, i.e. APPC (officially supported) and SDNC (experimental);
- Ability to define lifecycle management configuration from CLAMP (automated trigger) or VID (manual trigger).
This This is a different kind of Use Case for ONAP that Integrates many of the projects to show how they can work together to perform a complex but essential activity.
The use case has been successfully demonstrated against docker images released for Casablanca, using the vLB/vDNS VNFs available in the Demo repository in Gerrit (https://gerrit.onap.org/r/gitweb?p=demo.git;a=tree;f=heat/vLBMS;h=37f803e33c6e1e41c3e7c5b009feeb7e3e1953d0;hb=refs/heads/casablanca).
Known Issues and Resolutions
1) When running closed loop-enabled scale out, the closed loop designed in CLAMP
...
conflicts with the default closed loop defined for the old vLB/vDNS use case
Resolution: Change TCA configuration for the old vLB/vDNS use case
- Connect to Consul: http://<Cluster IP>:30270 and click on "Key/Value" → "dcae-tca-analytics"
- Change "eventName" in the vLB default policy to something different, for example "vLB" instead of the default value "vLoadBalancer"
- Change "subscriberConsumerGroup" in the TCA configuration to something different, for example "OpenDCAE-c13" instead of the default value "OpenDCAE-c12"
- Click "UPDATE" to upload the new TCA configuration
2) When running closed loop-enabled scale out, the permitAll guard policy conflicts with the scale out guard policy
Resolution: Undeploy the permitAll guard policy
- Connect to the Policy GUI, either through the ONAP Portal (https://portal.api.simpledemo.onap.org:30225/ONAPPORTAL/login.htm) or directly (https://policy.api.simpledemo.onap.org:30219/onap/login.htm)
- If using the ONAP Portal, use demo/demo123456! as credentials, otherwise, if accessing Policy GUI directly, use demo/demo
- Click "Policy" → "Push" on the left panel
- Click the pencil symbol next to "default" in the PDP Groups table
- Select "Decision_AllPermitGuard"
- Click "Remove"
3) When using SDNC, the JSON template for DMaaP messages has a wrong "input" field
Resolution: Replace the "input" field in the JSON template with "output"
- Connect to the SDNC container from the Rancher VM in the Kubernetes cluster, for example kubectl exec -it -n onap dev-sdnc-sdnc-0 bash
- Install your favorite text editor, for example apt-get update; apt-get install vim -y
Open /opt/onap/sdnc/restapi/templates/lcm-dmaap-publish-template.json and replace "input" with "output" in the JSON object body
Save the changes
If SDNC is deployed in cluster mode (3 SDNC replicas, dev-sdnc-sdnc-0, dev-sdnc-sdnc-1, dev-sdnc-sdnc-2), apply the same change to all the replicas in the cluster
Videos:
These videos provide a detailed documentation of how to run scale out use case using manual or automated (i.e. closed loop-enabled) trigger:
Material Used for the Demo
Heat templates for the vLB/vDNS VNFs: vLBMS.zip
DCAE Blueprint: tca_docker_k8s_v4.yaml
SDNC preload for the base VNF: base_preload.txt
SDNC preload of the scaling VF module (must be updated for each VF module): scaleout_preload.txt
Example of SDNC VF module topology to define a JSON path to configuration parameters for scale out: sdnc_resource_example.txt
Configuration parameters:
Define a JSON path to "vdns_private_ip_0", "vdns_private_ip_1", and "enabled". Use the following formats for VID and Policy:
VID:
[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[10].value","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[15].value","enabled":"$.vf-module-topology.vf-module-parameters.param[22].value"}]
POLICY:
requestParameters: '{"usePreload":true,"userParams":[]}'
configurationParameters: '[{"ip-addr":"$.vf-module-topology.vf-module-parameters.param[10].value","oam-ip-addr":"$.vf-module-topology.vf-module-parameters.param[15].value","enabled":"$.vf-module-topology.vf-module-parameters.param[22].value"}]'