Operational policy modification
[clamp.git] / src / main / java / org / onap / clamp / loop / components / external / DcaeComponent.java
index 7a0d8b4..89332bb 100644 (file)
 package org.onap.clamp.loop.components.external;
 
 import com.google.gson.JsonObject;
+
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
+
 import org.apache.camel.Exchange;
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-
 import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse;
 import org.onap.clamp.clds.model.dcae.DcaeOperationStatusResponse;
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.loop.Loop;
+import org.onap.clamp.policy.microservice.MicroServicePolicy;
 
 public class DcaeComponent extends ExternalComponent {
 
@@ -46,11 +48,13 @@ public class DcaeComponent extends ExternalComponent {
     private static final String DCAE_SERVICETYPE_ID = "serviceTypeId";
     private static final String DCAE_INPUTS = "inputs";
 
+    private String name;
+
     public static final ExternalComponentState BLUEPRINT_DEPLOYED = new ExternalComponentState("BLUEPRINT_DEPLOYED",
             "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop");
     public static final ExternalComponentState PROCESSING_MICROSERVICE_INSTALLATION = new ExternalComponentState(
             "PROCESSING_MICROSERVICE_INSTALLATION", "Clamp has requested DCAE to install the microservices "
-                    + "defined in the DCAE blueprint and it's currently processing the request");
+            + "defined in the DCAE blueprint and it's currently processing the request");
     public static final ExternalComponentState MICROSERVICE_INSTALLATION_FAILED = new ExternalComponentState(
             "MICROSERVICE_INSTALLATION_FAILED",
             "Clamp has requested DCAE to install the microservices defined in the DCAE blueprint and it failed");
@@ -59,7 +63,7 @@ public class DcaeComponent extends ExternalComponent {
             "Clamp has requested DCAE to install the DCAE blueprint and it has been installed successfully");
     public static final ExternalComponentState PROCESSING_MICROSERVICE_UNINSTALLATION = new ExternalComponentState(
             "PROCESSING_MICROSERVICE_UNINSTALLATION", "Clamp has requested DCAE to uninstall the microservices "
-                    + "defined in the DCAE blueprint and it's currently processing the request");
+            + "defined in the DCAE blueprint and it's currently processing the request");
     public static final ExternalComponentState MICROSERVICE_UNINSTALLATION_FAILED = new ExternalComponentState(
             "MICROSERVICE_UNINSTALLATION_FAILED",
             "Clamp has requested DCAE to uninstall the microservices defined in the DCAE blueprint and it failed");
@@ -71,16 +75,23 @@ public class DcaeComponent extends ExternalComponent {
 
     public DcaeComponent() {
         super(BLUEPRINT_DEPLOYED);
+        this.name = "DCAE";
+    }
+
+    public DcaeComponent(String name) {
+        super(BLUEPRINT_DEPLOYED);
+        this.name = "DCAE_" + name;
     }
 
     @Override
     public String getComponentName() {
-        return "DCAE";
+        return name;
     }
 
+
     /**
      * Convert the json response to a DcaeOperationStatusResponse.
-     * 
+     *
      * @param responseBody The DCAE response Json paylaod
      * @return The dcae object provisioned
      */
@@ -122,7 +133,29 @@ public class DcaeComponent extends ExternalComponent {
         JsonObject globalProp = loop.getGlobalPropertiesJson();
         JsonObject deploymentProp = globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER);
 
-        String serviceTypeId = loop.getDcaeBlueprintId();
+        String serviceTypeId = loop.getLoopTemplate().getDcaeBlueprintId();
+
+        JsonObject rootObject = new JsonObject();
+        rootObject.addProperty(DCAE_SERVICETYPE_ID, serviceTypeId);
+        if (deploymentProp != null) {
+            rootObject.add(DCAE_INPUTS, deploymentProp);
+        }
+        return rootObject.toString();
+    }
+
+    /**
+     * Return the deploy payload for DCAE.
+     *
+     * @param loop               The loop object
+     * @param microServicePolicy The micro service policy
+     * @return The payload used to send deploy closed loop request
+     */
+    public static String getDeployPayload(Loop loop, MicroServicePolicy microServicePolicy) {
+        JsonObject globalProp = loop.getGlobalPropertiesJson();
+        JsonObject deploymentProp =
+                globalProp.getAsJsonObject(DEPLOYMENT_PARAMETER).getAsJsonObject(microServicePolicy.getName());
+
+        String serviceTypeId = microServicePolicy.getDcaeBlueprintId();
 
         JsonObject rootObject = new JsonObject();
         rootObject.addProperty(DCAE_SERVICETYPE_ID, serviceTypeId);
@@ -140,7 +173,19 @@ public class DcaeComponent extends ExternalComponent {
      */
     public static String getUndeployPayload(Loop loop) {
         JsonObject rootObject = new JsonObject();
-        rootObject.addProperty(DCAE_SERVICETYPE_ID, loop.getDcaeBlueprintId());
+        rootObject.addProperty(DCAE_SERVICETYPE_ID, loop.getLoopTemplate().getDcaeBlueprintId());
+        return rootObject.toString();
+    }
+
+    /**
+     * Return the uninstallation payload for DCAE.
+     *
+     * @param policy The microServicePolicy object
+     * @return The payload in string (json)
+     */
+    public static String getUndeployPayload(MicroServicePolicy policy) {
+        JsonObject rootObject = new JsonObject();
+        rootObject.addProperty(DCAE_SERVICETYPE_ID, policy.getDcaeBlueprintId());
         return rootObject.toString();
     }