Remove ECOMP in headers
[clamp.git] / src / main / java / org / onap / clamp / clds / client / SdcSendReqDelegate.java
index 47a4ddc..64e19f9 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP CLAMP
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 
 package org.onap.clamp.clds.client;
 
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.io.IOException;
+import java.security.GeneralSecurityException;
 import java.util.List;
 
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsSdcServiceDetail;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
+import org.apache.commons.codec.DecoderException;
+import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
+import org.onap.clamp.clds.client.req.sdc.SdcRequests;
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.model.DcaeEvent;
-import org.onap.clamp.clds.model.prop.Global;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.refprop.RefProp;
+import org.onap.clamp.clds.model.properties.Global;
+import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.springframework.beans.factory.annotation.Autowired;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
+import org.springframework.stereotype.Component;
 
 /**
  * Send control loop model to dcae proxy.
  */
-public class SdcSendReqDelegate implements JavaDelegate {
-    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class);
-    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+@Component
+public class SdcSendReqDelegate {
 
+    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
     @Autowired
-    private RefProp                 refProp;
-
+    private SdcCatalogServices sdcCatalogServices;
     @Autowired
-    private SdcCatalogServices      sdcCatalogServices;
-
-    private String                  baseUrl;
-    private String                  artifactType;
-    private String                  locationArtifactType;
-    private String                  artifactLabel;
-    private String                  locationArtifactLabel;
+    private SdcRequests sdcReq;
+    @Autowired
+    private ClampProperties refProp;
 
     /**
      * Perform activity. Send to sdc proxy.
      *
-     * @param execution
+     * @param camelExchange
+     *            The camel object that contains all fields
+     * @throws DecoderException
+     *             In case of issues with password decryption
+     * @throws GeneralSecurityException
+     *             In case of issues with password decryption
+     * @throws IOException
+     *             In case of issues with file opening
      */
-    @Override
-    public void execute(DelegateExecution execution) throws Exception {
-        String userid = (String) execution.getVariable("userid");
-        logger.info("userid=" + userid);
-        String docText = new String((byte[]) execution.getVariable("docText"));
-        String artifactName = (String) execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX;
-        execution.setVariable("artifactName", artifactName);
-        getSdcAttributes((String) execution.getVariable("controlName"));
-        ModelProperties prop = ModelProperties.create(execution);
-        String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText);
-        String formatttedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
-        if (formatttedSdcReq != null) {
-            execution.setVariable("formattedArtifactReq", formatttedSdcReq.getBytes());
-        }
-        List<String> sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution);
-
-        String sdcLocationsPayload = SdcReq.formatSdcLocationsReq(prop, artifactName);
-        String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json";
-        String formattedSdcLocationReq = SdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
-                locationArtifactLabel, locationArtifactType);
-        if (formattedSdcLocationReq != null) {
-            execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes());
-        }
-        String serviceInvariantUUID = getServiceInvariantUUIDFromProps(prop);
-        uploadToSdc(prop, serviceInvariantUUID, userid, sdcReqUrlsList, formatttedSdcReq, formattedSdcLocationReq,
-                artifactName, locationArtifactName);
-    }
-
-    private String getServiceInvariantUUIDFromProps(ModelProperties props) {
-        String invariantUUID = "";
-        Global globalProps = props.getGlobal();
-        if (globalProps != null) {
-            if (globalProps.getService() != null) {
-                invariantUUID = globalProps.getService();
+    @Handler
+    public void execute(Exchange camelExchange) throws GeneralSecurityException, DecoderException, IOException {
+        String controlName = (String) camelExchange.getProperty("controlName");
+        String artifactLabel = sdcReq
+                .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName);
+        String locationArtifactLabel = sdcReq
+                .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName);
+        String artifactType = refProp.getStringValue("sdc.artifactType");
+        String locationArtifactType = refProp.getStringValue("sdc.locationArtifactType");
+        String userid = (String) camelExchange.getProperty("userid");
+        String docText = (String) camelExchange.getProperty("docText");
+        String artifactName = (String) camelExchange.getProperty("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX;
+        camelExchange.setProperty("artifactName", artifactName);
+        ModelProperties prop = ModelProperties.create(camelExchange);
+        String bluprintPayload;
+        bluprintPayload = sdcReq.formatBlueprint(prop, docText);
+        // no need to upload blueprint for Holmes, thus blueprintPayload for
+        // Holmes is empty
+        if (!bluprintPayload.isEmpty()) {
+            String formattedSdcReq = sdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
+            if (formattedSdcReq != null) {
+                camelExchange.setProperty("formattedArtifactReq", formattedSdcReq.getBytes());
             }
-        }
-        return invariantUUID;
-    }
-
-    private void uploadToSdc(ModelProperties prop, String serviceInvariantUUID, String userid,
-            List<String> sdcReqUrlsList, String formatttedSdcReq, String formattedSdcLocationReq, String artifactName,
-            String locationArtifactName) throws Exception {
-        logger.info("userid=" + userid);
-        if (sdcReqUrlsList != null && sdcReqUrlsList.size() > 0) {
-            for (String url : sdcReqUrlsList) {
-                if (url != null) {
-                    String originalServiceUUID = sdcCatalogServices
-                            .getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
-                    logger.info("ServiceUUID used before upload in url:" + originalServiceUUID);
-                    String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(originalServiceUUID);
-                    CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices
-                            .getCldsSdcServiceDetailFromJson(sdcServicesInformation);
-                    String uploadedArtifactUUID = sdcCatalogServices
-                            .getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail, artifactName);
-                    // Upload artifacts to sdc
-                    String updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
-                    String responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl,
-                            formatttedSdcReq);
-                    logger.info("value of sdc Response of uploading to sdc :" + responseStr);
-                    String updatedServiceUUID = sdcCatalogServices
-                            .getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
-                    if (!originalServiceUUID.equalsIgnoreCase(updatedServiceUUID)) {
-                        url = url.replace(originalServiceUUID, updatedServiceUUID);
-                    }
-                    logger.info("ServiceUUID used after upload in ulr:" + updatedServiceUUID);
-                    sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(updatedServiceUUID);
-                    CldsSdcServiceDetail = sdcCatalogServices.getCldsSdcServiceDetailFromJson(sdcServicesInformation);
-                    uploadedArtifactUUID = sdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail,
-                            locationArtifactName);
-                    // To send location information also to sdc
-                    updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
-                    responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl,
-                            formattedSdcLocationReq);
-                    logger.info("value of sdc Response of uploading location to sdc :" + responseStr);
-                }
+            Global globalProps = prop.getGlobal();
+            if (globalProps != null && globalProps.getService() != null) {
+                String serviceInvariantUUID = globalProps.getService();
+                camelExchange.setProperty("serviceInvariantUUID", serviceInvariantUUID);
+            }
+            List<String> sdcReqUrlsList = sdcReq.getSdcReqUrlsList(prop);
+            String sdcLocationsPayload = sdcReq.formatSdcLocationsReq(prop, artifactName);
+            String locationArtifactName = (String) camelExchange.getProperty("controlName") + "-location.json";
+            String formattedSdcLocationReq = sdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
+                    locationArtifactLabel, locationArtifactType);
+            if (formattedSdcLocationReq != null) {
+                camelExchange.setProperty("formattedLocationReq", formattedSdcLocationReq.getBytes());
             }
+            sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq,
+                    artifactName, locationArtifactName);
         }
     }
-
-    private void getSdcAttributes(String controlName) {
-        baseUrl = refProp.getStringValue("sdc.serviceUrl");
-        artifactLabel = SdcReq
-                .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName);
-        locationArtifactLabel = SdcReq
-                .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName);
-        artifactType = refProp.getStringValue("sdc.artifactType");
-        locationArtifactType = refProp.getStringValue("sdc.locationArtifactType");
-    }
 }