aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/main/java/org/onap/policy/pap/main/rest
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/rest')
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeployProvider.java7
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java5
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java7
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java39
4 files changed, 49 insertions, 9 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeployProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeployProvider.java
index 3c8ce4c8..56d2ad3f 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeployProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupDeployProvider.java
@@ -262,11 +262,11 @@ public class PdpGroupDeployProvider extends ProviderBase {
return false;
}
-
Set<String> pdps = dbsub.getPdpInstances().stream().map(Pdp::getInstanceId).collect(Collectors.toSet());
for (ToscaConceptIdentifier policyId : deployed) {
- data.trackDeploy(policyId, pdps, pdpGroup, dbsub.getPdpType());
+ ToscaPolicy policyToBeDeployed = data.getPolicy(new ToscaConceptIdentifierOptVersion(policyId));
+ data.trackDeploy(policyToBeDeployed, pdps, pdpGroup, dbsub.getPdpType());
}
for (ToscaConceptIdentifier policyId : undeployed) {
@@ -443,7 +443,8 @@ public class PdpGroupDeployProvider extends ProviderBase {
subgroup.getPdpType(), subgroup.getPolicies().size());
Set<String> pdps = subgroup.getPdpInstances().stream().map(Pdp::getInstanceId).collect(Collectors.toSet());
- data.trackDeploy(desiredIdent, pdps, group.getName(), subgroup.getPdpType());
+ ToscaPolicy policyToBeDeployed = data.getPolicy(new ToscaConceptIdentifierOptVersion(desiredIdent));
+ data.trackDeploy(policyToBeDeployed, pdps, group.getName(), subgroup.getPdpType());
return true;
};
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
index 374b5282..abea6966 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
@@ -34,6 +34,7 @@ import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.models.provider.PolicyModelsProvider;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.comm.PdpMessageGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -117,10 +118,12 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
final PolicyModelsProvider databaseProvider) throws PfModelException {
String pdpGroupName = pdpGroup.getName();
for (final PdpSubGroup subGroup : pdpGroup.getPdpSubgroups()) {
+ List<ToscaPolicy> policies = getToscaPolicies(subGroup, databaseProvider);
for (final Pdp pdp : subGroup.getPdpInstances()) {
String pdpInstanceId = pdp.getInstanceId();
final PdpUpdate pdpUpdatemessage =
- createPdpUpdateMessage(pdpGroupName, subGroup, pdpInstanceId, databaseProvider);
+ createPdpUpdateMessage(pdpGroup.getName(), subGroup, pdp.getInstanceId(), databaseProvider,
+ policies, policies, null);
final PdpStateChange pdpStateChangeMessage =
createPdpStateChangeMessage(pdpGroupName, subGroup, pdpInstanceId, pdpState);
updateDeploymentStatus(pdpGroupName, subGroup.getPdpType(), pdpInstanceId,
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java b/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
index 7f013ac7..d64d4e36 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
@@ -74,7 +74,6 @@ public abstract class ProviderBase {
*/
private final PolicyModelsProviderFactoryWrapper daoFactory;
-
/**
* Constructs the object.
*/
@@ -182,7 +181,8 @@ public abstract class ProviderBase {
* @param updater function to update a group
* @throws PfModelException if an error occurred
*/
- private void upgradeGroup(SessionData data, PdpGroup group, Updater updater) throws PfModelException {
+ private void upgradeGroup(SessionData data, PdpGroup group, Updater updater)
+ throws PfModelException {
boolean updated = false;
@@ -197,7 +197,6 @@ public abstract class ProviderBase {
makeUpdates(data, group, subgroup);
}
-
if (updated) {
// something changed
data.update(group);
@@ -236,6 +235,8 @@ public abstract class ProviderBase {
update.setPdpSubgroup(subgroup.getPdpType());
update.setPolicies(subgroup.getPolicies().stream().map(ToscaConceptIdentifierOptVersion::new)
.map(ident -> getPolicy(data, ident)).collect(Collectors.toList()));
+ update.setPoliciesToBeDeployed(data.getPoliciesToBeDeployed());
+ update.setPoliciesToBeUndeployed(data.getPoliciesToBeUndeployed());
return update;
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java b/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
index b9807c79..c8cddbb7 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
@@ -25,8 +25,11 @@ import com.google.re2j.Pattern;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
@@ -91,6 +94,16 @@ public class SessionData {
private final Map<ToscaConceptIdentifier, ToscaPolicyType> typeCache = new HashMap<>();
/**
+ * Map's a policy's identifier to the policies for deployment.
+ */
+ private Map<ToscaConceptIdentifier, ToscaPolicy> policiesToBeDeployed = new HashMap<>();
+
+ /**
+ * Set of policies to be undeployed.
+ */
+ private Set<ToscaConceptIdentifier> policiesToBeUndeployed = new HashSet<>();
+
+ /**
* Tracks policy deployment status so notifications can be generated.
*/
private final DeploymentStatus deployStatus;
@@ -358,6 +371,24 @@ public class SessionData {
}
/**
+ * Gets the list of policies to be deployed to the PDPs.
+ *
+ * @returns a list of policies to be deployed
+ */
+ public List<ToscaPolicy> getPoliciesToBeDeployed() {
+ return new LinkedList<>(this.policiesToBeDeployed.values());
+ }
+
+ /**
+ * Gets the list of policies to be undeployed from the PDPs.
+ *
+ * @returns a list of policies to be undeployed
+ */
+ public List<ToscaConceptIdentifier> getPoliciesToBeUndeployed() {
+ return new LinkedList<>(this.policiesToBeUndeployed);
+ }
+
+ /**
* Adds a group to the group cache, if it isn't already in the cache.
*
* @param group the group to be added
@@ -422,14 +453,17 @@ public class SessionData {
/**
* Adds policy deployment data.
*
- * @param policyId ID of the policy being deployed
+ * @param policy policy being deployed
* @param pdps PDPs to which the policy is being deployed
* @param pdpGroup PdpGroup containing the PDP of interest
* @param pdpType PDP type (i.e., PdpSubGroup) containing the PDP of interest
* @throws PfModelException if an error occurred
*/
- protected void trackDeploy(ToscaConceptIdentifier policyId, Collection<String> pdps, String pdpGroup,
+ 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);
}
@@ -444,6 +478,7 @@ 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);
}