From 9442f8f2f2f5eedec09285da7239a0877b10f076 Mon Sep 17 00:00:00 2001 From: Marco Platania Date: Mon, 17 Jun 2019 09:12:21 -0400 Subject: Fix path to images in scale out doc Change-Id: Ib923adec90f3c9493fcc957746f23ff6aac478d3 Issue-ID: INT-1104 Signed-off-by: Marco Platania --- docs/docs_scaleout.rst | 90 +++++++++++++++++-------------- docs/docs_usecases.rst | 4 +- docs/docs_vfw.rst | 26 +++++---- docs/files/scaleout/push_naming_policy.sh | 38 +++++++++++++ 4 files changed, 103 insertions(+), 55 deletions(-) create mode 100755 docs/files/scaleout/push_naming_policy.sh (limited to 'docs') diff --git a/docs/docs_scaleout.rst b/docs/docs_scaleout.rst index 3c423d473..88a44293c 100644 --- a/docs/docs_scaleout.rst +++ b/docs/docs_scaleout.rst @@ -11,13 +11,14 @@ Additional files ~~~~~~~~~~~~~~~~ - DCAE blueprint: https://git.onap.org/integration/tree/docs/files/scaleout/k8s-tca-clamp-policy-05162019.yaml - TOSCA model template: https://git.onap.org/integration/tree/docs/files/scaleout/service-Vloadbalancercds-template.yml +- Naming policy script: https://git.onap.org/integration/tree/docs/files/scaleout/push_naming_policy.sh Description ~~~~~~~~~~~ The scale out use case uses a VNF composed of three virtual functions. A traffic generator (vPacketGen), a load balancer (vLB), and a DNS (vDNS). Communication between the vPacketGen and the vLB, and the vLB and the vDNS occurs via two separate private networks. In addition, all virtual functions have an interface to the ONAP OAM private network, as shown in the topology below. -.. image:: topology.png - :target: files/scaleout/topology.png +.. figure:: files/scaleout/topology.png + :align: center The vPacketGen issues DNS lookup queries that reach the DNS server via the vLB. vDNS replies reach the packet generator via the vLB as well. The vLB reports the average amount of traffic per vDNS instances over a given time interval (e.g. 10 seconds) to the DCAE collector via the ONAP OAM private network. @@ -76,64 +77,71 @@ During the creation of the service, there are a few extra steps that need to be After importing the Vendor Software Package (VSP), as described in the SDC wiki page, users need to set property values in the Property Assignment window, as shown below: -.. image:: 9.png - :target: files/scaleout/9.png +.. figure:: files/scaleout/9.png + :align: center These properties include parameters in the Heat template (which will be overridden by CDS and then don't need to be changed) and other parameters that describe the VNF type or are used to link the service to the configuration in the CDS package. Users can search for parameter names starting with "nf" to assign values that describe the VNF type, such as nf_type, nf_function, and nf_role. Users are free to choose the values they like. Users should also set "skip_post_instantiation" to "TRUE", as for Dublin CDS is not used for post-instantiation configuration. -.. image:: 10.png - :target: files/scaleout/10.png +.. figure:: files/scaleout/10.png + :align: center For CDS parameters, users can search for names starting with "sdnc". These parameters have to match the configuration blueprint in CDS. To use the standard blueprint shipped with CDS, please set the parameters as below. For further details, please refer to the CDS documentation. -.. image:: 11.png - :target: files/scaleout/11.png +.. figure:: files/scaleout/11.png + :align: center After importing the VSP, users need to onboard the DCAE blueprint and the Policy Model used to design closed loops in CLAMP. From the "Composition" tab in the service menu, select the artifact icon on the right, as shown below: -.. image:: 1.png - :target: files/scaleout/1.png +.. figure:: files/scaleout/1.png + :align: center Upload the DCAE blueprint linked at the top of the page using the pop-up window. -.. image:: 2.png - :target: files/scaleout/2.png +.. figure:: files/scaleout/2.png + :align: center The blueprint will appear in the artifacts section on the right. -.. image:: 3.png - :target: files/scaleout/3.png +.. figure:: files/scaleout/3.png + :align: center To attach a Policy Model to the service, open the Policy drop-down list on left. -.. image:: 4.png - :target: files/scaleout/4.png +.. figure:: files/scaleout/4.png + :align: center Then, add the TCA Policy. -.. image:: 5.png - :target: files/scaleout/5.png +.. figure:: files/scaleout/5.png + :align: center The Policy will be attached to the service. -.. image:: 6.png - :target: files/scaleout/6.png +.. figure:: files/scaleout/6.png + :align: center Finally, users need to provide the maximum number of instances that ONAP is allowed to create as part of the scale out use case by setting up deployment properties. -.. image:: 7.png - :target: files/scaleout/7.png +.. figure:: files/scaleout/7.png + :align: center This VNF only supports scaling the vDNS, so users should select the vDNS module from the right panel and then click the "max_vf_module_instance" link. The maximum number of instances to scale can be set to an arbitrary number higher than zero. -.. image:: 8.png - :target: files/scaleout/8.png +.. figure:: files/scaleout/8.png + :align: center At this point, users can complete the service creation by testing, accepting, and distributing the Service Models as described in the SDC wiki page. +In order to instantiate the VNF using CDS features, users need to deploy the naming policy that CDS uses for resource name generation to the Policy Engine. User can copy and run the script at the top of the page from any ONAP pod, for example Robot or Drools. The script uses the Policy endpoint defined in the Kubernetes domain, so the execution has to be triggered from some pod in the Kubernetes space. + +:: + + kubectl exec -it dev-policy-drools-0 + ./push_naming_policy.sh + Closed Loop Design from CLAMP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -141,35 +149,35 @@ Once the service is distributed, users can design the closed loop from CLAMP, us Use the "Closed Loop" link to open a distributed model. -.. image:: 12.png - :target: files/scaleout/12.png +.. figure:: files/scaleout/12.png + :align: center Select the closed loop associated to the distributed service model. -.. image:: 13.png - :target: files/scaleout/13.png +.. figure:: files/scaleout/13.png + :align: center The closed loop main page for TCA microservices is shown below. -.. image:: 14.png - :target: files/scaleout/14.png +.. figure:: files/scaleout/14.png + :align: center Click on the TCA box to create a configuration policy. From the pop-up window, users need to click "Add item" to create a new policy and fill it in with specific information, as shown below. -.. image:: 15.png - :target: files/scaleout/15.png +.. figure:: files/scaleout/15.png + :align: center For this use case, the control loop schema type is "VM", while the event name has to match the event name reported in the VNF telemetry, which is "vLoadBalancer". Once the policy item has been created, users can define a threshold that will be used at runtime to evaluate telemetry reported by the vLB. When the specified threshold is crossed, DCAE generates an ONSET event that will tell Policy Engine which closed loop to activate. -.. image:: 16.png - :target: files/scaleout/16.png +.. figure:: files/scaleout/16.png + :align: center After the configuration policy is created, users need to create the operational policy, which the Policy Engine uses to determine which actions and parameters should be used during closed loop. -.. image:: 17.png - :target: files/scaleout/17.png +.. figure:: files/scaleout/17.png + :align: center Select "VF Module Create" recipe and "SO" actor. The payload section is: @@ -188,15 +196,15 @@ indicates that resolution for parameter "ip-addr" is available at "$.vf-module-t The target type to select is VF module, as we are scaling a VF module. Please select the vDNS module as target resource ID. -.. image:: 18.png - :target: files/scaleout/18.png +.. figure:: files/scaleout/18.png + :align: center For what regards guard policies, either "Frequency Limiter", or "MinMax", or both can be used for the scale out use case. The example below shows the definition of a "Frequency Limiter" guard policy. Irrespective of the guard policy type, the policy name should be x.y.scaleout. Once the operational policy design is completed, users can submit and then deploy the closed loop clicking the "Submit" and "Deploy" buttons, respectively, as shown below. -.. image:: 20.png - :target: files/scaleout/20.png +.. figure:: files/scaleout/20.png + :align: center At this point, the closed loop is deployed to Policy Engine and DCAE, and a new microservice will be deployed to the DCAE platform. @@ -315,7 +323,7 @@ SO has a default entry for VNF type "vLoadBalancerMS/vLoadBalancerMS 0" How to Use ~~~~~~~~~~ -After the VNF has been instantiated using the CDS configuration blueprint, user should manually configure the vLB to open a connection towards the vDNS. At this time, automated post-instantiation configuration with CDS is not supported. Note that this step is NOT required during scale out operations, as VNF reconfiguration will be triggered by SO and executed by APPC. To change the state of the vLB, the users can run the following REST call, replacing the IP addresses in the VNF endpoint and JSON object to match the private IP addresses of their vDNS instance: +After the VNF has been instantiated using the CDS configuration blueprint, user should manually configure the vLB to open a connection towards the vDNS. At this time, the use case doesn't support automated post-instantiation configuration with CDS. Note that this step is NOT required during scale out operations, as VNF reconfiguration will be triggered by SO and executed by APPC. To change the state of the vLB, the users can run the following REST call, replacing the IP addresses in the VNF endpoint and JSON object to match the private IP addresses of their vDNS instance: :: diff --git a/docs/docs_usecases.rst b/docs/docs_usecases.rst index 88e21d0b3..ed0616981 100644 --- a/docs/docs_usecases.rst +++ b/docs/docs_usecases.rst @@ -20,14 +20,12 @@ Use Cases ~~~~~~~~~ :ref:`vFirewall Use Case ` -:ref:`vLoadBalancer Use Case ` +:ref:`VF Module Scale Out Use Case (vLoadBalancer/vDSN example) ` :ref:`vCPE Use Case ` :ref:`vCPE with TOSCA VNF (w/ HPA) Use Case ` -:ref:`VF Module Scale Out Use Case ` - :ref:`CCVPN (Cross Domain and Cross Layer VPN) Use Case ` :ref:`vFirewall with HPA Use Case ` diff --git a/docs/docs_vfw.rst b/docs/docs_vfw.rst index bb57c6ae3..373348644 100644 --- a/docs/docs_vfw.rst +++ b/docs/docs_vfw.rst @@ -6,11 +6,11 @@ vFirewall Use Case Source files ~~~~~~~~~~~~ -- vFirewall/vSink template file: https://git.onap.org/demo/plain/heat/vFWCL/vFWSNK/base_vfw.yaml -- vFirewall/vSink environment file: https://git.onap.org/demo/plain/heat/vFWCL/vFWSNK/base_vfw.env +- vFirewall/vSink template file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.yaml?h=dublin +- vFirewall/vSink environment file: https://git.onap.org/demo/tree/heat/vFWCL/vFWSNK/base_vfw.env?h=dublin -- vPacketGenerator template file: https://git.onap.org/demo/plain/heat/vFWCL/vPKG/base_vpkg.yaml -- vPacketGenerator environment file: https://git.onap.org/demo/plain/heat/vFWCL/vPKG/base_vpkg.env +- vPacketGenerator template file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=dublin +- vPacketGenerator environment file: https://git.onap.org/demo/tree/heat/vFWCL/vPKG/base_vpkg.env?h=dublin VVP Report ~~~~~~~~~~ @@ -51,18 +51,22 @@ The packet generator contains 10 streams: fw_udp1, fw_udp2, fw_udp3, ..., fw_udp per 10 seconds. A script in /opt/run_traffic_fw_demo.sh on the packet generator VM starts automatically and alternates high traffic (i.e. 10 active streams at the same time) and low traffic (1 active stream) every 5 minutes. -To enable a stream, include - -:: - - {"id":"fw_udp1", "is-enabled":"true"} in the pg-stream bracket - To adjust the traffic volume produced by the packet generator, run the following command in a shell, replacing PacketGen_IP in the HTTP argument with localhost (if you run it in the packet generator VM) or the packet generator IP address: :: - curl -X PUT -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"pg-streams":{"pg-stream": [{"id":"fw_udp1", "is-enabled":"true"},{"id":"fw_udp2", "is-enabled":"true"},{"id":"fw_udp3", "is-enabled":"true"},{"id":"fw_udp4", "is-enabled":"true"},{"id":"fw_udp5", "is-enabled":"true"}]}}' "http://PacketGen_IP:8183/restconf/config/sample-plugin:sample-plugin/pg-streams" + curl -X PUT \ + https://PacketGen_IP:8445/restconf/config/stream-count:stream-count/streams \ + -H 'Accept: application/json' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 88610924-938b-4d64-a682-0b0aabed4a6d' \ + -H 'cache-control: no-cache' \ + -d '{ + "streams": { + "active-streams": 5 + }}' + The command above enables 5 streams. diff --git a/docs/files/scaleout/push_naming_policy.sh b/docs/files/scaleout/push_naming_policy.sh new file mode 100755 index 000000000..ef3e1e77c --- /dev/null +++ b/docs/files/scaleout/push_naming_policy.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +echo "Create Generic SDNC Naming Policy for VNF" + +sleep 1 + +curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ + "configBody": "{ \"service\": \"SDNC-GenerateName\", \"version\": \"CSIT\", \"content\": { \"policy-instance-name\": \"ONAP_VNF_NAMING_TIMESTAMP\", \"naming-models\": [ { \"naming-properties\": [ { \"property-name\": \"AIC_CLOUD_REGION\" }, { \"property-name\": \"CONSTANT\", \"property-value\": \"ONAP-NF\" }, { \"property-name\": \"TIMESTAMP\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" } ], \"naming-type\": \"VNF\", \"naming-recipe\": \"AIC_CLOUD_REGION|DELIMITER|CONSTANT|DELIMITER|TIMESTAMP\" }, { \"naming-properties\": [ { \"property-name\": \"VNF_NAME\" }, { \"property-name\": \"SEQUENCE\", \"increment-sequence\": { \"max\": \"zzz\", \"scope\": \"ENTIRETY\", \"start-value\": \"001\", \"length\": \"3\", \"increment\": \"1\", \"sequence-type\": \"alpha-numeric\" } }, { \"property-name\": \"NFC_NAMING_CODE\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" } ], \"naming-type\": \"VNFC\", \"naming-recipe\": \"VNF_NAME|DELIMITER|NFC_NAMING_CODE|DELIMITER|SEQUENCE\" }, { \"naming-properties\": [ { \"property-name\": \"VNF_NAME\" }, { \"property-value\": \"_\", \"property-name\": \"DELIMITER\" }, { \"property-name\": \"VF_MODULE_LABEL\" }, { \"property-name\": \"VF_MODULE_TYPE\" }, { \"property-name\": \"SEQUENCE\", \"increment-sequence\": { \"max\": \"zzz\", \"scope\": \"PRECEEDING\", \"start-value\": \"01\", \"length\": \"3\", \"increment\": \"1\", \"sequence-type\": \"alpha-numeric\" } } ], \"naming-type\": \"VF-MODULE\", \"naming-recipe\": \"VNF_NAME|DELIMITER|VF_MODULE_LABEL|DELIMITER|VF_MODULE_TYPE|DELIMITER|SEQUENCE\" } ] } }", + "policyName": "SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP", + "policyConfigType": "MicroService", + "onapName": "SDNC", + "riskLevel": "4", + "riskType": "test", + "guard": "false", + "priority": "4", + "description": "ONAP_VNF_NAMING_TIMESTAMP" +}' 'https://pdp:8081/pdp/api/createPolicy' + +sleep 10 + +echo "Pushing SDNC Naming Policy" + +sleep 1 + +echo "pushPolicy : PUT : SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP" +curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ + "pdpGroup": "default", + "policyName": "SDNC_Policy.ONAP_VNF_NAMING_TIMESTAMP", + "policyType": "MicroService" +}' 'https://pdp:8081/pdp/api/pushPolicy' + +sleep 10 + +echo "Validate that SDNC Naming Policy has been successfully created" + +sleep 1 + +curl -k -v --silent -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{"policyName": ".*"}' 'https://pdp:8081/pdp/api/getConfig' \ No newline at end of file -- cgit 1.2.3-korg