* ============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");
- * you may not use this file except in compliance with the License.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END============================================
* ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ *
*/
package org.onap.clamp.clds.client;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsAsdcServiceDetail;
-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.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+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.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.properties.Global;
+import org.onap.clamp.clds.model.properties.ModelProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
/**
* Send control loop model to dcae proxy.
*/
-public class SdcSendReqDelegate implements JavaDelegate {
- // currently uses the java.util.logging.Logger like the Camunda engine
- private static final Logger logger = LoggerFactory.getLogger(SdcSendReqDelegate.class);
+@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 asdcCatalogServices;
-
- 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 asdc proxy.
+ * 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
*/
- public void execute(DelegateExecution execution) throws Exception {
- String userid = (String) execution.getVariable("userid");
- logger.info("userid=" + userid);
- String docText = (String) execution.getVariable("docText");
- String artifactName = execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX;
- execution.setVariable("artifactName", artifactName);
- getAsdcAttributes();
- ModelProperties prop = ModelProperties.create(execution);
- String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText);
- String formatttedAsdcReq = SdcReq.formatAsdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
- if (formatttedAsdcReq != null) {
- execution.setVariable("formattedArtifactReq", formatttedAsdcReq.getBytes());
- }
- List<String> asdcReqUrlsList = SdcReq.getAsdcReqUrlsList(prop, baseUrl, asdcCatalogServices, execution);
-
- String asdcLocationsPayload = SdcReq.formatAsdcLocationsReq(prop, artifactName);
- String locationArtifactName = execution.getVariable("controlName") + "-location.json";
- String formattedAsdcLocationReq = SdcReq.formatAsdcReq(asdcLocationsPayload, locationArtifactName, locationArtifactLabel, locationArtifactType);
- if (formattedAsdcLocationReq != null) {
- execution.setVariable("formattedLocationReq", formattedAsdcLocationReq.getBytes());
- }
- String serviceInvariantUUID = getServiceInvariantUUIDFromProps(prop);
- uploadToAsdc(prop, serviceInvariantUUID, userid, asdcReqUrlsList, formatttedAsdcReq, formattedAsdcLocationReq, 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 uploadToAsdc(ModelProperties prop, String serviceInvariantUUID, String userid, List<String> asdcReqUrlsList, String formatttedAsdcReq, String formattedAsdcLocationReq, String artifactName, String locationArtifactName) throws Exception {
- logger.info("userid=" + userid);
- if (asdcReqUrlsList != null && asdcReqUrlsList.size() > 0) {
- for (String url : asdcReqUrlsList) {
- if (url != null) {
- String originalServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID);
- logger.info("ServiceUUID used before upload in url:" + originalServiceUUID);
- String asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(originalServiceUUID);
- CldsAsdcServiceDetail cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation);
- String uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, artifactName);
- // Upload artifacts to asdc
- String updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
- String responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formatttedAsdcReq);
- logger.info("value of asdc Response of uploading to asdc :" + responseStr);
- String updatedServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID);
- if (!originalServiceUUID.equalsIgnoreCase(updatedServiceUUID)) {
- url = url.replace(originalServiceUUID, updatedServiceUUID);
- }
- logger.info("ServiceUUID used after upload in ulr:" + updatedServiceUUID);
- asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(updatedServiceUUID);
- cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation);
- uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, locationArtifactName);
- // To send location information also to asdc
- updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
- responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formattedAsdcLocationReq);
- logger.info("value of asdc Response of uploading location to asdc :" + 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 getAsdcAttributes() {
- baseUrl = refProp.getStringValue("asdc.serviceUrl");
- artifactLabel = refProp.getStringValue("asdc.artifactLabel");
- locationArtifactLabel = refProp.getStringValue("asdc.locationArtifactLabel");
- artifactType = refProp.getStringValue("asdc.artifactType");
- locationArtifactType = refProp.getStringValue("asdc.locationArtifactType");
- }
}