diff options
author | Determe, Sebastien (sd378r) <sd378r@intl.att.com> | 2018-03-27 18:19:32 +0200 |
---|---|---|
committer | Determe, Sebastien (sd378r) <sd378r@intl.att.com> | 2018-03-27 18:22:54 +0200 |
commit | 540fff37e161d693e8f9168a3ddac1ff4866c33a (patch) | |
tree | bd373715f8ed763bfc5eb5599795263bd7d104c1 /src/main | |
parent | 3e84a919dbda602eaeb261425f0a69ec6bbd9c5f (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')
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()) { |