From 57ea28b4de97b23a52254e9632e32c26652ef67d Mon Sep 17 00:00:00 2001 From: sebdet Date: Thu, 20 Sep 2018 18:27:17 +0200 Subject: [PATCH] Add tests Add some tests and fix event for Submit action Issue-ID: CLAMP-217 Change-Id: I1882a35da110130529085fad5524e82a509cd7e1 Signed-off-by: sebdet --- .../java/org/onap/clamp/clds/model/CldsModel.java | 174 +++++----- .../org/onap/clamp/clds/service/CldsService.java | 70 ++-- .../org/onap/clamp/clds/it/CldsServiceItCase.java | 73 +++-- .../example/model-properties/tca_new/doc-text.yaml | 170 ++++++++++ .../model-properties/tca_new/model-properties.json | 359 +++++++++++++++++++++ .../example/model-properties/tca_new/tca-img.xml | 309 ++++++++++++++++++ .../model-properties/tca_new/tca-template.xml | 95 ++++++ 7 files changed, 1105 insertions(+), 145 deletions(-) create mode 100644 src/test/resources/example/model-properties/tca_new/doc-text.yaml create mode 100644 src/test/resources/example/model-properties/tca_new/model-properties.json create mode 100644 src/test/resources/example/model-properties/tca_new/tca-img.xml create mode 100644 src/test/resources/example/model-properties/tca_new/tca-template.xml diff --git a/src/main/java/org/onap/clamp/clds/model/CldsModel.java b/src/main/java/org/onap/clamp/clds/model/CldsModel.java index 55f4dfd6..d7228cfc 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsModel.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsModel.java @@ -18,7 +18,7 @@ * limitations under the License. * ============LICENSE_END============================================ * =================================================================== - * + * */ package org.onap.clamp.clds.model; @@ -45,13 +45,13 @@ public class CldsModel { private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsModel.class); private static final int UUID_LENGTH = 36; - private static final String STATUS_DESIGN = "DESIGN"; - private static final String STATUS_DISTRIBUTED = "DISTRIBUTED"; - private static final String STATUS_ACTIVE = "ACTIVE"; - private static final String STATUS_STOPPED = "STOPPED"; - private static final String STATUS_DELETING = "DELETING"; - private static final String STATUS_ERROR = "ERROR"; - private static final String STATUS_UNKNOWN = "UNKNOWN"; + public static final String STATUS_DESIGN = "DESIGN"; + public static final String STATUS_DISTRIBUTED = "DISTRIBUTED"; + public static final String STATUS_ACTIVE = "ACTIVE"; + public static final String STATUS_STOPPED = "STOPPED"; + public static final String STATUS_DELETING = "DELETING"; + public static final String STATUS_ERROR = "ERROR"; + public static final String STATUS_UNKNOWN = "UNKNOWN"; private String id; private String templateId; private String templateName; @@ -99,7 +99,7 @@ public class CldsModel { boolean canCall = false; /* Below checks the clds event is submit/resubmit/distribute */ if (event.isActionCd(CldsEvent.ACTION_SUBMIT) || event.isActionCd(CldsEvent.ACTION_RESUBMIT) - || event.isActionCd(CldsEvent.ACTION_DISTRIBUTE) || event.isActionCd(CldsEvent.ACTION_SUBMITDCAE)) { + || event.isActionCd(CldsEvent.ACTION_DISTRIBUTE) || event.isActionCd(CldsEvent.ACTION_SUBMITDCAE)) { canCall = true; } return canCall; @@ -125,22 +125,22 @@ public class CldsModel { } else if (event.isActionStateCd(CldsEvent.ACTION_STATE_ERROR)) { status = STATUS_ERROR; } else if (event.isActionAndStateCd(CldsEvent.ACTION_CREATE, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_SUBMIT, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_DELETE, CldsEvent.ACTION_STATE_RECEIVED) - || event.isActionAndStateCd(CldsEvent.ACTION_MODIFY, CldsEvent.ACTION_STATE_ANY)) { + || event.isActionAndStateCd(CldsEvent.ACTION_SUBMIT, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_DELETE, CldsEvent.ACTION_STATE_RECEIVED) + || event.isActionAndStateCd(CldsEvent.ACTION_MODIFY, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_DESIGN; } else if (event.isActionAndStateCd(CldsEvent.ACTION_DISTRIBUTE, CldsEvent.ACTION_STATE_RECEIVED) - || event.isActionAndStateCd(CldsEvent.ACTION_UNDEPLOY, CldsEvent.ACTION_STATE_RECEIVED)) { + || event.isActionAndStateCd(CldsEvent.ACTION_UNDEPLOY, CldsEvent.ACTION_STATE_RECEIVED)) { status = STATUS_DISTRIBUTED; } else if (event.isActionAndStateCd(CldsEvent.ACTION_DELETE, CldsEvent.ACTION_STATE_SENT)) { status = STATUS_DELETING; } else if (event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_RECEIVED) - || event.isActionAndStateCd(CldsEvent.ACTION_RESTART, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_ANY) - || event.isActionAndStateCd(CldsEvent.ACTION_SUBMITPOLICY, CldsEvent.ACTION_STATE_ANY)) { + || event.isActionAndStateCd(CldsEvent.ACTION_RESTART, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_STATE_ANY) + || event.isActionAndStateCd(CldsEvent.ACTION_SUBMITPOLICY, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_ACTIVE; } else if (event.isActionAndStateCd(CldsEvent.ACTION_STOP, CldsEvent.ACTION_STATE_ANY)) { status = STATUS_STOPPED; @@ -182,69 +182,69 @@ public class CldsModel { private void determinePermittedActionCd() { String actionCd = getCurrentActionCd(); switch (actionCd) { - case CldsEvent.ACTION_CREATE: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMIT, CldsEvent.ACTION_TEST, - CldsEvent.ACTION_DELETE); - if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, - CldsEvent.ACTION_TEST, CldsEvent.ACTION_DELETE); - } - break; - case CldsEvent.ACTION_MODIFY: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); - if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, - CldsEvent.ACTION_DELETE); - } - break; - case CldsEvent.ACTION_SUBMIT: - case CldsEvent.ACTION_RESUBMIT: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); - break; - case CldsEvent.ACTION_SUBMITDCAE: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); - break; - case CldsEvent.ACTION_SUBMITPOLICY: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); - break; - case CldsEvent.ACTION_DISTRIBUTE: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_RESUBMIT, - CldsEvent.ACTION_DELETE); - if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_SUBMITDCAE, - CldsEvent.ACTION_DELETE); - } - break; - case CldsEvent.ACTION_UNDEPLOY: + case CldsEvent.ACTION_CREATE: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMIT, CldsEvent.ACTION_TEST, + CldsEvent.ACTION_DELETE); + if (isSimplifiedModel()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, + CldsEvent.ACTION_TEST, CldsEvent.ACTION_DELETE); + } + break; + case CldsEvent.ACTION_MODIFY: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); + if (isSimplifiedModel()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_SUBMITPOLICY, + CldsEvent.ACTION_DELETE); + } + break; + case CldsEvent.ACTION_SUBMIT: + case CldsEvent.ACTION_RESUBMIT: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); + break; + case CldsEvent.ACTION_SUBMITDCAE: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); + break; + case CldsEvent.ACTION_SUBMITPOLICY: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); + break; + case CldsEvent.ACTION_DISTRIBUTE: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_RESUBMIT, + CldsEvent.ACTION_DELETE); + if (isSimplifiedModel()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_SUBMITDCAE, + CldsEvent.ACTION_DELETE); + } + break; + case CldsEvent.ACTION_UNDEPLOY: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_DEPLOY, + CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); + if (isSimplifiedModel()) { permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_DEPLOY, - CldsEvent.ACTION_RESUBMIT, CldsEvent.ACTION_DELETE); - if (isSimplifiedModel()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_DEPLOY, - CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); - } - break; - case CldsEvent.ACTION_DEPLOY: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_UNDEPLOY, - CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); - break; - case CldsEvent.ACTION_RESTART: - case CldsEvent.ACTION_UPDATE: - permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_UPDATE, - CldsEvent.ACTION_STOP, CldsEvent.ACTION_UNDEPLOY); - if (isPolicyOnly()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); - } - break; - case CldsEvent.ACTION_STOP: + CldsEvent.ACTION_SUBMITDCAE, CldsEvent.ACTION_DELETE); + } + break; + case CldsEvent.ACTION_DEPLOY: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_UNDEPLOY, + CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); + break; + case CldsEvent.ACTION_RESTART: + case CldsEvent.ACTION_UPDATE: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_DEPLOY, CldsEvent.ACTION_UPDATE, + CldsEvent.ACTION_STOP, CldsEvent.ACTION_UNDEPLOY); + if (isPolicyOnly()) { + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_STOP); + } + break; + case CldsEvent.ACTION_STOP: + permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_RESTART, + CldsEvent.ACTION_UNDEPLOY); + if (isPolicyOnly()) { permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_RESTART, - CldsEvent.ACTION_UNDEPLOY); - if (isPolicyOnly()) { - permittedActionCd = Arrays.asList(CldsEvent.ACTION_UPDATE, CldsEvent.ACTION_RESTART, - CldsEvent.ACTION_DELETE); - } - break; - default: - logger.warn("Invalid current actionCd: " + actionCd); + CldsEvent.ACTION_DELETE); + } + break; + default: + logger.warn("Invalid current actionCd: " + actionCd); } } @@ -289,8 +289,8 @@ public class CldsModel { determinePermittedActionCd(); if (!permittedActionCd.contains(requestedActionCd)) { throw new IllegalArgumentException( - "Invalid requestedActionCd: " + requestedActionCd + ". Given current actionCd: " - + getCurrentActionCd() + ", the permittedActionCd: " + permittedActionCd); + "Invalid requestedActionCd: " + requestedActionCd + ". Given current actionCd: " + + getCurrentActionCd() + ", the permittedActionCd: " + permittedActionCd); } } @@ -303,8 +303,8 @@ public class CldsModel { public static CldsModel createUsingControlName(String fullControlName) { if (fullControlName == null || fullControlName.length() < UUID_LENGTH) { throw new BadRequestException( - "closed loop id / control name length, " + (fullControlName != null ? fullControlName.length() : 0) - + ", less than the minimum of: " + UUID_LENGTH); + "closed loop id / control name length, " + (fullControlName != null ? fullControlName.length() : 0) + + ", less than the minimum of: " + UUID_LENGTH); } CldsModel model = new CldsModel(); model.setControlNamePrefix(fullControlName.substring(0, fullControlName.length() - UUID_LENGTH)); @@ -328,10 +328,10 @@ public class CldsModel { cldsModel = cldsDao.getModelByUuid(cldsModel.getControlNameUuid()); cldsModel.determineStatus(); if (dcaeEvent.getCldsActionCd().equals(CldsEvent.ACTION_UNDEPLOY) || (dcaeEvent.getCldsActionCd() - .equals(CldsEvent.ACTION_DEPLOY) - && (cldsModel.getStatus().equals(STATUS_DISTRIBUTED) || cldsModel.getStatus().equals(STATUS_DESIGN)))) { + .equals(CldsEvent.ACTION_DEPLOY) + && (cldsModel.getStatus().equals(STATUS_DISTRIBUTED) || cldsModel.getStatus().equals(STATUS_DESIGN)))) { CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), userid, dcaeEvent.getCldsActionCd(), - CldsEvent.ACTION_STATE_RECEIVED, null); + CldsEvent.ACTION_STATE_RECEIVED, null); } cldsDao.insModelInstance(cldsModel, dcaeEvent.getInstances()); return cldsModel; 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 243881f6..5e35b895 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -118,6 +118,7 @@ public class CldsService extends SecureServiceBase { @Autowired private HttpServletRequest request; + @Autowired public CldsService(CldsDao cldsDao, XslTransformer cldsBpmnTransformer, ClampProperties refProp, SdcCatalogServices sdcCatalogServices, DcaeDispatcherServices dcaeDispatcherServices, @@ -127,7 +128,7 @@ public class CldsService extends SecureServiceBase { @Value("${clamp.config.security.permission.type.cl.event:permission-type-cl-event}") String cldsPermissionTypeClEvent, @Value("${clamp.config.security.permission.type.filter.vf:permission-type-filter-vf}") String cldsPermissionTypeFilterVf, @Value("${clamp.config.security.permission.type.template:permission-type-template}") String cldsPermissionTypeTemplate, - @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") String cldsPermissionTypeTosca, + @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") String cldsPermissionTypeTosca, @Value("${clamp.config.security.permission.instance:dev}") String cldsPermissionInstance) { this.cldsDao = cldsDao; this.cldsBpmnTransformer = cldsBpmnTransformer; @@ -149,7 +150,7 @@ public class CldsService extends SecureServiceBase { "update"); permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, - "update"); + "update"); } /* @@ -222,7 +223,7 @@ public class CldsService extends SecureServiceBase { * @return image xml text - content of image given name */ public String getImageXml(String modelName) { - util.entering(request, "CldsService: GET model image"); + util.entering(request, "CldsService: GET model image"); Date startTime = new Date(); isAuthorized(permissionReadCl); logger.info("GET imageText for modelName={}", modelName); @@ -241,7 +242,7 @@ public class CldsService extends SecureServiceBase { * @return clds model - clds model for the given model name */ public CldsModel getModel(String modelName) { - util.entering(request, "CldsService: GET model"); + util.entering(request, "CldsService: GET model"); Date startTime = new Date(); isAuthorized(permissionReadCl); logger.debug("GET model for modelName={}", modelName); @@ -270,7 +271,7 @@ public class CldsService extends SecureServiceBase { * @param modelName */ public CldsModel putModel(String modelName, CldsModel cldsModel) { - util.entering(request, "CldsService: PUT model"); + util.entering(request, "CldsService: PUT model"); Date startTime = new Date(); isAuthorized(permissionUpdateCl); isAuthorizedForVf(cldsModel); @@ -339,9 +340,8 @@ public class CldsService extends SecureServiceBase { * @throws DecoderException * In case of issues with the Hex String decoding */ - public ResponseEntity putModelAndProcessAction(String action, - String modelName,String test, CldsModel model) - throws TransformerException, ParseException { + public ResponseEntity putModelAndProcessAction(String action, String modelName, String test, CldsModel model) + throws TransformerException, ParseException { util.entering(request, "CldsService: Process model action"); Date startTime = new Date(); CldsModel retrievedModel = null; @@ -364,7 +364,7 @@ public class CldsService extends SecureServiceBase { this.fillInCldsModel(model); // save model to db model.setName(modelName); - updateAndInsertNewEvent(modelName, model.getControlNamePrefix(), model.getEvent(), CldsEvent.ACTION_MODIFY); + updateAndInsertNewEvent(modelName, model.getControlNamePrefix(), model.getEvent(), CldsEvent.ACTION_SUBMIT); model.save(cldsDao, getUserId()); // get vars and format if necessary String prop = model.getPropText(); @@ -376,10 +376,10 @@ public class CldsService extends SecureServiceBase { // Flag indicates whether it is triggered by Validation Test button // from // UI - boolean isTest = Boolean.valueOf(test); + boolean isTest = Boolean.parseBoolean(test); if (!isTest) { String actionTestOverride = refProp.getStringValue("action.test.override"); - if (Boolean.valueOf(actionTestOverride)) { + if (Boolean.parseBoolean(actionTestOverride)) { logger.info("PUT actionTestOverride={}", actionTestOverride); logger.info("PUT override test indicator and setting it to true"); isTest = true; @@ -387,7 +387,7 @@ public class CldsService extends SecureServiceBase { } logger.info("PUT isTest={}", isTest); String insertTestEvent = refProp.getStringValue("action.insert.test.event"); - boolean isInsertTestEvent = Boolean.valueOf(insertTestEvent); + boolean isInsertTestEvent = Boolean.parseBoolean(insertTestEvent); logger.info("PUT isInsertTestEvent={}", isInsertTestEvent); // determine if requested action is permitted @@ -407,12 +407,14 @@ public class CldsService extends SecureServiceBase { retrievedModel = CldsModel.retrieve(cldsDao, modelName, false); } if (retrievedModel != null) { - if (!isTest && !errorCase && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) - || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT) - || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) { + if (!isTest && !errorCase + && (actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMIT) + || actionCd.equalsIgnoreCase(CldsEvent.ACTION_RESUBMIT) + || actionCd.equalsIgnoreCase(CldsEvent.ACTION_SUBMITDCAE))) { if (retrievedModel.getTemplateName().startsWith(CsarInstallerImpl.TEMPLATE_NAME_PREFIX)) { // SDC artifact case - logger.info("Skipping DCAE inventory call as closed loop has been created from SDC notification"); + logger + .info("Skipping DCAE inventory call as closed loop has been created from SDC notification"); DcaeEvent dcaeEvent = new DcaeEvent(); dcaeEvent.setArtifactName(retrievedModel.getControlName() + ".yml"); dcaeEvent.setEvent(DcaeEvent.EVENT_DISTRIBUTION); @@ -432,15 +434,19 @@ public class CldsService extends SecureServiceBase { auditLogger.info("Process model action completed"); } else { logger.error("CldsModel not found in database with modelName: " + modelName); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "CldsModel not found in database with modelName " + "modelName", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); - return new ResponseEntity("CldsModel not found in database with modelName: \" + modelName", HttpStatus.INTERNAL_SERVER_ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), + "CldsModel not found in database with modelName " + "modelName", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); + return new ResponseEntity("CldsModel not found in database with modelName: \" + modelName", + HttpStatus.INTERNAL_SERVER_ERROR); } } catch (Exception e) { errorCase = true; logger.error("Exception occured during putModelAndProcessAction", e); } if (errorCase) { - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "putModelAndProcessAction failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "putModelAndProcessAction failed", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); return new ResponseEntity<>(retrievedModel, HttpStatus.INTERNAL_SERVER_ERROR); } util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); @@ -467,7 +473,7 @@ public class CldsService extends SecureServiceBase { } // Flag indicates whether it is triggered by Validation Test button from // UI - boolean isTest = Boolean.valueOf(test); + boolean isTest = Boolean.parseBoolean(test); int instanceCount = 0; if (dcaeEvent.getInstances() != null) { instanceCount = dcaeEvent.getInstances().size(); @@ -540,9 +546,8 @@ public class CldsService extends SecureServiceBase { * @throws IOException * In case of issue to convert CldsServiceCache to InputStream */ - public String getSdcPropertiesByServiceUUIDForRefresh( - String serviceInvariantUUID, Boolean refresh) - throws GeneralSecurityException, DecoderException, IOException { + public String getSdcPropertiesByServiceUUIDForRefresh(String serviceInvariantUUID, Boolean refresh) + throws GeneralSecurityException, DecoderException, IOException { util.entering(request, "CldsService: GET sdc properties by uuid"); Date startTime = new Date(); CldsServiceData cldsServiceData = new CldsServiceData(); @@ -561,7 +566,8 @@ public class CldsService extends SecureServiceBase { // audit log LoggingUtils.setTimeContext(startTime, new Date()); auditLogger.info("GET sdc properties by uuid completed"); - util.exiting("200", "Get sdc properties by uuid success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); + util.exiting("200", "Get sdc properties by uuid success", Level.INFO, + ONAPLogConstants.ResponseStatus.COMPLETED); return sdcProperties; } @@ -774,7 +780,8 @@ public class CldsService extends SecureServiceBase { model.save(cldsDao, getUserId()); } else { logger.info("Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DeployModel failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DeployModel failed", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "Deploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); } @@ -787,7 +794,8 @@ public class CldsService extends SecureServiceBase { logger.error("Exception occured during deployModel", e); } if (errorCase) { - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DeployModel failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DeployModel failed", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); return new ResponseEntity<>(model, HttpStatus.INTERNAL_SERVER_ERROR); } util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); @@ -821,7 +829,8 @@ public class CldsService extends SecureServiceBase { model.save(cldsDao, getUserId()); } else { logger.info("Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "UndeployModel failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "UndeployModel failed", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "Undeploy model (" + modelName + ") failed...Operation Status is - " + operationStatus); } @@ -834,7 +843,8 @@ public class CldsService extends SecureServiceBase { logger.error("Exception occured during unDeployModel", e); } if (errorCase) { - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "UndeployModel failed", Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); + util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "UndeployModel failed", Level.INFO, + ONAPLogConstants.ResponseStatus.ERROR); return new ResponseEntity<>(model, HttpStatus.INTERNAL_SERVER_ERROR); } util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); @@ -879,7 +889,7 @@ public class CldsService extends SecureServiceBase { } // Created for the integration test - public void setLoggingUtil (LoggingUtils utilP) { - util = utilP; + public void setLoggingUtil(LoggingUtils utilP) { + util = utilP; } } \ No newline at end of file diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java index 695aa2d1..9cca936c 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java @@ -55,6 +55,7 @@ import org.onap.clamp.clds.model.CldsInfo; import org.onap.clamp.clds.model.CldsModel; import org.onap.clamp.clds.model.CldsServiceData; import org.onap.clamp.clds.model.CldsTemplate; +import org.onap.clamp.clds.model.DcaeEvent; import org.onap.clamp.clds.service.CldsService; import org.onap.clamp.clds.util.LoggingUtils; import org.onap.clamp.clds.util.ResourceFileUtil; @@ -85,22 +86,26 @@ public class CldsServiceItCase { private String bpmnText; private String imageText; private String bpmnPropText; + private String docText; + @Autowired private CldsDao cldsDao; private Authentication authentication; - private List authList = new LinkedList(); + private List authList = new LinkedList(); private LoggingUtils util; + /** * Setup the variable before the tests execution. * * @throws IOException - * In case of issues when opening the files + * In case of issues when opening the files */ @Before public void setupBefore() throws IOException { - bpmnText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-template.xml"); - imageText = ResourceFileUtil.getResourceAsString("example/dao/image-template.xml"); - bpmnPropText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-prop.json"); + bpmnText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/tca-template.xml"); + imageText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/tca-img.xml"); + bpmnPropText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/model-properties.json"); + docText = ResourceFileUtil.getResourceAsString("example/model-properties/tca_new/doc-text.yaml"); authList.add(new SimpleGrantedAuthority("permission-type-cl-manage|dev|*")); authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read")); @@ -108,7 +113,8 @@ public class CldsServiceItCase { authList.add(new SimpleGrantedAuthority("permission-type-template|dev|read")); authList.add(new SimpleGrantedAuthority("permission-type-template|dev|update")); authList.add(new SimpleGrantedAuthority("permission-type-filter-vf|dev|*")); - authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList); + authList.add(new SimpleGrantedAuthority("permission-type-cl-event|dev|*")); + authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList); util = Mockito.mock(LoggingUtils.class); Mockito.doNothing().when(util).entering(Matchers.any(HttpServletRequest.class), Matchers.any(String.class)); @@ -179,52 +185,63 @@ public class CldsServiceItCase { newModel.setControlNamePrefix("ClosedLoop-"); newModel.setTemplateName(randomNameTemplate); newModel.setTemplateId(newTemplate.getId()); - newModel.setDocText(newTemplate.getPropText()); + newModel.setDocText(docText); // Test the PutModel method cldsService.putModel(randomNameModel, newModel); // Verify whether it has been added properly or not assertNotNull(cldsDao.getModel(randomNameModel)); - CldsModel model= cldsService.getModel(randomNameModel); + CldsModel model = cldsService.getModel(randomNameModel); // Verify with GetModel - assertEquals(model.getTemplateName(),randomNameTemplate); - assertEquals(model.getName(),randomNameModel); + assertEquals(model.getTemplateName(), randomNameTemplate); + assertEquals(model.getName(), randomNameModel); assertTrue(cldsService.getModelNames().size() >= 1); // Should fail - ResponseEntity responseEntity = cldsService.putModelAndProcessAction(CldsEvent.ACTION_SUBMIT, randomNameModel, "true", model); - assertTrue(responseEntity.getStatusCode().equals(HttpStatus.INTERNAL_SERVER_ERROR)); - model=(CldsModel)responseEntity.getBody(); - assertNull(model); + ResponseEntity responseEntity = cldsService.putModelAndProcessAction(CldsEvent.ACTION_SUBMIT, + randomNameModel, "false", cldsService.getModel(randomNameModel)); + assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK)); + assertNotNull(responseEntity.getBody()); + assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(((CldsModel) responseEntity.getBody()).getStatus())); + assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(cldsService.getModel(randomNameModel).getStatus())); - responseEntity=cldsService.deployModel(randomNameModel, cldsService.getModel(randomNameModel)); + responseEntity = cldsService.deployModel(randomNameModel, cldsService.getModel(randomNameModel)); assertNotNull(responseEntity); - assertNotNull(responseEntity.getStatusCode()); - model=(CldsModel)responseEntity.getBody(); - assertNotNull(model); + assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK)); + assertNotNull(responseEntity.getBody()); + assertTrue(CldsModel.STATUS_ACTIVE.equals(((CldsModel) responseEntity.getBody()).getStatus())); + assertTrue(CldsModel.STATUS_ACTIVE.equals(cldsService.getModel(randomNameModel).getStatus())); - responseEntity=cldsService.unDeployModel(randomNameModel, cldsService.getModel(randomNameModel)); + responseEntity = cldsService.unDeployModel(randomNameModel, cldsService.getModel(randomNameModel)); assertNotNull(responseEntity); - assertNotNull(responseEntity.getStatusCode()); - model=(CldsModel)responseEntity.getBody(); - assertNotNull(model); + assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK)); + assertNotNull(responseEntity.getBody()); + assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(((CldsModel) responseEntity.getBody()).getStatus())); + assertTrue(CldsModel.STATUS_DISTRIBUTED.equals(cldsService.getModel(randomNameModel).getStatus())); + + DcaeEvent dcaeEvent = new DcaeEvent(); + dcaeEvent.setArtifactName("ClosedLoop_with-enough-characters_TestArtifact.yml"); + dcaeEvent.setEvent(DcaeEvent.EVENT_CREATED); + dcaeEvent.setResourceUUID("1"); + dcaeEvent.setServiceUUID("2"); + assertEquals(cldsService.postDcaeEvent("false", dcaeEvent), + "event=created serviceUUID=2 resourceUUID=1 artifactName=ClosedLoop_with-enough-characters_TestArtifact.yml instance count=0 isTest=false"); } @Test public void testGetSdcProperties() throws IOException { JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-global.json"), cldsService.getSdcProperties(), - true); + ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-global.json"), + cldsService.getSdcProperties(), true); } @Test public void testGetSdcServices() throws GeneralSecurityException, DecoderException, JSONException, IOException { String result = cldsService.getSdcServices(); JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("example/sdc/expected-result/all-sdc-services.json"), result, - true); + ResourceFileUtil.getResourceAsString("example/sdc/expected-result/all-sdc-services.json"), result, true); } @Test @@ -238,8 +255,8 @@ public class CldsServiceItCase { String result = cldsService.getSdcPropertiesByServiceUUIDForRefresh("4cc5b45a-1f63-4194-8100-cd8e14248c92", false); JSONAssert.assertEquals( - ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-4cc5b45a.json"), - result, true); + ResourceFileUtil.getResourceAsString("example/sdc/expected-result/sdc-properties-4cc5b45a.json"), result, + true); // Now test the Cache effect CldsServiceData cldsServiceDataCache = cldsDao.getCldsServiceCache("c95b0e7c-c1f0-4287-9928-7964c5377a46"); // Should not be there, so should be null diff --git a/src/test/resources/example/model-properties/tca_new/doc-text.yaml b/src/test/resources/example/model-properties/tca_new/doc-text.yaml new file mode 100644 index 00000000..947cfdb1 --- /dev/null +++ b/src/test/resources/example/model-properties/tca_new/doc-text.yaml @@ -0,0 +1,170 @@ +{"global":[{"name":"service","value":["tosca_definitions_version: cloudify_dsl_1_3 +imports: + - "http://www.getcloudify.org/spec/cloudify/3.4/types.yaml" + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dockerplugin/3.2.0/dockerplugin_types.yaml + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/relationshipplugin/1.0.0/relationshipplugin_types.yaml + - https://nexus.onap.org/service/local/repositories/raw/content/org.onap.dcaegen2.platform.plugins/R2/dcaepolicyplugin/2.3.0/dcaepolicyplugin_types.yaml + +inputs: + dh_override: + type: string + default: "component_dockerhost" + dh_location_id: + type: string + default: "zone1" + aaiEnrichmentHost: + type: string + default: "none" + aaiEnrichmentPort: + type: string + default: 8443 + enableAAIEnrichment: + type: string + default: false + dmaap_host: + type: string + default: dmaap.onap-message-router + dmaap_port: + type: string + default: 3904 + enableRedisCaching: + type: string + default: false + redisHosts: + type: string + tag_version: + type: string + default: "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0" + consul_host: + type: string + default: consul-server.onap-consul + consul_port: + type: string + default: "8500" + cbs_host: + type: string + default: "config-binding-service.dcae" + cbs_port: + type: string + default: "10000" + policy_id: + type: string + default: "none" + external_port: + type: string + description: "Port for CDAPgui to be exposed" + default: "32010" + +node_templates: + docker_service_host: + properties: + docker_host_override: + get_input: dh_override + location_id: + get_input: dh_location_id + type: dcae.nodes.SelectedDockerHost + tca_docker: + relationships: + - type: dcae.relationships.component_contained_in + target: docker_service_host + - target: tca_policy + type: cloudify.relationships.depends_on + type: dcae.nodes.DockerContainerForComponentsUsingDmaap + properties: + application_config: + app_config: + appDescription: DCAE Analytics Threshold Crossing Alert Application + appName: dcae-tca + tcaAlertsAbatementTableName: TCAAlertsAbatementTable + tcaAlertsAbatementTableTTLSeconds: '1728000' + tcaSubscriberOutputStreamName: TCASubscriberOutputStream + tcaVESAlertsTableName: TCAVESAlertsTable + tcaVESAlertsTableTTLSeconds: '1728000' + tcaVESMessageStatusTableName: TCAVESMessageStatusTable + tcaVESMessageStatusTableTTLSeconds: '86400' + thresholdCalculatorFlowletInstances: '2' + app_preferences: + aaiEnrichmentHost: + get_input: aaiEnrichmentHost + aaiEnrichmentIgnoreSSLCertificateErrors: 'true' + aaiEnrichmentPortNumber: '8443' + aaiEnrichmentProtocol: https + aaiEnrichmentUserName: DCAE + aaiEnrichmentUserPassword: DCAE + aaiVMEnrichmentAPIPath: /aai/v11/search/nodes-query + aaiVNFEnrichmentAPIPath: /aai/v11/network/generic-vnfs/generic-vnf + enableAAIEnrichment: + get_input: enableAAIEnrichment + enableRedisCaching: + get_input: enableRedisCaching + redisHosts: + get_input: redisHosts + enableAlertCEFFormat: 'false' + publisherContentType: application/json + publisherHostName: + get_input: dmaap_host + publisherHostPort: + get_input: dmaap_port + publisherMaxBatchSize: '1' + publisherMaxRecoveryQueueSize: '100000' + publisherPollingInterval: '20000' + publisherProtocol: http + publisherTopicName: unauthenticated.DCAE_CL_OUTPUT + subscriberConsumerGroup: OpenDCAE-c12 + subscriberConsumerId: c12 + subscriberContentType: application/json + subscriberHostName: + get_input: dmaap_host + subscriberHostPort: + get_input: dmaap_port + subscriberMessageLimit: '-1' + subscriberPollingInterval: '30000' + subscriberProtocol: http + subscriberTimeoutMS: '-1' + subscriberTopicName: unauthenticated.SEC_MEASUREMENT_OUTPUT + tca_policy_default: '{"domain":"measurementsForVfScaling","metricsPerEventName":[{"eventName":"vFirewallBroadcastPackets","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"LESS_OR_EQUAL","severity":"MAJOR","closedLoopEventStatus":"ONSET"},{"closedLoopControlName":"ControlLoop-vFirewall-d0a1dfc6-94f5-4fd4-a5b5-4630b438850a","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":700,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"vLoadBalancer","controlLoopSchemaType":"VM","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vDNS-6f37f56d-a87d-4b85-b6a9-cc953cf779b3","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta","thresholdValue":300,"direction":"GREATER_OR_EQUAL","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]},{"eventName":"Measurement_vGMUX","controlLoopSchemaType":"VNF","policyScope":"DCAE","policyName":"DCAE.Config_tca-hi-lo","policyVersion":"v0.0.1","thresholds":[{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"EQUAL","severity":"MAJOR","closedLoopEventStatus":"ABATED"},{"closedLoopControlName":"ControlLoop-vCPE-48f0c2c3-a172-4192-9ae3-052274181b6e","version":"1.0.2","fieldPath":"$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value","thresholdValue":0,"direction":"GREATER","severity":"CRITICAL","closedLoopEventStatus":"ONSET"}]}]}' + service_component_type: dcaegen2-analytics_tca + docker_config: + healthcheck: + endpoint: /healthcheck + interval: 15s + timeout: 1s + type: http + image: + get_input: tag_version + interfaces: + cloudify.interfaces.lifecycle: + start: + inputs: + envs: + DMAAPHOST: + { get_input: dmaap_host } + DMAAPPORT: + { get_input: dmaap_port } + DMAAPPUBTOPIC: "unauthenticated.DCAE_CL_OUTPUT" + DMAAPSUBTOPIC: "unauthenticated.SEC_MEASUREMENT_OUTPUT" + AAIHOST: + { get_input: aaiEnrichmentHost } + AAIPORT: + { get_input: aaiEnrichmentPort } + CONSUL_HOST: + { get_input: consul_host } + CONSUL_PORT: + { get_input: consul_port } + CBS_HOST: + { get_input: cbs_host } + CBS_PORT: + { get_input: cbs_port } + CONFIG_BINDING_SERVICE: "config_binding_service" + ports: + - concat: ["11011:", { get_input: external_port }] + stop: + inputs: + cleanup_image: true + tca_policy: + type: dcae.nodes.policy + properties: + policy_id: + get_input: policy_id + +"]}]} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/model-properties.json b/src/test/resources/example/model-properties/tca_new/model-properties.json new file mode 100644 index 00000000..c4299fa5 --- /dev/null +++ b/src/test/resources/example/model-properties/tca_new/model-properties.json @@ -0,0 +1,359 @@ +{ + "global": [ + { + "name": "service", + "value": [ + "4cc5b45a-1f63-4194-8100-cd8e14248c92" + ] + }, + { + "name": "vf", + "value": [ + "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad" + ] + }, + { + "name": "actionSet", + "value": [ + "vnfRecipe" + ] + }, + { + "name": "location", + "value": [ + "DC1" + ] + }, + { + "name": "deployParameters", + "value": { + "dh_override": "component_dockerhost", + "dh_location_id": "zone1", + "aaiEnrichmentHost": "none", + "aaiEnrichmentPort": 8443, + "enableAAIEnrichment": false, + "dmaap_host": "dmaap.onap-message-router", + "dmaap_port": 3904, + "enableRedisCaching": false, + "redisHosts": "", + "tag_version": "nexus3.onap.org:10001/onap//onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.0.0", + "consul_host": "consul-server.onap-consul", + "consul_port": "8500", + "cbs_host": "config-binding-service.dcae", + "cbs_port": "10000", + "external_port": "32010", + "policy_id": "AUTO_GENERATED_POLICY_ID_AT_SUBMIT" + } + } + ], + "Policy_12lup3h": { + "policy1": [ + { + "name": "pname", + "value": "policy1" + }, + { + "name": "pid", + "value": "0" + }, + { + "name": "timeout", + "value": "345" + }, + { + "policyConfigurations": [ + [ + { + "name": "recipe", + "value": [ + "restart" + ] + }, + { + "name": "maxRetries", + "value": [ + "3" + ] + }, + { + "name": "retryTimeLimit", + "value": [ + "180" + ] + }, + { + "name": "_id", + "value": [ + "6TtHGPq" + ] + }, + { + "name": "parentPolicy", + "value": [ + "" + ] + }, + { + "name": "actor", + "value": [ + "APPC" + ] + }, + { + "name": "recipeInput", + "value": [ + "" + ] + }, + { + "name": "recipeLevel", + "value": [ + "VM" + ] + }, + { + "name": "targetResourceId", + "value": [ + "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" + ] + }, + { + "name": "targetResourceIdOther", + "value": [ + "" + ] + }, + { + "name": "enableGuardPolicy", + "value": [ + "on" + ] + }, + { + "name": "guardPolicyType", + "value": [ + "FrequencyLimiter" + ] + }, + { + "name": "guardTargets", + "value": [ + ".*" + ] + }, + { + "name": "minGuard", + "value": [ + "1" + ] + }, + { + "name": "maxGuard", + "value": [ + "1" + ] + }, + { + "name": "limitGuard", + "value": [ + "1" + ] + }, + { + "name": "timeUnitsGuard", + "value": [ + "minute" + ] + }, + { + "name": "timeWindowGuard", + "value": [ + "10" + ] + }, + { + "name": "guardActiveStart", + "value": [ + "00:00:01-05:00" + ] + }, + { + "name": "guardActiveEnd", + "value": [ + "00:00:00-05:00" + ] + } + ], + [ + { + "name": "recipe", + "value": [ + "rebuild" + ] + }, + { + "name": "maxRetries", + "value": [ + "3" + ] + }, + { + "name": "retryTimeLimit", + "value": [ + "180" + ] + }, + { + "name": "_id", + "value": [ + "aulXWRT" + ] + }, + { + "name": "parentPolicy", + "value": [ + "6TtHGPq" + ] + }, + { + "name": "parentPolicyConditions", + "value": [ + "Failure" + ] + }, + { + "name": "actor", + "value": [ + "APPC" + ] + }, + { + "name": "recipeInput", + "value": [ + "" + ] + }, + { + "name": "recipeLevel", + "value": [ + "VM" + ] + }, + { + "name": "targetResourceId", + "value": [ + "07e266fc-49ab-4cd7-8378-ca4676f1b9ec" + ] + }, + { + "name": "targetResourceIdOther", + "value": [ + "" + ] + }, + { + "name": "guardPolicyType", + "value": [ + "MinMax" + ] + }, + { + "name": "guardTargets", + "value": [ + ".*" + ] + }, + { + "name": "minGuard", + "value": [ + "1" + ] + }, + { + "name": "maxGuard", + "value": [ + "1" + ] + }, + { + "name": "limitGuard", + "value": [ + "1" + ] + }, + { + "name": "timeUnitsGuard", + "value": [ + "minute" + ] + }, + { + "name": "timeWindowGuard", + "value": [ + "10" + ] + }, + { + "name": "guardActiveStart", + "value": [ + "00:00:01-05:00" + ] + }, + { + "name": "guardActiveEnd", + "value": [ + "00:00:00-05:00" + ] + } + ] + ] + } + ] + }, + "TCA_1d13unw": { + "tca1": [ + { + "name": "tname", + "value": "tca1" + }, + { + "name": "tuuid", + "value": "7f14fe1f-68ac-t628-8fff-7f1de86f7038" + }, + { + "name": "tcaPol", + "value": "policy1" + }, + { + "name": "eventName", + "value": "vLoadBalancer" + }, + { + "name": "controlLoopSchemaType", + "value": "VM" + }, + { + "name": "tcaPolId", + "value": "0" + }, + { + "serviceConfigurations": [ + [ + "$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[0].value", + "GREATER", + "10", + "ONSET", + "undefined" + ], + [ + "$.event.measurementsForVfScalingFields.vNicUsageArray[*].receivedTotalPacketsDelta", + "GREATER_OR_EQUAL", + "20", + "ABATED", + "undefined" + ] + ] + } + ] + } +} \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/tca-img.xml b/src/test/resources/example/model-properties/tca_new/tca-img.xml new file mode 100644 index 00000000..a2ec5af2 --- /dev/null +++ b/src/test/resources/example/model-properties/tca_new/tca-img.xml @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + V + + + E + + + S + + + VesCollector + + + + + + + + + + + + + TCA + + + + + + + + + + + + + Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/example/model-properties/tca_new/tca-template.xml b/src/test/resources/example/model-properties/tca_new/tca-template.xml new file mode 100644 index 00000000..cc942ef9 --- /dev/null +++ b/src/test/resources/example/model-properties/tca_new/tca-template.xml @@ -0,0 +1,95 @@ + + + + + + SequenceFlow_1ahk7jg + + + SequenceFlow_1ahk7jg + SequenceFlow_18ahat1 + + + SequenceFlow_18ahat1 + SequenceFlow_1mo9gxb + + + SequenceFlow_1mo9gxb + SequenceFlow_1dgtrrq + + + SequenceFlow_1dgtrrq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.16.6