diff options
Diffstat (limited to 'src')
58 files changed, 1020 insertions, 1951 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"); } } diff --git a/src/main/resources/META-INF/processes.xml b/src/main/resources/META-INF/processes.xml deleted file mode 100644 index 921a1029b..000000000 --- a/src/main/resources/META-INF/processes.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ============LICENSE_START======================================================= - ONAP CLAMP - ================================================================================ - Copyright (C) 2017 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. - --> - -<process-application - xmlns="http://www.camunda.org/schema/1.0/ProcessApplication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - - <process-archive name="clds-process-archive"> - <process-engine>default</process-engine> - <resource>bpmn/clds-process-action.bpmn</resource> - <properties> - <property name="isDeleteUponUndeploy">true</property> - <property name="isScanForProcessDefinitions">false</property> - </properties> - </process-archive> - -</process-application> diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1db0875a3..dd4ea6d36 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -62,8 +62,6 @@ server.port=8080 server.contextPath=/
#Modified engine-rest applicationpath
-#camel.component.servlet.mapping.context-path=/restservices/clds/v1/*
-spring.jersey.application-path=/restservices/clds/v1
spring.profiles.active=clamp-default,clamp-spring-authentication
#The max number of active threads in this pool
@@ -78,34 +76,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000
camel.springboot.producer-template-cache-size=1000
-camel.springboot.jmx-enabled=true
+camel.springboot.jmx-enabled=false
camel.defaultthreadpool.poolsize=10
camel.defaultthreadpool.maxpoolsize=20
camel.defaultthreadpool.maxqueuesize=1000
camel.defaultthreadpool.keepaliveTime=60
camel.defaultthreadpool.rejectpolicy=CallerRuns
-
-#server.port=0
-#Camunda Process Engine DataSource connection Details
-spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver
-spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647
-spring.datasource.camunda.username=camunda
-spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e
-spring.datasource.camunda.validationQuery=SELECT 1
-spring.datasource.camunda.validationQueryTimeout=20000
-spring.datasource.camunda.validationInterval=30000
-spring.datasource.camunda.testWhileIdle = true
-spring.datasource.camunda.minIdle = 0
-spring.datasource.camunda.initialSize=0
-# Automatically test whether a connection provided is good or not
-spring.datasource.camunda.testOnBorrow=true
-spring.datasource.camunda.ignoreExceptionOnPreLoad=true
-
-#Camunda application properties
-#Camunda history level
-camunda.bpm.history-level=auto
-camunda.bpm.database.type=mariadb
-camunda.bpm.database.schema-update=true
+#camel.springboot.xmlRoutes = false
+camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml
+#camel.springboot.typeConversion = false
#clds datasource connection details
spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver
diff --git a/src/main/resources/bpmn/clds-process-action.bpmn b/src/main/resources/bpmn/clds-process-action.bpmn deleted file mode 100644 index 11edc0714..000000000 --- a/src/main/resources/bpmn/clds-process-action.bpmn +++ /dev/null @@ -1,384 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_-A31MBMpEea185sFktMJ7Q" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> - <bpmn2:collaboration id="_Collaboration_2"> - <bpmn2:participant id="_Participant_2" name="Process Action" processRef="clds-process-action-wf" /> - </bpmn2:collaboration> - <bpmn2:process id="clds-process-action-wf" name="CLDS Process Action Workflow" isExecutable="true"> - <bpmn2:laneSet id="LaneSet_1" name="Lane Set 1"> - <bpmn2:lane id="Lane_1" name="Submit or Resubmit"> - <bpmn2:flowNodeRef>ExclusiveGateway_2</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>EndEvent_1</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>insEvent</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>ExclusiveGateway_3</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendOpPolicyReqDistribute</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>StartEvent_1</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>ServiceTask_0x8ypxf</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendTcaReqDistribute</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendHolmesReqDistribute</bpmn2:flowNodeRef> - </bpmn2:lane> - <bpmn2:lane id="Lane_5" name="Delete"> - <bpmn2:flowNodeRef>sendTcaReqDelete</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendOpPolicyReqDelete</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendHolmesReqDelete</bpmn2:flowNodeRef> - </bpmn2:lane> - <bpmn2:lane id="Lane_4" name="Update"> - <bpmn2:flowNodeRef>sendOpPolicyReqUpdate</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendTcaReqUpdate</bpmn2:flowNodeRef> - <bpmn2:flowNodeRef>sendHolmesReqUpdate</bpmn2:flowNodeRef> - </bpmn2:lane> - <bpmn2:lane id="Lane_6" name="Stop"> - <bpmn2:flowNodeRef>sendOpPolicyReqStop</bpmn2:flowNodeRef> - </bpmn2:lane> - <bpmn2:lane id="Lane_7" name="Restart"> - <bpmn2:flowNodeRef>sendOpPolicyReqRestart</bpmn2:flowNodeRef> - </bpmn2:lane> - </bpmn2:laneSet> - <bpmn2:exclusiveGateway id="ExclusiveGateway_2"> - <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_4</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_27</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_29</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_31</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_15</bpmn2:outgoing> - <bpmn2:outgoing>SequenceFlow_1xlfq66</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_4" name="" sourceRef="ExclusiveGateway_2" targetRef="ServiceTask_0x8ypxf"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'SUBMIT' || actionCd == 'RESUBMIT' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:endEvent id="EndEvent_1"> - <bpmn2:incoming>SequenceFlow_16</bpmn2:incoming> - </bpmn2:endEvent> - <bpmn2:serviceTask id="insEvent" name="Insert Event to indicate that the action was completed" camunda:delegateExpression="${cldsEventDelegate}"> - <bpmn2:extensionElements> - <camunda:inputOutput> - <camunda:inputParameter name="actionStateCd">SENT</camunda:inputParameter> - </camunda:inputOutput> - </bpmn2:extensionElements> - <bpmn2:incoming>SequenceFlow_7</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_16</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_16" name="" sourceRef="insEvent" targetRef="EndEvent_1" /> - <bpmn2:exclusiveGateway id="ExclusiveGateway_3"> - <bpmn2:incoming>SequenceFlow_10</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_28</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_30</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_32</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_7</bpmn2:outgoing> - </bpmn2:exclusiveGateway> - <bpmn2:sequenceFlow id="SequenceFlow_7" name="" sourceRef="ExclusiveGateway_3" targetRef="insEvent" /> - <bpmn2:serviceTask id="sendOpPolicyReqDistribute" name="Send Operation Policy Request [Submit]" camunda:delegateExpression="${operationalPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_1tu9g11</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_10</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_10" name="" sourceRef="sendOpPolicyReqDistribute" targetRef="ExclusiveGateway_3" /> - <bpmn2:serviceTask id="sendOpPolicyReqUpdate" name="Send Operation Policy Request [Update]" camunda:delegateExpression="${operationalPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_0ejpmee</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_28</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_27" name="" sourceRef="ExclusiveGateway_2" targetRef="sendTcaReqUpdate"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'UPDATE' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_28" name="" sourceRef="sendOpPolicyReqUpdate" targetRef="ExclusiveGateway_3" /> - <bpmn2:serviceTask id="sendOpPolicyReqStop" name="Send Operation Policy Request [Stop]" camunda:delegateExpression="${operationalPolicyDeleteDelegate}"> - <bpmn2:incoming>SequenceFlow_29</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_30</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_29" name="" sourceRef="ExclusiveGateway_2" targetRef="sendOpPolicyReqStop"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'STOP' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_30" name="" sourceRef="sendOpPolicyReqStop" targetRef="ExclusiveGateway_3" /> - <bpmn2:serviceTask id="sendOpPolicyReqRestart" name="Send Operation Policy Request [Restart]" camunda:delegateExpression="${operationalPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_31</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_32</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_31" name="" sourceRef="ExclusiveGateway_2" targetRef="sendOpPolicyReqRestart"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'RESTART' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_32" name="" sourceRef="sendOpPolicyReqRestart" targetRef="ExclusiveGateway_3" /> - <bpmn2:startEvent id="StartEvent_1"> - <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> - </bpmn2:startEvent> - <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEvent_1" targetRef="ExclusiveGateway_2" /> - <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="sendOpPolicyReqDelete" targetRef="ExclusiveGateway_3" /> - <bpmn2:sequenceFlow id="SequenceFlow_15" name="" sourceRef="ExclusiveGateway_2" targetRef="sendTcaReqDelete"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'DELETE' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:sequenceFlow id="SequenceFlow_0w39hon" sourceRef="ServiceTask_0x8ypxf" targetRef="sendTcaReqDistribute" /> - <bpmn2:sequenceFlow id="SequenceFlow_1xlfq66" sourceRef="ExclusiveGateway_2" targetRef="ServiceTask_0x8ypxf"> - <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[${ actionCd == 'SUBMIT' || actionCd == 'RESUBMIT' }]]></bpmn2:conditionExpression> - </bpmn2:sequenceFlow> - <bpmn2:serviceTask id="ServiceTask_0x8ypxf" name="Send to SDC [Submit]" camunda:delegateExpression="${sdcSendReqDelegate}"> - <bpmn2:incoming>SequenceFlow_4</bpmn2:incoming> - <bpmn2:incoming>SequenceFlow_1xlfq66</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0w39hon</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_1rga27p" sourceRef="sendTcaReqDistribute" targetRef="sendHolmesReqDistribute" /> - <bpmn2:sequenceFlow id="SequenceFlow_0tpegxf" sourceRef="sendTcaReqDelete" targetRef="sendHolmesReqDelete" /> - <bpmn2:serviceTask id="sendTcaReqDelete" name="Send Tca Micro Service request to Policy [Delete]" camunda:delegateExpression="${tcaPolicyDeleteDelegate}"> - <bpmn2:incoming>SequenceFlow_15</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0tpegxf</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_1kegg6u" sourceRef="sendTcaReqUpdate" targetRef="sendHolmesReqUpdate" /> - <bpmn2:serviceTask id="sendTcaReqDistribute" name="Send Tca Micro Service request to Policy [Submit]" camunda:delegateExpression="${tcaPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_0w39hon</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1rga27p</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_1tu9g11" sourceRef="sendHolmesReqDistribute" targetRef="sendOpPolicyReqDistribute" /> - <bpmn2:serviceTask id="sendHolmesReqDistribute" name="Send Holmes Micro Service request to Policy [Submit]" camunda:delegateExpression="${holmesPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_1rga27p</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1tu9g11</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:serviceTask id="sendOpPolicyReqDelete" name="Send Operation Policy Request [Delete]" camunda:delegateExpression="${operationalPolicyDeleteDelegate}"> - <bpmn2:incoming>SequenceFlow_1mtizad</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:serviceTask id="sendHolmesReqDelete" name="Send Holmes Micro Service request to Policy [Delete]" camunda:delegateExpression="${holmesPolicyDeleteDelegate}"> - <bpmn2:incoming>SequenceFlow_0tpegxf</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1mtizad</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_1mtizad" sourceRef="sendHolmesReqDelete" targetRef="sendOpPolicyReqDelete" /> - <bpmn2:serviceTask id="sendTcaReqUpdate" name="Send Tca Micro Service request to Policy [Update]" camunda:delegateExpression="${tcaPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_27</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1kegg6u</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:serviceTask id="sendHolmesReqUpdate" name="Send Holmes Micro Service request to Policy [Update]" camunda:delegateExpression="${holmesPolicyDelegate}"> - <bpmn2:incoming>SequenceFlow_1kegg6u</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_0ejpmee</bpmn2:outgoing> - </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_0ejpmee" sourceRef="sendHolmesReqUpdate" targetRef="sendOpPolicyReqUpdate" /> - </bpmn2:process> - <bpmndi:BPMNDiagram id="BPMNDiagram_1"> - <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="_Collaboration_2"> - <bpmndi:BPMNShape id="_BPMNShape_StartEvent_4" bpmnElement="StartEvent_1"> - <dc:Bounds x="72" y="220" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="90" y="261" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_EndEvent_104" bpmnElement="EndEvent_1"> - <dc:Bounds x="1320" y="216" width="36" height="36" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1338" y="257" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="sendOpPolicyReqDistribute"> - <dc:Bounds x="912" y="89" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_7" bpmnElement="insEvent"> - <dc:Bounds x="1188" y="194" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_16" bpmnElement="SequenceFlow_16" sourceElement="_BPMNShape_ServiceTask_7" targetElement="_BPMNShape_EndEvent_104"> - <di:waypoint xsi:type="dc:Point" x="1288" y="234" /> - <di:waypoint xsi:type="dc:Point" x="1320" y="234" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1295" y="234" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_Participant_2" bpmnElement="_Participant_2" isHorizontal="true"> - <dc:Bounds x="0" y="0" width="1369" height="833" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_Lane_2" bpmnElement="Lane_1" isHorizontal="true"> - <dc:Bounds x="30" y="0" width="1339" height="289" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_Lane_6" bpmnElement="Lane_5" isHorizontal="true"> - <dc:Bounds x="30" y="288" width="1339" height="197" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_3" bpmnElement="ExclusiveGateway_2" isMarkerVisible="true"> - <dc:Bounds x="144" y="212" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="169" y="267" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_4" targetElement="_BPMNShape_ExclusiveGateway_3"> - <di:waypoint xsi:type="dc:Point" x="108" y="238" /> - <di:waypoint xsi:type="dc:Point" x="126" y="238" /> - <di:waypoint xsi:type="dc:Point" x="126" y="237" /> - <di:waypoint xsi:type="dc:Point" x="144" y="237" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="128" y="237" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ExclusiveGateway_4" bpmnElement="ExclusiveGateway_3" isMarkerVisible="true"> - <dc:Bounds x="1104" y="208" width="50" height="50" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1129" y="263" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_7" bpmnElement="SequenceFlow_7" sourceElement="_BPMNShape_ExclusiveGateway_4" targetElement="_BPMNShape_ServiceTask_7"> - <di:waypoint xsi:type="dc:Point" x="1154" y="233" /> - <di:waypoint xsi:type="dc:Point" x="1188" y="234" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1175" y="234" width="6" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_10" bpmnElement="SequenceFlow_10" sourceElement="_BPMNShape_ServiceTask_6" targetElement="_BPMNShape_ExclusiveGateway_4"> - <di:waypoint xsi:type="dc:Point" x="1012" y="130" /> - <di:waypoint xsi:type="dc:Point" x="1057" y="130" /> - <di:waypoint xsi:type="dc:Point" x="1057" y="233" /> - <di:waypoint xsi:type="dc:Point" x="1104" y="233" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1027" y="178.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_12" bpmnElement="sendOpPolicyReqDelete"> - <dc:Bounds x="831" y="385" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_Lane_9" bpmnElement="Lane_4" isHorizontal="true"> - <dc:Bounds x="30" y="484" width="1339" height="117" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_15" bpmnElement="sendOpPolicyReqUpdate"> - <dc:Bounds x="912" y="500" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_27" bpmnElement="SequenceFlow_27" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="ServiceTask_08pqhb3_di"> - <di:waypoint xsi:type="dc:Point" x="169" y="262" /> - <di:waypoint xsi:type="dc:Point" x="169" y="540" /> - <di:waypoint xsi:type="dc:Point" x="496" y="540" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="139" y="398" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_28" bpmnElement="SequenceFlow_28" sourceElement="_BPMNShape_ServiceTask_15" targetElement="_BPMNShape_ExclusiveGateway_4"> - <di:waypoint xsi:type="dc:Point" x="1012" y="539" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="538" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="233" /> - <di:waypoint xsi:type="dc:Point" x="1104" y="233" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1028" y="382.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_Lane_10" bpmnElement="Lane_6" isHorizontal="true"> - <dc:Bounds x="30" y="600" width="1339" height="117" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_16" bpmnElement="sendOpPolicyReqStop"> - <dc:Bounds x="912" y="619" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_29" bpmnElement="SequenceFlow_29" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_16"> - <di:waypoint xsi:type="dc:Point" x="169" y="262" /> - <di:waypoint xsi:type="dc:Point" x="169" y="659" /> - <di:waypoint xsi:type="dc:Point" x="912" y="659" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="139" y="457.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_30" bpmnElement="SequenceFlow_30" sourceElement="_BPMNShape_ServiceTask_16" targetElement="_BPMNShape_ExclusiveGateway_4"> - <di:waypoint xsi:type="dc:Point" x="1012" y="658" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="658" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="233" /> - <di:waypoint xsi:type="dc:Point" x="1104" y="233" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1028" y="442.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="_BPMNShape_Lane_11" bpmnElement="Lane_7" isHorizontal="true"> - <dc:Bounds x="30" y="716" width="1339" height="117" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_17" bpmnElement="sendOpPolicyReqRestart"> - <dc:Bounds x="912" y="735" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_31" bpmnElement="SequenceFlow_31" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="_BPMNShape_ServiceTask_17"> - <di:waypoint xsi:type="dc:Point" x="169" y="262" /> - <di:waypoint xsi:type="dc:Point" x="169" y="775" /> - <di:waypoint xsi:type="dc:Point" x="912" y="775" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="139" y="515.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_32" bpmnElement="SequenceFlow_32" sourceElement="_BPMNShape_ServiceTask_17" targetElement="_BPMNShape_ExclusiveGateway_4"> - <di:waypoint xsi:type="dc:Point" x="1012" y="775" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="775" /> - <di:waypoint xsi:type="dc:Point" x="1058" y="234" /> - <di:waypoint xsi:type="dc:Point" x="1105" y="234" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="1028" y="501.5" width="90" height="6" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_15" bpmnElement="SequenceFlow_15" sourceElement="_BPMNShape_ExclusiveGateway_3" targetElement="ServiceTask_0y2gwy4_di"> - <di:waypoint xsi:type="dc:Point" x="169" y="262" /> - <di:waypoint xsi:type="dc:Point" x="169" y="425" /> - <di:waypoint xsi:type="dc:Point" x="496" y="425" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="139" y="333.5" width="90" height="20" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_0x8ypxf_di" bpmnElement="ServiceTask_0x8ypxf"> - <dc:Bounds x="204" y="89" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0w39hon_di" bpmnElement="SequenceFlow_0w39hon"> - <di:waypoint xsi:type="dc:Point" x="304" y="129" /> - <di:waypoint xsi:type="dc:Point" x="546" y="129" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="380" y="114" width="90" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1xlfq66_di" bpmnElement="SequenceFlow_1xlfq66"> - <di:waypoint xsi:type="dc:Point" x="169" y="212" /> - <di:waypoint xsi:type="dc:Point" x="169" y="129" /> - <di:waypoint xsi:type="dc:Point" x="204" y="129" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="184" y="170.5" width="0" height="0" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_1rga27p_di" bpmnElement="SequenceFlow_1rga27p"> - <di:waypoint xsi:type="dc:Point" x="646" y="129" /> - <di:waypoint xsi:type="dc:Point" x="729" y="129" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="642.5" y="104" width="90" height="20" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_1r1brt6_di" bpmnElement="sendTcaReqDistribute"> - <dc:Bounds x="546" y="89" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0tpegxf_di" bpmnElement="SequenceFlow_0tpegxf"> - <di:waypoint xsi:type="dc:Point" x="596" y="425" /> - <di:waypoint xsi:type="dc:Point" x="665" y="425" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="585.5" y="400" width="90" height="20" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_0y2gwy4_di" bpmnElement="sendTcaReqDelete"> - <dc:Bounds x="495.71500000000003" y="385" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1kegg6u_di" bpmnElement="SequenceFlow_1kegg6u"> - <di:waypoint xsi:type="dc:Point" x="596" y="540" /> - <di:waypoint xsi:type="dc:Point" x="688" y="540" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="597" y="515" width="90" height="20" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_08pqhb3_di" bpmnElement="sendTcaReqUpdate"> - <dc:Bounds x="496" y="500" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNShape id="ServiceTask_1a6a3ro_di" bpmnElement="sendHolmesReqDistribute"> - <dc:Bounds x="729" y="89" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1tu9g11_di" bpmnElement="SequenceFlow_1tu9g11"> - <di:waypoint xsi:type="dc:Point" x="829" y="129" /> - <di:waypoint xsi:type="dc:Point" x="912" y="129" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="870.5" y="108" width="0" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_1234ame_di" bpmnElement="sendHolmesReqDelete"> - <dc:Bounds x="665" y="385" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1mtizad_di" bpmnElement="SequenceFlow_1mtizad"> - <di:waypoint xsi:type="dc:Point" x="765" y="425" /> - <di:waypoint xsi:type="dc:Point" x="831" y="425" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="798" y="404" width="0" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - <bpmndi:BPMNShape id="ServiceTask_17vvyrl_di" bpmnElement="sendHolmesReqUpdate"> - <dc:Bounds x="688" y="500" width="100" height="80" /> - </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_0ejpmee_di" bpmnElement="SequenceFlow_0ejpmee"> - <di:waypoint xsi:type="dc:Point" x="788" y="540" /> - <di:waypoint xsi:type="dc:Point" x="912" y="540" /> - <bpmndi:BPMNLabel> - <dc:Bounds x="850" y="519" width="0" height="12" /> - </bpmndi:BPMNLabel> - </bpmndi:BPMNEdge> - </bpmndi:BPMNPlane> - </bpmndi:BPMNDiagram> -</bpmn2:definitions> diff --git a/src/main/resources/clds/camel/flexible-flow.xml b/src/main/resources/clds/camel/flexible-flow.xml new file mode 100644 index 000000000..7a3ebdb0a --- /dev/null +++ b/src/main/resources/clds/camel/flexible-flow.xml @@ -0,0 +1,36 @@ +<routes xmlns="http://camel.apache.org/schema/spring"> + <route id="submit"> + <from uri="direct:processSubmit" /> + <choice> + <when> + <simple> ${exchangeProperty.actionCd} == 'SUBMIT' || ${exchangeProperty.actionCd} == 'RESUBMIT'</simple> + <to uri="bean:org.onap.clamp.clds.client.SdcSendReqDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" /> + </when> + <when> + <simple> ${exchangeProperty.actionCd} == 'DELETE'</simple> + <to uri="bean:org.onap.clamp.clds.client.TcaPolicyDeleteDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDeleteDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" /> + </when> + <when> + <simple> ${exchangeProperty.actionCd} == 'UPDATE'</simple> + <to uri="bean:org.onap.clamp.clds.client.TcaPolicyDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.HolmesPolicyDelegate" /> + <to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" /> + </when> + <when> + <simple> ${exchangeProperty.actionCd} == 'STOP'</simple> + <to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDeleteDelegate" /> + </when> + <when> + <simple> ${exchangeProperty.actionCd} == 'RESTART'</simple> + <to uri="bean:org.onap.clamp.clds.client.OperationalPolicyDelegate" /> + </when> + </choice> + <to uri="bean:org.onap.clamp.clds.client.CldsEventDelegate" /> + </route> + +</routes>
\ No newline at end of file diff --git a/src/main/resources/clds/clds-reference.properties b/src/main/resources/clds/clds-reference.properties index 95ba919c8..09cb5c9ea 100644 --- a/src/main/resources/clds/clds-reference.properties +++ b/src/main/resources/clds/clds-reference.properties @@ -80,8 +80,8 @@ op.eNodeB.period=10s sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/ sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080 sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services -sdc.serviceUsername=test
-sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0
+sdc.serviceUsername=clamp
+sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981
sdc.artifactLabel=blueprintclampcockpit
sdc.sdcX-InstanceID=CLAMP
sdc.artifactType=DCAE_INVENTORY_BLUEPRINT
@@ -98,7 +98,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann action.test.override=false
# if action.insert.test.event is true, then insert event even if the action is set to test
action.insert.test.event=false
-CLDS_SERVICE_CACHE_MAX_SECONDS=30
+clds.service.cache.invalidate.after.seconds=120
#DCAE Inventory Url Properties
DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080 diff --git a/src/main/resources/clds/clds-users.json b/src/main/resources/clds/clds-users.json index 5909e8e78..d2c06c808 100644 --- a/src/main/resources/clds/clds-users.json +++ b/src/main/resources/clds/clds-users.json @@ -7,8 +7,7 @@ "permission-type-cl|dev|update", "permission-type-cl-manage|dev|*", "permission-type-filter-vf|dev|*", - "permission-type-template|dev|read", - "permission-type-template|dev|update" + "permission-type-template|dev|read" ] }, { diff --git a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java index b4415ed1a..626cf9576 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java @@ -50,7 +50,6 @@ import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** @@ -58,7 +57,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; */ @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class CldsTemplateServiceItCase extends AbstractItCase { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateServiceItCase.class); diff --git a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java index 56de81d46..2bdef978a 100644 --- a/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/DcaeHttpConnectionManagerItCase.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"); @@ -59,30 +59,35 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT) @TestPropertySource(locations = "classpath:https/https-test.properties") public class DcaeHttpConnectionManagerItCase extends AbstractItCase { + @Value("${server.port}") private String httpsPort; @Value("${server.http-to-https-redirection.port}") private String httpPort; - private static TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return null; - } + private static TrustManager[] trustAllCerts = new TrustManager[] { + new X509TrustManager() { + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } - @Override - public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } + @Override + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } - @Override - public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { - } - } }; + @Override + public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + } + } + }; private void enableSslNoCheck() throws NoSuchAlgorithmException, KeyManagementException { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HostnameVerifier allHostsValid = new HostnameVerifier() { + @Override public boolean verify(String hostname, SSLSession session) { return true; @@ -119,20 +124,20 @@ public class DcaeHttpConnectionManagerItCase extends AbstractItCase { public void testHttpsGet404() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", "GET", null, null); - fail("Should have raised an BadRequestException exception"); + fail("Should have raised an BadRequestException"); } @Test(expected = BadRequestException.class) public void testHttpsPost404() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("https://localhost:" + this.httpsPort + "/designer/index1.html", "POST", "", "application/json"); - fail("Should have raised an BadRequestException exception"); + fail("Should have raised an BadRequestException"); } - @Test(expected = IOException.class) + @Test(expected = BadRequestException.class) public void testHttpException() throws IOException { DcaeHttpConnectionManager.doDcaeHttpQuery("http://localhost:" + this.httpsPort + "/designer/index.html", "GET", null, null); - fail("Should have raised an IOException exception"); + fail("Should have raised an BadRequestException"); } } diff --git a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java index 62e04ede3..6f5c24d5e 100644 --- a/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/HolmesPolicyDelegateItCase.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"); @@ -35,7 +35,6 @@ import org.onap.clamp.clds.model.prop.Holmes; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -43,8 +42,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class HolmesPolicyDelegateItCase extends AbstractItCase { + @Test public void testCreatePolicyJson() throws IOException { String modelBpmnProp = ResourceFileUtil diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java index 300919957..9013e0c41 100644 --- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.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"); @@ -45,25 +45,24 @@ import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.policy.api.AttributeType; import org.onap.policy.controlloop.policy.builder.BuilderException; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class OperationPolicyReqItCase extends AbstractItCase { + @Test public void formatAttributesTest() throws IOException, BuilderException { - String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); - ModelProperties prop = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, true, - modelBpmnProp, modelProp); + String modelBpmnProp = ResourceFileUtil + .getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json"); + ModelProperties modelProperties = new ModelProperties("testModel", "controlNameTest", CldsEvent.ACTION_SUBMIT, + true, modelBpmn, modelBpmnProp); List<Map<AttributeType, Map<String, String>>> attributes = new ArrayList<>(); - if (prop.getType(Policy.class).isFound()) { - for (PolicyChain policyChain : prop.getType(Policy.class).getPolicyChains()) { - - attributes.add(OperationalPolicyReq.formatAttributes(refProp, prop, prop.getType(Policy.class).getId(), - policyChain)); + if (modelProperties.getType(Policy.class).isFound()) { + for (PolicyChain policyChain : modelProperties.getType(Policy.class).getPolicyChains()) { + attributes.add(OperationalPolicyReq.formatAttributes(refProp, modelProperties, + modelProperties.getType(Policy.class).getId(), policyChain)); } } assertFalse(attributes.isEmpty()); @@ -77,9 +76,7 @@ public class OperationPolicyReqItCase extends AbstractItCase { // Remove this field as not always present (depends of policy api) yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); - assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-1.yaml"), yaml); - yaml = URLDecoder.decode(attributes.get(1).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8"); yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: <generatedId>"); yaml = yaml.replaceAll("id: (.*)", "id: <generatedId>"); @@ -87,7 +84,6 @@ public class OperationPolicyReqItCase extends AbstractItCase { // Remove this field as not always present (depends of policy api) yaml = yaml.replaceAll(" pnf: null" + System.lineSeparator(), ""); yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length()); - assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml); } } diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java index 275737761..71bd2d521 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientItCase.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"); @@ -44,7 +44,6 @@ import org.onap.clamp.clds.model.prop.Tca; import org.onap.clamp.clds.util.ResourceFileUtil; import org.onap.policy.api.AttributeType; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -53,8 +52,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class PolicyClientItCase extends AbstractItCase { + String modelProp; String modelBpmnProp; String modelName; @@ -65,8 +64,8 @@ public class PolicyClientItCase extends AbstractItCase { */ @Before public void setUp() throws IOException { - modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json"); - modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json"); + modelProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmnProperties.json"); + modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/policy/modelBpmn.json"); modelName = "example-model06"; controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; } diff --git a/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java index 7ccda5a85..8f76b1822 100644 --- a/src/test/java/org/onap/clamp/clds/it/RefPropItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/RefPropItCase.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"); @@ -34,7 +34,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.AbstractItCase; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -42,8 +41,8 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class RefPropItCase extends AbstractItCase { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(RefPropItCase.class); /** diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java index f2eadbe4b..548212ef8 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesItCase.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"); @@ -41,7 +41,6 @@ import org.onap.clamp.clds.model.CldsSdcServiceInfo; import org.onap.clamp.clds.model.CldsServiceData; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -49,46 +48,38 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class SdcCatalogServicesItCase extends AbstractItCase { + @Autowired private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices(); @Test public void removeDuplicateServicesTest() { - CldsSdcServiceInfo service1a = new CldsSdcServiceInfo(); service1a.setName("service1"); service1a.setVersion("1.0"); service1a.setInvariantUUID("invariantUUID1.0"); - List<CldsSdcServiceInfo> rawCldsSdcServiceList = new LinkedList<>(); rawCldsSdcServiceList.add(service1a); rawCldsSdcServiceList.add(service1a); - CldsSdcServiceInfo service1b = new CldsSdcServiceInfo(); service1b.setName("service1"); service1b.setVersion("1.1"); service1b.setInvariantUUID("invariantUUID1.1"); rawCldsSdcServiceList.add(service1b); - CldsSdcServiceInfo service1c = new CldsSdcServiceInfo(); service1c.setName("service1"); service1c.setVersion("1.2"); service1c.setInvariantUUID("invariantUUID1.2"); rawCldsSdcServiceList.add(service1c); - CldsSdcServiceInfo service2 = new CldsSdcServiceInfo(); service2.setName("service2"); service2.setVersion("1.0"); service2.setInvariantUUID("invariantUUID2.0"); rawCldsSdcServiceList.add(service2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List<CldsSdcServiceInfo> resultList = catalogServices.removeDuplicateServices(rawCldsSdcServiceList); - assertTrue(resultList.size() == 2); - CldsSdcServiceInfo res1; CldsSdcServiceInfo res2; if ("service1".equals(resultList.get(0).getName())) { @@ -98,43 +89,33 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("service1".equals(res1.getName())); assertTrue("1.2".equals(res1.getVersion())); - assertTrue("service2".equals(res2.getName())); assertTrue("1.0".equals(res2.getVersion())); - } @Test public void removeDuplicateSdcResourceInstancesTest() { - List<CldsSdcResource> rawCldsSdcResourceList = new LinkedList<>(); - CldsSdcResource sdcResource1a = new CldsSdcResource(); sdcResource1a.setResourceInstanceName("resource1"); sdcResource1a.setResourceVersion("1.0"); rawCldsSdcResourceList.add(sdcResource1a); - CldsSdcResource sdcResource1b = new CldsSdcResource(); sdcResource1b.setResourceInstanceName("resource1"); sdcResource1b.setResourceVersion("1.1"); rawCldsSdcResourceList.add(sdcResource1b); - CldsSdcResource sdcResource1c = new CldsSdcResource(); sdcResource1c.setResourceInstanceName("resource1"); sdcResource1c.setResourceVersion("1.2"); rawCldsSdcResourceList.add(sdcResource1c); - CldsSdcResource sdcResource2 = new CldsSdcResource(); sdcResource2.setResourceInstanceName("resource2"); sdcResource2.setResourceVersion("1.0"); rawCldsSdcResourceList.add(sdcResource2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List<CldsSdcResource> resultList = catalogServices.removeDuplicateSdcResourceInstances(rawCldsSdcResourceList); - CldsSdcResource res1; CldsSdcResource res2; if ("resource1".equals(resultList.get(0).getResourceInstanceName())) { @@ -144,44 +125,34 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("resource1".equals(res1.getResourceInstanceName())); assertTrue("1.2".equals(res1.getResourceVersion())); - assertTrue("resource2".equals(res2.getResourceInstanceName())); assertTrue("1.0".equals(res2.getResourceVersion())); - } @Test public void removeDuplicateSdcResourceBasicInfoTest() { - List<CldsSdcResourceBasicInfo> rawCldsSdcResourceList = new LinkedList<>(); - CldsSdcResourceBasicInfo sdcResource1a = new CldsSdcResourceBasicInfo(); sdcResource1a.setName("resource1"); sdcResource1a.setVersion("1.0"); rawCldsSdcResourceList.add(sdcResource1a); - CldsSdcResourceBasicInfo sdcResource1b = new CldsSdcResourceBasicInfo(); sdcResource1b.setName("resource1"); sdcResource1b.setVersion("1.1"); rawCldsSdcResourceList.add(sdcResource1b); - CldsSdcResourceBasicInfo sdcResource1c = new CldsSdcResourceBasicInfo(); sdcResource1c.setName("resource1"); sdcResource1c.setVersion("1.2"); rawCldsSdcResourceList.add(sdcResource1c); - CldsSdcResourceBasicInfo sdcResource2 = new CldsSdcResourceBasicInfo(); sdcResource2.setName("resource2"); sdcResource2.setVersion("1.0"); rawCldsSdcResourceList.add(sdcResource2); - SdcCatalogServices catalogServices = new SdcCatalogServices(); List<CldsSdcResourceBasicInfo> resultList = catalogServices .removeDuplicateSdcResourceBasicInfo(rawCldsSdcResourceList); - CldsSdcResourceBasicInfo res1; CldsSdcResourceBasicInfo res2; if ("resource1".equals(resultList.get(0).getName())) { @@ -191,19 +162,15 @@ public class SdcCatalogServicesItCase extends AbstractItCase { res1 = resultList.get(1); res2 = resultList.get(0); } - assertTrue("resource1".equals(res1.getName())); assertTrue("1.2".equals(res1.getVersion())); - assertTrue("resource2".equals(res2.getName())); assertTrue("1.0".equals(res2.getVersion())); - } @Test public void getServiceUuidFromServiceInvariantIdTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")).when(spy).getSdcServicesInformation(null); @@ -211,120 +178,97 @@ public class SdcCatalogServicesItCase extends AbstractItCase { // should not exist, returning empty string String resUuidVcts4Null = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b"); assertTrue("".equals(resUuidVcts4Null)); - // Try the vcts4 version 1.1, this one should be there as it replaces // the vcts4 v1.0 String resUuidVcts4Latest = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(resUuidVcts4Latest)); - // Try the vcts5 version 1.0, this one should be there String resUuidVcts5 = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d8c"); assertTrue("29018914-966c-442d-9d08-251b9dc45b7f".equals(resUuidVcts5)); - // try one that does not exist at all String resUuidUnknown = spy.getServiceUuidFromServiceInvariantId("testuuid"); assertTrue("".equals(resUuidUnknown)); - } @Test public void getCldsServiceDataWithAlarmConditionsTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")).when(spy).getSdcServicesInformation(null); - // This invariant uuid is the one from vcts4 v1.1 String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl") + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl); - String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl); - String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl); - String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl); - String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl); - String csvAlarmsDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl); - Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl); - String csvAlarmsDetailUrl2 = refProp.getStringValue("sdc.catalog.url") + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(csvAlarmsDetailUrl2); - String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl); - String vfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources/a0475018-1e7e-4ddd-8bee-33cbf958c2e6/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResourceExample.json"), "UTF-8")).when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourcesDetailUrl); - String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl); - String allCvfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=CVFC"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcCVFCResources.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allCvfcResourcesDetailUrl); - String allVfAlarms = refProp.getStringValue("sdc.catalog.url") + "resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(allVfAlarms); - String vfcResourceExample = refProp.getStringValue("sdc.catalog.url") + "resources/d7646638-2572-4a94-b497-c028ac15f9ca/metadata"; Mockito.doReturn(IOUtils.toString( SdcCatalogServicesItCase.class.getResourceAsStream("/example/sdc/sdcVFCResourceExample.json"), "UTF-8")) .when(spy).getCldsServicesOrResourcesBasedOnURL(vfcResourceExample); - CldsServiceData cldsServiceData = spy .getCldsServiceDataWithAlarmConditions("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); assertTrue("a33ed748-3477-4434-b3f3-b5560f5e7d9c".equals(cldsServiceData.getServiceInvariantUUID())); assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID())); assertTrue(cldsServiceData.getCldsVfs().size() == 1); - List<CldsAlarmCondition> alarmsList = spy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData, "alarmCondition"); assertTrue(alarmsList.size() == 12); - } - } diff --git a/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java b/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java index 757d85b53..afff9dd7d 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcReqItCase.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,67 +23,85 @@ package org.onap.clamp.clds.it; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.security.GeneralSecurityException; -import java.util.ArrayList; import java.util.List; import org.apache.commons.codec.DecoderException; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices; +import org.onap.clamp.clds.AbstractItCase; import org.onap.clamp.clds.client.req.sdc.SdcReq; -import org.onap.clamp.clds.model.CldsSdcResource; -import org.onap.clamp.clds.model.CldsSdcServiceDetail; -import org.onap.clamp.clds.model.prop.Global; +import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.util.ResourceFileUtil; +import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") -public class SdcReqItCase { - String baseUrl = "AYBABTU"; - String serviceInvariantUuid = "serviceInvariantUUID"; +public class SdcReqItCase extends AbstractItCase { + @Autowired private SdcReq sdcReq; + private String modelBpmnProp; + private String modelBpmn; + private String modelName; + private String controlName; + private ModelProperties modelProperties; + private String jsonWithYamlInside; + + /** + * Initialize Test. + */ + @Before + public void setUp() throws IOException { + modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); + modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); + modelName = "example-model01"; + controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; + modelProperties = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelBpmnProp); + jsonWithYamlInside = ResourceFileUtil.getResourceAsString("example/tca-policy-req/prop-text.json"); + } + + @Test + public void formatBlueprintTest() throws IOException { + String blueprintFormatted = sdcReq.formatBlueprint(modelProperties, jsonWithYamlInside); + assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), + blueprintFormatted); + } + + @Test + public void formatSdcLocationsReqTest() { + String blueprintFormatted = sdcReq.formatSdcLocationsReq(modelProperties, "testos"); + assertEquals( + "{\"artifactName\":\"testos\",\"locations\":[\"SNDGCA64\",\"ALPRGAED\",\"LSLEILAA\",\"MDTWNJC1\"]}", + blueprintFormatted); + } + + @Test + public void formatSdcReqTest() { + String jsonResult = sdcReq.formatSdcReq("payload", "artifactName", "artifactLabel", "artifactType"); + JSONAssert.assertEquals( + "{\"payloadData\" : \"cGF5bG9hZA==\",\"artifactLabel\" : \"artifactLabel\",\"artifactName\" :\"artifactName\",\"artifactType\" : \"artifactType\"," + + "\"artifactGroupType\" : \"DEPLOYMENT\",\"description\" : \"from CLAMP Cockpit\"}", + jsonResult, true); + } @Test - public void getSdcReqUrlsListNoGlobalPropTest() throws GeneralSecurityException, DecoderException { - ModelProperties prop = mock(ModelProperties.class); - SdcCatalogServices sdcCatalogServices = mock(SdcCatalogServices.class); - DelegateExecution delegateExecution = mock(DelegateExecution.class); - CldsSdcResource cldsSdcResource = mock(CldsSdcResource.class); - List<CldsSdcResource> cldsSdcResources = new ArrayList<>(); - cldsSdcResources.add(cldsSdcResource); - List<String> resourceVf = new ArrayList<>(); - resourceVf.add(serviceInvariantUuid); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - Global global = mock(Global.class); - when(prop.getGlobal()).thenReturn(global); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(global.getService()).thenReturn(serviceInvariantUuid); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - CldsSdcServiceDetail cldsSdcServiceDetail = mock(CldsSdcServiceDetail.class); - when(sdcCatalogServices.getCldsSdcServiceDetailFromJson(null)).thenReturn(cldsSdcServiceDetail); - when(global.getResourceVf()).thenReturn(new ArrayList<>()); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsSdcServiceDetail.getResources()).thenReturn(cldsSdcResources); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsSdcResource.getResoucreType()).thenReturn("VF"); - Assert.assertTrue(sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(global.getResourceVf()).thenReturn(resourceVf); - when(cldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUuid); - when(cldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name"); - List<String> expected = new ArrayList<>(); - expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts"); - Assert.assertEquals(expected, sdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution)); + public void getSdcReqUrlsListTest() throws GeneralSecurityException, DecoderException { + List<String> listUrls = sdcReq.getSdcReqUrlsList(modelProperties, refProp.getStringValue("sdc.serviceUrl")); + assertNotNull(listUrls); + assertTrue(listUrls.size() == 1); + assertTrue(listUrls.get(0).contains( + "/sdc/v1/catalog/services/56441b4b-0467-41dc-9a0e-e68613838219/resourceInstances/vpacketgen0/artifacts")); } } diff --git a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java index c17ec0df8..419bfde22 100644 --- a/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/TcaRequestFormatterItCase.java @@ -39,7 +39,6 @@ import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.util.ResourceFileUtil; import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; /** @@ -47,14 +46,14 @@ import org.springframework.test.context.junit4.SpringRunner; */ @RunWith(SpringRunner.class) @SpringBootTest -@TestPropertySource(locations = "classpath:application-no-camunda.properties") public class TcaRequestFormatterItCase extends AbstractItCase { - String modelProp; - String modelBpmn; - String modelName; - String controlName; - String yamlInput; + private String modelProp; + private String modelBpmn; + private String modelName; + private String controlName; + private String yamlInput; + private ModelProperties modelProperties; /** * Initialize Test. @@ -66,13 +65,13 @@ public class TcaRequestFormatterItCase extends AbstractItCase { yamlInput = ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-input.yaml"); modelName = "example-model01"; controlName = "ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf"; + modelProperties = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, + modelProp); } @Test public void testCreatePolicyJson() throws IOException, JSONException { - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, - modelProp); - String result = TcaRequestFormatter.createPolicyJson(refProp, prop); + String result = TcaRequestFormatter.createPolicyJson(refProp, modelProperties); assertNotNull(result); JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/tca-policy-expected.json"), result, true); @@ -80,9 +79,7 @@ public class TcaRequestFormatterItCase extends AbstractItCase { @Test public void testUpdatedBlueprintWithConfiguration() throws IOException { - ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, false, modelBpmn, - modelProp); - String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, prop, yamlInput); + String result = TcaRequestFormatter.updatedBlueprintWithConfiguration(refProp, modelProperties, yamlInput); assertNotNull(result); assertEquals(ResourceFileUtil.getResourceAsString("example/tca-policy-req/blueprint-expected.yaml"), result); } diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java index 03d7d65da..138d727c0 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.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");
@@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.JsonNode; */
public class CustomModelElement extends AbstractModelElement {
+ private String test;
private static final String CUSTOM_TYPE = "customType";
/**
@@ -38,10 +39,18 @@ public class CustomModelElement extends AbstractModelElement { public CustomModelElement(ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) {
super(CUSTOM_TYPE, modelProp, modelBpmn, modelJson);
topicPublishes = getValueByName("topicPublishes");
+ test = this.getValueByName("test");
}
public static final String getType() {
return CUSTOM_TYPE;
}
+ public String getTest() {
+ return test;
+ }
+
+ public void setTest(String test) {
+ this.test = test;
+ }
}
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java index 89eaf51cd..46c70e55e 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElementTest.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");
@@ -35,33 +35,21 @@ public class CustomModelElementTest { }
@Test
- public void testNewElement() {
-
- try {
- String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json");
- String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json");
- String modName = "example-model-name";
- String controlName = "example-control-name";
-
- CustomModelElement customModelElement = null;
-
- // Instantiate first, we should not have our CustomModelElement yet
- ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp);
-
- Assert.assertNotNull(prop);
-
- customModelElement = prop.getType(CustomModelElement.class);
-
- Assert.assertNull(customModelElement);
-
- ModelProperties.registerModelElement(CustomModelElement.class, CustomModelElement.getType());
-
- customModelElement = prop.getType(CustomModelElement.class);
-
- Assert.assertNotNull(customModelElement);
-
- } catch (IOException e) {
- e.printStackTrace();
- }
+ public void testCustomElement() throws IOException {
+ String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/custom/modelBpmn.json");
+ String modelProp = ResourceFileUtil
+ .getResourceAsString("example/model-properties/custom/modelBpmnProperties.json");
+ String modName = "example-model-name";
+ String controlName = "example-control-name";
+ CustomModelElement customModelElement = null;
+ // Instantiate first, we should not have our CustomModelElement yet
+ ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp);
+ Assert.assertNotNull(prop);
+ customModelElement = prop.getType(CustomModelElement.class);
+ Assert.assertNull(customModelElement);
+ ModelProperties.registerModelElement(CustomModelElement.class, CustomModelElement.getType());
+ customModelElement = prop.getType(CustomModelElement.class);
+ Assert.assertNotNull(customModelElement);
+ Assert.assertEquals("This is a test", customModelElement.getTest());
}
}
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java index eb0214127..7bb11a9ef 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.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"); @@ -46,14 +46,11 @@ public class ModelPropertiesTest { @Test public void testTcaModelDecoding() throws IOException { - String modelBpmnProp = ResourceFileUtil .getResourceAsString("example/model-properties/tca/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmn.json"); - ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); - Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -64,7 +61,6 @@ public class ModelPropertiesTest { assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); - Tca tca = prop.getType(Tca.class); assertNotNull(tca); assertTrue(tca.isFound()); @@ -73,14 +69,12 @@ public class ModelPropertiesTest { assertEquals("policy1", tca.getTcaItem().getPolicyId()); assertEquals("f734f031-10aa-t8fb-330f-04dde2886325", tca.getTcaItem().getTcaUuId()); assertEquals(2, tca.getTcaItem().getTcaThresholds().size()); - assertEquals("ABATED", tca.getTcaItem().getTcaThresholds().get(0).getClosedLoopEventStatus()); assertEquals( "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated", tca.getTcaItem().getTcaThresholds().get(0).getFieldPath()); assertEquals("LESS_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(0).getOperator()); assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(0).getThreshold()); - assertEquals("ONSET", tca.getTcaItem().getTcaThresholds().get(1).getClosedLoopEventStatus()); assertEquals("$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta", tca.getTcaItem().getTcaThresholds().get(1).getFieldPath()); @@ -90,14 +84,11 @@ public class ModelPropertiesTest { @Test public void testHolmesModelDecoding() throws IOException { - String modelBpmnProp = ResourceFileUtil .getResourceAsString("example/model-properties/holmes/modelBpmnProperties.json"); String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/holmes/modelBpmn.json"); - ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn, modelBpmnProp); - Policy policy = prop.getType(Policy.class); assertTrue(policy.isFound()); assertEquals(1, policy.getPolicyChains().size()); @@ -108,7 +99,6 @@ public class ModelPropertiesTest { assertEquals(3, policy.getPolicyChains().get(0).getPolicyItems().get(0).getMaxRetries()); assertEquals("", policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicy()); assertEquals(null, policy.getPolicyChains().get(0).getPolicyItems().get(0).getParentPolicyConditions()); - Holmes holmes = prop.getType(Holmes.class); assertNotNull(holmes); assertTrue(holmes.isFound()); @@ -121,6 +111,6 @@ public class ModelPropertiesTest { CldsModel cldsModel = new CldsModel(); cldsModel.setPropText( ResourceFileUtil.getResourceAsString("example/model-properties/tca/modelBpmnProperties.json")); - assertEquals("f5213e3a-9191-4362-93b5-b67f8d770e44", ModelProperties.getVf(cldsModel)); + assertEquals("023a3f0d-1161-45ff-b4cf-8918a8ccf3ad", ModelProperties.getVf(cldsModel)); } }
\ No newline at end of file diff --git a/src/test/resources/application-no-camunda.properties b/src/test/resources/application-no-camunda.properties index f7b2badef..2e284b032 100644 --- a/src/test/resources/application-no-camunda.properties +++ b/src/test/resources/application-no-camunda.properties @@ -76,42 +76,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000 camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=true +camel.springboot.jmx-enabled=false camel.defaultthreadpool.poolsize=10 camel.defaultthreadpool.maxpoolsize=20 camel.defaultthreadpool.maxqueuesize=1000 camel.defaultthreadpool.keepaliveTime=60 camel.defaultthreadpool.rejectpolicy=CallerRuns - -#server.port=0 - -#Camunda Process Engine DataSource connection Details -spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647 -spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e -spring.datasource.camunda.validationQuery=SELECT 1 -spring.datasource.camunda.validationQueryTimeout=20000 -spring.datasource.camunda.validationInterval=30000 -spring.datasource.camunda.testWhileIdle = true -spring.datasource.camunda.minIdle = 0 -spring.datasource.camunda.initialSize=0 -# Automatically test whether a connection provided is good or not -spring.datasource.camunda.testOnBorrow=true -spring.datasource.camunda.ignoreExceptionOnPreLoad=true - -#Camunda application properties -#Camunda history level -camunda.bpm.history-level=none -camunda.bpm.enabled=false -camunda.bpm.jpa.enabled=false -camunda.bpm.auto-deployment-enabled=false -camunda.bpm.job-execution.active=false -camunda.bpm.job-execution.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.metrics.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.database.schema-update=true +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver diff --git a/src/test/resources/clds/clds-reference.properties b/src/test/resources/clds/clds-reference.properties index 4627269a5..d6c8bc45b 100644 --- a/src/test/resources/clds/clds-reference.properties +++ b/src/test/resources/clds/clds-reference.properties @@ -2,19 +2,19 @@ # ============LICENSE_START=======================================================
# ONAP CLAMP
# ================================================================================
-# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# Copyright (C) 2017-2018 AT&T Intellectual Property. All rights
# reserved.
# ================================================================================
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
# limitations under the License.
# ============LICENSE_END============================================
# ===================================================================
@@ -77,11 +77,11 @@ op.eNodeB.limit=2 op.eNodeB.period=10s
#
# Sdc service properties
-sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/
-sdc.hostUrl=http://sdc.api.simpledemo.onap.org:8080
-sdc.serviceUrl=http://sdc.api.simpledemo.onap.org:8080/sdc/v1/catalog/services
-sdc.serviceUsername=test
-sdc.servicePassword=aa2871669d793c7fb7abbcda31b88b4c29bf2982755b25f08f8d0130539c11b0
+sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/
+sdc.hostUrl=http://localhost:${docker.http-cache.port.host}
+sdc.serviceUrl=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/services
+sdc.serviceUsername=clamp
+sdc.servicePassword=b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981
sdc.artifactLabel=blueprintclampcockpit
sdc.sdcX-InstanceID=CLAMP
sdc.artifactType=DCAE_INVENTORY_BLUEPRINT
@@ -98,7 +98,7 @@ ui.alarm.default={"Reports a transient alarm condition when an incoming CDR cann action.test.override=false
# if action.insert.test.event is true, then insert event even if the action is set to test
action.insert.test.event=false
-CLDS_SERVICE_CACHE_MAX_SECONDS=30
+clds.service.cache.invalidate.after.seconds=120
#DCAE Inventory Url Properties
DCAE_INVENTORY_URL = http://dcae.api.simpledemo.onap.org:8080
diff --git a/src/test/resources/example/modelBpmnProp.json b/src/test/resources/example/model-properties/custom/modelBpmn.json index c8efff877..c8efff877 100644 --- a/src/test/resources/example/modelBpmnProp.json +++ b/src/test/resources/example/model-properties/custom/modelBpmn.json diff --git a/src/test/resources/example/model-properties/custom/modelBpmnProperties.json b/src/test/resources/example/model-properties/custom/modelBpmnProperties.json new file mode 100644 index 000000000..fc2f1fd99 --- /dev/null +++ b/src/test/resources/example/model-properties/custom/modelBpmnProperties.json @@ -0,0 +1,248 @@ +{ + "global": + [ + { + "name": "service", + "value": + [ + "0f983e18-4603-4bb4-a98c-e29691fb16a1" + ] + }, + + { + "name": "vf", + "value": + [ + "6c7aaec2-59eb-41d9-8681-b7f976ab668d" + ] + }, + + { + "name": "actionSet", + "value": + [ + "enbRecipe" + ] + }, + + { + "name": "location", + "value": + [ + "SNDGCA64" + ] + } + ], + + "Policy_": + { + "Policy1": + [ + { + "name": "pname", + "value": "Policy1" + }, + + { + "name": "pid", + "value": "1" + }, + + { + "name": "timeout", + "value": "500" + }, + + { + "policyConfigurations": + [ + [ + { + "name": "recipe", + "value": + [ + "restart" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ], + + [ + { + "name": "recipe", + "value": + [ + "rebuild" + ] + }, + + { + "name": "maxRetries", + "value": + [ + "3" + ] + }, + + { + "name": "retryTimeLimit", + "value": + [ + "180" + ] + }, + + { + "name": "_id", + "value": + [ + "ItE5xKT" + ] + }, + + { + "name": "parentPolicy", + "value": + [ + "n9bQ4t6" + ] + }, + + { + "name": "parentPolicyConditions", + "value": + [ + "Failure_Retries", + "Failure_Timeout", + "Failure_Exception", + "Failure" + ] + }, + { + "name": "targetResourceId", + "value": + [ + "resource-id" + ] + } + ] + ] + } + ] + }, + + "TCA_": + { + "Narra": + [ + { + "name": "tname", + "value": "Narra" + }, + + { + "name": "tuuid", + "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" + }, + + { + "name": "tnfc", + "value": "ENBE" + }, + + { + "name": "tcaEnab", + "value": "on" + }, + + { + "name": "tcaPol", + "value": "Policy1" + }, + + { + "name": "tcaPolId", + "value": "1" + }, + + { + "name": "tcaInt", + "value": "2" + }, + + { + "name": "tcaSev", + "value": "Warning" + }, + + { + "name": "tcaVio", + "value": "3" + }, + + { + "serviceConfigurations": + [ + [ + "PMRRCCONNESTABFAILCELLLATENCY", + "LESS", + "4", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" + ], + + [ + "PMRAATTCBRA", + "GREATER", + "30", + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" + ] + ] + } + ] + }, + + "CustomType_": [ + { + "name": "test", + "value": "This is a test" + } + ] +}
\ No newline at end of file diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json index cd76a1289..43fecc9ea 100644 --- a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json +++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json @@ -69,13 +69,6 @@ ] }, { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" - ] - }, - { "name": "vf", "value": [ "f5213e3a-9191-4362-93b5-b67f8d770e44" diff --git a/src/test/resources/example/model-properties/modelBpmn.json b/src/test/resources/example/model-properties/modelBpmn.json deleted file mode 100644 index 8f7b8e61a..000000000 --- a/src/test/resources/example/model-properties/modelBpmn.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "policy": [ - { - "id": "Policy_0honxgv", - "from": "TCA_1jy9to4" - } - ], - "tca": [ - { - "id": "TCA_1jy9to4", - "from": "Holmes_0i4n2mm" - } - ], - "holmes": [ - { - "id": "Holmes_0i4n2mm", - "from": "VesCollector_0orydnh" - } - ], - "vesCollector": [ - { - "id": "VesCollector_0orydnh", - "from": "StartEvent_1" - } - ] -} diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json deleted file mode 100644 index eacb12448..000000000 --- a/src/test/resources/example/model-properties/modelBpmnProp.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "Policy_0honxgv": { - "policy1": [ - { - "name": "pname", - "value": "policy1" - }, - { - "name": "pid", - "value": "0" - }, - { - "name": "timeout", - "value": "345" - }, - { - "policyConfigurations": [ - [ - { - "name": "maxRetries", - "value": [ - "3" - ] - }, - { - "name": "retryTimeLimit", - "value": [ - "180" - ] - }, - { - "name": "_id", - "value": [ - "dGLuNqg" - ] - }, - { - "name": "parentPolicy", - "value": [ - "" - ] - }, - { - "name": "targetResourceId", - "value": [ - "resourceid" - ] - } - ] - ] - } - ] - }, - "TCA_1jy9to4": { - "tca1": [ - { - "name": "tname", - "value": "tca1" - }, - { - "name": "tuuid", - "value": "f43e3499-8c9c-teed-bb41-a0cb38ebf0d3" - }, - { - "name": "tnfc", - "value": "" - }, - { - "name": "tcaEnab", - "value": "on" - }, - { - "name": "tcaPol", - "value": "policy1" - }, - { - "name": "tcaPolId", - "value": "0" - }, - { - "name": "tcaInt", - "value": "1" - }, - { - "name": "tcaSev", - "value": "NORMAL" - }, - { - "name": "tcaVio", - "value": "1" - }, - { - "serviceConfigurations": [ - ] - } - ] - }, - "Holmes_0i4n2mm": [ - { - "name": "correlationalLogic", - "value": "blabla" - }, - { - "name": "configPolicyName", - "value": "policy1" - } - ] -} diff --git a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json b/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json deleted file mode 100644 index 3030adfb3..000000000 --- a/src/test/resources/example/model-properties/modelBpmnPropWithGlobal.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "tca": { - "tname": "New_Set", - "tcaInt": "1", - "tcaVio": "1", - "tcaSev": { - "NORMAL": "NORMAL", - "CRITICAL": "CRITICAL", - "MAJOR": "MAJOR", - "MINOR": "MINOR", - "WARNING": "WARNING" - }, - "fieldPath": { - "FIELDPATH_test_1": "FIELDPATH_test_1", - "FIELDPATH_test_2": "FIELDPATH_test_2" - }, - "operator": { - ">": "GREATER", - "=": "EQUAL", - "<": "LESS" - }, - "opsPolicy": { - "POLICY_test_X": "POLICY_test_X", - "POLICY_test_Y": "POLICY_test_Y" - } - }, - "global": [ - { - "name": "actionSet", - "value": [ - "vnfRecipe" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" - ] - }, - { - "name": "vf", - "value": [ - "f5213e3a-9191-4362-93b5-b67f8d770e44" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED", - "LSLEILAA", - "MDTWNJC1" - ] - } - ], - "policy": { - "pname": "0", - "timeout": 345, - "vnfRecipe": { - "": "", - "restart": "Restart", - "rebuild": "Rebuild", - "migrate": "Migrate", - "healthCheck": "Health Check", - "evacuate": "Evacuate" - }, - "enbRecipe": { - "": "", - "reset": "Reset" - }, - "maxRetries": "3", - "retryTimeLimit": 180, - "resource": { - "vCTS": "vCTS", - "v3CDB": "v3CDB", - "vUDR": "vUDR", - "vCOM": "vCOM", - "vRAR": "vRAR", - "vLCS": "vLCS", - "vUDR-BE": "vUDR-BE", - "vDBE": "vDBE" - }, - "parentPolicyConditions": { - "Failure_Retries": "Failure: Max Retries Exceeded", - "Failure_Timeout": "Failure: Time Limit Exceeded", - "Failure_Guard": "Failure: Guard", - "Failure_Exception": "Failure: Exception", - "Failure": "Failure: Other", - "Success": "Success" - }, - "targetResourceId": "resourceid" - }, - "shared": { - "byService": { - "": { - "vf": { - "": "" - }, - "location": { - "": "" - }, - "alarmCondition": { - "": "" - } - } - }, - "byVf": { - "": { - "vfc": { - "": "" - } - } - } - } -} diff --git a/src/test/resources/example/modelBpmnPropForPolicy.json b/src/test/resources/example/model-properties/policy/modelBpmn.json index de643a69a..de643a69a 100644 --- a/src/test/resources/example/modelBpmnPropForPolicy.json +++ b/src/test/resources/example/model-properties/policy/modelBpmn.json diff --git a/src/test/resources/example/modelProp.json b/src/test/resources/example/model-properties/policy/modelBpmnProperties.json index 99f67b62e..99f67b62e 100644 --- a/src/test/resources/example/modelProp.json +++ b/src/test/resources/example/model-properties/policy/modelBpmnProperties.json diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json index 7bb4fe0bb..8e2780cda 100644 --- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json +++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json @@ -101,20 +101,13 @@ { "name": "service", "value": [ - "serviceUUID" - ] - }, - { - "name": "location", - "value": [ - "SNDGCA64", - "ALPRGAED" + "4cc5b45a-1f63-4194-8100-cd8e14248c92" ] }, { "name": "vf", "value": [ - "f5213e3a-9191-4362-93b5-b67f8d770e44" + "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" ] }, { diff --git a/src/test/resources/example/modelPropForPolicy.json b/src/test/resources/example/modelPropForPolicy.json deleted file mode 100644 index bf3480924..000000000 --- a/src/test/resources/example/modelPropForPolicy.json +++ /dev/null @@ -1,432 +0,0 @@ -{ - "global": - [ - { - "name": "service", - "value": - [ - "0f983e18-4603-4bb4-a98c-e29691fb16a1" - ] - }, - - { - "name": "vf", - "value": - [ - "6c7aaec2-59eb-41d9-8681-b7f976ab668d" - ] - }, - - { - "name": "location", - "value": - [ - "SNDGCA64" - ] - } - ], - - "Policy_": - { - "Policy1": - [ - { - "name": "pname", - "value": "Policy1" - }, - - { - "name": "pid", - "value": "1" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ], - - "Policy2": - [ - { - "name": "pname", - "value": "Policy2" - }, - - { - "name": "pid", - "value": "2" - }, - - { - "name": "timeout", - "value": "500" - }, - - { - "policyConfigurations": - [ - [ - { - "name": "recipe", - "value": - [ - "restart" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ], - - [ - { - "name": "recipe", - "value": - [ - "rebuild" - ] - }, - - { - "name": "maxRetries", - "value": - [ - "3" - ] - }, - - { - "name": "retryTimeLimit", - "value": - [ - "180" - ] - }, - - { - "name": "_id", - "value": - [ - "ItE5xKT" - ] - }, - - { - "name": "parentPolicy", - "value": - [ - "n9bQ4t6" - ] - }, - - { - "name": "parentPolicyConditions", - "value": - [ - "Failure_Retries", - "Failure_Timeout", - "Failure_Exception", - "Failure" - ] - }, - { - "name": "targetResourceId", - "value": - [ - "resource-id" - ] - } - ] - ] - } - ] - }, - - "TCA_": - { - "Narra": - [ - { - "name": "tname", - "value": "Narra" - }, - - { - "name": "tuuid", - "value": "886be8da-14fe-tca1-d04b-d13b55d58df9" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy1" - }, - - { - "name": "tcaPolId", - "value": "1" - }, - - { - "name": "tcaInt", - "value": "2" - }, - - { - "name": "tcaSev", - "value": "Warning" - }, - - { - "name": "tcaVio", - "value": "3" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "LESS", - "4", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ], - - "Srini": - [ - { - "name": "tname", - "value": "Srini" - }, - - { - "name": "tuuid", - "value": "8b5ba88d-f4b4-tf0e-50b1-78a5a7dd412d" - }, - - { - "name": "tnfc", - "value": "ENBE" - }, - - { - "name": "tcaEnab", - "value": "on" - }, - - { - "name": "tcaPol", - "value": "Policy2" - }, - - { - "name": "tcaPolId", - "value": "2" - }, - - { - "name": "tcaInt", - "value": "10" - }, - - { - "name": "tcaSev", - "value": "Critical" - }, - - { - "name": "tcaVio", - "value": "5" - }, - - { - "serviceConfigurations": - [ - [ - "PMRRCCONNESTABFAILCELLLATENCY", - "EQUAL", - "3", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value" - ], - - [ - "PMRAATTCBRA", - "GREATER", - "30", - "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value" - ] - ] - } - ] - } -}
\ No newline at end of file diff --git a/src/test/resources/example/sdc/expected-result/all-sdc-services.json b/src/test/resources/example/sdc/expected-result/all-sdc-services.json new file mode 100644 index 000000000..ea6efddb4 --- /dev/null +++ b/src/test/resources/example/sdc/expected-result/all-sdc-services.json @@ -0,0 +1,6 @@ +{ + "service": { + "4cc5b45a-1f63-4194-8100-cd8e14248c92": "vFirewall", + "c95b0e7c-c1f0-4287-9928-7964c5377a46": "vLoadBalancer" + } +} diff --git a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml index 2082e559b..8739bb22f 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-expected.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-expected.yaml @@ -1,7 +1,7 @@ tosca_definitions_version: cloudify_dsl_1_3 -imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml', - 'https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml', - 'http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml'] +imports: ['http://www.getcloudify.org/spec/cloudify/3.4/types.yaml', 'https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml', + 'https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml', + 'http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml'] inputs: location_id: {type: string} service_id: {type: string} @@ -10,7 +10,7 @@ node_templates: type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: location_id: {get_input: location_id} - scn_override: cdap_broker.solutioning-central.dcae.att.com + scn_override: cdap_broker.solutioning-central.dcae.onap.org interfaces: cloudify.interfaces.lifecycle: {} tca_tca: @@ -21,15 +21,15 @@ node_templates: tcaVESAlertsTableName: TCAVESAlertsTable, tcaVESAlertsTableTTLSeconds: '1728000', tcaVESMessageStatusTableName: TCAVESMessageStatusTable, tcaVESMessageStatusTableTTLSeconds: '86400', thresholdCalculatorFlowletInstances: '2'} - app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.homer.att.com, + app_preferences: {publisherContentType: application/json, publisherHostName: mrlocal-mtnjftle01.onap.org, publisherHostPort: '3905', publisherMaxBatchSize: '10', publisherMaxRecoveryQueueSize: '100000', - publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub, - publisherUserName: m00502@tca.af.dcae.att.com, publisherUserPassword: Te5021abc, + publisherPollingInterval: '20000', publisherProtocol: https, publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub, + publisherUserName: m00502@tca.af.dcae.onap.org, publisherUserPassword: Te5021abc, subscriberConsumerGroup: OpenDCAE-c12, subscriberConsumerId: c12, subscriberContentType: application/json, - subscriberHostName: mrlocal-mtnjftle01.homer.att.com, subscriberHostPort: '3905', + subscriberHostName: mrlocal-mtnjftle01.onap.org, subscriberHostPort: '3905', subscriberMessageLimit: '-1', subscriberPollingInterval: '20000', subscriberProtocol: https, - subscriberTimeoutMS: '-1', subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub, - subscriberUserName: m00502@tca.af.dcae.att.com, subscriberUserPassword: Te5021abc, + subscriberTimeoutMS: '-1', subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub, + subscriberUserName: m00502@tca.af.dcae.onap.org, subscriberUserPassword: Te5021abc, tca_policy: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta","thresholdValue":123,"direction":"GREATER_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"}]}]}'} artifact_name: dcae-analytics-tca artifact_version: 1.0.0 diff --git a/src/test/resources/example/tca-policy-req/blueprint-input.yaml b/src/test/resources/example/tca-policy-req/blueprint-input.yaml index 95322258e..101dc2c0d 100644 --- a/src/test/resources/example/tca-policy-req/blueprint-input.yaml +++ b/src/test/resources/example/tca-policy-req/blueprint-input.yaml @@ -1,9 +1,9 @@ tosca_definitions_version: cloudify_dsl_1_3 imports: - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml -- https://nexus01.research.att.com:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml -- http://nexus01.research.att.com:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml +- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml +- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml inputs: location_id: type: string @@ -15,9 +15,10 @@ node_templates: properties: location_id: get_input: location_id - scn_override: cdap_broker.solutioning-central.dcae.att.com + scn_override: cdap_broker.solutioning-central.dcae.onap.org interfaces: - cloudify.interfaces.lifecycle: {} + cloudify.interfaces.lifecycle: { + } tca_tca: type: dcae.nodes.MicroService.cdap properties: @@ -32,33 +33,35 @@ node_templates: thresholdCalculatorFlowletInstances: '2' app_preferences: publisherContentType: application/json - publisherHostName: mrlocal-mtnjftle01.homer.att.com + publisherHostName: mrlocal-mtnjftle01.onap.org publisherHostPort: '3905' publisherMaxBatchSize: '10' publisherMaxRecoveryQueueSize: '100000' publisherPollingInterval: '20000' publisherProtocol: https - publisherTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESPub - publisherUserName: m00502@tca.af.dcae.att.com + publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub + publisherUserName: m00502@tca.af.dcae.onap.org publisherUserPassword: Te5021abc subscriberConsumerGroup: OpenDCAE-c12 subscriberConsumerId: c12 subscriberContentType: application/json - subscriberHostName: mrlocal-mtnjftle01.homer.att.com + subscriberHostName: mrlocal-mtnjftle01.onap.org subscriberHostPort: '3905' subscriberMessageLimit: '-1' subscriberPollingInterval: '20000' subscriberProtocol: https subscriberTimeoutMS: '-1' - subscriberTopicName: com.att.dcae.dmaap.mtnje2.DcaeTestVESSub - subscriberUserName: m00502@tca.af.dcae.att.com + subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub + subscriberUserName: m00502@tca.af.dcae.onap.org subscriberUserPassword: Te5021abc - tca_policy: + tca_policy: null artifact_name: dcae-analytics-tca artifact_version: 1.0.0 connections: - streams_publishes: [] - streams_subscribes: [] + streams_publishes: [ + ] + streams_subscribes: [ + ] jar_url: http://somejar location_id: get_input: location_id @@ -76,4 +79,4 @@ node_templates: streamname: TCASubscriberOutputStream relationships: - target: cdap_host_host - type: dcae.relationships.component_contained_in + type: dcae.relationships.component_contained_in
\ No newline at end of file diff --git a/src/test/resources/example/tca-policy-req/prop-text.json b/src/test/resources/example/tca-policy-req/prop-text.json new file mode 100644 index 000000000..acaa8894f --- /dev/null +++ b/src/test/resources/example/tca-policy-req/prop-text.json @@ -0,0 +1 @@ +{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3\r\nimports:\r\n- http://www.getcloudify.org/spec/cloudify/3.4/types.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/docker/2.2.0/node-type.yaml\r\n- https://onap.org:8443/repository/solutioning01-mte2-raw/type_files/relationship/1.0.0/node-type.yaml\r\n- http://onap.org:8081/repository/solutioning01-mte2-raw/type_files/dmaap/dmaap_mr.yaml\r\ninputs:\r\n location_id:\r\n type: string\r\n service_id:\r\n type: string\r\nnode_templates:\r\n cdap_host_host:\r\n type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure\r\n properties:\r\n location_id:\r\n get_input: location_id\r\n scn_override: cdap_broker.solutioning-central.dcae.onap.org\r\n interfaces:\r\n cloudify.interfaces.lifecycle: {\r\n }\r\n tca_tca:\r\n type: dcae.nodes.MicroService.cdap\r\n properties:\r\n app_config:\r\n appDescription: DCAE Analytics Threshold Crossing Alert Application\r\n appName: dcae-tca\r\n tcaSubscriberOutputStreamName: TCASubscriberOutputStream\r\n tcaVESAlertsTableName: TCAVESAlertsTable\r\n tcaVESAlertsTableTTLSeconds: '1728000'\r\n tcaVESMessageStatusTableName: TCAVESMessageStatusTable\r\n tcaVESMessageStatusTableTTLSeconds: '86400'\r\n thresholdCalculatorFlowletInstances: '2'\r\n app_preferences:\r\n publisherContentType: application/json\r\n publisherHostName: mrlocal-mtnjftle01.onap.org\r\n publisherHostPort: '3905'\r\n publisherMaxBatchSize: '10'\r\n publisherMaxRecoveryQueueSize: '100000'\r\n publisherPollingInterval: '20000'\r\n publisherProtocol: https\r\n publisherTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESPub\r\n publisherUserName: m00502@tca.af.dcae.onap.org\r\n publisherUserPassword: Te5021abc\r\n subscriberConsumerGroup: OpenDCAE-c12\r\n subscriberConsumerId: c12\r\n subscriberContentType: application/json\r\n subscriberHostName: mrlocal-mtnjftle01.onap.org\r\n subscriberHostPort: '3905'\r\n subscriberMessageLimit: '-1'\r\n subscriberPollingInterval: '20000'\r\n subscriberProtocol: https\r\n subscriberTimeoutMS: '-1'\r\n subscriberTopicName: org.onap.dcae.dmaap.mtnje2.DcaeTestVESSub\r\n subscriberUserName: m00502@tca.af.dcae.onap.org\r\n subscriberUserPassword: Te5021abc\r\n tca_policy: '{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"vFirewallBroadcastPackets\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"DCAE\",\"policyName\":\"example_model01.ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_TCA_1jy9to4\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"},{\"closedLoopControlName\":\"ClosedLoop_FRWL_SIG_fad4dcae_e498_11e6_852e_0050568c4ccf_null\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta\",\"thresholdValue\":123,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"MAJOR\",\"closedLoopEventStatus\":\"ONSET\"}]}]}'\r\n artifact_name: dcae-analytics-tca\r\n artifact_version: 1.0.0\r\n connections:\r\n streams_publishes: [\r\n ]\r\n streams_subscribes: [\r\n ]\r\n jar_url: http://somejar\r\n location_id:\r\n get_input: location_id\r\n namespace: cdap_tca_hi_lo\r\n programs:\r\n - program_id: TCAVESCollectorFlow\r\n program_type: flows\r\n - program_id: TCADMaaPMRSubscriberWorker\r\n program_type: workers\r\n - program_id: TCADMaaPMRPublisherWorker\r\n program_type: workers\r\n service_component_type: cdap_app_tca\r\n service_id:\r\n get_input: service_id\r\n streamname: TCASubscriberOutputStream\r\n relationships:\r\n - target: cdap_host_host\r\n type: dcae.relationships.component_contained_in"]}]}
\ No newline at end of file diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties index 54005ef2c..82cd999c3 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -77,42 +77,15 @@ server.context_parameters.p-name=value #context parameter with p-name as key and camel.springboot.consumer-template-cache-size=1000 camel.springboot.producer-template-cache-size=1000 -camel.springboot.jmx-enabled=true +camel.springboot.jmx-enabled=false camel.defaultthreadpool.poolsize=10 camel.defaultthreadpool.maxpoolsize=20 camel.defaultthreadpool.maxqueuesize=1000 camel.defaultthreadpool.keepaliveTime=60 camel.defaultthreadpool.rejectpolicy=CallerRuns - -#server.port=0 -#Camunda Process Engine DataSource connection Details -spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -spring.datasource.camunda.url=jdbc:mariadb:sequential://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true&retriesAllDown=2147483647&failoverLoopRetries=2147483647
-spring.datasource.camunda.username=camunda -spring.datasource.camunda.password=e1bb2a8381d1aa6c09879bd627db3bb560ad29e8a3343fe6aa7e6a7ba622da4e
-spring.datasource.camunda.validationQuery=SELECT 1 -spring.datasource.camunda.validationQueryTimeout=20000 -spring.datasource.camunda.validationInterval=30000 -spring.datasource.camunda.testWhileIdle = true -spring.datasource.camunda.minIdle = 0 -spring.datasource.camunda.initialSize=0 -# Automatically test whether a connection provided is good or not -spring.datasource.camunda.testOnBorrow=true -spring.datasource.camunda.ignoreExceptionOnPreLoad=true - - -#Camunda application properties -#Camunda history level -camunda.bpm.history-level=none -camunda.bpm.enabled=false -camunda.bpm.jpa.enabled=false -camunda.bpm.auto-deployment-enabled=false -camunda.bpm.job-execution.active=false -camunda.bpm.job-execution.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.metrics.enabled=false -camunda.bpm.management.health.camunda.enabled=false -camunda.bpm.database.schema-update=true +#camel.springboot.xmlRoutes = false +camel.springboot.xmlRoutes=classpath:/clds/camel/*.xml +#camel.springboot.typeConversion = false #clds datasource connection details spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver |