Making PAP Stateless
Persist the cache of policy deployment status in the DB so other PAPs can read it.
JIRA: POLICY-2648: Make PAP component statelessClosed
To satisfy the requirement to generate notifications when policies are fully deployed/undeployed, it is necessary to track the policy deployment/undeployment status for each PDP. With this in mind, two options present themselves:
Create a new JPA data structure to manage the information; or
Augment the existing PdpGroup data structure to maintain the additional information. This could be done by changing the list of policies to a list of policy-info structures, where each object contained:
policy name and version
flag indicating whether the policy is being deployed or undeployed
list of PDPs for which PAP is still awaiting the outcome of the PDP-UPDATE message
An advantage of approach #2 is that it's easier to transactionalize updates to the PdpGroup along with the list of waiting PDPs. One downside is the extra amount of data that must be retrieved when a PdpGroup is extracted from the DB.
One complicating factor of #2 is that the same class, PdpGroup is used as both the data store structure and the PAP REST API structure. If the same structure were to continue to be used, then the extra data fields would have to be handled (e.g., discarded on input from REST). On the other hand, it could provide a mechanism for clients of the REST API to determine the actual PDP deployment status of each policy.