summaryrefslogtreecommitdiffstats
path: root/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java
diff options
context:
space:
mode:
Diffstat (limited to 'feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java')
-rw-r--r--feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java46
1 files changed, 44 insertions, 2 deletions
diff --git a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java
index 8e928aa8..878907b0 100644
--- a/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java
+++ b/feature-lifecycle/src/main/java/org/onap/policy/drools/lifecycle/PolicyTypeRulesController.java
@@ -23,12 +23,22 @@ package org.onap.policy.drools.lifecycle;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
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.nativ.rules.NativeDroolsPolicy;
+import org.onap.policy.drools.domain.models.nativ.rules.NativeDroolsRulesArtifact;
+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.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-@Getter
public class PolicyTypeRulesController implements PolicyTypeController {
+ private static final Logger logger = LoggerFactory.getLogger(PolicyTypeRulesController.class);
+ @Getter
protected final ToscaPolicyTypeIdentifier policyType;
@GsonJsonIgnore
@@ -48,7 +58,39 @@ public class PolicyTypeRulesController implements PolicyTypeController {
@Override
public boolean undeploy(ToscaPolicy policy) {
- // TODO
+ PolicyController controller;
+ try {
+ controller = getPolicyController(
+ fsm.getDomainMaker().convertTo(policy, NativeDroolsPolicy.class));
+ } 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 PolicyController getPolicyController(NativeDroolsPolicy domainPolicy) {
+ /*
+ * If the controller is present, it must have a name (schema validated) and as such, the
+ * controller must exist (via previously deployed controller policy).
+ */
+ if (domainPolicy.getProperties().getController() != null) {
+ return PolicyControllerConstants.getFactory().get(domainPolicy.getProperties().getController().getName());
+ }
+
+ /*
+ * Attempt to get the controller from the rules coordinates (excluding the version).
+ * The rules coordinates are mandatory (per schema validation).
+ */
+ NativeDroolsRulesArtifact rules = domainPolicy.getProperties().getRulesArtifact();
+ return PolicyControllerConstants.getFactory().get(rules.getGroupId(), rules.getArtifactId());
+ }
}