Merge "Add SO VF Module Delete Operation"
[policy/models.git] / models-tosca / src / main / java / org / onap / policy / models / tosca / legacy / mapping / LegacyGuardPolicyMapper.java
index 01bd83d..b7ebdce 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019-2020 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -47,29 +47,25 @@ import org.slf4j.LoggerFactory;
  */
 public class LegacyGuardPolicyMapper
         implements JpaToscaServiceTemplateMapper<LegacyGuardPolicyInput, Map<String, LegacyGuardPolicyOutput>> {
+    private static final Logger LOGGER = LoggerFactory.getLogger(LegacyGuardPolicyMapper.class);
 
     // Tag for metadata fields
     private static final String POLICY_ID = "policy-id";
     private static final String POLICY_VERSION = "policy-version";
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(LegacyGuardPolicyMapper.class);
-
     private static final Map<String, PfConceptKey> GUARD_POLICY_TYPE_MAP = new LinkedHashMap<>();
 
     static {
-        GUARD_POLICY_TYPE_MAP.put("guard.frequency.scaleout",
+        GUARD_POLICY_TYPE_MAP.put("guard.frequency.",
                 new PfConceptKey("onap.policies.controlloop.guard.FrequencyLimiter:1.0.0"));
-        GUARD_POLICY_TYPE_MAP.put("guard.minmax.scaleout",
-                new PfConceptKey("onap.policies.controlloop.guard.MinMax:1.0.0"));
-        GUARD_POLICY_TYPE_MAP.put("guard.minmax.scaleout",
-                new PfConceptKey("onap.policies.controlloop.guard.MinMax:1.0.0"));
-        GUARD_POLICY_TYPE_MAP.put("guard.blacklist",
+        GUARD_POLICY_TYPE_MAP.put("guard.minmax.", new PfConceptKey("onap.policies.controlloop.guard.MinMax:1.0.0"));
+        GUARD_POLICY_TYPE_MAP.put("guard.blacklist.",
                 new PfConceptKey("onap.policies.controlloop.guard.Blacklist:1.0.0"));
     }
 
     @Override
     public JpaToscaServiceTemplate toToscaServiceTemplate(final LegacyGuardPolicyInput legacyGuardPolicyInput) {
-        PfConceptKey guardPolicyType = GUARD_POLICY_TYPE_MAP.get(legacyGuardPolicyInput.getPolicyId());
+        PfConceptKey guardPolicyType = getGuardPolicyType(legacyGuardPolicyInput);
         if (guardPolicyType == null) {
             String errorMessage =
                     "policy type for guard policy \"" + legacyGuardPolicyInput.getPolicyId() + "\" unknown";
@@ -96,7 +92,7 @@ public class LegacyGuardPolicyMapper
         toscaPolicy.setMetadata(metadata);
 
         final JpaToscaServiceTemplate serviceTemplate = new JpaToscaServiceTemplate();
-        serviceTemplate.setToscaDefinitionsVersion("tosca_simple_yaml_1_0");
+        serviceTemplate.setToscaDefinitionsVersion("tosca_simple_yaml_1_0_0");
 
         serviceTemplate.setTopologyTemplate(new JpaToscaTopologyTemplate());
 
@@ -107,8 +103,8 @@ public class LegacyGuardPolicyMapper
     }
 
     @Override
-    public Map<String, LegacyGuardPolicyOutput> fromToscaServiceTemplate(
-            final JpaToscaServiceTemplate serviceTemplate) {
+    public Map<String, LegacyGuardPolicyOutput>
+            fromToscaServiceTemplate(final JpaToscaServiceTemplate serviceTemplate) {
         ToscaUtils.assertPoliciesExist(serviceTemplate);
 
         final Map<String, LegacyGuardPolicyOutput> legacyGuardPolicyOutputMap = new LinkedHashMap<>();
@@ -118,7 +114,7 @@ public class LegacyGuardPolicyMapper
 
             final LegacyGuardPolicyOutput legacyGuardPolicyOutput = new LegacyGuardPolicyOutput();
             legacyGuardPolicyOutput.setType(toscaPolicy.getType().getName());
-            legacyGuardPolicyOutput.setVersion(toscaPolicy.getType().getVersion());
+            legacyGuardPolicyOutput.setVersion(toscaPolicy.getKey().getVersion());
 
             if (toscaPolicy.getMetadata() == null) {
                 String errorMessage = "no metadata defined on TOSCA policy";
@@ -126,14 +122,11 @@ public class LegacyGuardPolicyMapper
                 throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage);
             }
 
-            final Map<String, Object> metadata = new LinkedHashMap<>();
-            for (Entry<String, String> metadataEntry : toscaPolicy.getMetadata().entrySet()) {
-                if (POLICY_VERSION.equals(metadataEntry.getKey())) {
-                    metadata.put(POLICY_VERSION, Integer.parseInt(metadataEntry.getValue()));
-                } else {
-                    metadata.put(metadataEntry.getKey(), metadataEntry.getValue());
-                }
-            }
+            final Map<String, Object> metadata = new LinkedHashMap<>(toscaPolicy.getMetadata());
+
+            // if version exists, convert it to int
+            metadata.computeIfPresent(POLICY_VERSION, (key, val) -> Integer.parseInt(val.toString()));
+
             legacyGuardPolicyOutput.setMetadata(metadata);
 
             if (toscaPolicy.getProperties() == null) {
@@ -143,19 +136,7 @@ public class LegacyGuardPolicyMapper
             }
 
             final LegacyGuardPolicyContent content = new LegacyGuardPolicyContent();
-            // @formatter:off
-            content.setActor(           toscaPolicy.getProperties().get("actor"));
-            content.setClname(          toscaPolicy.getProperties().get("clname"));
-            content.setGuardActiveEnd(  toscaPolicy.getProperties().get("guardActiveEnd"));
-            content.setGuardActiveStart(toscaPolicy.getProperties().get("guardActiveStart"));
-            content.setLimit(           toscaPolicy.getProperties().get("limit"));
-            content.setMax(             toscaPolicy.getProperties().get("max"));
-            content.setMin(             toscaPolicy.getProperties().get("min"));
-            content.setRecipe(          toscaPolicy.getProperties().get("recipe"));
-            content.setTargets(         toscaPolicy.getProperties().get("targets"));
-            content.setTimeUnits(       toscaPolicy.getProperties().get("timeUnits"));
-            content.setTimeWindow(      toscaPolicy.getProperties().get("timeWindow"));
-            // @formatter:on
+            content.setContent(toscaPolicy.getProperties());
 
             final Map<String, LegacyGuardPolicyContent> propertiesMap = new LinkedHashMap<>();
             propertiesMap.put("content", content);
@@ -166,4 +147,19 @@ public class LegacyGuardPolicyMapper
 
         return legacyGuardPolicyOutputMap;
     }
+
+    private PfConceptKey getGuardPolicyType(final LegacyGuardPolicyInput legacyGuardPolicyInput) {
+        final String policyId = legacyGuardPolicyInput.getPolicyId();
+        if (policyId == null) {
+            return null;
+        }
+
+        for (Entry<String, PfConceptKey> guardPolicyTypeEntry : GUARD_POLICY_TYPE_MAP.entrySet()) {
+            if (policyId.startsWith(guardPolicyTypeEntry.getKey())) {
+                return guardPolicyTypeEntry.getValue();
+            }
+        }
+
+        return null;
+    }
 }