aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/onap/clamp/clds/Application.java15
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java8
-rw-r--r--src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java21
-rw-r--r--src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java9
-rw-r--r--src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java14
-rw-r--r--src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java35
-rw-r--r--src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java3
-rw-r--r--src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java9
-rw-r--r--src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java1
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java (renamed from src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java)29
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java (renamed from src/main/java/org/onap/clamp/clds/client/PolicyClient.java)97
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java (renamed from src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java)231
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java (renamed from src/main/java/org/onap/clamp/clds/client/req/SdcReq.java)101
-rw-r--r--src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java (renamed from src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java)95
-rw-r--r--src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java6
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/CldsDao.java55
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java62
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/ValueItemMapper.java42
-rw-r--r--src/main/java/org/onap/clamp/clds/exception/ModelPropertiesException.java61
-rw-r--r--src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java68
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java42
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java17
22 files changed, 489 insertions, 532 deletions
diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java
index 0304a6806..e2bfbd77f 100644
--- a/src/main/java/org/onap/clamp/clds/Application.java
+++ b/src/main/java/org/onap/clamp/clds/Application.java
@@ -65,28 +65,22 @@ import org.springframework.scheduling.annotation.EnableAsync;
ManagementWebSecurityAutoConfiguration.class })
@EnableAsync
public class Application extends SpringBootServletInitializer {
-
- protected static final EELFLogger eelfLogger = EELFManager.getInstance().getLogger(Application.class);
-
+ protected static final EELFLogger EELF_LOGGER = EELFManager.getInstance().getLogger(Application.class);
@Autowired
- protected ApplicationContext appContext;
-
+ private ApplicationContext appContext;
private static final String CAMEL_SERVLET_NAME = "CamelServlet";
private static final String CAMEL_URL_MAPPING = "/restservices/clds/v1/*";
-
// This settings is an additional one to Spring config,
// only if we want to have an additional port automatically redirected to
// HTTPS
@Value("${server.http-to-https-redirection.port:none}")
private String httpRedirectedPort;
-
/**
* This 8080 is the default port used by spring if this parameter is not
* specified in application.properties.
*/
@Value("${server.port:8080}")
private String springServerPort;
-
@Value("${server.ssl.key-store:none}")
private String sslKeystoreFile;
@@ -139,15 +133,13 @@ public class Application extends SpringBootServletInitializer {
if (newConnector != null) {
tomcat.addAdditionalTomcatConnectors(newConnector);
}
-
}
return tomcat;
-
}
private Connector createRedirectConnector(int redirectSecuredPort) {
if (redirectSecuredPort <= 0) {
- eelfLogger.warn(
+ EELF_LOGGER.warn(
"HTTP port redirection to HTTPS is disabled because the HTTPS port is 0 (random port) or -1 (Connector disabled)");
return null;
}
@@ -158,5 +150,4 @@ public class Application extends SpringBootServletInitializer {
connector.setRedirectPort(redirectSecuredPort);
return connector;
}
-
}
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 7662a9fc1..53d17aaff 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java
@@ -32,6 +32,7 @@ import java.security.GeneralSecurityException;
import java.util.Date;
import java.util.List;
+import org.apache.commons.codec.DecoderException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
@@ -74,8 +75,11 @@ public class DcaeInventoryServices {
* In case of issue when decryting the DCAE password
* @throws ParseException
* In case of DCAE Json parse exception
+ * @throws DecoderException
+ * In case of issues with HexString decoding
*/
- public void setEventInventory(CldsModel cldsModel, String userId) throws GeneralSecurityException, ParseException {
+ public void setEventInventory(CldsModel cldsModel, String userId)
+ throws GeneralSecurityException, ParseException, DecoderException {
String artifactName = cldsModel.getControlName();
DcaeEvent dcaeEvent = new DcaeEvent();
String isDcaeInfoAvailable = null;
@@ -152,7 +156,9 @@ public class DcaeInventoryServices {
* The resource UUID
* @return The DCAE inventory for the artifact
* @throws IOException
+ * In case of issues with the stream
* @throws ParseException
+ * In case of issues with the Json parsing
*
*/
public String getDcaeInformation(String artifactName, String serviceUuid, String resourceUuid)
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 5e0d470ed..aaa4a2c06 100644
--- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java
@@ -30,6 +30,7 @@ import java.util.UUID;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
+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;
@@ -41,10 +42,8 @@ import org.springframework.beans.factory.annotation.Autowired;
public class HolmesPolicyDelegate implements JavaDelegate {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(HolmesPolicyDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
@Autowired
private PolicyClient policyClient;
-
@Autowired
private RefProp refProp;
@@ -54,22 +53,30 @@ public class HolmesPolicyDelegate implements JavaDelegate {
* @param execution
*/
@Override
- public void execute(DelegateExecution execution) throws Exception {
+ public void execute(DelegateExecution execution) {
String holmesPolicyRequestUuid = UUID.randomUUID().toString();
execution.setVariable("holmesPolicyRequestUuid", holmesPolicyRequestUuid);
-
ModelProperties prop = ModelProperties.create(execution);
Holmes holmes = prop.getType(Holmes.class);
if (holmes.isFound()) {
- String responseMessage = policyClient.sendBasePolicyInOther(formatHolmesConfigBody(prop, holmes), holmes.getConfigPolicyName(), prop,
- holmesPolicyRequestUuid);
+ String responseMessage = policyClient.sendBasePolicyInOther(formatHolmesConfigBody(prop, holmes),
+ holmes.getConfigPolicyName(), prop, holmesPolicyRequestUuid);
if (responseMessage != null) {
execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes());
}
}
}
- public static String formatHolmesConfigBody (ModelProperties prop, Holmes holmes) {
+ /**
+ * This method is used to create the Payload that must be sent to Holmes.
+ *
+ * @param prop
+ * The ModelProperties containing all the closed loop props
+ * @param holmes
+ * The holmes object extracted from the closed loop
+ * @return The String that must be sent to policy for holmes
+ */
+ public static String formatHolmesConfigBody(ModelProperties prop, Holmes holmes) {
return prop.getControlName() + "$$$" + holmes.getCorrelationLogic();
}
}
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 c3c91fa88..72db32852 100644
--- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java
@@ -26,8 +26,11 @@ 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.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;
@@ -39,7 +42,6 @@ public class HolmesPolicyDeleteDelegate implements JavaDelegate {
protected static final EELFLogger logger = EELFManager.getInstance()
.getLogger(HolmesPolicyDeleteDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
@Autowired
private PolicyClient policyClient;
@@ -47,16 +49,15 @@ public class HolmesPolicyDeleteDelegate implements JavaDelegate {
* Perform activity. Delete Holmes Policy via policy api.
*
* @param execution
+ * @throws IOException
*/
@Override
- public void execute(DelegateExecution execution) throws Exception {
+ public void execute(DelegateExecution execution) {
ModelProperties prop = ModelProperties.create(execution);
Holmes holmes = prop.getType(Holmes.class);
if (holmes.isFound()) {
prop.setCurrentModelElementId(holmes.getId());
-
policyClient.deleteBasePolicy(prop);
}
}
-
}
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 493b3b3c7..e6af43363 100644
--- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java
@@ -26,12 +26,13 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import java.io.IOException;
+import java.io.UnsupportedEncodingException;
import java.util.Map;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.OperationalPolicyReq;
+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;
import org.onap.clamp.clds.model.prop.Policy;
import org.onap.clamp.clds.model.prop.PolicyChain;
@@ -51,13 +52,11 @@ public class OperationalPolicyDelegate implements JavaDelegate {
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;
-
/**
* Automatically injected by Spring, define in CldsConfiguration as a bean.
*/
@@ -71,13 +70,13 @@ public class OperationalPolicyDelegate implements JavaDelegate {
* The DelegateExecution
* @throws BuilderException
* In case of issues with OperationalPolicyReq
- * @throws IOException
- * In case of issues with the stream
* @throws PolicyEngineException
* In case of issues with the PolicyEngine creation
+ * @throws UnsupportedEncodingException
*/
@Override
- public void execute(DelegateExecution execution) throws IOException, BuilderException, PolicyEngineException {
+ public void execute(DelegateExecution execution)
+ throws BuilderException, PolicyEngineException, UnsupportedEncodingException {
String responseMessage = null;
String operationalPolicyRequestUuid = null;
ModelProperties prop = ModelProperties.create(execution);
@@ -94,5 +93,4 @@ public class OperationalPolicyDelegate implements JavaDelegate {
}
}
}
-
}
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 2c60941c8..2bca639e1 100644
--- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDeleteDelegate.java
@@ -23,16 +23,19 @@
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.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 com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
/**
* Delete Operational Policy via policy api.
*/
@@ -40,31 +43,29 @@ public class OperationalPolicyDeleteDelegate implements JavaDelegate {
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
*/
@Override
- public void execute(DelegateExecution execution) throws Exception {
+ public void execute(DelegateExecution execution) {
ModelProperties prop = ModelProperties.create(execution);
Policy policy = prop.getType(Policy.class);
prop.setCurrentModelElementId(policy.getId());
-
String responseMessage = "";
- if(policy.isFound()){
- for (PolicyChain policyChain : policy.getPolicyChains()) {
- prop.setPolicyUniqueId(policyChain.getPolicyId());
- responseMessage = policyClient.deleteBrms(prop);
- }
- if (responseMessage != null) {
- execution.setVariable("operationalPolicyDeleteResponseMessage", responseMessage.getBytes());
- }
- }
+ if (policy.isFound()) {
+ for (PolicyChain policyChain : policy.getPolicyChains()) {
+ prop.setPolicyUniqueId(policyChain.getPolicyId());
+ responseMessage = policyClient.deleteBrms(prop);
+ }
+ if (responseMessage != null) {
+ execution.setVariable("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 90bdcb3a1..b582349f6 100644
--- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
@@ -30,7 +30,8 @@ import java.util.List;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.SdcReq;
+import org.onap.clamp.clds.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.ModelProperties;
import org.onap.clamp.clds.model.refprop.RefProp;
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 7de126831..2d7df844b 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java
@@ -30,7 +30,8 @@ import java.util.UUID;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.onap.clamp.clds.client.req.TcaRequestFormatter;
+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;
@@ -44,10 +45,8 @@ import org.springframework.beans.factory.annotation.Autowired;
public class TcaPolicyDelegate implements JavaDelegate {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(TcaPolicyDelegate.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
@Autowired
private RefProp refProp;
-
@Autowired
PolicyClient policyClient;
@@ -60,16 +59,14 @@ public class TcaPolicyDelegate implements JavaDelegate {
public void execute(DelegateExecution execution) throws Exception {
String tcaPolicyRequestUuid = UUID.randomUUID().toString();
execution.setVariable("tcaPolicyRequestUuid", tcaPolicyRequestUuid);
-
ModelProperties prop = ModelProperties.create(execution);
Tca tca = prop.getType(Tca.class);
if (tca.isFound()) {
String policyJson = TcaRequestFormatter.createPolicyJson(refProp, prop);
- String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop, tcaPolicyRequestUuid);
+ String responseMessage = policyClient.sendMicroServiceInOther(policyJson, prop);
if (responseMessage != null) {
execution.setVariable("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 d3fb3f73d..e88b720a7 100644
--- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java
+++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDeleteDelegate.java
@@ -25,6 +25,7 @@ package org.onap.clamp.clds.client;
import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;
+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;
diff --git a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
index a5506da97..fcf6cda57 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.client.req;
+package org.onap.clamp.clds.client.req.policy;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFLogger.Level;
@@ -67,7 +67,6 @@ public class OperationalPolicyReq {
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
private OperationalPolicyReq() {
-
}
/**
@@ -84,7 +83,6 @@ public class OperationalPolicyReq {
Global global = prop.getGlobal();
prop.setCurrentModelElementId(modelElementId);
prop.setPolicyUniqueId(policyChain.getPolicyId());
-
String templateName = "";
String operationTopic = "";
String notificationTopic = "";
@@ -110,24 +108,19 @@ public class OperationalPolicyReq {
controller = refProp.getStringValue("op.controller", global.getService());
}
String recipeTopic = refProp.getStringValue("op.recipeTopic", global.getService());
-
// ruleAttributes
Map<String, String> ruleAttributes = new HashMap<>();
-
if (operationTopic == null || operationTopic.isEmpty()) {
logger.info("templateName=" + templateName);
logger.info("recipeTopic=" + recipeTopic);
logger.info("notificationTopic=" + notificationTopic);
-
// if no operationTopic, then don't format yaml - use first policy
// from list
PolicyItem policyItem = policyChain.getPolicyItems().get(0);
-
ruleAttributes.put("templateName", templateName);
ruleAttributes.put("ClosedLoopControlName", prop.getControlNameAndPolicyUniqueId());
ruleAttributes.put("RecipeTopic", recipeTopic);
ruleAttributes.put("NotificationTopic", notificationTopic);
-
String recipe = policyItem.getRecipe();
String maxRetries = String.valueOf(policyItem.getMaxRetries());
String retryTimeLimit = String.valueOf(policyItem.getRetryTimeLimit());
@@ -140,32 +133,25 @@ public class OperationalPolicyReq {
ruleAttributes.put("MaxRetries", maxRetries);
ruleAttributes.put("RetryTimeLimit", retryTimeLimit);
ruleAttributes.put("ResourceId", targetResourceId);
-
} else {
logger.info("templateName=" + templateName);
logger.info("operationTopic=" + operationTopic);
logger.info("notificationTopic=" + notificationTopic);
-
// format yaml
String yaml = (tca != null && tca.isFound()) ? formateNodeBYaml(refProp, prop, modelElementId, policyChain)
: formatYaml(refProp, prop, modelElementId, policyChain);
-
ruleAttributes.put("templateName", templateName);
ruleAttributes.put("ClosedLoopControlName", prop.getControlNameAndPolicyUniqueId());
ruleAttributes.put("OperationTopic", operationTopic);
ruleAttributes.put("NotificationTopic", notificationTopic);
-
ruleAttributes.put("ControlLoopYaml", yaml);
}
-
// matchingAttributes
Map<String, String> matchingAttributes = new HashMap<>();
matchingAttributes.put("controller", controller);
-
Map<AttributeType, Map<String, String>> attributes = new HashMap<>();
attributes.put(AttributeType.RULE, ruleAttributes);
attributes.put(AttributeType.MATCHING, matchingAttributes);
-
return attributes;
}
@@ -180,22 +166,18 @@ public class OperationalPolicyReq {
*/
public static String formatYaml(RefProp refProp, ModelProperties prop, String modelElementId,
PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
-
// get property objects
Global global = prop.getGlobal();
prop.setCurrentModelElementId(modelElementId);
prop.setPolicyUniqueId(policyChain.getPolicyId());
-
// convert values to SDC objects
Service service = new Service(global.getService());
Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF);
Resource[] vfcResources = convertToResource(global.getResourceVfc(), ResourceType.VFC);
-
// create builder
ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(),
policyChain.getTimeout(), service, vfResources);
builder.addResource(vfcResources);
-
// process each policy
Map<String, Policy> policyObjMap = new HashMap<>();
List<PolicyItem> policyItemList = orderParentFirst(policyChain.getPolicyItems());
@@ -219,12 +201,10 @@ public class OperationalPolicyReq {
refProp.getStringValue("op.policy.appc"), target, policyItem.getRecipe(), null,
policyItem.getMaxRetries(), policyItem.getRetryTimeLimit(), parentPolicyObj.getId(),
convertToPolicyResult(policyItem.getParentPolicyConditions()));
-
logger.info("policyObj.id=" + policyObj.getId() + "; parentPolicyObj.id=" + parentPolicyObj.getId());
}
policyObjMap.put(policyItem.getId(), policyObj);
}
-
//
// Build the specification
//
@@ -255,27 +235,22 @@ public class OperationalPolicyReq {
*/
public static String formateNodeBYaml(RefProp refProp, ModelProperties prop, String modelElementId,
PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
-
// get property objects
Global global = prop.getGlobal();
prop.setCurrentModelElementId(modelElementId);
prop.setPolicyUniqueId(policyChain.getPolicyId());
-
// convert values to SDC objects
Service service = new Service(global.getService());
Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF);
Resource[] vfcResources = convertToResource(global.getResourceVfc(), ResourceType.VFC);
-
// create builder
ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(),
policyChain.getTimeout(), service, vfResources);
builder.addResource(vfcResources);
-
// process each policy
Map<String, Policy> policyObjMap = new HashMap<>();
List<PolicyItem> policyItemList = addAOTSActorRecipe(refProp, global.getService(),
policyChain.getPolicyItems());
-
Policy lastPolicyObj = new Policy();
for (PolicyItem policyItem : policyItemList) {
Target target = new Target();
@@ -309,7 +284,6 @@ public class OperationalPolicyReq {
operationsAccumulateParams.setLimit(Integer.valueOf(refProp.getStringValue("op.eNodeB.limit")));
operationsAccumulateParams.setPeriod(refProp.getStringValue("op.eNodeB.period"));
builder.addOperationsAccumulateParams(lastPolicyObj.getId(), operationsAccumulateParams);
-
//
// Build the specification
//
@@ -447,5 +421,4 @@ public class OperationalPolicyReq {
}
return prList.stream().map(stringElem -> PolicyResult.toResult(stringElem)).toArray(PolicyResult[]::new);
}
-
} \ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
index ed29afe7e..e01a68fa4 100644
--- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/policy/PolicyClient.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.client;
+package org.onap.clamp.clds.client.req.policy;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
@@ -62,22 +62,19 @@ import org.springframework.context.ApplicationContext;
* Policy utility methods - specifically, send the policy.
*/
public class PolicyClient {
- protected static final String POLICY_PREFIX_BASE = "Config_";
- protected static final String POLICY_PREFIX_BRMS_PARAM = "Config_BRMS_Param_";
- protected static final String POLICY_PREFIX_MICROSERVICE = "Config_MS_";
-
- protected static final String LOG_POLICY_PREFIX = "Response is ";
-
- protected static final EELFLogger logger = EELFManager.getInstance()
+ protected static final String POLICY_PREFIX_BASE = "Config_";
+ protected static final String POLICY_PREFIX_BRMS_PARAM = "Config_BRMS_Param_";
+ protected static final String POLICY_PREFIX_MICROSERVICE = "Config_MS_";
+ 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 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;
-
@Autowired
protected ApplicationContext appContext;
-
@Autowired
protected RefProp refProp;
@@ -95,15 +92,11 @@ public class PolicyClient {
*/
public String sendBrmsPolicy(Map<AttributeType, Map<String, String>> attributes, ModelProperties prop,
String policyRequestUuid) {
-
PolicyParameters policyParameters = new PolicyParameters();
-
// Set Policy Type(Mandatory)
policyParameters.setPolicyConfigType(PolicyConfigType.BRMS_PARAM);
-
// Set Policy Name(Mandatory)
policyParameters.setPolicyName(prop.getPolicyScopeAndNameWithUniqueId());
-
// documentation says this is options, but when tested, got the
// following failure: java.lang.Exception: Policy send failed: PE300 -
// Data Issue: No policyDescription given.
@@ -113,10 +106,8 @@ public class PolicyClient {
policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
String policyNamePrefix = refProp.getStringValue("policy.op.policyNamePrefix");
String rtnMsg = send(policyParameters, prop, policyNamePrefix);
-
String policyType = refProp.getStringValue("policy.op.type");
push(policyType, prop);
-
return rtnMsg;
}
@@ -132,28 +123,21 @@ public class PolicyClient {
* @return The response message of policy
*/
public String sendMicroServiceInJson(String policyJson, ModelProperties prop, String policyRequestUuid) {
-
PolicyParameters policyParameters = new PolicyParameters();
-
// Set Policy Type
policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
- policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
+ policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME));
policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
-
policyParameters.setConfigBody(policyJson);
policyParameters.setConfigBodyType(PolicyType.JSON);
-
policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix");
-
// Adding this line to clear the policy id from policy name while
// pushing to policy engine
prop.setPolicyUniqueId("");
-
String rtnMsg = send(policyParameters, prop, policyNamePrefix);
- String policyType = refProp.getStringValue("policy.ms.type");
+ String policyType = refProp.getStringValue(POLICY_MSTYPE_PROPERTY_NAME);
push(policyType, prop);
-
return rtnMsg;
}
@@ -174,26 +158,20 @@ public class PolicyClient {
public String sendBasePolicyInOther(String configBody, String configPolicyName, ModelProperties prop,
String policyRequestUuid) {
PolicyParameters policyParameters = new PolicyParameters();
-
// Set Policy Type
policyParameters.setPolicyConfigType(PolicyConfigType.Base);
- policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
+ policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME));
policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
-
policyParameters.setConfigBody(configBody);
policyParameters.setConfigBodyType(PolicyType.OTHER);
policyParameters.setConfigName("HolmesPolicy");
policyParameters.setPolicyName(configPolicyName);
-
policyParameters.setRequestID(UUID.fromString(policyRequestUuid));
-
// Adding this line to clear the policy id from policy name while
// pushing to policy engine
prop.setPolicyUniqueId("");
-
String rtnMsg = send(policyParameters, prop, POLICY_PREFIX_BASE);
push(PolicyConfigType.Base.toString(), prop);
-
return rtnMsg;
}
@@ -204,29 +182,23 @@ public class PolicyClient {
* The config policy string body
* @param prop
* The ModelProperties
- * @param policyRequestUuid
- * The policy request UUID
* @return The answer from policy call
*/
- public String sendMicroServiceInOther(String configBody, ModelProperties prop, String policyRequestUuid) {
-
+ public String sendMicroServiceInOther(String configBody, ModelProperties prop) {
PolicyParameters policyParameters = new PolicyParameters();
- // Set Policy Type
+ // Set Policy Type
policyParameters.setPolicyConfigType(PolicyConfigType.MicroService);
- policyParameters.setOnapName("DCAE");
- policyParameters.setEcompName(refProp.getStringValue("policy.onap.name"));
+ // policyParameters.setOnapName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME));
+ policyParameters.setEcompName(refProp.getStringValue(POLICY_ONAPNAME_PROPERTY_NAME));
policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
policyParameters.setConfigBody(configBody);
String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix");
-
// Adding this line to clear the policy id from policy name while
// pushing to policy engine
prop.setPolicyUniqueId("");
-
String rtnMsg = send(policyParameters, prop, policyNamePrefix);
- String policyType = refProp.getStringValue("policy.ms.type");
+ String policyType = refProp.getStringValue(POLICY_MSTYPE_PROPERTY_NAME);
push(policyType, prop);
-
return rtnMsg;
}
@@ -241,10 +213,9 @@ public class PolicyClient {
*/
protected String send(PolicyParameters policyParameters, ModelProperties prop, String policyNamePrefix) {
// Verify whether it is triggered by Validation Test button from UI
- if (prop.isTest()) {
+ if (prop.isTestOnly()) {
return "send not executed for test action";
}
-
// API method to create or update Policy.
PolicyChangeResponse response = null;
String responseMessage = "";
@@ -267,9 +238,7 @@ public class PolicyClient {
throw new PolicyClientException("Exception while communicating with Policy", e);
}
logger.info(LOG_POLICY_PREFIX + responseMessage);
-
LoggingUtils.setTimeContext(startTime, new Date());
-
if (response.getResponseCode() == 200) {
logger.info("Policy send successful");
metricsLogger.info("Policy send success");
@@ -278,7 +247,6 @@ public class PolicyClient {
metricsLogger.info("Policy send failure");
throw new BadRequestException("Policy send failed: " + responseMessage);
}
-
return responseMessage;
}
@@ -293,12 +261,10 @@ public class PolicyClient {
*/
protected String push(String policyType, ModelProperties prop) {
// Verify whether it is triggered by Validation Test button from UI
- if (prop.isTest()) {
+ if (prop.isTestOnly()) {
return "push not executed for test action";
}
-
PushPolicyParameters pushPolicyParameters = new PushPolicyParameters();
-
// Parameter arguments
if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) {
pushPolicyParameters.setPolicyName(prop.getPolicyScopeAndNameWithUniqueId());
@@ -306,31 +272,29 @@ public class PolicyClient {
pushPolicyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName());
}
logger.info("Policy Name in Push policy method - " + pushPolicyParameters.getPolicyName());
-
pushPolicyParameters.setPolicyType(policyType);
pushPolicyParameters.setPdpGroup(refProp.getStringValue("policy.pdp.group"));
pushPolicyParameters.setRequestID(null);
-
// API method to create or update Policy.
- PolicyChangeResponse response = null;
+ PolicyChangeResponse response;
String responseMessage = "";
try {
logger.info("Attempting to push policy...");
response = getPolicyEngine().pushPolicy(pushPolicyParameters);
- responseMessage = response.getResponseMessage();
+ if (response != null) {
+ responseMessage = response.getResponseMessage();
+ }
} catch (Exception e) {
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)) {
logger.info("Policy push successful");
} else {
logger.warn("Policy push failed: " + responseMessage);
throw new BadRequestException("Policy push failed: " + responseMessage);
}
-
return responseMessage;
}
@@ -347,17 +311,14 @@ public class PolicyClient {
* In case of issues with policy engine
*/
protected List<Integer> getVersions(String policyNamePrefix, ModelProperties prop) throws PolicyConfigException {
-
ArrayList<Integer> versions = new ArrayList<>();
ConfigRequestParameters configRequestParameters = new ConfigRequestParameters();
String policyName = "";
-
if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) {
policyName = prop.getCurrentPolicyScopeAndFullPolicyName(policyNamePrefix) + "_" + prop.getPolicyUniqueId();
} else {
policyName = prop.getCurrentPolicyScopeAndFullPolicyName(policyNamePrefix);
}
-
logger.info("policyName=" + policyName);
configRequestParameters.setPolicyName(policyName);
try {
@@ -373,7 +334,6 @@ public class PolicyClient {
logger.warn("warning: policy not found...policy name - " + policyName, e.getMessage());
}
return versions;
-
}
/**
@@ -401,7 +361,7 @@ public class PolicyClient {
* @return The response message from Policy
*/
public String deleteMicrosService(ModelProperties prop) {
- String policyType = refProp.getStringValue("policy.ms.type");
+ String policyType = refProp.getStringValue(POLICY_MSTYPE_PROPERTY_NAME);
return deletePolicy(prop, policyType);
}
@@ -438,7 +398,6 @@ public class PolicyClient {
*/
protected String deletePolicy(ModelProperties prop, String policyType) {
DeletePolicyParameters deletePolicyParameters = new DeletePolicyParameters();
-
if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) {
deletePolicyParameters.setPolicyName(prop.getPolicyScopeAndNameWithUniqueId());
} else {
@@ -451,14 +410,11 @@ public class PolicyClient {
deletePolicyParameters.setPolicyType(policyType);
// send delete request
StringBuilder responseMessage = new StringBuilder(sendDeletePolicy(deletePolicyParameters, prop));
-
logger.info("Deleting policy from PAP...");
deletePolicyParameters.setPolicyComponent("PAP");
deletePolicyParameters.setDeleteCondition(DeletePolicyCondition.ALL);
-
// send delete request
responseMessage.append(sendDeletePolicy(deletePolicyParameters, prop));
-
return responseMessage.toString();
}
@@ -473,10 +429,9 @@ public class PolicyClient {
*/
protected String sendDeletePolicy(DeletePolicyParameters deletePolicyParameters, ModelProperties prop) {
// Verify whether it is triggered by Validation Test button from UI
- if (prop.isTest()) {
+ if (prop.isTestOnly()) {
return "delete not executed for test action";
}
-
// API method to create or update Policy.
PolicyChangeResponse response = null;
String responseMessage = "";
@@ -488,14 +443,12 @@ public class PolicyClient {
logger.error("Exception occurred during policy communnication", e);
}
logger.info(LOG_POLICY_PREFIX + responseMessage);
-
if (response != null && response.getResponseCode() == 200) {
logger.info("Policy delete successful");
} else {
logger.warn("Policy delete failed: " + responseMessage);
throw new BadRequestException("Policy delete failed: " + responseMessage);
}
-
return responseMessage;
}
} \ No newline at end of file
diff --git a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
index 36265e837..c725be2b2 100644
--- a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcCatalogServices.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.client;
+package org.onap.clamp.clds.client.req.sdc;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
@@ -40,8 +40,10 @@ import java.io.Reader;
import java.io.StringReader;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
+import java.util.Base64;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
@@ -49,10 +51,13 @@ import java.util.List;
import javax.ws.rs.BadRequestException;
+import org.apache.commons.codec.DecoderException;
+import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
-import org.onap.clamp.clds.client.req.SdcReq;
+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;
@@ -68,20 +73,45 @@ import org.onap.clamp.clds.model.CldsVfcData;
import org.onap.clamp.clds.model.prop.Global;
import org.onap.clamp.clds.model.prop.ModelProperties;
import org.onap.clamp.clds.model.refprop.RefProp;
+import org.onap.clamp.clds.util.CryptoUtils;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
public class SdcCatalogServices {
- protected static final EELFLogger logger = EELFManager.getInstance()
+ protected static final EELFLogger logger = EELFManager.getInstance()
.getLogger(SdcCatalogServices.class);
- protected 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";
+ protected 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";
+ public 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";
@Autowired
private RefProp refProp;
- @Autowired
- private SdcReq sdcReq;
+ protected CryptoUtils cryptoUtils = new CryptoUtils();
+
+ /**
+ * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic
+ * dGVzdDoxMjM0NTY=).
+ *
+ * @return The String with Basic Auth and password
+ * @throws GeneralSecurityException
+ * In case of issue when decryting the SDC password
+ * @throws DecoderException
+ * In case of issues with the decoding of the HexString message
+ */
+ private String getSdcBasicAuth() throws GeneralSecurityException, DecoderException {
+ String sdcId = refProp.getStringValue("sdc.serviceUsername");
+ String sdcPw = refProp.getStringValue("sdc.servicePassword");
+ String password = cryptoUtils.decrypt(sdcPw);
+ String idPw = Base64.getEncoder().encodeToString((sdcId + ":" + password).getBytes(StandardCharsets.UTF_8));
+ return "Basic " + idPw;
+ }
/**
* This method get the SDC services Information with the corresponding
@@ -92,31 +122,31 @@ public class SdcCatalogServices {
* @return A Json String with all the service list
* @throws GeneralSecurityException
* In case of issue when decryting the SDC password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*/
- public String getSdcServicesInformation(String uuid) throws GeneralSecurityException {
+ public String getSdcServicesInformation(String uuid) throws GeneralSecurityException, DecoderException {
Date startTime = new Date();
- String baseUrl = refProp.getStringValue("sdc.serviceUrl");
- String basicAuth = sdcReq.getSdcBasicAuth();
+ String baseUrl = refProp.getStringValue(SDC_SERVICE_URL_PROPERTY_NAME);
+ String basicAuth = getSdcBasicAuth();
LoggingUtils.setTargetContext("SDC", "getSdcServicesInformation");
try {
String url = baseUrl;
if (uuid != null) {
- url = baseUrl + "/" + uuid + "/metadata";
+ url = baseUrl + "/" + uuid + SDC_METADATA_URL_PREFIX;
}
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
- conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
- conn.setRequestProperty("Authorization", basicAuth);
- conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
+ conn.setRequestProperty(refProp.getStringValue(SDC_INSTANCE_ID_PROPERTY_NAME), SDC_INSTANCE_ID_CLAMP);
+ conn.setRequestProperty(HttpHeaders.AUTHORIZATION, basicAuth);
+ conn.setRequestProperty(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8");
+ conn.setRequestProperty(refProp.getStringValue(SDC_REQUESTID_PROPERTY_NAME), LoggingUtils.getRequestId());
conn.setRequestMethod("GET");
String resp = getResponse(conn);
- if (resp != null) {
- logger.info(resp);
- // metrics log
- LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName());
- return resp;
- }
+ logger.info(resp);
+ // metrics log
+ LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName());
+ return resp;
} catch (IOException e) {
LoggingUtils.setResponseContext("900", "Get sdc services failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get sdc services error");
@@ -223,8 +253,11 @@ public class SdcCatalogServices {
* @return The service UUID
* @throws GeneralSecurityException
* In case of issue when decryting the SDC password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*/
- public String getServiceUuidFromServiceInvariantId(String invariantId) throws GeneralSecurityException {
+ public String getServiceUuidFromServiceInvariantId(String invariantId)
+ throws GeneralSecurityException, DecoderException {
String serviceUuid = "";
String responseStr = getSdcServicesInformation(null);
List<CldsSdcServiceInfo> rawCldsSdcServicesList = getCldsSdcServicesListFromJson(responseStr);
@@ -326,15 +359,14 @@ public class SdcCatalogServices {
public String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formattedSdcReq)
throws GeneralSecurityException {
// Verify whether it is triggered by Validation Test button from UI
- if (prop.isTest()) {
+ if (prop.isTestOnly()) {
return "sdc artifact upload not executed for test action";
}
try {
logger.info("userid=" + userid);
- String md5Text = sdcReq.calculateMD5ByString(formattedSdcReq);
- byte[] postData = sdcReq.stringToByteArray(formattedSdcReq);
+ byte[] postData = formattedSdcReq.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
- HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, md5Text);
+ HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, formattedSdcReq);
try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write(postData);
}
@@ -356,45 +388,43 @@ public class SdcCatalogServices {
}
}
- private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text)
+ private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String content)
throws GeneralSecurityException {
try {
logger.info("userid=" + userid);
- String basicAuth = sdcReq.getSdcBasicAuth();
+ String basicAuth = getSdcBasicAuth();
String sdcXonapInstanceId = refProp.getStringValue("sdc.sdcX-InstanceID");
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
conn.setDoOutput(true);
- conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), sdcXonapInstanceId);
- conn.setRequestProperty("Authorization", basicAuth);
- conn.setRequestProperty("Content-Type", "application/json");
- conn.setRequestProperty("Content-MD5", md5Text);
+ conn.setRequestProperty(refProp.getStringValue(SDC_INSTANCE_ID_PROPERTY_NAME), sdcXonapInstanceId);
+ conn.setRequestProperty(HttpHeaders.AUTHORIZATION, basicAuth);
+ conn.setRequestProperty(HttpHeaders.CONTENT_TYPE, "application/json");
+ conn.setRequestProperty(HttpHeaders.CONTENT_MD5,
+ Base64.getEncoder().encodeToString(DigestUtils.md5Hex(content).getBytes("UTF-8")));
conn.setRequestProperty("USER_ID", userid);
conn.setRequestMethod("POST");
conn.setRequestProperty("charset", "utf-8");
- conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
+ conn.setRequestProperty(HttpHeaders.CONTENT_LENGTH, Integer.toString(postDataLength));
conn.setUseCaches(false);
- conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
+ conn.setRequestProperty(refProp.getStringValue(SDC_REQUESTID_PROPERTY_NAME), LoggingUtils.getRequestId());
return conn;
} catch (IOException e) {
logger.error("Exception when attempting to open connection with SDC", e);
throw new SdcCommunicationException("Exception when attempting to open connection with SDC", e);
+ } catch (DecoderException e) {
+ 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) {
+ logger.error("Exception when attempting to decrypt the encrypted password", e);
+ throw new SdcCommunicationException("Exception when attempting to decrypt the encrypted password", e);
}
}
private String getResponse(HttpURLConnection conn) {
try (InputStream is = getInputStream(conn)) {
- if (is != null) {
- try (BufferedReader in = new BufferedReader(new InputStreamReader(is))) {
- StringBuilder response = new StringBuilder();
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- response.append(inputLine);
- }
- return response.toString();
- }
- } else {
- return null;
+ try (BufferedReader in = new BufferedReader(new InputStreamReader(is))) {
+ return IOUtils.toString(in);
}
} catch (IOException e) {
logger.error("Exception when attempting to open SDC response", e);
@@ -434,8 +464,12 @@ public class SdcCatalogServices {
* @param cldsServiceData
* @return
* @throws GeneralSecurityException
+ * In case of issues with the decryting the encrypted password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*/
- public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) throws GeneralSecurityException {
+ public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData)
+ throws GeneralSecurityException, DecoderException {
boolean expired = false;
if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {
String cachedServiceUuid = cldsServiceData.getServiceUUID();
@@ -458,13 +492,16 @@ public class SdcCatalogServices {
* @param invariantServiceUuid
* @return
* @throws GeneralSecurityException
+ * In case of issues with the decryting the encrypted password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*/
public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUuid)
- throws GeneralSecurityException {
- String url = refProp.getStringValue("sdc.serviceUrl");
- String catalogUrl = refProp.getStringValue("sdc.catalog.url");
+ throws GeneralSecurityException, DecoderException {
+ String url = refProp.getStringValue(SDC_SERVICE_URL_PROPERTY_NAME);
+ String catalogUrl = refProp.getStringValue(SDC_CATALOG_URL_PROPERTY_NAME);
String serviceUuid = getServiceUuidFromServiceInvariantId(invariantServiceUuid);
- String serviceDetailUrl = url + "/" + serviceUuid + "/metadata";
+ String serviceDetailUrl = url + "/" + serviceUuid + SDC_METADATA_URL_PREFIX;
String responseStr = getCldsServicesOrResourcesBasedOnURL(serviceDetailUrl, false);
ObjectMapper objectMapper = new ObjectMapper();
CldsServiceData cldsServiceData = new CldsServiceData();
@@ -476,11 +513,11 @@ public class SdcCatalogServices {
logger.error("Exception when decoding the CldsServiceData JSON from SDC", e);
throw new SdcCommunicationException("Exception when decoding the CldsServiceData JSON from SDC", e);
}
- cldsServiceData.setServiceUUID(cldsSdcServiceDetail.getUuid());
- cldsServiceData.setServiceInvariantUUID(cldsSdcServiceDetail.getInvariantUUID());
// To remove duplicate resources from serviceDetail and add valid
// vfs to service
if (cldsSdcServiceDetail != null && cldsSdcServiceDetail.getResources() != null) {
+ cldsServiceData.setServiceUUID(cldsSdcServiceDetail.getUuid());
+ cldsServiceData.setServiceInvariantUUID(cldsSdcServiceDetail.getInvariantUUID());
List<CldsSdcResource> cldsSdcResourceList = removeDuplicateSdcResourceInstances(
cldsSdcServiceDetail.getResources());
if (cldsSdcResourceList != null && !cldsSdcResourceList.isEmpty()) {
@@ -519,7 +556,8 @@ public class SdcCatalogServices {
String resourceUuid = getResourceUuidFromResourceInvariantUuid(
currCldsVfData.getVfInvariantResourceUUID(), allVfResources);
if (resourceUuid != null) {
- String vfResourceUuidUrl = catalogUrl + "resources" + "/" + resourceUuid + "/metadata";
+ String vfResourceUuidUrl = catalogUrl + RESOURCE_URL_PREFIX + "/" + resourceUuid
+ + SDC_METADATA_URL_PREFIX;
String vfResponse = getCldsServicesOrResourcesBasedOnURL(vfResourceUuidUrl, false);
if (vfResponse != null) {
// Below 2 line are to get the KPI(field path) data
@@ -538,8 +576,8 @@ public class SdcCatalogServices {
String resourceVfcUuid = getResourceUuidFromResourceInvariantUuid(
currCldsVfcData.getVfcInvariantResourceUUID(), allVfcResources);
if (resourceVfcUuid != null) {
- String vfcResourceUuidUrl = catalogUrl + "resources" + "/"
- + resourceVfcUuid + "/metadata";
+ String vfcResourceUuidUrl = catalogUrl + RESOURCE_URL_PREFIX + "/"
+ + resourceVfcUuid + SDC_METADATA_URL_PREFIX;
String vfcResponse = getCldsServicesOrResourcesBasedOnURL(
vfcResourceUuidUrl, false);
if (vfcResponse != null) {
@@ -601,10 +639,10 @@ public class SdcCatalogServices {
}
private List<CldsVfcData> getVFCfromCVFC(String resourceUUID) throws GeneralSecurityException {
- String catalogUrl = refProp.getStringValue("sdc.catalog.url");
+ String catalogUrl = refProp.getStringValue(SDC_CATALOG_URL_PROPERTY_NAME);
List<CldsVfcData> cldsVfcDataList = new ArrayList<>();
if (resourceUUID != null) {
- String vfcResourceUUIDUrl = catalogUrl + "resources" + "/" + resourceUUID + "/metadata";
+ String vfcResourceUUIDUrl = catalogUrl + RESOURCE_URL_PREFIX + "/" + resourceUUID + SDC_METADATA_URL_PREFIX;
try {
String vfcResponse = getCldsServicesOrResourcesBasedOnURL(vfcResourceUUIDUrl, false);
ObjectMapper mapper = new ObjectMapper();
@@ -809,34 +847,30 @@ public class SdcCatalogServices {
String urlReworked = removeUnwantedBracesFromString(url);
URL urlObj = new URL(urlReworked);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
- String basicAuth = sdcReq.getSdcBasicAuth();
- conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
- conn.setRequestProperty("Authorization", basicAuth);
- conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
+ String basicAuth = getSdcBasicAuth();
+ conn.setRequestProperty(refProp.getStringValue(SDC_INSTANCE_ID_PROPERTY_NAME), SDC_INSTANCE_ID_CLAMP);
+ conn.setRequestProperty(HttpHeaders.AUTHORIZATION, basicAuth);
+ conn.setRequestProperty(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8");
+ conn.setRequestProperty(refProp.getStringValue(SDC_REQUESTID_PROPERTY_NAME), LoggingUtils.getRequestId());
conn.setRequestMethod("GET");
int responseCode = conn.getResponseCode();
logger.info("Sdc resource url - " + urlReworked + " , responseCode=" + responseCode);
- StringBuilder response;
try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
- response = new StringBuilder();
- String inputLine;
- while ((inputLine = in.readLine()) != null) {
- if (!inputLine.isEmpty()) {
- response.append(inputLine);
- }
- if (alarmConditions) {
- response.append("\n");
- }
- }
+ String response = IOUtils.toString(in);
+ LoggingUtils.setResponseContext("0", "Get sdc resources success", this.getClass().getName());
+ return response;
}
- LoggingUtils.setResponseContext("0", "Get sdc resources success", this.getClass().getName());
- return response.toString();
} catch (IOException e) {
LoggingUtils.setResponseContext("900", "Get sdc resources failed", this.getClass().getName());
LoggingUtils.setErrorContext("900", "Get sdc resources error");
logger.error("Exception occurred during query to SDC", e);
return "";
+ } catch (DecoderException e) {
+ 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) {
+ logger.error("Exception when attempting to decrypt the encrypted password", e);
+ throw new SdcCommunicationException("Exception when attempting to decrypt the encrypted password", e);
} finally {
LoggingUtils.setTimeContext(startTime, new Date());
metricsLogger.info("getCldsServicesOrResourcesBasedOnURL completed");
@@ -1161,41 +1195,6 @@ public class SdcCatalogServices {
return artifactUuid;
}
- public String updateControlLoopStatusToDcae(String dcaeUrl, String invariantResourceUuid,
- String invariantServiceUuid, String artifactName) throws GeneralSecurityException {
- String baseUrl = refProp.getStringValue("sdc.serviceUrl");
- String basicAuth = sdcReq.getSdcBasicAuth();
- String postStatusData = "{ \n" + "\"event\" : \"" + "Created" + "\",\n" + "\"serviceUUID\" : \""
- + invariantServiceUuid + "\",\n" + "\"resourceUUID\" :\"" + invariantResourceUuid + "\",\n"
- + "\"artifactName\" : \"" + artifactName + "\",\n" + "} \n";
- try {
- String url = baseUrl;
- if (invariantServiceUuid != null) {
- url = dcaeUrl + "/closed-loops";
- }
- URL urlObj = new URL(url);
- HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
- conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
- conn.setRequestProperty("Authorization", basicAuth);
- conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
- conn.setRequestMethod("POST");
- byte[] postData = sdcReq.stringToByteArray(postStatusData);
- try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
- wr.write(postData);
- }
- int responseCode = conn.getResponseCode();
- logger.info("responseCode=" + responseCode);
- String resp = getResponse(conn);
- if (resp != null) {
- return resp;
- }
- } catch (IOException e) {
- logger.error("Not able to get any service information from sdc for uuid:" + invariantServiceUuid, e);
- }
- return "";
- }
-
/**
* To get all sdc VF/VFC Resources basic info.
*
@@ -1208,7 +1207,7 @@ public class SdcCatalogServices {
*/
private List<CldsSdcResourceBasicInfo> getAllSdcVForVfcResourcesBasedOnResourceType(String resourceType)
throws GeneralSecurityException {
- String catalogUrl = refProp.getStringValue("sdc.catalog.url");
+ String catalogUrl = refProp.getStringValue(SDC_CATALOG_URL_PROPERTY_NAME);
String resourceUrl = catalogUrl + "resources?resourceType=" + resourceType;
String allSdcVfcResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false);
return removeDuplicateSdcResourceBasicInfo(getAllSdcResourcesListFromJson(allSdcVfcResources));
@@ -1264,11 +1263,13 @@ public class SdcCatalogServices {
* The location artifact name from where we can get the Artifact
* UUID
* @throws GeneralSecurityException
- * In case of issues to decrypt the SDC password
+ * In case of issues with the decryting the encrypted password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*/
public void uploadToSdc(ModelProperties prop, String userid, List<String> sdcReqUrlsList, String formattedSdcReq,
String formattedSdcLocationReq, String artifactName, String locationArtifactName)
- throws GeneralSecurityException {
+ throws GeneralSecurityException, DecoderException {
logger.info("userid=" + userid);
String serviceInvariantUuid = getServiceInvariantUuidFromProps(prop);
if (sdcReqUrlsList != null && !sdcReqUrlsList.isEmpty()) {
diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java
index 38e3b15a0..d4b5b086d 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/sdc/SdcReq.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.client.req;
+package org.onap.clamp.clds.client.req.sdc;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
@@ -41,24 +41,21 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
-import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.codec.DecoderException;
import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.onap.clamp.clds.client.SdcCatalogServices;
+import org.onap.clamp.clds.client.req.tca.TcaRequestFormatter;
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.prop.ModelProperties;
import org.onap.clamp.clds.model.prop.Tca;
import org.onap.clamp.clds.model.refprop.RefProp;
-import org.onap.clamp.clds.util.CryptoUtils;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Construct a Sdc request given CLDS objects.
*/
public class SdcReq {
- @Autowired
- protected CryptoUtils cryptoUtils;
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
@Autowired
@@ -136,7 +133,7 @@ public class SdcReq {
public String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType)
throws IOException {
logger.info("artifact=" + payloadData);
- String base64Artifact = base64Encode(payloadData);
+ String base64Artifact = Base64.getEncoder().encodeToString(payloadData.getBytes(StandardCharsets.UTF_8));
return "{ \n" + "\"payloadData\" : \"" + base64Artifact + "\",\n" + "\"artifactLabel\" : \"" + artifactLabel
+ "\",\n" + "\"artifactName\" :\"" + artifactName + "\",\n" + "\"artifactType\" : \"" + artifactType
+ "\",\n" + "\"artifactGroupType\" : \"DEPLOYMENT\",\n" + "\"description\" : \"from CLAMP Cockpit\"\n"
@@ -144,32 +141,6 @@ public class SdcReq {
}
/**
- * Get the SDC Request URL
- *
- * @param prop
- * The ModelProperties describing the clds model
- * @param url
- * url
- * @return SDC Request URL
- */
- public String getSdcReqUrl(ModelProperties prop, String url) {
- Global globalProps = prop.getGlobal();
- String serviceUUID = "";
- String resourceInstanceName = "";
- if (globalProps != null) {
- List<String> resourceVf = globalProps.getResourceVf();
- if (resourceVf != null && !resourceVf.isEmpty()) {
- resourceInstanceName = resourceVf.get(0);
- }
- if (globalProps.getService() != null) {
- serviceUUID = globalProps.getService();
- }
- }
- String normalizedResourceInstanceName = normalizeResourceInstanceName(resourceInstanceName);
- return url + "/" + serviceUUID + "/resourceInstances/" + normalizedResourceInstanceName + "/artifacts";
- }
-
- /**
* To get List of urls for all vfresources
*
* @param prop
@@ -178,9 +149,12 @@ public class SdcReq {
* @param execution
* @return
* @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 {
+ DelegateExecution execution) throws GeneralSecurityException, DecoderException {
// TODO : refact and regroup with very similar code
List<String> urlList = new ArrayList<>();
Global globalProps = prop.getGlobal();
@@ -227,65 +201,6 @@ public class SdcReq {
}
/**
- * from michael
- *
- * @param data
- * @return
- */
- public String calculateMD5ByString(String data) {
- String calculatedMd5 = DigestUtils.md5Hex(data);
- // encode base-64 result
- return base64Encode(calculatedMd5.getBytes());
- }
-
- /**
- * Base 64 encode a String.
- *
- * @param inText
- * @return
- */
- public String base64Encode(String inText) {
- return base64Encode(stringToByteArray(inText));
- }
-
- /**
- * Convert String to byte array.
- *
- * @param inText
- * @return
- */
- public byte[] stringToByteArray(String inText) {
- return inText.getBytes(StandardCharsets.UTF_8);
- }
-
- /**
- * Base 64 encode a byte array.
- *
- * @param bytes
- * @return
- */
- public String base64Encode(byte[] bytes) {
- Base64.Encoder encoder = Base64.getEncoder();
- return encoder.encodeToString(bytes);
- }
-
- /**
- * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic
- * dGVzdDoxMjM0NTY=).
- *
- * @return The String with Basic Auth and password
- * @throws GeneralSecurityException
- * In case of issue when decryting the SDC password
- */
- public String getSdcBasicAuth() throws GeneralSecurityException {
- String sdcId = refProp.getStringValue("sdc.serviceUsername");
- String sdcPw = refProp.getStringValue("sdc.servicePassword");
- String password = cryptoUtils.decrypt(sdcPw);
- String idPw = base64Encode(sdcId + ":" + password);
- return "Basic " + idPw;
- }
-
- /**
* Method to get yaml/template properties value from json
*
* @param docText
diff --git a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java
index 3646e5744..385a4e41a 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/TcaRequestFormatter.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/tca/TcaRequestFormatter.java
@@ -21,7 +21,7 @@
* ECOMP is a trademark and service mark of AT&T Intellectual Property.
*/
-package org.onap.clamp.clds.client.req;
+package org.onap.clamp.clds.client.req.tca;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
@@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml;
+import java.io.IOException;
import java.util.Map;
import org.onap.clamp.clds.exception.TcaRequestFormatterException;
@@ -77,7 +78,7 @@ public class TcaRequestFormatter {
String tcaPolicyReq = rootNode.toString();
logger.info("tcaPolicyReq=" + tcaPolicyReq);
return tcaPolicyReq;
- } catch (Exception e) {
+ } catch (IOException e) {
throw new TcaRequestFormatterException("Exception caught when attempting to create the policy JSON", e);
}
}
@@ -90,31 +91,45 @@ public class TcaRequestFormatter {
* clds-references.properties file
* @param modelProperties
* The Model Prop created from BPMN JSON and BPMN properties JSON
- * @return The Json string containing that should be sent to policy
+ * @param service
+ * The service ID, if not specified getGlobal.getService will be
+ * used
+ * @param policyName
+ * The policyName, if not specified the
+ * modelProperties.getCurrentPolicyScopeAndPolicyName will be
+ * used
+ * @param tca
+ * The Tca object, if not specified the
+ * modelProperties.setCurrentModelElementId will be used
+ * @return The Json node containing what should be sent to policy
*/
public static JsonNode createPolicyContent(RefProp refProp, ModelProperties modelProperties, String service,
String policyName, Tca tca) {
try {
- if (null == service) {
- service = modelProperties.getGlobal().getService();
+ String serviceToUse = service;
+ String policyNameToUse = policyName;
+ Tca tcaToUse = tca;
+ if (serviceToUse == null) {
+ serviceToUse = modelProperties.getGlobal().getService();
}
- if (null == tca) {
- tca = modelProperties.getType(Tca.class);
- modelProperties.setCurrentModelElementId(tca.getId());
+ if (tcaToUse == null) {
+ tcaToUse = modelProperties.getType(Tca.class);
+ modelProperties.setCurrentModelElementId(tcaToUse.getId());
}
- if (null == policyName) {
- policyName = modelProperties.getCurrentPolicyScopeAndPolicyName();
+ if (policyNameToUse == null) {
+ policyNameToUse = modelProperties.getCurrentPolicyScopeAndPolicyName();
}
- ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", service);
- ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("eventName", tca.getTcaItem().getEventName());
- ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("policyName", policyName);
+ ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("tca.template", serviceToUse);
+ ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("eventName",
+ tcaToUse.getTcaItem().getEventName());
+ ((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("policyName", policyNameToUse);
((ObjectNode) rootNode.get("metricsPerEventName").get(0)).put("controlLoopSchemaType",
- tca.getTcaItem().getControlLoopSchemaType());
+ tcaToUse.getTcaItem().getControlLoopSchemaType());
ObjectNode thresholdsParent = ((ObjectNode) rootNode.get("metricsPerEventName").get(0));
- addThresholds(refProp, service, thresholdsParent, tca.getTcaItem(), modelProperties);
+ addThresholds(refProp, serviceToUse, thresholdsParent, tcaToUse.getTcaItem(), modelProperties);
logger.info("tcaPolicyContent=" + rootNode.toString());
return rootNode;
- } catch (Exception e) {
+ } catch (IOException e) {
throw new TcaRequestFormatterException("Exception caught when attempting to create the policy content JSON",
e);
}
@@ -140,9 +155,10 @@ public class TcaRequestFormatter {
*/
private static void addThresholds(RefProp refProp, String service, ObjectNode appendToNode, TcaItem tcaItem,
ModelProperties modelProperties) {
+ ArrayNode tcaNodes = appendToNode.withArray("thresholds");
+ ObjectNode tcaNode;
try {
- ArrayNode tcaNodes = appendToNode.withArray("thresholds");
- ObjectNode tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service);
+ tcaNode = (ObjectNode) refProp.getJsonTemplate("tca.thresholds.template", service);
for (TcaThreshold tcaThreshold : tcaItem.getTcaThresholds()) {
tcaNode.put("closedLoopControlName", modelProperties.getControlNameAndPolicyUniqueId());
tcaNode.put("fieldPath", tcaThreshold.getFieldPath());
@@ -151,7 +167,7 @@ public class TcaRequestFormatter {
tcaNode.put("closedLoopEventStatus", tcaThreshold.getClosedLoopEventStatus());
tcaNodes.add(tcaNode);
}
- } catch (Exception e) {
+ } catch (IOException e) {
throw new TcaRequestFormatterException("Exception caught when attempting to create the thresholds JSON", e);
}
}
@@ -171,34 +187,17 @@ public class TcaRequestFormatter {
*/
public static String updatedBlueprintWithConfiguration(RefProp refProp, ModelProperties modelProperties,
String yamlValue) {
- try {
- String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null))
- .toString();
- logger.info("Yaml that will be updated:" + yamlValue);
- Yaml yaml = new Yaml();
- Map<String, Object> loadedYaml = (Map<String, Object>) yaml.load(yamlValue);
- Map<String, Object> nodeTemplates = (Map<String, Object>) loadedYaml.get("node_templates");
- // add policy_0 section in blueprint
- /*
- * Map<String, Object> policyObject = new HashMap<String, Object>
- * (); Map<String, Object> policyIdObject = new HashMap<String,
- * Object> (); String policyPrefix =
- * refProp.getStringValue("tca.policyid.prefix");
- * policyIdObject.put("policy_id", policyPrefix +
- * modelProperties.getCurrentPolicyScopeAndPolicyName());
- * policyObject.put("type", "dcae.nodes.policy");
- * policyObject.put("properties", policyIdObject);
- * nodeTemplates.put("policy_0", policyObject);
- */
- Map<String, Object> tcaObject = (Map<String, Object>) nodeTemplates.get("tca_tca");
- Map<String, Object> propsObject = (Map<String, Object>) tcaObject.get("properties");
- Map<String, Object> appPreferences = (Map<String, Object>) propsObject.get("app_preferences");
- appPreferences.put("tca_policy", jsonPolicy);
- String blueprint = yaml.dump(loadedYaml);
- logger.info("Yaml updated:" + blueprint);
- return blueprint;
- } catch (Exception e) {
- throw new TcaRequestFormatterException("Exception caught when attempting to update the blueprint", e);
- }
+ String jsonPolicy = ((ObjectNode) createPolicyContent(refProp, modelProperties, null, null, null)).toString();
+ logger.info("Yaml that will be updated:" + yamlValue);
+ Yaml yaml = new Yaml();
+ Map<String, Object> loadedYaml = (Map<String, Object>) yaml.load(yamlValue);
+ Map<String, Object> nodeTemplates = (Map<String, Object>) loadedYaml.get("node_templates");
+ Map<String, Object> tcaObject = (Map<String, Object>) nodeTemplates.get("tca_tca");
+ Map<String, Object> propsObject = (Map<String, Object>) tcaObject.get("properties");
+ Map<String, Object> appPreferences = (Map<String, Object>) propsObject.get("app_preferences");
+ appPreferences.put("tca_policy", jsonPolicy);
+ String blueprint = yaml.dump(loadedYaml);
+ logger.info("Yaml updated:" + blueprint);
+ return blueprint;
}
} \ No newline at end of file
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 0c73ac71f..45d2786aa 100644
--- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java
@@ -40,12 +40,12 @@ 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.PolicyClient;
-import org.onap.clamp.clds.client.SdcCatalogServices;
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.SdcReq;
+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;
diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java
index c5332a6b3..2c052c1a7 100644
--- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java
+++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java
@@ -26,12 +26,7 @@ package org.onap.clamp.clds.dao;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import java.io.IOException;
import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.sql.Blob;
-import java.sql.ResultSet;
-import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -49,7 +44,6 @@ import org.onap.clamp.clds.model.CldsTemplate;
import org.onap.clamp.clds.model.ValueItem;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
@@ -60,10 +54,8 @@ import org.springframework.stereotype.Repository;
*/
@Repository("cldsDao")
public class CldsDao {
-
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class);
protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
-
private JdbcTemplate jdbcTemplateObject;
private SimpleJdbcCall procGetModel;
private SimpleJdbcCall procGetModelTemplate;
@@ -75,7 +67,6 @@ public class CldsDao {
private SimpleJdbcCall procDelAllModelInstances;
private SimpleJdbcCall procInsModelInstance;
private SimpleJdbcCall procDelModelInstance;
-
private static final String HEALTHCHECK = "Select 1";
/**
@@ -202,7 +193,6 @@ public class CldsDao {
model.getEvent().setUserid((String) out.get("v_event_user_id"));
model.setTypeId((String) out.get("v_service_type_id"));
model.setDeploymentId((String) out.get("v_deployment_id"));
-
Map<String, Object> modelResults = logSqlExecution(procGetModel, in);
Object modelResultObject = modelResults.get("#result-set-1");
if (modelResultObject != null && modelResultObject instanceof ArrayList) {
@@ -266,7 +256,6 @@ public class CldsDao {
// Delete all existing model instances for given controlNameUUID
logger.debug("deleting instances for: {}", model.getControlNameUuid());
delAllModelInstances(model.getControlNameUuid());
-
if (modelInstancesList == null) {
logger.debug("modelInstancesList == null");
} else {
@@ -359,41 +348,6 @@ public class CldsDao {
}
/**
- * Generic mapper for list of values
- */
- private static final class ValueItemMapper implements RowMapper<ValueItem> {
- @Override
- public ValueItem mapRow(ResultSet rs, int rowNum) throws SQLException {
- ValueItem item = new ValueItem();
- item.setValue(rs.getString(1));
- return item;
- }
- }
-
- /**
- * Generic mapper for CldsDBServiceCache
- */
- private static final class CldsServiceDataMapper implements RowMapper<CldsServiceData> {
- @Override
- public CldsServiceData mapRow(ResultSet rs, int rowNum) throws SQLException {
- CldsServiceData cldsServiceData = new CldsServiceData();
- long age;
- age = rs.getLong(5);
- Blob blob = rs.getBlob(4);
- InputStream is = blob.getBinaryStream();
- ObjectInputStream oip;
- try {
- oip = new ObjectInputStream(is);
- cldsServiceData = (CldsServiceData) oip.readObject();
- cldsServiceData.setAgeOfRecord(age);
- } catch (IOException | ClassNotFoundException e) {
- logger.error("Error caught while retrieving cldsServiceData from database", e);
- }
- return cldsServiceData;
- }
- }
-
- /**
* Return list of model names
*
* @return model names
@@ -503,14 +457,14 @@ public class CldsDao {
}
/**
- * Method to get all models with model properties.
+ * Method to get deployed/active models with model properties.
*
* @return list of CldsModelProp
*/
- public List<CldsModelProp> getAllModelProperties() {
+ public List<CldsModelProp> getDeployedModelProperties() {
List<CldsModelProp> cldsModelPropList = new ArrayList<CldsModelProp>();
- String modelsSql = "select m.model_id, m.model_name, mp.model_prop_id, mp.model_prop_text FROM model m, model_properties mp"
- + " WHERE m.model_prop_id = mp.model_prop_id";
+ String modelsSql = "select m.model_id, m.model_name, mp.model_prop_id, mp.model_prop_text FROM model m, model_properties mp, event e "
+ + "WHERE m.model_prop_id = mp.model_prop_id and m.event_id = e.event_id and e.action_cd = 'DEPLOY'";
List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql);
CldsModelProp cldsModelProp = null;
for (Map<String, Object> row : rows) {
@@ -523,5 +477,4 @@ public class CldsDao {
}
return cldsModelPropList;
}
-
}
diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java b/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java
new file mode 100644
index 000000000..91d895054
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java
@@ -0,0 +1,62 @@
+/*-
+ * ============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.
+ */
+
+package org.onap.clamp.clds.dao;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import org.apache.commons.io.serialization.ValidatingObjectInputStream;
+import java.sql.Blob;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.onap.clamp.clds.model.CldsServiceData;
+import org.springframework.jdbc.core.RowMapper;
+
+/**
+ * Generic mapper for CldsDBServiceCache
+ */
+public final class CldsServiceDataMapper implements RowMapper<CldsServiceData> {
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class);
+
+ @Override
+ public CldsServiceData mapRow(ResultSet rs, int rowNum) throws SQLException {
+ CldsServiceData cldsServiceData = new CldsServiceData();
+ long age;
+ age = rs.getLong(5);
+ Blob blob = rs.getBlob(4);
+ InputStream is = blob.getBinaryStream();
+ try (ValidatingObjectInputStream oip = new ValidatingObjectInputStream(is)) {
+ oip.accept(CldsServiceData.class);
+ cldsServiceData = (CldsServiceData) oip.readObject();
+ cldsServiceData.setAgeOfRecord(age);
+ } catch (IOException | ClassNotFoundException e) {
+ logger.error("Error caught while retrieving cldsServiceData from database", e);
+ }
+ return cldsServiceData;
+ }
+}
diff --git a/src/main/java/org/onap/clamp/clds/dao/ValueItemMapper.java b/src/main/java/org/onap/clamp/clds/dao/ValueItemMapper.java
new file mode 100644
index 000000000..123672846
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/dao/ValueItemMapper.java
@@ -0,0 +1,42 @@
+/*-
+ * ============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.
+ */
+
+package org.onap.clamp.clds.dao;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.onap.clamp.clds.model.ValueItem;
+import org.springframework.jdbc.core.RowMapper;
+
+/**
+ * Generic mapper for list of values
+ */
+public final class ValueItemMapper implements RowMapper<ValueItem> {
+ @Override
+ public ValueItem mapRow(ResultSet rs, int rowNum) throws SQLException {
+ ValueItem item = new ValueItem();
+ item.setValue(rs.getString(1));
+ return item;
+ }
+}
diff --git a/src/main/java/org/onap/clamp/clds/exception/ModelPropertiesException.java b/src/main/java/org/onap/clamp/clds/exception/ModelPropertiesException.java
new file mode 100644
index 000000000..09fb5dbad
--- /dev/null
+++ b/src/main/java/org/onap/clamp/clds/exception/ModelPropertiesException.java
@@ -0,0 +1,61 @@
+/*-
+ * ============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.
+ */
+
+package org.onap.clamp.clds.exception;
+
+/**
+ * The exception used in case of issues when decoding the ModelProperties JSON
+ * generated by the Designer UI.
+ *
+ *
+ */
+public class ModelPropertiesException extends RuntimeException {
+ /**
+ * Generated ID.
+ */
+ private static final long serialVersionUID = 8452294782552680344L;
+
+ /**
+ * This constructor can be used to create a new ModelPropertiesException.
+ *
+ * @param message
+ * A string message detailing the problem
+ * @param e
+ * The exception sent by the code
+ */
+ public ModelPropertiesException(String message, Throwable e) {
+ super(message, e);
+ }
+
+ /**
+ * This constructor can be used to create a new ModelPropertiesException.
+ * 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 ModelPropertiesException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
index f3d344a79..9738396a9 100644
--- a/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
+++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelBpmn.java
@@ -25,8 +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.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;
@@ -40,25 +38,22 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import org.onap.clamp.clds.exception.ModelBpmnException;
import org.onap.clamp.clds.service.CldsService;
/**
* Parse Model BPMN properties.
* <p>
- * Example json: {"policy"
- * :[{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]}
+ * Example json: {"policy" :[{"id":"Policy_0oxeocn", "from":"StartEvent_1"}]}
*/
public class ModelBpmn {
protected static final EELFLogger logger = EELFManager.getInstance()
.getLogger(CldsService.class);
protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
// for each type, an array of entries
private final Map<String, List<ModelBpmnEntry>> entriesByType = new HashMap<>();
-
// for each id, an array of entries
private final Map<String, List<ModelBpmnEntry>> entriesById = new HashMap<>();
-
// List of all elementIds
private List<String> bpmnElementIds;
@@ -67,36 +62,37 @@ public class ModelBpmn {
*
* @param modelBpmnPropText
* @return
- * @throws IOException
- * @throws JsonMappingException
- * @throws JsonParseException
*/
- public static ModelBpmn create(String modelBpmnPropText) throws IOException {
- ModelBpmn modelBpmn = new ModelBpmn();
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode root = objectMapper.readValue(modelBpmnPropText, ObjectNode.class);
- // iterate over each entry like:
- // "Policy":[{"id":"Policy","from":"StartEvent_1"}]
- Iterator<Entry<String, JsonNode>> entryItr = root.fields();
- List<String> bpmnElementIdList = new ArrayList<>();
- while (entryItr.hasNext()) {
- // process the entry
- Entry<String, JsonNode> entry = entryItr.next();
- String type = entry.getKey();
- ArrayNode arrayNode = (ArrayNode) entry.getValue();
- // process each id/from object, like:
- // {"id":"Policy","from":"StartEvent_1"}
- for (JsonNode anArrayNode : arrayNode) {
- ObjectNode node = (ObjectNode) anArrayNode;
- String id = node.get("id").asText();
- String fromId = node.get("from").asText();
- ModelBpmnEntry modelBpmnEntry = new ModelBpmnEntry(type, id, fromId);
- modelBpmn.addEntry(modelBpmnEntry);
- bpmnElementIdList.add(id);
+ public static ModelBpmn create(String modelBpmnPropText) {
+ try {
+ ModelBpmn modelBpmn = new ModelBpmn();
+ ObjectMapper objectMapper = new ObjectMapper();
+ ObjectNode root = objectMapper.readValue(modelBpmnPropText, ObjectNode.class);
+ // iterate over each entry like:
+ // "Policy":[{"id":"Policy","from":"StartEvent_1"}]
+ Iterator<Entry<String, JsonNode>> entryItr = root.fields();
+ List<String> bpmnElementIdList = new ArrayList<>();
+ while (entryItr.hasNext()) {
+ // process the entry
+ Entry<String, JsonNode> entry = entryItr.next();
+ String type = entry.getKey();
+ ArrayNode arrayNode = (ArrayNode) entry.getValue();
+ // process each id/from object, like:
+ // {"id":"Policy","from":"StartEvent_1"}
+ for (JsonNode anArrayNode : arrayNode) {
+ ObjectNode node = (ObjectNode) anArrayNode;
+ String id = node.get("id").asText();
+ String fromId = node.get("from").asText();
+ ModelBpmnEntry modelBpmnEntry = new ModelBpmnEntry(type, id, fromId);
+ modelBpmn.addEntry(modelBpmnEntry);
+ bpmnElementIdList.add(id);
+ }
+ modelBpmn.setBpmnElementIds(bpmnElementIdList);
}
- modelBpmn.setBpmnElementIds(bpmnElementIdList);
+ return modelBpmn;
+ } catch (IOException e) {
+ throw new ModelBpmnException("Exception occurred during the decoding of the bpmn JSON", e);
}
- return modelBpmn;
}
/**
@@ -122,8 +118,8 @@ public class ModelBpmn {
}
/**
- * This method verifies if the ModelElement Type (holmes, tca,
- * ...) is in the list.
+ * This method verifies if the ModelElement Type (holmes, tca, ...) is in
+ * the list.
*
* @param type
* A model Element type (tca, ...)
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 f9eeeb58b..bbcfd5d25 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -56,13 +56,14 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.xml.transform.TransformerException;
+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.client.DcaeDispatcherServices;
import org.onap.clamp.clds.client.DcaeInventoryServices;
-import org.onap.clamp.clds.client.SdcCatalogServices;
+import org.onap.clamp.clds.client.req.sdc.SdcCatalogServices;
import org.onap.clamp.clds.dao.CldsDao;
import org.onap.clamp.clds.exception.CldsConfigException;
import org.onap.clamp.clds.exception.SdcCommunicationException;
@@ -337,12 +338,6 @@ public class CldsService extends SecureServiceBase {
logger.info("PUT propText={}", cldsModel.getPropText());
logger.info("PUT imageText={}", cldsModel.getImageText());
cldsModel.setName(modelName);
- try {
- duplicateCheckforServiceVf(modelName, cldsModel.getPropText());
- } catch (IOException | BadRequestException e) {
- logger.error("Exception occured during duplicate check for service and VF", e);
- throw new CldsConfigException(e.getMessage(), e);
- }
if (cldsModel.getTemplateName() != null) {
CldsTemplate template = cldsDao.getTemplate(cldsModel.getTemplateName());
if (template != null) {
@@ -390,8 +385,13 @@ public class CldsService extends SecureServiceBase {
* @param model
* @return
* @throws TransformerException
+ * In case of issues when doing the XSLT of the BPMN flow
* @throws ParseException
+ * In case of issues when parsing the JSON
* @throws GeneralSecurityException
+ * In case of issues when decrypting the password
+ * @throws DecoderException
+ * In case of issues with the Hex String decoding
*/
@ApiOperation(value = "Saves and processes an action for a CLDS model by name", notes = "", response = String.class)
@PUT
@@ -400,7 +400,7 @@ public class CldsService extends SecureServiceBase {
@Produces(MediaType.APPLICATION_JSON)
public CldsModel putModelAndProcessAction(@PathParam("action") String action,
@PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model)
- throws TransformerException, ParseException, GeneralSecurityException {
+ throws TransformerException, ParseException, GeneralSecurityException, DecoderException {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName());
String actionCd = action.toUpperCase();
@@ -558,13 +558,15 @@ public class CldsService extends SecureServiceBase {
*
* @throws GeneralSecurityException
* In case of issue when decryting the SDC password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*
*/
@ApiOperation(value = "Retrieves sdc services", notes = "", response = String.class)
@GET
@Path("/sdc/services")
@Produces(MediaType.APPLICATION_JSON)
- public String getSdcServices() throws GeneralSecurityException {
+ public String getSdcServices() throws GeneralSecurityException, DecoderException {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: GET sdc services", getPrincipalName());
String retStr;
@@ -603,7 +605,9 @@ public class CldsService extends SecureServiceBase {
* on refresh and non refresh
*
* @throws GeneralSecurityException
- * In case of issue when decryting the SDC password
+ * In case of issues with the decryting the encrypted password
+ * @throws DecoderException
+ * In case of issues with the decoding of the Hex String
*
*/
@ApiOperation(value = "Retrieves total properties by using invariantUUID based on refresh and non refresh", notes = "", response = String.class)
@@ -612,7 +616,8 @@ public class CldsService extends SecureServiceBase {
@Produces(MediaType.APPLICATION_JSON)
public String getSdcPropertiesByServiceUUIDForRefresh(
@PathParam("serviceInvariantUUID") String serviceInvariantUUID,
- @DefaultValue("false") @QueryParam("refresh") String refresh) throws GeneralSecurityException {
+ @DefaultValue("false") @QueryParam("refresh") String refresh)
+ throws GeneralSecurityException, DecoderException {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: GET sdc properties by uuid", getPrincipalName());
CldsServiceData cldsServiceData = new CldsServiceData();
@@ -831,6 +836,12 @@ public class CldsService extends SecureServiceBase {
@QueryParam("test") String test, CldsModel model) throws IOException {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName());
+ try {
+ checkForDuplicateServiceVf(modelName, model.getPropText());
+ } catch (IOException | BadRequestException e) {
+ logger.error("Exception occured during duplicate check for service and VF", e);
+ throw new CldsConfigException(e.getMessage(), e);
+ }
String deploymentId = "";
// If model is already deployed then pass same deployment id
if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
@@ -932,13 +943,13 @@ public class CldsService extends SecureServiceBase {
}
}
- private void duplicateCheckforServiceVf(String modelName, String modelPropText) throws IOException {
+ private void checkForDuplicateServiceVf(String modelName, String modelPropText) throws IOException {
JsonNode modelJson = new ObjectMapper().readTree(modelPropText);
JsonNode globalNode = modelJson.get("global");
String service = AbstractModelElement.getValueByName(globalNode, "service");
List<String> resourceVf = AbstractModelElement.getValuesByName(globalNode, "vf");
if (service != null && resourceVf != null && !resourceVf.isEmpty()) {
- List<CldsModelProp> cldsModelPropList = cldsDao.getAllModelProperties();
+ List<CldsModelProp> cldsModelPropList = cldsDao.getDeployedModelProperties();
for (CldsModelProp cldsModelProp : cldsModelPropList) {
JsonNode currentJson = new ObjectMapper().readTree(cldsModelProp.getPropText());
JsonNode currentNode = currentJson.get("global");
@@ -947,8 +958,9 @@ public class CldsService extends SecureServiceBase {
if (currentVf != null && !currentVf.isEmpty()) {
if (!modelName.equalsIgnoreCase(cldsModelProp.getName()) && service.equalsIgnoreCase(currentService)
&& resourceVf.get(0).equalsIgnoreCase(currentVf.get(0))) {
- throw new BadRequestException("Same service/VF already exists in " + cldsModelProp.getName()
- + " model, please select different service/VF.");
+ throw new BadRequestException("Same Service/VF already exists in " + cldsModelProp.getName()
+ + " model, please select different Service/VF.");
+
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
index c84f5efb0..070c06678 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java
@@ -44,7 +44,6 @@ import javax.xml.transform.TransformerException;
import org.onap.clamp.clds.dao.CldsDao;
import org.onap.clamp.clds.model.CldsTemplate;
import org.onap.clamp.clds.model.ValueItem;
-import org.onap.clamp.clds.transform.XslTransformer;
import org.onap.clamp.clds.util.LoggingUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -55,15 +54,11 @@ import org.springframework.beans.factory.annotation.Value;
@AjscService
@Path("/cldsTempate")
public class CldsTemplateService extends SecureServiceBase {
-
@Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}")
private String cldsPermissionTypeTemplate;
-
@Value("${CLDS_PERMISSION_INSTANCE:dev}")
private String cldsPermissionInstance;
-
private SecureServicePermission permissionReadTemplate;
-
private SecureServicePermission permissionUpdateTemplate;
@PostConstruct
@@ -75,12 +70,7 @@ public class CldsTemplateService extends SecureServiceBase {
}
@Autowired
- private CldsDao cldsDao;
-
- @Autowired
- private XslTransformer cldsBpmnTransformer;
-
- private static String userid;
+ private CldsDao cldsDao;
/**
* REST service that retrieves BPMN for a CLDS template name from the
@@ -170,7 +160,6 @@ public class CldsTemplateService extends SecureServiceBase {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsTemplateService: PUT template", getPrincipalName());
isAuthorized(permissionUpdateTemplate);
-
logger.info("PUT Template for templateName=" + templateName);
logger.info("PUT bpmnText=" + cldsTemplate.getBpmnText());
logger.info("PUT propText=" + cldsTemplate.getPropText());
@@ -185,13 +174,11 @@ public class CldsTemplateService extends SecureServiceBase {
logger.info(" bpmnText : " + cldsTemplate.getBpmnText());
logger.info(" Image Text : " + cldsTemplate.getImageText());
logger.info(" Prop Text : " + cldsTemplate.getPropText());
- cldsTemplate.save(cldsDao, userid);
-
+ cldsTemplate.save(cldsDao, null);
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
LoggingUtils.setResponseContext("0", "Put template success", this.getClass().getName());
auditLogger.info("PUT template completed");
-
return cldsTemplate;
}