aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2018-03-27 18:19:32 +0200
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>2018-03-27 18:22:54 +0200
commit540fff37e161d693e8f9168a3ddac1ff4866c33a (patch)
treebd373715f8ed763bfc5eb5599795263bd7d104c1 /src/main
parent3e84a919dbda602eaeb261425f0a69ec6bbd9c5f (diff)
Add blueprint input
Add blueprint json input support for DCAE call Issue-ID: CLAMP-142 Change-Id: I52657ff7ead38681eae2744a30271f0a1b825bb6 Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java8
-rw-r--r--src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java28
-rw-r--r--src/main/java/org/onap/clamp/clds/model/properties/Global.java31
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java50
4 files changed, 77 insertions, 40 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
index f20668e59..26281dad4 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
@@ -25,6 +25,7 @@ package org.onap.clamp.clds.client;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.Date;
@@ -152,16 +153,19 @@ public class DcaeDispatcherServices {
* The deployment ID
* @param serviceTypeId
* Service type ID
- * @param blueprintInput
+ * @param blueprintInputJson
* The value for each blueprint parameters in a flat JSON
* @return The status URL
*/
- public String createNewDeployment(String deploymentId, String serviceTypeId) {
+ public String createNewDeployment(String deploymentId, String serviceTypeId, JsonNode blueprintInputJson) {
Date startTime = new Date();
LoggingUtils.setTargetContext("DCAE", "createNewDeployment");
try {
ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("dcae.deployment.template");
rootNode.put("serviceTypeId", serviceTypeId);
+ if (blueprintInputJson != null) {
+ rootNode.put("inputs", blueprintInputJson);
+ }
String apiBodyString = rootNode.toString();
logger.info("Dcae api Body String - " + apiBodyString);
String url = refProp.getStringValue(DCAE_URL_PROPERTY_NAME) + DCAE_URL_PREFIX + deploymentId;
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
index 9b8d9d9ce..118059d59 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
@@ -26,29 +26,26 @@ package org.onap.clamp.clds.model.properties;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Provide base ModelElement functionality. Perform base parsing of properties
- * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes,
- * ...)
+ * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes, ...)
*/
public abstract class AbstractModelElement {
protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AbstractModelElement.class);
protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
private final String type;
private final ModelBpmn modelBpmn;
private final String id;
protected String topicPublishes;
protected final JsonNode modelElementJsonNode;
private boolean isFound;
-
private final ModelProperties modelProp;
-
private static final String LOG_ELEMENT_NOT_FOUND = "Value '{}' for key 'name' not found in JSON";
private static final String LOG_ELEMENT_NOT_FOUND_IN_JSON = "Value '{}' for key 'name' not found in JSON {}";
@@ -118,6 +115,27 @@ public abstract class AbstractModelElement {
}
/**
+ * Return the Json value field of the json node element that has a name
+ * field equals to the given name.
+ */
+ public static JsonNode getJsonNodeByName(JsonNode nodeIn, String name) {
+ JsonNode vnode = null;
+ if (nodeIn != null) {
+ for (JsonNode node : nodeIn) {
+ if (node.path("name").asText().equals(name)) {
+ vnode = node.path("value");
+ }
+ }
+ }
+ if (vnode == null) {
+ logger.warn(LOG_ELEMENT_NOT_FOUND, name);
+ } else {
+ logger.debug(LOG_ELEMENT_NOT_FOUND_IN_JSON, name, nodeIn.toString());
+ }
+ return vnode;
+ }
+
+ /**
* Return the value field of the json node element that has a name field
* that equals the given name.
*/
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/Global.java b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
index ef36fef91..c4532b2ea 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/Global.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
@@ -23,12 +23,12 @@
package org.onap.clamp.clds.model.properties;
-import java.util.List;
-
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.fasterxml.jackson.databind.JsonNode;
+import java.util.List;
+
/**
* Parse global json properties.
* <p>
@@ -38,14 +38,15 @@ import com.fasterxml.jackson.databind.JsonNode;
* ,"kings_mountain","Secaucus","lisle","concord","houston","akron"]}]
*/
public class Global {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Global.class);
- protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
- private String service;
- private String actionSet;
- private List<String> resourceVf;
- private List<String> resourceVfc;
- private List<String> location;
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Global.class);
+ protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+ private String service;
+ private String actionSet;
+ private List<String> resourceVf;
+ private List<String> resourceVfc;
+ private JsonNode deployParameters;
+ private List<String> location;
/**
* Parse global given json node.
@@ -58,6 +59,7 @@ public class Global {
actionSet = AbstractModelElement.getValueByName(globalNode, "actionSet");
resourceVf = AbstractModelElement.getValuesByName(globalNode, "vf");
resourceVfc = AbstractModelElement.getValuesByName(globalNode, "vfc");
+ deployParameters = AbstractModelElement.getJsonNodeByName(globalNode, "deployParameters");
location = AbstractModelElement.getValuesByName(globalNode, "location");
}
@@ -83,6 +85,10 @@ public class Global {
return actionSet;
}
+ public void setActionSet(String actionSet) {
+ this.actionSet = actionSet;
+ }
+
/**
* @return the resourceVf
*/
@@ -128,4 +134,11 @@ public class Global {
this.location = location;
}
+ public JsonNode getDeployParameters() {
+ return deployParameters;
+ }
+
+ public void setDeployParameters(JsonNode deployParameters) {
+ this.deployParameters = deployParameters;
+ }
}
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 e828f844f..2b6862dc5 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -377,6 +377,20 @@ public class CldsService extends SecureServiceBase {
return names;
}
+ private void fillInCldsModel(CldsModel model) {
+ if (model.getTemplateName() != null) {
+ CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
+ if (template != null) {
+ model.setTemplateId(template.getId());
+ model.setDocText(template.getPropText());
+ // This is to provide the Bpmn XML when Template part in UI
+ // is
+ // disabled
+ model.setBpmnText(template.getBpmnText());
+ }
+ }
+ }
+
/**
* REST service that saves and processes an action for a CLDS model by name.
*
@@ -400,7 +414,7 @@ public class CldsService extends SecureServiceBase {
@Produces(MediaType.APPLICATION_JSON)
public Response putModelAndProcessAction(@PathParam("action") String action,
@PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model)
- throws TransformerException, ParseException, GeneralSecurityException, DecoderException {
+ throws TransformerException, ParseException {
Date startTime = new Date();
CldsModel retrievedModel = null;
Boolean errorCase = false;
@@ -412,9 +426,7 @@ public class CldsService extends SecureServiceBase {
isAuthorized(permisionManage);
isAuthorizedForVf(model);
String userId = getUserId();
- String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
logger.info("PUT actionCd={}", actionCd);
- logger.info("PUT actionStateCd={}", actionStateCd);
logger.info("PUT modelName={}", modelName);
logger.info("PUT test={}", test);
logger.info("PUT bpmnText={}", model.getBpmnText());
@@ -422,17 +434,7 @@ public class CldsService extends SecureServiceBase {
logger.info("PUT userId={}", userId);
logger.info("PUT getTypeId={}", model.getTypeId());
logger.info("PUT deploymentId={}", model.getDeploymentId());
- if (model.getTemplateName() != null) {
- CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
- if (template != null) {
- model.setTemplateId(template.getId());
- model.setDocText(template.getPropText());
- // This is to provide the Bpmn XML when Template part in UI
- // is
- // disabled
- model.setBpmnText(template.getBpmnText());
- }
- }
+ this.fillInCldsModel(model);
// save model to db
model.setName(modelName);
model.save(cldsDao, getUserId());
@@ -568,9 +570,8 @@ public class CldsService extends SecureServiceBase {
Date startTime = new Date();
LoggingUtils.setRequestContext("CldsService: GET sdc services", getPrincipalName());
String retStr;
- String responseStr = sdcCatalogServices.getSdcServicesInformation(null);
try {
- retStr = createUiServiceFormatJson(responseStr);
+ retStr = createUiServiceFormatJson(sdcCatalogServices.getSdcServicesInformation(null));
} catch (IOException e) {
logger.error("IOException during SDC communication", e);
throw new SdcCommunicationException("IOException during SDC communication", e);
@@ -814,12 +815,12 @@ public class CldsService extends SecureServiceBase {
LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName());
Boolean errorCase = false;
try {
- try {
- checkForDuplicateServiceVf(modelName, model.getPropText());
- } catch (IOException | BadRequestException e) {
- errorCase = true;
- logger.error("Exception occured during duplicate check for service and VF", e);
- }
+ fillInCldsModel(model);
+ String bpmnJson = cldsBpmnTransformer.doXslTransformToString(model.getBpmnText());
+ logger.info("PUT bpmnJson={}", bpmnJson);
+ ModelProperties modelProp = new ModelProperties(modelName, model.getControlName(), CldsEvent.ACTION_DEPLOY,
+ false, bpmnJson, model.getPropText());
+ checkForDuplicateServiceVf(modelName, model.getPropText());
String deploymentId = "";
// If model is already deployed then pass same deployment id
if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
@@ -828,7 +829,7 @@ public class CldsService extends SecureServiceBase {
deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId";
}
String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId,
- model.getTypeId());
+ model.getTypeId(), modelProp.getGlobal().getDeployParameters());
String operationStatus = "processing";
long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
while ("processing".equalsIgnoreCase(operationStatus)) {
@@ -930,7 +931,8 @@ public class CldsService extends SecureServiceBase {
if (service != null && resourceVf != null && !resourceVf.isEmpty()) {
List<CldsModelProp> cldsModelPropList = cldsDao.getDeployedModelProperties();
for (CldsModelProp cldsModelProp : cldsModelPropList) {
- JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText()).get("global");
+ JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText())
+ .get("global");
String currentService = AbstractModelElement.getValueByName(currentNode, "service");
List<String> currentVf = AbstractModelElement.getValuesByName(currentNode, "vf");
if (currentVf != null && !currentVf.isEmpty()) {