aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/onap/clamp/clds/Application.java15
-rw-r--r--src/main/java/org/onap/clamp/clds/camel/CamelProxy.java67
-rw-r--r--src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java36
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java36
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java30
-rw-r--r--src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java30
-rw-r--r--src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java28
-rw-r--r--src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java29
-rw-r--r--src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java29
-rw-r--r--src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java92
-rw-r--r--src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java32
-rw-r--r--src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java38
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java38
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java88
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java97
-rw-r--r--src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java84
-rw-r--r--src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java59
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java67
-rw-r--r--src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java15
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java57
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsUser.java7
-rw-r--r--src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java (renamed from src/main/java/org/onap/clamp/clds/service/JerseyConfig.java)17
-rw-r--r--src/main/java/org/onap/clamp/clds/util/LogMessages.java (renamed from src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java)31
23 files changed, 524 insertions, 498 deletions
diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java
index 2727535e4..281a87ca5 100644
--- a/src/main/java/org/onap/clamp/clds/Application.java
+++ b/src/main/java/org/onap/clamp/clds/Application.java
@@ -26,6 +26,7 @@ package org.onap.clamp.clds;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
+import org.apache.camel.component.servlet.CamelHttpTransportServlet;
import org.apache.catalina.connector.Connector;
import org.onap.clamp.clds.model.prop.Holmes;
import org.onap.clamp.clds.model.prop.ModelProperties;
@@ -41,6 +42,7 @@ import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -89,6 +91,19 @@ public class Application extends SpringBootServletInitializer {
}
/**
+ * This method is used to declare the camel servlet.
+ *
+ * @return A servlet bean
+ */
+ @Bean
+ public ServletRegistrationBean camelServletRegistrationBean() {
+ ServletRegistrationBean registration = new ServletRegistrationBean(new CamelHttpTransportServlet(),
+ "/restservices/clds/v2");
+ registration.setName("CamelServlet");
+ return registration;
+ }
+
+ /**
* This method is used by Spring to create the servlet container factory.
*
* @return The TomcatEmbeddedServletContainerFactory just created
diff --git a/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java b/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java
new file mode 100644
index 000000000..66cd1f5a9
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/camel/CamelProxy.java
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 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.
+ * 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
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.camel;
+
+import org.apache.camel.ExchangeProperty;
+
+/**
+ * This interface describes the CamelProxy parameters that must be passed to the
+ * Camel flow.
+ */
+public interface CamelProxy {
+
+ /**
+ * This method is called when invoking a camel flow.
+ *
+ * @param actionCommand
+ * The action coming from the Clamp UI (like SUBMIT, UPDATE,
+ * DELETE, ...)
+ * @param modelProperties
+ * The Model properties created based on the BPMN Json and
+ * Properties Json
+ * @param modelBpmnProperties
+ * The Json with all the properties describing the flow
+ * @param modelName
+ * The model name
+ * @param controlName
+ * The control loop name
+ * @param docText
+ * The Global properties JSON containing YAML (coming from CLamp
+ * template)
+ * @param isTest
+ * Is a test or not (flag coming from the UI)
+ * @param userId
+ * The user ID coming from the UI
+ * @param isInsertTestEvent
+ * Is a test or not (flag coming from the UI)
+ * @return A string containing the result of the Camel flow execution
+ */
+ String submit(@ExchangeProperty("actionCd") String actionCommand,
+ @ExchangeProperty("modelProp") String modelProperties,
+ @ExchangeProperty("modelBpmnProp") String modelBpmnProperties,
+ @ExchangeProperty("modelName") String modelName, @ExchangeProperty("controlName") String controlName,
+ @ExchangeProperty("docText") String docText, @ExchangeProperty("isTest") boolean isTest,
+ @ExchangeProperty("userid") String userId,
+ @ExchangeProperty("isInsertTestEvent") boolean isInsertTestEvent);
+}
diff --git a/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java b/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java
index 4886b0de0..dcc318930 100644
--- a/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/CldsEventDelegate.java
@@ -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");
@@ -26,40 +26,44 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.dao.CldsDao;
import org.onap.clamp.clds.model.CldsEvent;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Create CLDS Event.
*/
-public class CldsEventDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsEventDelegate.class);
+@Component
+public class CldsEventDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsEventDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private CldsDao cldsDao;
+ private CldsDao cldsDao;
/**
* Insert event using process variables.
*
- * @param execution
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) {
- String controlName = (String) execution.getVariable("controlName");
- String actionCd = (String) execution.getVariable("actionCd");
- String actionStateCd = (String) execution.getVariable("actionStateCd");
+ @Handler
+ public void execute(Exchange camelExchange) {
+ String controlName = (String) camelExchange.getProperty("controlName");
+ String actionCd = (String) camelExchange.getProperty("actionCd");
+ String actionStateCd = (String) camelExchange.getProperty("actionStateCd");
// Flag indicate whether it is triggered by Validation Test button from
// UI
- boolean isTest = (boolean) execution.getVariable("isTest");
- boolean isInsertTestEvent = (boolean) execution.getVariable("isInsertTestEvent");
- String userid = (String) execution.getVariable("userid");
+ boolean isTest = (boolean) camelExchange.getProperty("isTest");
+ boolean isInsertTestEvent = (boolean) camelExchange.getProperty("isInsertTestEvent");
+ String userid = (String) camelExchange.getProperty("userid");
// do not insert events for test actions unless flag set to insert them
if (!isTest || isInsertTestEvent) {
// won't really have userid here...
- CldsEvent.insEvent(cldsDao, controlName, userid, actionCd, actionStateCd, execution.getProcessInstanceId());
+ CldsEvent.insEvent(cldsDao, controlName, userid, actionCd, actionStateCd, camelExchange.getExchangeId());
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
index b8863e026..6053a0de9 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
@@ -35,24 +35,26 @@ import org.onap.clamp.clds.exception.DcaeDeploymentException;
import org.onap.clamp.clds.model.refprop.RefProp;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* This class implements the communication with DCAE for the service
* deployments.
- *
*/
+@Component
public class DcaeDispatcherServices {
- protected static final EELFLogger logger = EELFManager.getInstance()
- .getLogger(DcaeDispatcherServices.class);
- protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeDispatcherServices.class);
+ protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private RefProp refProp;
- private static final String STATUS_URL_LOG = "Status URL extracted: ";
- private static final String DCAE_URL_PREFIX = "/dcae-deployments/";
- private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL";
- public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId";
- private static final String DCAE_LINK_FIELD = "links";
- private static final String DCAE_STATUS_FIELD = "status";
+ private RefProp refProp;
+ private static final String STATUS_URL_LOG = "Status URL extracted: ";
+ private static final String DCAE_URL_PREFIX = "/dcae-deployments/";
+ private static final String DCAE_URL_PROPERTY_NAME = "DCAE_DISPATCHER_URL";
+ private static final String DCAE_REQUEST_FAILED_LOG = "RequestFailed - responseStr=";
+ public static final String DCAE_REQUESTID_PROPERTY_NAME = "dcae.header.requestId";
+ private static final String DCAE_LINK_FIELD = "links";
+ private static final String DCAE_STATUS_FIELD = "status";
/**
* Delete the deployment on DCAE.
@@ -76,7 +78,7 @@ public class DcaeDispatcherServices {
LoggingUtils.setResponseContext("0", "Delete deployments success", this.getClass().getName());
return statusUrl;
} catch (Exception e) {
- //Log StatusCode during exception in metrics log
+ // Log StatusCode during exception in metrics log
LoggingUtils.setResponseContext("900", "Delete deployments failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Delete deployments error");
logger.error("Exception occurred during Delete Deployment Operation with DCAE", e);
@@ -93,7 +95,6 @@ public class DcaeDispatcherServices {
* @param statusUrl
* The URL provided by a previous DCAE Query
* @return The status
- *
*/
public String getOperationStatus(String statusUrl) {
// Assigning processing status to monitor operation status further
@@ -111,7 +112,7 @@ public class DcaeDispatcherServices {
LoggingUtils.setResponseContext("0", "Get operation status success", this.getClass().getName());
opStatus = status;
} catch (Exception e) {
- //Log StatusCode during exception in metrics log
+ // Log StatusCode during exception in metrics log
LoggingUtils.setResponseContext("900", "Get operation status failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get operation status error");
logger.error("Exception occurred during getOperationStatus Operation with DCAE", e);
@@ -124,7 +125,6 @@ public class DcaeDispatcherServices {
/**
* This method send a getDeployments operation to DCAE.
- *
*/
public void getDeployments() {
Date startTime = new Date();
@@ -134,7 +134,7 @@ public class DcaeDispatcherServices {
DcaeHttpConnectionManager.doDcaeHttpQuery(url, "GET", null, null);
LoggingUtils.setResponseContext("0", "Get deployments success", this.getClass().getName());
} catch (Exception e) {
- //Log StatusCode during exception in metrics log
+ // Log StatusCode during exception in metrics log
LoggingUtils.setResponseContext("900", "Get deployments failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get deployments error");
logger.error("Exception occurred during getDeployments Operation with DCAE", e);
@@ -174,7 +174,7 @@ public class DcaeDispatcherServices {
LoggingUtils.setResponseContext("0", "Create new deployment failed", this.getClass().getName());
return statusUrl;
} catch (Exception e) {
- //Log StatusCode during exception in metrics log
+ // Log StatusCode during exception in metrics log
LoggingUtils.setResponseContext("900", "Create new deployment failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Create new deployment error");
logger.error("Exception occurred during createNewDeployment Operation with DCAE", e);
@@ -212,7 +212,7 @@ public class DcaeDispatcherServices {
LoggingUtils.setResponseContext("0", "Delete existing deployment success", this.getClass().getName());
return statusUrl;
} catch (Exception e) {
- //Log StatusCode during exception in metrics log
+ // Log StatusCode during exception in metrics log
LoggingUtils.setResponseContext("900", "Delete existing deployment failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Delete existing deployment error");
logger.error("Exception occurred during deleteExistingDeployment Operation with DCAE", e);
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
index 94ebacae5..4dfe089f9 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
@@ -50,10 +50,12 @@ import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.refprop.RefProp;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* This class implements the communication with DCAE for the service inventory.
*/
+@Component
public class DcaeInventoryServices {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(DcaeInventoryServices.class);
@@ -107,12 +109,12 @@ public class DcaeInventoryServices {
dcaeEvent.setEvent(DcaeEvent.EVENT_DISTRIBUTION);
LoggingUtils.setResponseContext("0", "Set inventory success", this.getClass().getName());
} catch (JsonProcessingException e) {
- LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName());
- LoggingUtils.setErrorContext("900", "Set inventory error");
+ LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName());
+ LoggingUtils.setErrorContext("900", "Set inventory error");
logger.error("Error during JSON decoding", e);
} catch (IOException ex) {
- LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName());
- LoggingUtils.setErrorContext("900", "Set inventory error");
+ LoggingUtils.setResponseContext("900", "Set inventory failed", this.getClass().getName());
+ LoggingUtils.setErrorContext("900", "Set inventory error");
logger.error("Error during DCAE communication", ex);
} finally {
LoggingUtils.setTimeContext(startTime, new Date());
@@ -209,7 +211,7 @@ public class DcaeInventoryServices {
* The vf UUID
* @return The DCAE inventory type id
*/
- public String createUpdateDCAEServiceType(String blueprintTemplate, String owner, String typeName, int typeVersion,
+ public String createupdateDCAEServiceType(String blueprintTemplate, String owner, String typeName, int typeVersion,
String asdcServiceId, String asdcResourceId) {
Date startTime = new Date();
LoggingUtils.setTargetContext("DCAE", "createDCAEServiceType");
@@ -237,20 +239,22 @@ public class DcaeInventoryServices {
Object obj0 = parser.parse(responseStr);
JSONObject jsonObj = (JSONObject) obj0;
typeId = (String) jsonObj.get("typeId"); // need to save this
- // as
- // service_type_id
- // in model table
+ // as
+ // service_type_id
+ // in model table
} catch (IOException | ParseException e) {
logger.error("Exception occurred during createupdateDCAEServiceType Operation with DCAE", e);
throw new BadRequestException("Exception occurred during createupdateDCAEServiceType Operation with DCAE",
e);
} finally {
- if(typeId != null) {
- LoggingUtils.setResponseContext("0", "Create update DCAE ServiceType success", this.getClass().getName());
- } else {
- LoggingUtils.setResponseContext("900", "Create update DCAE ServiceType failed", this.getClass().getName());
+ if (typeId != null) {
+ LoggingUtils.setResponseContext("0", "Create update DCAE ServiceType success",
+ this.getClass().getName());
+ } else {
+ LoggingUtils.setResponseContext("900", "Create update DCAE ServiceType failed",
+ this.getClass().getName());
LoggingUtils.setErrorContext("900", "Create update DCAE ServiceType error");
- }
+ }
LoggingUtils.setTimeContext(startTime, new Date());
metricsLogger.info("createupdateDCAEServiceType complete");
}
diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
index aaa4a2c06..34655986d 100644
--- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
@@ -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");
@@ -28,41 +28,45 @@ import com.att.eelf.configuration.EELFManager;
import java.util.UUID;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.model.prop.Holmes;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.refprop.RefProp;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Send Holmes info to policy api.
*/
-public class HolmesPolicyDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class);
+@Component
+public class HolmesPolicyDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
@Autowired
- private RefProp refProp;
+ private RefProp refProp;
/**
* Perform activity. Send Holmes info to policy api.
*
- * @param execution
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) {
+ @Handler
+ public void execute(Exchange camelExchange) {
String holmesPolicyRequestUuid = UUID.randomUUID().toString();
- execution.setVariable("holmesPolicyRequestUuid", holmesPolicyRequestUuid);
- ModelProperties prop = ModelProperties.create(execution);
+ camelExchange.setProperty("holmesPolicyRequestUuid", holmesPolicyRequestUuid);
+ ModelProperties prop = ModelProperties.create(camelExchange);
Holmes holmes = prop.getType(Holmes.class);
if (holmes.isFound()) {
String responseMessage = policyClient.sendBasePolicyInOther(formatHolmesConfigBody(prop, holmes),
holmes.getConfigPolicyName(), prop, holmesPolicyRequestUuid);
if (responseMessage != null) {
- execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes());
+ camelExchange.setProperty("holmesPolicyResponseMessage", responseMessage.getBytes());
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
index 72db32852..28da14851 100644
--- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
@@ -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");
@@ -26,34 +26,34 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import java.io.IOException;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.model.prop.Holmes;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Delete Holmes Policy via policy api.
*/
-public class HolmesPolicyDeleteDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance()
- .getLogger(HolmesPolicyDeleteDelegate.class);
+@Component
+public class HolmesPolicyDeleteDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDeleteDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
/**
* Perform activity. Delete Holmes Policy via policy api.
*
- * @param execution
- * @throws IOException
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) {
- ModelProperties prop = ModelProperties.create(execution);
+ @Handler
+ public void execute(Exchange camelExchange) {
+ ModelProperties prop = ModelProperties.create(camelExchange);
Holmes holmes = prop.getType(Holmes.class);
if (holmes.isFound()) {
prop.setCurrentModelElementId(holmes.getId());
diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
index e2d16c56c..77d7680bb 100644
--- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
@@ -29,8 +29,8 @@ import com.att.eelf.configuration.EELFManager;
import java.io.UnsupportedEncodingException;
import java.util.Map;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.OperationalPolicyReq;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.model.prop.ModelProperties;
@@ -41,41 +41,42 @@ import org.onap.clamp.clds.util.LoggingUtils;
import org.onap.policy.api.AttributeType;
import org.onap.policy.controlloop.policy.builder.BuilderException;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Send Operational Policy info to policy api. It uses the policy code to define
* the model and communicate with it. See also the PolicyClient class.
- *
*/
-public class OperationalPolicyDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance()
- .getLogger(OperationalPolicyDelegate.class);
+@Component
+public class OperationalPolicyDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(OperationalPolicyDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
/**
* Automatically injected by Spring, define in CldsConfiguration as a bean.
*/
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
/**
* Automatically injected by Spring, define in CldsConfiguration as a bean.
*/
@Autowired
- private RefProp refProp;
+ private RefProp refProp;
/**
* Perform activity. Send Operational Policy info to policy api.
*
- * @param execution
- * The DelegateExecution
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
* @throws BuilderException
* In case of issues with OperationalPolicyReq
* @throws UnsupportedEncodingException
* In case of issues with the Charset encoding
*/
- @Override
- public void execute(DelegateExecution execution) throws BuilderException, UnsupportedEncodingException {
+ @Handler
+ public void execute(Exchange camelExchange) throws BuilderException, UnsupportedEncodingException {
String responseMessage = null;
- ModelProperties prop = ModelProperties.create(execution);
+ ModelProperties prop = ModelProperties.create(camelExchange);
Policy policy = prop.getType(Policy.class);
if (policy.isFound()) {
for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) {
@@ -84,7 +85,7 @@ public class OperationalPolicyDelegate implements JavaDelegate {
responseMessage = policyClient.sendBrmsPolicy(attributes, prop, LoggingUtils.getRequestId());
}
if (responseMessage != null) {
- execution.setVariable("operationalPolicyResponseMessage", responseMessage.getBytes());
+ camelExchange.setProperty("operationalPolicyResponseMessage", responseMessage.getBytes());
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java
index 2bca639e1..4dd204080 100644
--- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java
@@ -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");
@@ -26,35 +26,36 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import java.io.IOException;
-
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.prop.Policy;
import org.onap.clamp.clds.model.prop.PolicyChain;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Delete Operational Policy via policy api.
*/
-public class OperationalPolicyDeleteDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance()
+@Component
+public class OperationalPolicyDeleteDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance()
.getLogger(OperationalPolicyDeleteDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
/**
* Perform activity. Delete Operational Policy via policy api.
*
- * @param execution
- * @throws IOException
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) {
- ModelProperties prop = ModelProperties.create(execution);
+ @Handler
+ public void execute(Exchange camelExchange) {
+ ModelProperties prop = ModelProperties.create(camelExchange);
Policy policy = prop.getType(Policy.class);
prop.setCurrentModelElementId(policy.getId());
String responseMessage = "";
@@ -64,7 +65,7 @@ public class OperationalPolicyDeleteDelegate implements JavaDelegate {
responseMessage = policyClient.deleteBrms(prop);
}
if (responseMessage != null) {
- execution.setVariable("operationalPolicyDeleteResponseMessage", responseMessage.getBytes());
+ camelExchange.setProperty("operationalPolicyDeleteResponseMessage", responseMessage.getBytes());
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
index b582349f6..e21bfce41 100644
--- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
@@ -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");
@@ -26,82 +26,88 @@ 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.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.SdcReq;
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.springframework.beans.factory.annotation.Autowired;
+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);
+@Component
+public class SdcSendReqDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private SdcReq sdcReq;
+ private SdcCatalogServices sdcCatalogServices;
@Autowired
- private RefProp refProp;
+ private SdcReq sdcReq;
@Autowired
- private SdcCatalogServices sdcCatalogServices;
- private String baseUrl;
- private String artifactType;
- private String locationArtifactType;
- private String artifactLabel;
- private String locationArtifactLabel;
+ private RefProp 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(prop, docText);
+ @Handler
+ public void execute(Exchange camelExchange) throws GeneralSecurityException, DecoderException, IOException {
+ String controlName = (String) camelExchange.getProperty("controlName");
+ String baseUrl = refProp.getStringValue("sdc.serviceUrl");
+ 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) {
- execution.setVariable("formattedArtifactReq", formattedSdcReq.getBytes());
+ camelExchange.setProperty("formattedArtifactReq", formattedSdcReq.getBytes());
}
- List<String> sdcReqUrlsList = sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution);
+ Global globalProps = prop.getGlobal();
+ if (globalProps != null && globalProps.getService() != null) {
+ String serviceInvariantUUID = globalProps.getService();
+ camelExchange.setProperty("serviceInvariantUUID", serviceInvariantUUID);
+ }
+ List<String> sdcReqUrlsList = sdcReq.getSdcReqUrlsList(prop, baseUrl);
String sdcLocationsPayload = sdcReq.formatSdcLocationsReq(prop, artifactName);
- String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json";
+ String locationArtifactName = (String) camelExchange.getProperty("controlName") + "-location.json";
String formattedSdcLocationReq = sdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
locationArtifactLabel, locationArtifactType);
if (formattedSdcLocationReq != null) {
- execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes());
+ camelExchange.setProperty("formattedLocationReq", formattedSdcLocationReq.getBytes());
}
sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq,
artifactName, locationArtifactName);
}
}
-
- /**
- * Method to get sdc service values from properties file.
- *
- * @param controlName
- */
- 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");
- }
}
diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
index 035e64a61..2657a03f9 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
@@ -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");
@@ -28,44 +28,46 @@ import com.att.eelf.configuration.EELFManager;
import java.util.UUID;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.prop.Tca;
import org.onap.clamp.clds.model.refprop.RefProp;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Send Tca info to policy api.
- *
- *
*/
-public class TcaPolicyDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class);
+@Component
+public class TcaPolicyDelegate {
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private RefProp refProp;
+ private RefProp refProp;
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
/**
* Perform activity. Send Tca info to policy api.
*
- * @param execution
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) throws Exception {
+ @Handler
+ public void execute(Exchange camelExchange) {
String tcaPolicyRequestUuid = UUID.randomUUID().toString();
- execution.setVariable("tcaPolicyRequestUuid", tcaPolicyRequestUuid);
- ModelProperties prop = ModelProperties.create(execution);
+ camelExchange.setProperty("tcaPolicyRequestUuid", tcaPolicyRequestUuid);
+ ModelProperties prop = ModelProperties.create(camelExchange);
Tca tca = prop.getType(Tca.class);
if (tca.isFound()) {
String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop);
if (responseMessage != null) {
- execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes());
+ camelExchange.setProperty("tcaPolicyResponseMessage", responseMessage.getBytes());
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java
index e88b720a7..c2aa303a5 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java
@@ -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");
@@ -23,46 +23,44 @@
package org.onap.clamp.clds.client;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Handler;
import org.onap.clamp.clds.client.req.policy.PolicyClient;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.prop.Tca;
import org.springframework.beans.factory.annotation.Autowired;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
+import org.springframework.stereotype.Component;
/**
* Delete Tca Policy via policy api.
- *
- *
*/
-public class TcaPolicyDeleteDelegate implements JavaDelegate {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDeleteDelegate.class);
- protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+@Component
+public class TcaPolicyDeleteDelegate {
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDeleteDelegate.class);
+ protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- private PolicyClient policyClient;
+ private PolicyClient policyClient;
/**
* Perform activity. Delete Tca Policy via policy api.
*
- * @param execution
+ * @param camelExchange
+ * The Camel Exchange object containing the properties
*/
- @Override
- public void execute(DelegateExecution execution) throws Exception {
-
- ModelProperties prop = ModelProperties.create(execution);
+ @Handler
+ public void execute(Exchange camelExchange) {
+ ModelProperties prop = ModelProperties.create(camelExchange);
Tca tca = prop.getType(Tca.class);
if (tca.isFound()) {
prop.setCurrentModelElementId(tca.getId());
-
String responseMessage = policyClient.deleteMicrosService(prop);
if (responseMessage != null) {
- execution.setVariable("tcaPolicyDeleteResponseMessage", responseMessage.getBytes());
+ camelExchange.setProperty("tcaPolicyDeleteResponseMessage", responseMessage.getBytes());
}
}
}
-
}
diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
index b4cad9496..046003309 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
@@ -57,23 +57,26 @@ import org.onap.policy.api.PushPolicyParameters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Component;
/**
* Policy utility methods - specifically, send the policy.
*/
+@Component
public class PolicyClient {
- protected static final String POLICY_PREFIX_BASE = "Config_";
- protected static final String LOG_POLICY_PREFIX = "Response is ";
+
+ protected static final String POLICY_PREFIX_BASE = "Config_";
+ protected static final String LOG_POLICY_PREFIX = "Response is ";
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyClient.class);
- protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
- protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type";
- protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name";
+ protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+ protected static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type";
+ protected static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name";
@Value("${org.onap.clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}")
- protected String cldsPolicyConfigFile;
+ protected String cldsPolicyConfigFile;
@Autowired
- protected ApplicationContext appContext;
+ protected ApplicationContext appContext;
@Autowired
- protected RefProp refProp;
+ protected RefProp refProp;
/**
* Perform BRMS policy type.
@@ -229,19 +232,19 @@ public class PolicyClient {
responseMessage = response.getResponseMessage();
}
} catch (Exception e) {
- LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName());
- LoggingUtils.setErrorContext("900", "Policy send error");
+ LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName());
+ LoggingUtils.setErrorContext("900", "Policy send error");
logger.error("Exception occurred during policy communication", e);
throw new PolicyClientException("Exception while communicating with Policy", e);
}
logger.info(LOG_POLICY_PREFIX + responseMessage);
LoggingUtils.setTimeContext(startTime, new Date());
if (response.getResponseCode() == 200) {
- LoggingUtils.setResponseContext("0", "Policy send success", this.getClass().getName());
+ LoggingUtils.setResponseContext("0", "Policy send success", this.getClass().getName());
logger.info("Policy send successful");
metricsLogger.info("Policy send success");
} else {
- LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName());
+ LoggingUtils.setResponseContext("900", "Policy send failed", this.getClass().getName());
logger.warn("Policy send failed: " + responseMessage);
metricsLogger.info("Policy send failure");
throw new BadRequestException("Policy send failed: " + responseMessage);
@@ -278,25 +281,25 @@ public class PolicyClient {
PolicyChangeResponse response;
String responseMessage = "";
try {
- LoggingUtils.setTargetContext("Policy", "pushPolicy");
+ LoggingUtils.setTargetContext("Policy", "pushPolicy");
logger.info("Attempting to push policy...");
response = getPolicyEngine().pushPolicy(pushPolicyParameters);
if (response != null) {
responseMessage = response.getResponseMessage();
}
} catch (Exception e) {
- LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName());
+ LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Policy push error");
logger.error("Exception occurred during policy communication", e);
throw new PolicyClientException("Exception while communicating with Policy", e);
}
logger.info(LOG_POLICY_PREFIX + responseMessage);
if (response != null && (response.getResponseCode() == 200 || response.getResponseCode() == 204)) {
- LoggingUtils.setResponseContext("0", "Policy push success", this.getClass().getName());
+ LoggingUtils.setResponseContext("0", "Policy push success", this.getClass().getName());
logger.info("Policy push successful");
metricsLogger.info("Policy push success");
} else {
- LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName());
+ LoggingUtils.setResponseContext("900", "Policy push failed", this.getClass().getName());
logger.warn("Policy push failed: " + responseMessage);
metricsLogger.info("Policy push failure");
throw new BadRequestException("Policy push failed: " + responseMessage);
@@ -350,7 +353,7 @@ public class PolicyClient {
private PolicyEngine getPolicyEngine() {
PolicyEngine policyEngine;
try {
- policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath());
+ policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getURL().getPath());
} catch (IOException e1) {
throw new PolicyClientException("Exception when opening policy config file", e1);
} catch (PolicyEngineException e) {
@@ -399,7 +402,6 @@ public class PolicyClient {
*
* @param prop
* The ModelProperties
- *
* @return The response message from policy
*/
protected String deletePolicy(ModelProperties prop, String policyType) {
diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
index 6684f1a1e..45dbf81fe 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
@@ -60,7 +60,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpHeaders;
import org.onap.clamp.clds.exception.SdcCommunicationException;
import org.onap.clamp.clds.model.CldsAlarmCondition;
-import org.onap.clamp.clds.model.CldsDBServiceCache;
import org.onap.clamp.clds.model.CldsSdcArtifact;
import org.onap.clamp.clds.model.CldsSdcResource;
import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo;
@@ -76,23 +75,25 @@ import org.onap.clamp.clds.model.refprop.RefProp;
import org.onap.clamp.clds.util.CryptoUtils;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+@Component
public class SdcCatalogServices {
private static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcCatalogServices.class);
private static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
- private static final String RESOURCE_VF_TYPE = "VF";
- private static final String RESOURCE_VFC_TYPE = "VFC";
- private static final String RESOURCE_CVFC_TYPE = "CVFC";
+ private static final String RESOURCE_VF_TYPE = "VF";
+ private static final String RESOURCE_VFC_TYPE = "VFC";
+ private static final String RESOURCE_CVFC_TYPE = "CVFC";
private static final String SDC_REQUESTID_PROPERTY_NAME = "sdc.header.requestId";
- private static final String SDC_METADATA_URL_PREFIX = "/metadata";
- private static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID";
- private static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url";
- private static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl";
- private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool";
- private static final String RESOURCE_URL_PREFIX = "resources";
+ private static final String SDC_METADATA_URL_PREFIX = "/metadata";
+ private static final String SDC_INSTANCE_ID_PROPERTY_NAME = "sdc.InstanceID";
+ private static final String SDC_CATALOG_URL_PROPERTY_NAME = "sdc.catalog.url";
+ private static final String SDC_SERVICE_URL_PROPERTY_NAME = "sdc.serviceUrl";
+ private static final String SDC_INSTANCE_ID_CLAMP = "CLAMP-Tool";
+ private static final String RESOURCE_URL_PREFIX = "resources";
@Autowired
- private RefProp refProp;
+ private RefProp refProp;
/**
* Return SDC id and pw as a HTTP Basic Auth string (for example: Basic
@@ -131,7 +132,7 @@ public class SdcCatalogServices {
LoggingUtils.setTargetContext("SDC", "getSdcServicesInformation");
try {
String url = baseUrl;
- if (uuid != null) {
+ if (uuid != null && !uuid.isEmpty()) {
url = baseUrl + "/" + uuid + SDC_METADATA_URL_PREFIX;
}
URL urlObj = new URL(url);
@@ -142,7 +143,7 @@ public class SdcCatalogServices {
conn.setRequestProperty(refProp.getStringValue(SDC_REQUESTID_PROPERTY_NAME), LoggingUtils.getRequestId());
conn.setRequestMethod("GET");
String resp = getResponse(conn);
- logger.info(resp);
+ logger.debug("Services list received from SDC:" + resp);
// metrics log
LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName());
return resp;
@@ -333,7 +334,6 @@ public class SdcCatalogServices {
}
}
-
// upload artifact to sdc based on serviceUUID and resource name on url
private String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formattedSdcReq) {
// Verify whether it is triggered by Validation Test button from UI
@@ -422,23 +422,11 @@ public class SdcCatalogServices {
}
}
- public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) {
- try {
- CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache();
- cldsDbServiceCache.setCldsDataInstream(cldsServiceData);
- cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID());
- cldsDbServiceCache.setServiceId(cldsServiceData.getServiceUUID());
- return cldsDbServiceCache;
- } catch (IOException e) {
- logger.error("Exception when getting service in cache", e);
- throw new SdcCommunicationException("Exception when getting service in cache", e);
- }
- }
-
/**
* Check if the SDC Info in cache has expired.
*
* @param cldsServiceData
+ * The object representing the service data
* @return boolean flag
* @throws GeneralSecurityException
* In case of issues with the decryting the encrypted password
@@ -447,23 +435,25 @@ public class SdcCatalogServices {
*/
public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData)
throws GeneralSecurityException, DecoderException {
- boolean expired = false;
if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {
String cachedServiceUuid = cldsServiceData.getServiceUUID();
String latestServiceUuid = getServiceUuidFromServiceInvariantId(cldsServiceData.getServiceInvariantUUID());
- String defaultRecordAge = refProp.getStringValue("CLDS_SERVICE_CACHE_MAX_SECONDS");
- if ((!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null
- && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) {
- expired = true;
+ String configuredMaxAge = refProp.getStringValue("clds.service.cache.invalidate.after.seconds");
+ if (configuredMaxAge == null) {
+ logger.warn(
+ "clds.service.cache.invalidate.after.seconds NOT set in clds-reference.properties file, taking 60s as default");
+ configuredMaxAge = "60";
}
+ return (!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null
+ && cldsServiceData.getAgeOfRecord() > Long.parseLong(configuredMaxAge));
} else {
- expired = true;
+ return true;
}
- return expired;
}
/**
- * Get the Service Data with Alarm Conditions for a given invariantServiceUuid.
+ * Get the Service Data with Alarm Conditions for a given
+ * invariantServiceUuid.
*
* @param invariantServiceUuid
* @return The CldsServiceData
@@ -510,8 +500,7 @@ public class SdcCatalogServices {
cldsServiceData.setCldsVfs(cldsVfDataList);
// For each vf in the list , add all vfc's
getAllVfcForVfList(cldsVfDataList, catalogUrl);
- logger.info("value of cldsServiceData:" + cldsServiceData);
- logger.info("value of cldsServiceData:" + cldsServiceData.getServiceInvariantUUID());
+ logger.info("Invariant Service ID of cldsServiceData:" + cldsServiceData.getServiceInvariantUUID());
}
}
}
@@ -606,17 +595,17 @@ public class SdcCatalogServices {
private void handleVFCtypeNode(ObjectNode currVfcNode, List<CldsVfcData> cldsVfcDataList) {
CldsVfcData currCldsVfcData = new CldsVfcData();
- TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName");
- TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID");
- currCldsVfcData.setVfcName(vfcResourceName.textValue());
- currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue());
- cldsVfcDataList.add(currCldsVfcData);
+ TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName");
+ TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID");
+ currCldsVfcData.setVfcName(vfcResourceName.textValue());
+ currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue());
+ cldsVfcDataList.add(currCldsVfcData);
}
private void handleCVFCtypeNode(ObjectNode currVfcNode, List<CldsVfcData> cldsVfcDataList) {
handleVFCtypeNode(currVfcNode, cldsVfcDataList);
- cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").textValue()));
- }
+ cldsVfcDataList.addAll(getVFCfromCVFC(currVfcNode.get("resourceUUID").textValue()));
+ }
private List<CldsVfcData> getVFCfromCVFC(String resourceUUID) {
String catalogUrl = refProp.getStringValue(SDC_CATALOG_URL_PROPERTY_NAME);
@@ -786,7 +775,6 @@ public class SdcCatalogServices {
cldsAlarmConditionList.add(cldsAlarmCondition);
}
-
// Get the responses for the current artifact from the artifacts URL.
private String getResponsesFromArtifactUrl(String artifactsUrl) {
String hostUrl = refProp.getStringValue("sdc.hostUrl");
@@ -802,9 +790,9 @@ public class SdcCatalogServices {
* Service to services/resources/artifacts from sdc.Pass alarmConditions as
* true to get alarm conditons from artifact url and else it is false
*
- * @param url The URL to trigger
+ * @param url
+ * The URL to trigger
* @return The String containing the payload
- *
*/
public String getCldsServicesOrResourcesBasedOnURL(String url) {
Date startTime = new Date();
@@ -832,12 +820,12 @@ public class SdcCatalogServices {
logger.error("Exception occurred during query to SDC", e);
return "";
} catch (DecoderException e) {
- LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName());
+ LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get sdc resources error");
logger.error("Exception when attempting to decode the Hex string", e);
throw new SdcCommunicationException("Exception when attempting to decode the Hex string", e);
} catch (GeneralSecurityException e) {
- LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName());
+ LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get sdc resources error");
logger.error("Exception when attempting to decrypt the encrypted password", e);
throw new SdcCommunicationException("Exception when attempting to decrypt the encrypted password", e);
@@ -901,7 +889,7 @@ public class SdcCatalogServices {
byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert);
globalPropsJson = decodeGlobalProp(globalProps, mapper);
globalPropsJson.putPOJO("shared", byIdObjectNode);
- logger.info("value of objNode:" + globalPropsJson);
+ logger.info("Global properties JSON created with SDC info:" + globalPropsJson);
} else {
/**
* to create json with total properties when no serviceUUID passed
diff --git a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java
index d4b5b086d..3fb53a3b6 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java
@@ -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");
@@ -25,8 +25,6 @@ package org.onap.clamp.clds.client.req.sdc;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -42,7 +40,6 @@ import java.util.List;
import java.util.Map.Entry;
import org.apache.commons.codec.DecoderException;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
import org.onap.clamp.clds.model.CldsSdcResource;
import org.onap.clamp.clds.model.CldsSdcServiceDetail;
@@ -51,15 +48,20 @@ import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.prop.Tca;
import org.onap.clamp.clds.model.refprop.RefProp;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Construct a Sdc request given CLDS objects.
*/
+@Component
public class SdcReq {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class);
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
- protected RefProp refProp;
+ private SdcCatalogServices sdcCatalogServices;
+ @Autowired
+ protected RefProp refProp;
/**
* Format the Blueprint from a Yaml
@@ -68,17 +70,11 @@ public class SdcReq {
* The ModelProperties describing the clds model
* @param docText
* The Yaml file that must be converted
- *
* @return A String containing the BluePrint
- * @throws JsonParseException
- * In case of issues
- * @throws JsonMappingException
- * In case of issues
* @throws IOException
* In case of issues
*/
- public String formatBlueprint(ModelProperties prop, String docText)
- throws JsonParseException, JsonMappingException, IOException {
+ public String formatBlueprint(ModelProperties prop, String docText) throws IOException {
String yamlvalue = getYamlvalue(docText);
String updatedBlueprint = "";
Tca tca = prop.getType(Tca.class);
@@ -96,7 +92,6 @@ public class SdcReq {
* The ModelProperties describing the clds model
* @param artifactName
* The name of the artifact
- *
* @return SDC Locations request in the JSON Format
*/
public String formatSdcLocationsReq(ModelProperties prop, String artifactName) {
@@ -127,11 +122,8 @@ public class SdcReq {
* @param artifactType
* The type of the artifact
* @return formatted SDC Request
- * @throws IOException
- * In case of issues
*/
- public String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType)
- throws IOException {
+ public String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType) {
logger.info("artifact=" + payloadData);
String base64Artifact = Base64.getEncoder().encodeToString(payloadData.getBytes(StandardCharsets.UTF_8));
return "{ \n" + "\"payloadData\" : \"" + base64Artifact + "\",\n" + "\"artifactLabel\" : \"" + artifactLabel
@@ -144,46 +136,47 @@ public class SdcReq {
* To get List of urls for all vfresources
*
* @param prop
+ * The model properties JSON describing the closed loop flow
* @param baseUrl
- * @param sdcCatalogServices
- * @param execution
- * @return
+ * The URL to trigger
+ * @return A list of Service URL
* @throws GeneralSecurityException
* In case of issues when decrypting the password
* @throws DecoderException
* In case of issues when decoding the Hex String
*/
- public List<String> getSdcReqUrlsList(ModelProperties prop, String baseUrl, SdcCatalogServices sdcCatalogServices,
- DelegateExecution execution) throws GeneralSecurityException, DecoderException {
- // TODO : refact and regroup with very similar code
+ public List<String> getSdcReqUrlsList(ModelProperties prop, String baseUrl)
+ throws GeneralSecurityException, DecoderException {
List<String> urlList = new ArrayList<>();
Global globalProps = prop.getGlobal();
- if (globalProps != null) {
- if (globalProps.getService() != null) {
- String serviceInvariantUUID = globalProps.getService();
- execution.setVariable("serviceInvariantUUID", serviceInvariantUUID);
- List<String> resourceVfList = globalProps.getResourceVf();
- String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
- String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID);
- CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices
- .getCldsSdcServiceDetailFromJson(sdcServicesInformation);
- if (cldsSdcServiceDetail != null && resourceVfList != null) {
- List<CldsSdcResource> cldsSdcResourcesList = cldsSdcServiceDetail.getResources();
- if (cldsSdcResourcesList != null && !cldsSdcResourcesList.isEmpty()) {
- for (CldsSdcResource CldsSdcResource : cldsSdcResourcesList) {
- if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null
- && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF")
- && resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) {
- String normalizedResourceInstanceName = normalizeResourceInstanceName(
- CldsSdcResource.getResourceInstanceName());
- String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/"
- + normalizedResourceInstanceName + "/artifacts";
- urlList.add(svcUrl);
- }
+ if (globalProps != null && globalProps.getService() != null) {
+ String serviceInvariantUUID = globalProps.getService();
+ List<String> resourceVfList = globalProps.getResourceVf();
+ String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
+ CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices
+ .getCldsSdcServiceDetailFromJson(sdcCatalogServices.getSdcServicesInformation(serviceUUID));
+ if (cldsSdcServiceDetail != null && resourceVfList != null) {
+ List<CldsSdcResource> cldsSdcResourcesList = cldsSdcServiceDetail.getResources();
+ if (cldsSdcResourcesList != null && !cldsSdcResourcesList.isEmpty()) {
+ for (CldsSdcResource cldsSdcResource : cldsSdcResourcesList) {
+ if (cldsSdcResource != null && cldsSdcResource.getResoucreType() != null
+ && cldsSdcResource.getResoucreType().equalsIgnoreCase("VF")
+ && resourceVfList.contains(cldsSdcResource.getResourceInvariantUUID())) {
+ String normalizedResourceInstanceName = normalizeResourceInstanceName(
+ cldsSdcResource.getResourceInstanceName());
+ String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/"
+ + normalizedResourceInstanceName + "/artifacts";
+ urlList.add(svcUrl);
+ } else {
+ logger.warn("The VF Resource invariant UUID (" + cldsSdcResource.getResourceInvariantUUID()
+ + ") has not been found in the Service (Invariant ID:" + serviceInvariantUUID
+ + ")VF resource list");
}
}
}
}
+ } else {
+ logger.warn("GlobalProperties json is empty, skipping getSdcReqUrlsList and returning empty list");
}
return urlList;
}
@@ -201,16 +194,18 @@ public class SdcReq {
}
/**
- * Method to get yaml/template properties value from json
+ * Method to get yaml/template properties value from json.
*
- * @param docText
- * @return
+ * @param jsonGlobal
+ * The Json containing a Yaml file
+ * @return The yaml extracted from the JSON
* @throws IOException
+ * In case of issues with the Json parser
*/
- public String getYamlvalue(String docText) throws IOException {
+ protected String getYamlvalue(String jsonGlobal) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
String yamlFileValue = "";
- ObjectNode root = objectMapper.readValue(docText, ObjectNode.class);
+ ObjectNode root = objectMapper.readValue(jsonGlobal, ObjectNode.class);
Iterator<Entry<String, JsonNode>> entryItr = root.fields();
while (entryItr.hasNext()) {
Entry<String, JsonNode> entry = entryItr.next();
diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
index b99d3a96c..ae9704109 100644
--- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
@@ -26,21 +26,7 @@ package org.onap.clamp.clds.config;
import javax.sql.DataSource;
import javax.xml.transform.TransformerConfigurationException;
-import org.onap.clamp.clds.client.CldsEventDelegate;
-import org.onap.clamp.clds.client.DcaeDispatcherServices;
-import org.onap.clamp.clds.client.DcaeInventoryServices;
-import org.onap.clamp.clds.client.HolmesPolicyDelegate;
-import org.onap.clamp.clds.client.HolmesPolicyDeleteDelegate;
-import org.onap.clamp.clds.client.OperationalPolicyDelegate;
-import org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate;
-import org.onap.clamp.clds.client.SdcSendReqDelegate;
-import org.onap.clamp.clds.client.TcaPolicyDelegate;
-import org.onap.clamp.clds.client.TcaPolicyDeleteDelegate;
-import org.onap.clamp.clds.client.req.policy.PolicyClient;
-import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
-import org.onap.clamp.clds.client.req.sdc.SdcReq;
import org.onap.clamp.clds.dao.CldsDao;
-import org.onap.clamp.clds.model.refprop.RefProp;
import org.onap.clamp.clds.transform.XslTransformer;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
@@ -85,74 +71,4 @@ public class CldsConfiguration {
xslTransformer.setXslResourceName("xsl/clds-bpmn-transformer.xsl");
return xslTransformer;
}
-
- @Bean
- public RefProp getRefProp() {
- return new RefProp();
- }
-
- @Bean
- public SdcReq getSdcReq() {
- return new SdcReq();
- }
-
- @Bean
- public PolicyClient getPolicyClient() {
- return new PolicyClient();
- }
-
- @Bean(name = "cldsEventDelegate")
- public CldsEventDelegate getCldsEventDelegate() {
- return new CldsEventDelegate();
- }
-
- @Bean(name = "sdcSendReqDelegate")
- public SdcSendReqDelegate getSdcSendReqDelegate() {
- return new SdcSendReqDelegate();
- }
-
- @Bean(name = "operationalPolicyDelegate")
- public OperationalPolicyDelegate getOperationalPolicyDelegate() {
- return new OperationalPolicyDelegate();
- }
-
- @Bean(name = "operationalPolicyDeleteDelegate")
- public OperationalPolicyDeleteDelegate getOperationalPolicyDeleteDelegate() {
- return new OperationalPolicyDeleteDelegate();
- }
-
- @Bean(name = "sdcCatalogServices")
- public SdcCatalogServices getSdcCatalogServices() {
- return new SdcCatalogServices();
- }
-
- @Bean(name = "dcaeDispatcherServices")
- public DcaeDispatcherServices getDcaeDispatcherServices() {
- return new DcaeDispatcherServices();
- }
-
- @Bean(name = "dcaeInventoryServices")
- public DcaeInventoryServices getDcaeInventoryServices() {
- return new DcaeInventoryServices();
- }
-
- @Bean(name = "tcaPolicyDelegate")
- public TcaPolicyDelegate getTcaPolicyDelegate() {
- return new TcaPolicyDelegate();
- }
-
- @Bean(name = "tcaPolicyDeleteDelegate")
- public TcaPolicyDeleteDelegate getTcaPolicyDeleteDelegate() {
- return new TcaPolicyDeleteDelegate();
- }
-
- @Bean(name = "holmesPolicyDelegate")
- public HolmesPolicyDelegate getHolmesPolicyDelegate() {
- return new HolmesPolicyDelegate();
- }
-
- @Bean(name = "holmesPolicyDeleteDelegate")
- public HolmesPolicyDeleteDelegate getHolmesPolicyDeleteDelegate() {
- return new HolmesPolicyDeleteDelegate();
- }
} \ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java b/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java
new file mode 100644
index 000000000..3a6a81689
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/exception/CldsDelegateException.java
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 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.
+ * 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
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.exception;
+
+/**
+ * New exception to CldsDelegate errors.
+ */
+public class CldsDelegateException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -2705212640916671093L;
+
+ /**
+ * This constructor can be used to create a new CldsDelegateException.
+ *
+ * @param message
+ * A string message detailing the problem
+ * @param e
+ * The exception sent by the code
+ */
+ public CldsDelegateException(String message, Throwable e) {
+ super(message, e);
+ }
+
+ /**
+ * This constructor can be used to create a new CldsDelegateException. Use
+ * this constructor only if you are creating a new exception stack, not if
+ * an exception was already raised by another code.
+ *
+ * @param message
+ * A string message detailing the problem
+ */
+ public CldsDelegateException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
index fae5e584c..dca93e46d 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java
@@ -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");
@@ -25,7 +25,6 @@ package org.onap.clamp.clds.model.prop;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -37,7 +36,7 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.apache.camel.Exchange;
import org.onap.clamp.clds.exception.ModelBpmnException;
import org.onap.clamp.clds.model.CldsEvent;
import org.onap.clamp.clds.model.CldsModel;
@@ -47,22 +46,21 @@ import org.onap.clamp.clds.service.CldsService;
* Parse model properties.
*/
public class ModelProperties {
- protected static final EELFLogger logger = EELFManager.getInstance()
- .getLogger(CldsService.class);
- protected static final EELFLogger auditLogger = EELFManager.getInstance()
- .getAuditLogger();
- private ModelBpmn modelBpmn;
- private JsonNode modelJson;
- private final String modelName;
- private final String controlName;
- private final String actionCd;
+
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsService.class);
+ protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+ private ModelBpmn modelBpmn;
+ private JsonNode modelJson;
+ private final String modelName;
+ private final String controlName;
+ private final String actionCd;
// Flag indicate whether it is triggered by Validation Test button from UI
- private final boolean testOnly;
- private Global global;
- private final Map<String, AbstractModelElement> modelElements = new ConcurrentHashMap<>();
- private String currentModelElementId;
- private String policyUniqueId;
- private static final Object lock = new Object();
+ private final boolean testOnly;
+ private Global global;
+ private final Map<String, AbstractModelElement> modelElements = new ConcurrentHashMap<>();
+ private String currentModelElementId;
+ private String policyUniqueId;
+ private static final Object lock = new Object();
private static Map<Class<? extends AbstractModelElement>, String> modelElementClasses = new ConcurrentHashMap<>();
static {
synchronized (lock) {
@@ -107,11 +105,9 @@ public class ModelProperties {
/**
* This method is meant to ensure that one ModelElement instance exists for
- * each ModelElement class.
- *
- * As new ModelElement classes could have been registered after
- * instantiation of this ModelProperties, we need to build the missing
- * ModelElement instances.
+ * each ModelElement class. As new ModelElement classes could have been
+ * registered after instantiation of this ModelProperties, we need to build
+ * the missing ModelElement instances.
*/
private final void instantiateMissingModelElements() {
if (modelElementClasses.size() != modelElements.size()) {
@@ -160,20 +156,21 @@ public class ModelProperties {
}
/**
- * Create ModelProperties for Camunda Delegate.
+ * Create ModelProperties extracted from a CamelExchange.
*
- * @param execution
- * @return
- * @throws JsonProcessingException
- * @throws IOException
+ * @param camelExchange
+ * The camel Exchange object that contains all info provided to
+ * the flow
+ * @return A model Properties created from the parameters found in
+ * camelExchange object
*/
- public static ModelProperties create(DelegateExecution execution) {
- String modelProp = new String((byte[]) execution.getVariable("modelProp"));
- String modelBpmnProp = (String) execution.getVariable("modelBpmnProp");
- String modelName = (String) execution.getVariable("modelName");
- String controlName = (String) execution.getVariable("controlName");
- String actionCd = (String) execution.getVariable("actionCd");
- boolean isTest = (boolean) execution.getVariable("isTest");
+ public static ModelProperties create(Exchange camelExchange) {
+ String modelProp = (String) camelExchange.getProperty("modelProp");
+ String modelBpmnProp = (String) camelExchange.getProperty("modelBpmnProp");
+ String modelName = (String) camelExchange.getProperty("modelName");
+ String controlName = (String) camelExchange.getProperty("controlName");
+ String actionCd = (String) camelExchange.getProperty("actionCd");
+ boolean isTest = (boolean) camelExchange.getProperty("isTest");
return new ModelProperties(modelName, controlName, actionCd, isTest, modelBpmnProp, modelProp);
}
diff --git a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java
index 5965a417b..f0cf71c1e 100644
--- a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java
+++ b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java
@@ -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");
@@ -25,18 +25,22 @@ package org.onap.clamp.clds.model.refprop;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.annotation.PostConstruct;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.Resource;
-
-import javax.annotation.PostConstruct;
-import java.io.IOException;
-import java.util.Properties;
+import org.springframework.stereotype.Component;
/**
* Holds reference properties.
*/
+@Component
public class RefProp {
@Autowired
@@ -103,5 +107,4 @@ public class RefProp {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(getStringValue(key1, key2), JsonNode.class);
}
-
}
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java
index 1238236fb..a139de115 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -56,11 +56,11 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.xml.transform.TransformerException;
+import org.apache.camel.Produce;
import org.apache.commons.codec.DecoderException;
import org.apache.commons.lang3.StringUtils;
-import org.camunda.bpm.engine.RuntimeService;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.json.simple.parser.ParseException;
+import org.onap.clamp.clds.camel.CamelProxy;
import org.onap.clamp.clds.client.DcaeDispatcherServices;
import org.onap.clamp.clds.client.DcaeInventoryServices;
import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
@@ -101,6 +101,8 @@ import org.springframework.web.client.HttpClientErrorException;
@Path("/clds")
public class CldsService extends SecureServiceBase {
+ @Produce(uri = "direct:processSubmit")
+ private CamelProxy camelProxy;
protected static final EELFLogger securityLogger = EELFManager.getInstance().getSecurityLogger();
@Autowired
private ApplicationContext appContext;
@@ -138,8 +140,6 @@ public class CldsService extends SecureServiceBase {
@Autowired
private CldsDao cldsDao;
@Autowired
- private RuntimeService runtimeService;
- @Autowired
private XslTransformer cldsBpmnTransformer;
@Autowired
private RefProp refProp;
@@ -410,7 +410,7 @@ public class CldsService extends SecureServiceBase {
cldsPermissionInstance, actionCd);
isAuthorized(permisionManage);
isAuthorizedForVf(model);
- String userid = getUserId();
+ String userId = getUserId();
String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
String processDefinitionKey = "clds-process-action-wf";
logger.info("PUT actionCd={}", actionCd);
@@ -420,7 +420,7 @@ public class CldsService extends SecureServiceBase {
logger.info("PUT test={}", test);
logger.info("PUT bpmnText={}", model.getBpmnText());
logger.info("PUT propText={}", model.getPropText());
- logger.info("PUT userid={}", userid);
+ logger.info("PUT userId={}", userId);
logger.info("PUT getTypeId={}", model.getTypeId());
logger.info("PUT deploymentId={}", model.getDeploymentId());
if (model.getTemplateName() != null) {
@@ -462,7 +462,7 @@ public class CldsService extends SecureServiceBase {
logger.info("PUT isInsertTestEvent={}", isInsertTestEvent);
// determine if requested action is permitted
model.validateAction(actionCd);
- // input variables to camunda process
+ // input variables for Camel process
Map<String, Object> variables = new HashMap<>();
variables.put("actionCd", actionCd);
variables.put("modelProp", prop.getBytes());
@@ -471,18 +471,18 @@ public class CldsService extends SecureServiceBase {
variables.put("controlName", controlName);
variables.put("docText", docText.getBytes());
variables.put("isTest", isTest);
- variables.put("userid", userid);
+ variables.put("userid", userId);
variables.put("isInsertTestEvent", isInsertTestEvent);
logger.info("modelProp - " + prop);
logger.info("docText - " + docText);
+ // ModelProperties modelProperties = new ModelProperties(modelName,
+ // controlName, actionCd, isTest, modelBpmnProp, modelProp);
try {
- // start camunda process
- ProcessInstance pi = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);
- // log process info
- logger.info("Started processDefinitionId={}, processInstanceId={}", pi.getProcessDefinitionId(),
- pi.getProcessInstanceId());
+ String result = camelProxy.submit(actionCd, prop, bpmnJson, modelName, controlName, docText, isTest, userId,
+ isInsertTestEvent);
+ logger.info("Starting Camel flow on request, result is: ", result);
} catch (SdcCommunicationException | PolicyClientException | BadRequestException e) {
- logger.error("Exception occured during invoking bpmn process", e);
+ logger.error("Exception occured during invoking Camel process", e);
throw new CldsConfigException(e.getMessage(), e);
}
// refresh model info from db (get fresh event info)
@@ -605,39 +605,26 @@ public class CldsService extends SecureServiceBase {
* In case of issues with the decryting the encrypted password
* @throws DecoderException
* In case of issues with the decoding of the Hex String
+ * @throws IOException
+ * In case of issue to convert CldsServiceCache to InputStream
*/
@GET
@Path("/properties/{serviceInvariantUUID}")
@Produces(MediaType.APPLICATION_JSON)
public String getSdcPropertiesByServiceUUIDForRefresh(
@PathParam("serviceInvariantUUID") String serviceInvariantUUID,
- @DefaultValue("false") @QueryParam("refresh") String refresh)
- throws GeneralSecurityException, DecoderException {
+ @DefaultValue("false") @QueryParam("refresh") boolean refresh)
+ throws GeneralSecurityException, DecoderException, IOException {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: GET sdc properties by uuid", getPrincipalName());
CldsServiceData cldsServiceData = new CldsServiceData();
cldsServiceData.setServiceInvariantUUID(serviceInvariantUUID);
- boolean isCldsSdcDataExpired = true;
- // To getcldsService information from database cache using invariantUUID
- // only when refresh = false
- if (refresh != null && refresh.equalsIgnoreCase("false")) {
- cldsServiceData = cldsServiceData.getCldsServiceCache(cldsDao, serviceInvariantUUID);
- // If cldsService is available in database Cache , verify is data
- // expired or not
- if (cldsServiceData != null) {
- isCldsSdcDataExpired = sdcCatalogServices.isCldsSdcCacheDataExpired(cldsServiceData);
- }
+ if (!refresh) {
+ cldsServiceData = cldsDao.getCldsServiceCache(serviceInvariantUUID);
}
- // If user Requested for refresh or database cache expired , get all
- // data from sdc api.
- if ((refresh != null && refresh.equalsIgnoreCase("true")) || isCldsSdcDataExpired) {
+ if (sdcCatalogServices.isCldsSdcCacheDataExpired(cldsServiceData)) {
cldsServiceData = sdcCatalogServices.getCldsServiceDataWithAlarmConditions(serviceInvariantUUID);
- CldsDBServiceCache cldsDBServiceCache = sdcCatalogServices
- .getCldsDbServiceCacheUsingCldsServiceData(cldsServiceData);
- if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null
- && cldsDBServiceCache.getServiceId() != null) {
- cldsServiceData.setCldsServiceCache(cldsDao, cldsDBServiceCache);
- }
+ cldsDao.setCldsServiceCache(new CldsDBServiceCache(cldsServiceData));
}
// filter out VFs the user is not authorized for
cldsServiceData.filterVfs(this);
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsUser.java b/src/main/java/org/onap/clamp/clds/service/CldsUser.java
index 3dfeaebdd..fa7a738dd 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsUser.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsUser.java
@@ -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");
@@ -29,9 +29,8 @@ import java.util.Arrays;
* The class represents the CldsUser that can be extracted from cldsusers.json.
*/
public class CldsUser {
-
- private String user;
- private String password;
+ private String user;
+ private String password;
private SecureServicePermission[] permissions;
/**
diff --git a/src/main/java/org/onap/clamp/clds/service/JerseyConfig.java b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java
index 0ffe41037..d6e74aef1 100644
--- a/src/main/java/org/onap/clamp/clds/service/JerseyConfig.java
+++ b/src/main/java/org/onap/clamp/clds/service/JaxrsApplication.java
@@ -23,19 +23,12 @@
package org.onap.clamp.clds.service;
-import org.glassfish.jersey.server.ResourceConfig;
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
import org.springframework.stereotype.Component;
@Component
-public class JerseyConfig extends ResourceConfig {
-
- public JerseyConfig() {
- registerEndpoints();
- }
-
- private void registerEndpoints() {
- register(CldsService.class);
- register(UserService.class);
- register(CldsTemplateService.class);
- }
+@ApplicationPath("/restservices/clds/v1")
+public class JaxrsApplication extends Application {
} \ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java b/src/main/java/org/onap/clamp/clds/util/LogMessages.java
index 3790e235f..808878696 100644
--- a/src/main/java/org/onap/clamp/clds/config/CamundaEngineConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/util/LogMessages.java
@@ -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");
@@ -21,30 +21,15 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.config;
+package org.onap.clamp.clds.util;
-import java.security.GeneralSecurityException;
+import com.att.eelf.i18n.EELFResolvableErrorEnum;
+import com.att.eelf.i18n.EELFResourceManager;
-import javax.sql.DataSource;
+public enum LogMessages implements EELFResolvableErrorEnum {
+ LOGSERVICE_HELLO_MESSAGE, LOGSERVICE_EMAIL_ERROR, LOGSERVICE_EMAIL_CLASS, LOGSERVICE_EMAIL_CLASS_NULL, PROCESS_INSTANCE_ID;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-
-@Configuration
-public class CamundaEngineConfiguration {
- /**
- * Camunda Identity database DataSource configuration
- *
- * @return
- * @throws GeneralSecurityException
- * In case of issue during the decoding of the password
- */
- @Primary
- @Bean(name = "camundaBpmDataSource")
- @ConfigurationProperties(prefix = "spring.datasource.camunda")
- public DataSource dataSource() {
- return new EncodedPasswordBasicDataSource();
+ static {
+ EELFResourceManager.loadMessageBundle("logmessages");
}
}