aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java33
1 files changed, 19 insertions, 14 deletions
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
index 77850824..a4a5d66d 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/LifecycleStateRunning.java
@@ -138,6 +138,8 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// policies as given by the PAP in the update message
List<ToscaPolicy> activePoliciesPreUpdate = fsm.getActivePolicies();
+ Map<String, List<ToscaPolicy>> activePoliciesPreUpdateMap =
+ fsm.groupPoliciesByPolicyType(activePoliciesPreUpdate);
// update policies with the current set of active policies
@@ -155,7 +157,7 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// were neither deployed or undeployed and re-apply them on top
// of the controllers.
- failedPolicies.addAll(reapplyNativeArtifactPolicies(activePoliciesPreUpdate));
+ failedPolicies.addAll(reApplyNativeArtifactPolicies(activePoliciesPreUpdate, activePoliciesPreUpdateMap));
// If there are *new* native artifact policies deployed, there may be existing
// non-native policies (previous to the update event processing)
@@ -164,7 +166,7 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// which neither were undeployed or deployed and re-apply them on top of the
// new "brained" controllers.
- failedPolicies.addAll(reapplyNonNativePolicies(activePoliciesPreUpdate));
+ failedPolicies.addAll(reApplyNonNativePolicies(activePoliciesPreUpdateMap));
return fsm.statusAction(response(update.getRequestId(),
(failedPolicies.isEmpty()) ? PdpResponseStatus.SUCCESS : PdpResponseStatus.FAIL,
@@ -193,7 +195,7 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
List<ToscaPolicy> failedUndeployPolicies = undeployPolicies(policies);
if (!failedUndeployPolicies.isEmpty()) {
logger.warn("update-policies: undeployment failures: {}", fsm.getPolicyIdsMessage(failedUndeployPolicies));
- failedUndeployPolicies.stream().forEach(fsm::undeployedPolicyAction);
+ failedUndeployPolicies.forEach(fsm::undeployedPolicyAction);
}
List<ToscaPolicy> failedDeployPolicies = deployPolicies(policies);
@@ -204,14 +206,13 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
return Pair.of(failedUndeployPolicies, failedDeployPolicies);
}
- protected List<ToscaPolicy> reapplyNonNativePolicies(List<ToscaPolicy> preActivePolicies) {
+ protected List<ToscaPolicy> reApplyNonNativePolicies(Map<String, List<ToscaPolicy>> preActivePoliciesMap) {
// only need to re-apply non native policies if there are new native artifact policies
Map<String, List<ToscaPolicy>> activePoliciesByType = fsm.groupPoliciesByPolicyType(fsm.getActivePolicies());
List<ToscaPolicy> activeNativeArtifactPolicies = fsm.getNativeArtifactPolicies(activePoliciesByType);
- Map<String, List<ToscaPolicy>> prePoliciesByType = fsm.groupPoliciesByPolicyType(preActivePolicies);
- activeNativeArtifactPolicies.removeAll(fsm.getNativeArtifactPolicies(prePoliciesByType));
+ activeNativeArtifactPolicies.removeAll(fsm.getNativeArtifactPolicies(preActivePoliciesMap));
if (activeNativeArtifactPolicies.isEmpty()) {
logger.info("reapply-non-native-policies: nothing to reapply, no new native artifact policies");
return Collections.emptyList();
@@ -223,7 +224,7 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// the original active set, and the new active set (i.e policies that have not changed,
// or in other words, have not been neither deployed or undeployed.
- List<ToscaPolicy> preNonNativePolicies = fsm.getNonNativePolicies(prePoliciesByType);
+ List<ToscaPolicy> preNonNativePolicies = fsm.getNonNativePolicies(preActivePoliciesMap);
preNonNativePolicies.retainAll(fsm.getNonNativePolicies(activePoliciesByType));
logger.info("re-applying non-native policies {} because new native artifact policies have been found: {}",
@@ -235,14 +236,14 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
return failedPolicies;
}
- protected List<ToscaPolicy> reapplyNativeArtifactPolicies(List<ToscaPolicy> preActivePolicies) {
+ protected List<ToscaPolicy> reApplyNativeArtifactPolicies(List<ToscaPolicy> preActivePolicies,
+ Map<String, List<ToscaPolicy>> preActivePoliciesMap) {
// only need to re-apply native artifact policies if there are new native controller policies
Map<String, List<ToscaPolicy>> activePoliciesByType = fsm.groupPoliciesByPolicyType(fsm.getActivePolicies());
List<ToscaPolicy> activeNativeControllerPolicies = fsm.getNativeControllerPolicies(activePoliciesByType);
- Map<String, List<ToscaPolicy>> prePoliciesByType = fsm.groupPoliciesByPolicyType(preActivePolicies);
- activeNativeControllerPolicies.removeAll(fsm.getNativeControllerPolicies(prePoliciesByType));
+ activeNativeControllerPolicies.removeAll(fsm.getNativeControllerPolicies(preActivePoliciesMap));
if (activeNativeControllerPolicies.isEmpty()) {
logger.info("reapply-native-artifact-policies: nothing to reapply, no new native controller policies");
return Collections.emptyList();
@@ -252,9 +253,9 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// get the native artifact policies to be reapplied, this is just the intersection of
// the original active set, and the new active set (i.e policies that have not changed,
- // or in other words, have not been neither deployed or undeployed.
+ // or in other words, have not been neither deployed or undeployed).
- List<ToscaPolicy> preNativeArtifactPolicies = fsm.getNativeArtifactPolicies(prePoliciesByType);
+ List<ToscaPolicy> preNativeArtifactPolicies = fsm.getNativeArtifactPolicies(preActivePoliciesMap);
preNativeArtifactPolicies.retainAll(fsm.getNativeArtifactPolicies(activePoliciesByType));
logger.info("reapply candidate native artifact policies {} as new native controller policies {} were found",
@@ -294,8 +295,12 @@ public abstract class LifecycleStateRunning extends LifecycleStateDefault {
// since we want non-native policies to be reapplied when a new native artifact policy has been
// reapplied here, remove it from the preActivePolicies, so it is detected as new.
- preActivePolicies.removeAll(preNativeArtifactPoliciesToApply);
-
+ if (!preNativeArtifactPoliciesToApply.isEmpty()) {
+ preActivePolicies.removeAll(preNativeArtifactPoliciesToApply);
+ preActivePoliciesMap
+ .getOrDefault(LifecycleFsm.POLICY_TYPE_DROOLS_NATIVE_RULES.getName(), Collections.emptyList())
+ .removeAll(preNativeArtifactPoliciesToApply);
+ }
return failedPolicies;
}