summaryrefslogtreecommitdiffstats
path: root/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java
diff options
context:
space:
mode:
Diffstat (limited to 'feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java')
-rw-r--r--feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java47
1 files changed, 27 insertions, 20 deletions
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java
index d91ecccf..113bb885 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeNativeArtifactController.java
@@ -26,9 +26,11 @@ import org.onap.policy.common.gson.annotation.GsonJsonIgnore;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.drools.controller.DroolsControllerConstants;
import org.onap.policy.drools.domain.models.artifact.NativeArtifactPolicy;
+import org.onap.policy.drools.protocol.configuration.ControllerConfiguration;
import org.onap.policy.drools.protocol.configuration.DroolsConfiguration;
import org.onap.policy.drools.system.PolicyController;
import org.onap.policy.drools.system.PolicyControllerConstants;
+import org.onap.policy.drools.system.PolicyEngineConstants;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
import org.slf4j.Logger;
@@ -55,42 +57,47 @@ public class PolicyTypeNativeArtifactController implements PolicyTypeController
PolicyController controller;
try {
nativePolicy = fsm.getDomainMaker().convertTo(policy, NativeArtifactPolicy.class);
+ DroolsConfiguration droolsConfig =
+ new DroolsConfiguration(
+ nativePolicy.getProperties().getRulesArtifact().getArtifactId(),
+ nativePolicy.getProperties().getRulesArtifact().getGroupId(),
+ nativePolicy.getProperties().getRulesArtifact().getVersion());
+
controller =
PolicyControllerConstants.getFactory().get(nativePolicy.getProperties().getController().getName());
+ if (controller.getDrools().isBrained()) {
+ logger.warn("upgrade of a live controller is strongly discouraged (undeploy first): {} -> {}",
+ controller, droolsConfig);
+ }
+
+ return update(nativePolicy, droolsConfig);
} catch (CoderException | RuntimeException e) {
logger.warn("Invalid Policy: {}", policy);
return false;
}
-
- DroolsConfiguration newConfig =
- new DroolsConfiguration(
- nativePolicy.getProperties().getRulesArtifact().getArtifactId(),
- nativePolicy.getProperties().getRulesArtifact().getGroupId(),
- nativePolicy.getProperties().getRulesArtifact().getVersion());
-
- PolicyControllerConstants.getFactory().patch(controller, newConfig);
- return true;
}
@Override
public boolean undeploy(ToscaPolicy policy) {
- PolicyController controller;
try {
NativeArtifactPolicy nativePolicy = fsm.getDomainMaker().convertTo(policy, NativeArtifactPolicy.class);
- controller =
- PolicyControllerConstants.getFactory().get(nativePolicy.getProperties().getController().getName());
+ DroolsConfiguration noConfig =
+ new DroolsConfiguration(
+ DroolsControllerConstants.NO_ARTIFACT_ID,
+ DroolsControllerConstants.NO_GROUP_ID,
+ DroolsControllerConstants.NO_VERSION);
+
+ return update(nativePolicy, noConfig);
} catch (RuntimeException | CoderException e) {
logger.warn("Invalid Policy: {}", policy);
return false;
}
+ }
- DroolsConfiguration noConfig =
- new DroolsConfiguration(
- DroolsControllerConstants.NO_ARTIFACT_ID,
- DroolsControllerConstants.NO_GROUP_ID,
- DroolsControllerConstants.NO_VERSION);
-
- PolicyControllerConstants.getFactory().patch(controller, noConfig);
- return true;
+ private boolean update(NativeArtifactPolicy nativePolicy, DroolsConfiguration droolsConfig) {
+ ControllerConfiguration controllerConfig =
+ new ControllerConfiguration(nativePolicy.getProperties().getController().getName(),
+ ControllerConfiguration.CONFIG_CONTROLLER_OPERATION_UPDATE, droolsConfig);
+ return PolicyEngineConstants.getManager().updatePolicyController(controllerConfig) != null;
}
}