diff options
Diffstat (limited to 'main/src/main/java/org/onap/policy/pap/main/rest')
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); } |