Merge "user guide demo for monitoring gui"
[policy/parent.git] / docs / drools / tutorial_cl.rst
index 3395ea7..d7c2430 100644 (file)
 .. http://creativecommons.org/licenses/by/4.0
 
 ***********************************************************************************************
-Tutorial: Generating and Testing your own Control Loop Operational Policy in a standalone PDP-D
+Using the Control Loop PDP-D docker image for standalone testing
 ***********************************************************************************************
 
 .. contents::
     :depth: 3
 
-To generate your own control loop operational policy, use the *create-cl-amsterdam* tool.  The *create-cl-amsterdam* script is located in *${POLICY_HOME}/bin (/opt/app/policy/bin)*.  When the script is run, it will ask for values for a variety of fields.  The fields will have pre-filled out defaults, and for the most part, the defaults are fine to leave in.  The two main fields that should be changed are the Template Control Loop Name and the Control Loop Yaml.
+In this tutorial will start a Control Loop PDP-D container to use to test Operational Policies
+without companion components.
 
-    .. image:: Tut_cl_valuesHighlight.png
+**Step 1:** Copy a template *base.conf* with configuration to instantiate the container.
 
-Make sure the Yaml’s controlLoopName matches the Template Control Loop Name you pass in. Finally, confirm that the parameters are correct, confirm the directory it will add the policy files in (default is /tmp) and tell the script to create the maven artifact.
+    .. code-block:: bash
 
-    *Confirm the parameters and enter the directory to install in as shown below:*
+        mkdir config
+        cd config
+        wget https://git.onap.org/policy/docker/plain/config/drools/base.conf?h=dublin -O base.conf
 
-    .. image:: Tut_cl_confirmAndDirectory.PNG
 
-    *Choose whether to immediately deploy (in this case the directory is /tmp/amsterdam)*
+**Step 2:** Simplify *base.conf* for a standalone configuration (by disabling db and nexus access):
 
-    .. image:: Tut_cl_preDeploy.PNG
+    .. code-block:: bash
 
-When the processing is done, you get the choice of immediately deploying the policy to the local repository, or first examining the rules in the directory it tells you.  If you don’t immediately deploy, you need to use the “*mvn install*” command in the newly created directory to continue.  When all that is done, go to the directory where the rule was placed (the /tmp/amsterdam directory in this case) and copy the *<name>-controller.properties* file to *${POLICY_HOME}/config*.  Turn the engine off and then back on with “*policy stop*” and then “*policy start*”.
+        cd config
+        sed -i "s/^SQL_HOST=.*$/SQL_HOST=/g" base.conf
+        sed -i "s/^SNAPSHOT_REPOSITORY_ID=.*$/SNAPSHOT_REPOSITORY_ID=/g" base.conf
+        sed -i "s/^SNAPSHOT_REPOSITORY_URL=.*$/SNAPSHOT_REPOSITORY_URL=/g" base.conf
+        sed -i "s/^RELEASE_REPOSITORY_ID=.*$/RELEASE_REPOSITORY_ID=/g" base.conf
+        sed -i "s/^RELEASE_REPOSITORY_URL=.*$/RELEASE_REPOSITORY_URL=/g" base.conf
 
-    *Location of the properties file*
+        Note: For MacOS use - sed -i'' -e "s/^SQL_HOST=.*$/SQL_HOST=/g" base.conf and similar for all sed commands.
 
-    .. image:: Tut_cl_propFile.PNG
+**Step 3:** Open a *bash* shell into the PDP-D Control Loop container.
 
-    *Moving the properties file to ${POLICY_HOME}/config*
+    .. code-block:: bash
 
-    .. image:: Tut_cl_finalStep.PNG
+        docker run --rm --env-file config/base.conf -p 9696:9696 -p 6969:6969 -it --name pdpd -h pdpd nexus3.onap.org:10001/onap/policy-pdpd-cl:1.4.1 bash
+
+**Step 4:** Disable the distributed-locking feature, since this is a single CL PDP-D instance.
+
+    .. code-block:: bash
+
+        features disable distributed-locking
+
+**Step 5:** If using simulators (see tutorials), enable the *controlloop-utils* feature.
+
+    .. code-block:: bash
+
+        features enable controlloop-utils
+
+**Step 6:** To reduce error logs due to being unable to communicate with DMaaP, change the official configuration to use *noop* topics instead (no network IO involved).
+
+    .. code-block:: bash
+
+        cd $POLICY_HOME/config
+        sed -i "s/^dmaap/noop/g" *.properties
+
+**Step 7:** Disable PDP-X guard functionality.
+
+    .. code-block:: bash
+
+        cd $POLICY_HOME/config
+        sed -i "s/^guard.disabled=*$/guard.disabled=true/g" $POLICY_HOME/config/controlloop.properties.environment
+        sed -i "s/^aai.customQuery=*$/aai.customQuery=false/g" $POLICY_HOME/config/controlloop.properties.environment
+
+**Step 8:** Start the CL PDP-D.
+
+    .. code-block:: bash
+
+        policy start
+
+**Step 9:** Place the CL PDP-D in *ACTIVE* mode.
+
+    .. code-block:: bash
+
+        cat pdp-state-change.json
+        {
+          "state": "ACTIVE",
+          "messageName": "PDP_STATE_CHANGE",
+          "requestId": "385146af-adeb-4157-b97d-6ae85c1ddcb3",
+          "timestampMs": 1555791893587,
+          "name": "pdpd",
+          "pdpGroup": "controlloop",
+          "pdpSubgroup": "drools"
+        }
+
+        http --verify=no -a "${TELEMETRY_USER}:${TELEMETRY_PASSWORD}" PUT https://localhost:9696/policy/pdp/engine/topics/sources/noop/POLICY-PDP-PAP/events @pdp-state-change.json Content-Type:'text/plain'
+
+        telemetry     # to verify
+        > get lifecycle/fsm/state   # verify that state is ACTIVE
+
+Note that *name* in *pdp-state-change.json* can be obtained from running *hostname* in the container.
 
 Proceed with testing your new policy as described in the specific tutorials:
 
 • vCPE - `Tutorial: Testing the vCPE use case in a standalone PDP-D <tutorial_vCPE.html>`_
 • vDNS - `Tutorial: Testing the vDNS Use Case in a standalone PDP-D <tutorial_vDNS.html>`_
 • vFW - `Tutorial: Testing the vFW flow in a standalone PDP-D <tutorial_vFW.html>`_
-• VoLTE - `Tutorial: Testing the VOLTE Use Case in a standalone PDP-D <tutorial_VOLTE.html>`_
-
 
-.. seealso:: To deploy a control loop in Eclipse from the control loop archetype template, refer to `Modifying the Release Template  <modAmsterTemplate.html>`_.
+.. seealso:: `Methods to run PDP-D <runningPDPD.html>`_.
 
 
 End of Document
-
-
-.. SSNote: Wiki page ref. https://wiki.onap.org/display/DW/Tutorial%3A+Generating+and+Testing+your+own+Control+Loop+Operational+Policy+in+a+standalone+PDP-D
-