PolicyAudit creation when deploy/undeploy triggered.
[policy/pap.git] / main / src / main / java / org / onap / policy / pap / main / rest / SessionData.java
index 235c852..3210315 100644 (file)
@@ -31,6 +31,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
+import lombok.Getter;
 import org.apache.commons.lang3.tuple.Pair;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.pap.concepts.PolicyNotification;
@@ -103,20 +104,30 @@ public class SessionData {
      */
     private Set<ToscaConceptIdentifier> policiesToBeUndeployed = new HashSet<>();
 
+    /**
+     * User starting requests.
+     */
+    @Getter
+    private final String user;
+
     /**
      * Tracks policy deployment status so notifications can be generated.
      */
     private final DeploymentStatus deployStatus;
 
+    private PolicyAuditManager auditManager;
 
     /**
      * Constructs the object.
      *
      * @param dao DAO provider
+     * @param user user triggering the request
      */
-    public SessionData(PolicyModelsProvider dao) {
+    public SessionData(PolicyModelsProvider dao, String user) {
         this.dao = dao;
         this.deployStatus = makeDeploymentStatus(dao);
+        this.auditManager = makePolicyAuditManager(dao);
+        this.user = user;
     }
 
     /**
@@ -435,6 +446,9 @@ public class SessionData {
             dao.updatePdpGroups(updated.stream().map(GroupData::getGroup).collect(Collectors.toList()));
         }
 
+        // send audits records to DB
+        auditManager.saveRecordsToDb();
+
         // flush deployment status records to the DB
         deployStatus.flush(notification);
     }
@@ -459,12 +473,13 @@ public class SessionData {
      * @param pdpType PDP type (i.e., PdpSubGroup) containing the PDP of interest
      * @throws PfModelException if an error occurred
      */
-    protected void trackDeploy(ToscaPolicy policy, Collection<String> pdps, String pdpGroup,
-            String pdpType) throws PfModelException {
+    protected void trackDeploy(ToscaPolicy policy, Collection<String> pdps, String pdpGroup, String pdpType)
+            throws PfModelException {
         ToscaConceptIdentifier policyId = policy.getIdentifier();
         policiesToBeDeployed.put(policyId, policy);
 
         addData(policyId, pdps, pdpGroup, pdpType, true);
+        auditManager.addDeploymentAudit(policyId, pdpGroup, pdpType, user);
     }
 
     /**
@@ -479,7 +494,9 @@ public class SessionData {
     protected void trackUndeploy(ToscaConceptIdentifier policyId, Collection<String> pdps, String pdpGroup,
             String pdpType) throws PfModelException {
         policiesToBeUndeployed.add(policyId);
+
         addData(policyId, pdps, pdpGroup, pdpType, false);
+        auditManager.addUndeploymentAudit(policyId, pdpGroup, pdpType, user);
     }
 
     /**
@@ -511,4 +528,8 @@ public class SessionData {
     protected DeploymentStatus makeDeploymentStatus(PolicyModelsProvider dao) {
         return new DeploymentStatus(dao);
     }
+
+    protected PolicyAuditManager makePolicyAuditManager(PolicyModelsProvider dao) {
+        return new PolicyAuditManager(dao);
+    }
 }