.. This work is licensed under a
.. Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0

.. _pdp-pap-interaction-label:

Guidelines for PDP-PAP interaction
###################################

.. contents::
    :depth: 3

A PDP (Policy Decision Point) is where the policy execution happens. The administrative actions such as
managing the PDPs, deploying or undeploying policies to these PDPs etc. are handled by PAP
(Policy Administration Point). Any PDP should follow certain behavior to be registered and functional in
the Policy Framework. All the communications between PAP and PDP happen over DMaaP on topic *POLICY-PDP-PAP*.
The below diagram shows how a PDP interacts with PAP.

.. image:: images/PDP_PAP.svg

**1. Start PDP**

A PDP should be configured to start with the below information in its startup configuration file.

- *pdpGroup* to which the PDP should belong to.
- *DMaaP topic* 'POLICY-PDP-PAP' which should be the source and sink for communicating with PAP.

**2. PDP sends PDP_STATUS (registration message)**

As soon as a PDP is up, it sends a registration message to POLICY-PDP-PAP topic.
Some of the information included in the message are:

- *pdpType* the type of the PDP (apex/drools/xacml etc.).
- *pdpGroup* to which the PDP should belong to.
- *state* the initial state of the PDP which is PASSIVE.
- *healthy* whether the PDP is "HEALTHY" or not.
- *name* a name that is unique to the PDP instance.


.. code-block::
  :caption: Sample PDP_STATUS Registration message (from APEX-PDP)
  :linenos:

    {
      "pdpType": "apex",
      "state": "PASSIVE",
      "healthy": "HEALTHY",
      "description": "Pdp Heartbeat",
      "statistics": {
        ..... Omitted for brevity
      },
      "messageName": "PDP_STATUS",
      "requestId": "54926ad0-440f-4b40-9237-40ca754ad00d",
      "timestampMs": 1632325024286,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup"
    }

**3. PAP sends PDP_UPDATE message**

On receiving the registration message from a PDP, PAP checks and assigns it to a subgroup under the group.
If there are policies that were already deployed (for e.g. previously deployed, and the PDP is restarted)
under the subgroup, then the *policiesToBeDeployed* are also sent along with the *subgroup* it is assigned to.
PAP also sends the *pdpHeartbeatIntervalMs* which is the time interval in which PDPs should send heartbeats to PAP.

.. code-block:: json
  :caption: Sample PDP_UPDATE message (for APEX-PDP)
  :linenos:

    {
      "source": "pap-56c8531d-5376-4e53-a820-6973c62bfb9a",
      "pdpHeartbeatIntervalMs": 120000,
      "policiesToBeDeployed": [],
      "messageName": "PDP_UPDATE",
      "requestId": "3534e54f-4432-4c68-81c8-a6af07e59fb2",
      "timestampMs": 1632325037040,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

**4. PDP sends PDP_STATUS response to PDP_UPDATE**

PDP on receiving the PDP_UPDATE message from the DMaaP topic, it first checks if the message is intended for the PDP.
If so, it updates itself with the information in PDP_UPDATE message from PAP such as *pdpSubgroup*,
*pdpHeartbeatIntervalMs* and *policiesToBeDeployed* (if any). After handling the PDP_UPDATE message, the PDP sends
a response message back to PAP with the current status of the PDP along with the result of the PDP_UPDATE operation.

.. code-block::
  :caption: Sample PDP_STATUS response message (from APEX-PDP)
  :linenos:

    {
      "pdpType": "apex",
      "state": "PASSIVE",
      "healthy": "HEALTHY",
      "description": "Pdp status response message for PdpUpdate",
      "policies": [],
      "statistics": {
        ..... Omitted for brevity
      },
      "response": {
        "responseTo": "3534e54f-4432-4c68-81c8-a6af07e59fb2",
        "responseStatus": "SUCCESS",
        "responseMessage": "Pdp update successful."
      },
      "messageName": "PDP_STATUS",
      "requestId": "e3c72783-4e91-4cb5-8140-e4ac0630706d",
      "timestampMs": 1632325038075,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }


**5. PAP sends PDP_STATE_CHANGE message**

PAP sends PDP_STATE_CHANGE message to PDPs to change the state from PASSIVE to active
or ACTIVE to PASSIVE. When a PDP is in PASSIVE state, the policy execution will not happen.
All PDPs start up in PASSIVE state, and they can be changed to ACTIVE/PASSIVE using PAP.
After registration is complete, PAP makes a PDP ACTIVE by default.

.. code-block:: json
  :caption: Sample PDP_STATE_CHANGE message
  :linenos:

    {
      "source": "pap-56c8531d-5376-4e53-a820-6973c62bfb9a",
      "state": "ACTIVE",
      "messageName": "PDP_STATE_CHANGE",
      "requestId": "90eada6d-bb98-4750-a4e1-b439cb5e041d",
      "timestampMs": 1632325037040,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

**6. PDP sends PDP_STATUS response to PDP_STATE_CHANGE**

PDP updates its state as per the PDP_STATE_CHANGE received from PAP. When a PDP is changed
to ACTIVE, any policies that are already pushed to the PDP start execution
and start processing events as per the policies deployed. If no policies are running in a PDP,
then it waits in ACTIVE state, ready to execute any policies as and when they are pushed
to them from PAP. After handling the PDP_STATE_CHANGE message, the PDP sends a response message
back to PAP with the current status of the PDP along with the result of the PDP_STATE_CHANGE operation.

.. code-block::
  :caption: Sample PDP_STATUS response message (from APEX-PDP)
  :linenos:

    {
      "pdpType": "apex",
      "state": "ACTIVE",
      "healthy": "HEALTHY",
      "description": "Pdp status response message for PdpStateChange",
      "policies": [],
      "statistics": {
        ..... Omitted for brevity
      },
      "response": {
        "responseTo": "90eada6d-bb98-4750-a4e1-b439cb5e041d",
        "responseStatus": "SUCCESS",
        "responseMessage": "State changed to active. No policies are running."
      },
      "messageName": "PDP_STATUS",
      "requestId": "8a88806c-4d3e-4c80-8048-dc85d4bb75dd",
      "timestampMs": 1632325043068,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

**7. PDP sends PDP_STATUS Heartbeat messages**

A PDP has to send Heartbeat messages to PAP periodically with the current status information
of the PDP. PAP receives this information and makes sure they are updated. In case of any mismatch
with the data in the database, PAP sends out a PDP_UPDATE message to update the PDP.
PAP considers a PDP as expired if three consecutive heartbeats are missing from the PDP,
and removes the PDP instance details from the database.

.. code-block::
  :caption: Sample PDP_STATUS response message (from APEX-PDP)
  :linenos:

    {
      "pdpType": "apex",
      "state": "ACTIVE",
      "healthy": "HEALTHY",
      "description": "Pdp Heartbeat",
      "policies": [],
      "statistics": {
        ..... Omitted for brevity
      },
      "messageName": "PDP_STATUS",
      "requestId": "e3c72783-4e91-4cb5-8140-e4ac0630706d",
      "timestampMs": 1632325038075,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

**8. Deploy/Undeploy Policy using PAP**

Policies can be deployed or undeployed using PAP APIs. PAP fetches the policies to be deployed
from the database, and send the whole policies' list under *policiesToBeDeployed* field.
In case of undeployment, PAP sends the list of policies with their name and version under
*policiesToBeUndeployed* in the PDP_UPDATE message.

**9. PAP sends PDP_UPDATE message with policiesToBeDeployed/Undeployed**

PAP sends a PDP_UPDATE message with information about policies to be deployed and
undeployed. If there are some policies that are already deployed, then only the new ones
are sent under the *policiesToBeDeployed* field.

.. code-block::
  :caption: Sample PDP_STATUS response message (from APEX-PDP)
  :linenos:

    {
      "source": "pap-56c8531d-5376-4e53-a820-6973c62bfb9a",
      "pdpHeartbeatIntervalMs": 120000,
      "policiesToBeDeployed": [
        {
          "type": "onap.policies.native.Apex",
          "type_version": "1.0.0",
          "properties": {
          ..... Omitted for brevity
          },
          "name": "onap.policies.apex.Simplecontrolloop",
          "version": "1.0.0",
          "metadata": {
            "policy-id": "onap.policies.apex.Simplecontrolloop",
            "policy-version": "1.0.0"
          }
        }
      ],
      "policiesToBeUndeployed":[],
      "messageName": "PDP_UPDATE",
      "requestId": "3534e54f-4432-4c68-81c8-a6af07e59fb2",
      "timestampMs": 1632325037040,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

**10. PDP sends PDP_STATUS response to PDP_UPDATE**

All policies to be deployed/undeployed are updated in the PDP engine.
Policies that are part of policiesToBeDeployed are updated to the engine, and
all policies under policiesToBeUndeployed are removed from the PDP engine.
Once the processing of PDP_UPDATE message is complete, PDP sends back a PDP_STATUS
message with the updated status, the current list of policies that are in the
engine, and the result of the PDP_UPDATE operation.

.. code-block:: json
  :caption: Sample PDP_STATUS response message (from APEX-PDP)
  :linenos:

    {
      "pdpType": "apex",
      "state": "ACTIVE",
      "healthy": "HEALTHY",
      "description": "Pdp status response message for PdpUpdate",
      "policies": [
        {
          "name": "onap.policies.apex.Simplecontrolloop",
          "version": "1.0.0"
        }
      ],
      "statistics": {
        "pdpInstanceId": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
        "timeStamp": "2021-09-22T15:37:18.075436Z",
        "pdpGroupName": "defaultGroup",
        "pdpSubGroupName": "apex",
        "policyExecutedCount": 0,
        "policyExecutedSuccessCount": 0,
        "policyExecutedFailCount": 0,
        "policyDeployCount": 1,
        "policyDeploySuccessCount": 1,
        "policyDeployFailCount": 0,
        "policyUndeployCount": 0,
        "policyUndeploySuccessCount": 0,
        "policyUndeployFailCount": 0
      },
      "response": {
        "responseTo": "4534e54f-4432-4c68-81c8-a6af07e59fb2",
        "responseStatus": "SUCCESS",
        "responseMessage": "Apex engine started. Deployed policies are: onap.policies.apex.Simplecontrolloop:1.0.0"
      },
      "messageName": "PDP_STATUS",
      "requestId": "e3c72783-4e91-4cb5-8140-e4ac0630706d",
      "timestampMs": 1632325038075,
      "name": "apex-45c6b266-a5fa-4534-b22c-33c2f9a45d02",
      "pdpGroup": "defaultGroup",
      "pdpSubgroup": "apex"
    }

More details about the messages used for PDP-PAP internal communication and their structure can be found here
:ref:`The Internal Policy Framework PAP-PDP API <pap-pdp-label>`.
