From 43c1e8c7c820bc8004725355a4a5eb0ad519e680 Mon Sep 17 00:00:00 2001 From: jhh Date: Thu, 20 Feb 2020 18:19:36 -0600 Subject: Tosca compliant vFirewall Issue-ID: POLICY-2376 Signed-off-by: jhh Change-Id: I362ebbd941c400a6ffc3e952e66ca2d624afbfdd Signed-off-by: jhh --- .../processor/ControlLoopProcessor.java | 38 +++++++++++++++------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'controlloop/common/eventmanager/src/main') diff --git a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java index 4cff616a0..0015e4dd7 100644 --- a/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java +++ b/controlloop/common/eventmanager/src/main/java/org/onap/policy/controlloop/processor/ControlLoopProcessor.java @@ -22,9 +22,11 @@ package org.onap.policy.controlloop.processor; import java.io.Serializable; import java.io.UnsupportedEncodingException; +import java.lang.reflect.InvocationTargetException; import java.net.URLDecoder; import java.util.stream.Collectors; import lombok.Getter; +import org.apache.commons.beanutils.BeanUtils; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.controlloop.ControlLoopException; import org.onap.policy.controlloop.drl.legacy.ControlLoopParams; @@ -39,13 +41,17 @@ import org.onap.policy.controlloop.policy.TargetType; import org.onap.policy.drools.domain.models.DroolsPolicy; import org.onap.policy.drools.models.domain.legacy.LegacyPolicy; import org.onap.policy.drools.models.domain.operational.OperationalPolicy; +import org.onap.policy.drools.models.domain.operational.OperationalTarget; import org.onap.policy.drools.system.PolicyEngineConstants; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.CustomClassLoaderConstructor; public class ControlLoopProcessor implements Serializable { private static final long serialVersionUID = 1L; + private static final Logger logger = LoggerFactory.getLogger(ControlLoopProcessor.class); private final ControlLoopPolicy policy; private String currentNestedPolicyId = null; @@ -107,6 +113,16 @@ public class ControlLoopProcessor implements Serializable { ControlLoopPolicy.class, ControlLoopPolicy.class.getClassLoader())).load(decodedPolicy); } + private Target toStandardTarget(OperationalTarget opTarget) { + Target target = new Target(TargetType.valueOf(opTarget.getTargetType())); + try { + BeanUtils.populate(target, opTarget.getEntityIds()); + } catch (IllegalAccessException | InvocationTargetException e) { + logger.warn("target entityIds cannot be mapped (unexpected): {}", opTarget, e); + } + return target; + } + protected ControlLoopPolicy buildPolicyFromToscaCompliant(ToscaPolicy policy) throws CoderException { OperationalPolicy domainPolicy = PolicyEngineConstants.getManager().getDomainMaker().convertTo(policy, OperationalPolicy.class); @@ -116,17 +132,17 @@ public class ControlLoopProcessor implements Serializable { // @formatter:off backwardsCompatiblePolicy.setPolicies( domainPolicy.getProperties().getOperations().stream().map(operation -> new Policy( - PolicyParam.builder() - .id(operation.getId()) - .name(operation.getActorOperation().getOperation()) - .description(operation.getDescription()) - .actor(operation.getActorOperation().getActor()) - .payload(operation.getActorOperation().getPayload()) - .recipe(operation.getActorOperation().getOperation()) - .retries(operation.getRetries()) - .timeout(operation.getTimeout()) - .target(new Target(TargetType.valueOf(operation.getActorOperation().getTarget().getType()), - operation.getActorOperation().getTarget().getResourceId())).build())) + PolicyParam.builder() + .id(operation.getId()) + .name(operation.getActorOperation().getOperation()) + .description(operation.getDescription()) + .actor(operation.getActorOperation().getActor()) + .payload(operation.getActorOperation().getPayload()) + .recipe(operation.getActorOperation().getOperation()) + .retries(operation.getRetries()) + .timeout(operation.getTimeout()) + .target(toStandardTarget(operation.getActorOperation().getTarget())) + .build())) .collect(Collectors.toList())); // @formatter:on -- cgit 1.2.3-korg