import java.util.List;
import java.util.function.BiPredicate;
import lombok.NonNull;
+import org.onap.policy.drools.policies.DomainMaker;
import org.onap.policy.models.pdp.concepts.PdpResponseDetails;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
protected boolean syncPolicies(List<ToscaPolicy> policies,
BiPredicate<PolicyTypeController, ToscaPolicy> sync) {
boolean success = true;
+ DomainMaker domain = fsm.getDomainMaker();
for (ToscaPolicy policy : policies) {
ToscaPolicyTypeIdentifier policyType = policy.getTypeIdentifier();
PolicyTypeController controller = fsm.getController(policyType);
continue;
}
- success = fsm.getDomainMaker().isConformant(policy) && sync.test(controller, policy) && success;
+ if (domain.isRegistered(policy.getTypeIdentifier())) {
+ success = domain.isConformant(policy) && sync.test(controller, policy) && success;
+ } else {
+ logger.info("no validator registered for policy type {}", policy.getTypeIdentifier());
+ success = sync.test(controller, policy) && success;
+ }
}
return success;
private static final String EXAMPLE_NATIVE_ARTIFACT_POLICY_JSON =
"src/test/resources/tosca-policy-native-artifact-example.json";
+ private static final String EXAMPLE_OTHER_POLICY_NAME = "other";
+ private static final String EXAMPLE_OTHER_POLICY_JSON =
+ "src/test/resources/tosca-policy-other.json";
+
private static final String OP_POLICY_NAME_VCPE = "operational.restart";
private static final String VCPE_OPERATIONAL_DROOLS_POLICY_JSON =
"policies/vCPE.policy.operational.input.tosca.json";
if (StringUtils.isBlank(opPolicy.getName())) {
opPolicy.setName(opPolicy.getMetadata().get("policy-id"));
}
- assertTrue(
- listPost("policies/operations/validation", toString(opPolicy), Status.OK.getStatusCode()).isEmpty());
+ testNotNativePolicy(opPolicy);
- booleanPost("policies", toString(opPolicy), Status.OK.getStatusCode(), Boolean.TRUE);
- assertTrue(PolicyControllerConstants.getFactory().get("lifecycle").isAlive());
- assertTrue(PolicyControllerConstants.getFactory().get("lifecycle").getDrools().isBrained());
- assertEquals(1,
- PolicyControllerConstants
- .getFactory().get("lifecycle").getDrools().facts("junits", ToscaPolicy.class).size());
+ /* add tosca "other" of policy type "other" with no attached type schema */
- resourceLists("policies", 3);
- get("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(), Status.OK.getStatusCode());
- get("policies/example.controller/1.0.0", Status.OK.getStatusCode());
- get("policies/example.artifact/1.0.0", Status.OK.getStatusCode());
-
- booleanDelete("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(),
- Status.OK.getStatusCode(), Boolean.TRUE);
- assertEquals(0,
- PolicyControllerConstants
- .getFactory().get("lifecycle").getDrools().facts("junits", ToscaPolicy.class).size());
-
- resourceLists("policies", 2);
- get("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(), Status.NOT_FOUND.getStatusCode());
- get("policies/example.controller/1.0.0", Status.OK.getStatusCode());
- get("policies/example.artifact/1.0.0", Status.OK.getStatusCode());
+ ToscaPolicy otherPolicy = getPolicyFromFile(EXAMPLE_OTHER_POLICY_JSON, EXAMPLE_OTHER_POLICY_NAME);
+ testNotNativePolicy(otherPolicy);
/* individual deploy/undeploy operations */
Status.NOT_ACCEPTABLE.getStatusCode()).isEmpty());
}
+ private void testNotNativePolicy(ToscaPolicy opPolicy) throws CoderException {
+ assertTrue(
+ listPost("policies/operations/validation", toString(opPolicy),
+ Status.OK.getStatusCode()).isEmpty());
+
+ booleanPost("policies", toString(opPolicy), Status.OK.getStatusCode(), Boolean.TRUE);
+ assertTrue(PolicyControllerConstants.getFactory().get("lifecycle").isAlive());
+ assertTrue(PolicyControllerConstants.getFactory().get("lifecycle").getDrools().isBrained());
+ assertEquals(1,
+ PolicyControllerConstants
+ .getFactory().get("lifecycle").getDrools().facts("junits", ToscaPolicy.class).size());
+
+ resourceLists("policies", 3);
+ get("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(), Status.OK.getStatusCode());
+ get("policies/example.controller/1.0.0", Status.OK.getStatusCode());
+ get("policies/example.artifact/1.0.0", Status.OK.getStatusCode());
+
+ booleanDelete("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(),
+ Status.OK.getStatusCode(), Boolean.TRUE);
+ assertEquals(0,
+ PolicyControllerConstants
+ .getFactory().get("lifecycle").getDrools().facts("junits", ToscaPolicy.class).size());
+
+ resourceLists("policies", 2);
+ get("policies/" + opPolicy.getName() + "/" + opPolicy.getVersion(), Status.NOT_FOUND.getStatusCode());
+ get("policies/example.controller/1.0.0", Status.OK.getStatusCode());
+ get("policies/example.artifact/1.0.0", Status.OK.getStatusCode());
+ }
+
private Response get(String contextPath, int statusCode) {
Response response = client.get(contextPath);
assertEquals(statusCode, response.getStatus());