Using the Control Loop PDP-D docker image for standalone testingΒΆ

In this tutorial will start a Control Loop PDP-D container to use to test Operational Policies without companion components.

Step 1: Copy a template base.conf with configuration to instantiate the container.

mkdir config
cd config
wget https://git.onap.org/policy/docker/plain/config/drools/base.conf?h=dublin -O base.conf

Step 2: Simplify base.conf for a standalone configuration (by disabling db and nexus access):

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

Step 3: Open a bash shell into the PDP-D Control Loop container.

docker run --rm --env-file config/base.conf --env-file feature-healthcheck.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.

features disable distributed-locking

Step 5: If using simulators (see tutorials), enable the controlloop-utils feature.

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).

cd $POLICY_HOME/config
sed -i "s/^dmaap/noop/g" *.properties

Step 7: Disable PDP-X guard functionality.

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 5: Start the CL PDP-D.

policy start

Step 6: Place the CL PDP-D in ACTIVE mode.

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:

See also

To deploy a control loop in Eclipse from the control loop archetype template, refer to Modifying the Release Template.

End of Document