diff options
Diffstat (limited to 'src')
22 files changed, 302 insertions, 5453 deletions
diff --git a/src/main/java/org/onap/clamp/authorization/AuthorizationController.java b/src/main/java/org/onap/clamp/authorization/AuthorizationController.java index 2e43495b..f9e618c8 100644 --- a/src/main/java/org/onap/clamp/authorization/AuthorizationController.java +++ b/src/main/java/org/onap/clamp/authorization/AuthorizationController.java @@ -44,7 +44,7 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Component; /** - * Create CLDS Event. + * Verify user has right permissions. */ @Component public class AuthorizationController { diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java deleted file mode 100644 index bee0d4c0..00000000 --- a/src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java +++ /dev/null @@ -1,113 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * 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============================================ - * * Modifications copyright (c) 2019 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.clds.config.spring; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.onap.clamp.clds.config.ClampProperties; -import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration; -import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; -import org.onap.clamp.clds.sdc.controller.SdcSingleController; -import org.onap.clamp.clds.sdc.controller.SdcSingleControllerStatus; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.scheduling.annotation.Scheduled; - -@Configuration -@ComponentScan(basePackages = "org.onap.clamp.clds") -@Profile("clamp-sdc-controller") -public class CldsSdcControllerConfiguration { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcControllerConfiguration.class); - private List<SdcSingleController> sdcControllersList = new ArrayList<>(); - private final ClampProperties clampProp; - private final CsarInstaller csarInstaller; - - public CldsSdcControllerConfiguration(ClampProperties clampProp, @Qualifier("oldModelInstaller") CsarInstaller csarInstaller) { - this.clampProp = clampProp; - this.csarInstaller = csarInstaller; - } - - /** - * Loads SDC controllers configuration. - */ - @PostConstruct - public void loadSdcControllers() { - SdcControllersConfiguration sdcControllersConfig = getSdcControllersConfiguration(); - sdcControllersConfig.getAllDefinedControllers().forEach((k, v) -> { - logger.info("Creating controller instance:" + k); - SdcSingleController sdcController = new SdcSingleController(clampProp, csarInstaller, v, null); - sdcControllersList.add(sdcController); - }); - } - - /** - * Checks whether all SDC controllers defined are up and running. - */ - @Scheduled(fixedRate = 120000) - public void checkAllSdcControllers() { - logger.info("Checking that all SDC Controllers defined are up and running"); - for (SdcSingleController controller : sdcControllersList) { - try { - if (SdcSingleControllerStatus.STOPPED.equals(controller.getControllerStatus())) { - controller.initSdc(); - } - } catch (SdcControllerException e) { - logger.error("Exception caught when booting sdc controller", e); - } - } - logger.info("SDC Controllers check completed"); - } - - /** - * Closes all SDC Controller and the SDC Client. - */ - @PreDestroy - public void killSdcControllers() { - sdcControllersList.forEach(e -> { - try { - e.closeSdc(); - } catch (SdcControllerException e1) { - logger.error("Exception caught when stopping sdc controller", e1); - } - }); - } - - @Bean(name = "sdcControllersConfiguration") - public SdcControllersConfiguration getSdcControllersConfiguration() { - return new SdcControllersConfiguration(); - } -}
\ No newline at end of file diff --git a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java index 8b8ee932..b4794c94 100644 --- a/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java @@ -25,10 +25,13 @@ package org.onap.clamp.clds.config.spring; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; + import java.util.ArrayList; import java.util.List; + import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; + import org.onap.clamp.clds.config.ClampProperties; import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration; import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException; @@ -44,7 +47,7 @@ import org.springframework.context.annotation.Profile; import org.springframework.scheduling.annotation.Scheduled; @Configuration -@ComponentScan(basePackages = {"org.onap.clamp.loop", "org.onap.clamp.clds.config"}) +@ComponentScan(basePackages = { "org.onap.clamp.loop", "org.onap.clamp.clds.config" }) @Profile("clamp-sdc-controller-new") public class SdcControllerConfiguration { @@ -54,7 +57,8 @@ public class SdcControllerConfiguration { private final CsarInstaller csarInstaller; @Autowired - public SdcControllerConfiguration(ClampProperties clampProp, @Qualifier("loopInstaller") CsarInstaller csarInstaller) { + public SdcControllerConfiguration(ClampProperties clampProp, + @Qualifier("loopInstaller") CsarInstaller csarInstaller) { this.clampProp = clampProp; this.csarInstaller = csarInstaller; } 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 16a6a748..91ddfc48 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java @@ -42,7 +42,6 @@ import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; import org.onap.clamp.clds.model.CldsModelInstance; import org.onap.clamp.clds.model.CldsModelProp; -import org.onap.clamp.clds.model.CldsMonitoringDetails; import org.onap.clamp.clds.model.CldsTemplate; import org.onap.clamp.clds.model.CldsToscaModel; import org.onap.clamp.clds.model.ValueItem; @@ -95,8 +94,7 @@ public class CldsDao { /** * When dataSource is provided, instantiate spring jdbc objects. * - * @param dataSource - * the data source + * @param dataSource the data source */ public void setDataSource(DataSource dataSource) { this.jdbcTemplateObject = new JdbcTemplate(dataSource); @@ -112,7 +110,7 @@ public class CldsDao { this.procDeleteModel = new SimpleJdbcCall(dataSource).withProcedureName("del_model"); this.procInsertToscaModel = new SimpleJdbcCall(dataSource).withProcedureName("set_tosca_model"); this.procInsertNewToscaModelVersion = new SimpleJdbcCall(dataSource) - .withProcedureName("set_new_tosca_model_version"); + .withProcedureName("set_new_tosca_model_version"); this.procInsertDictionary = new SimpleJdbcCall(dataSource).withProcedureName("set_dictionary"); this.procInsertDictionaryElement = new SimpleJdbcCall(dataSource).withProcedureName("set_dictionary_elements"); } @@ -120,8 +118,7 @@ public class CldsDao { /** * Get a model from the database given the model name. * - * @param modelName - * the model name + * @param modelName the model name * @return the model */ public CldsModel getModel(String modelName) { @@ -133,7 +130,7 @@ public class CldsDao { CldsModel model = new CldsModel(); model.setName(modelName); SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName) - .addValue(V_CONTROL_NAME_UUID, controlNameUuid); + .addValue(V_CONTROL_NAME_UUID, controlNameUuid); Map<String, Object> out = logSqlExecution(procGetModel, in); populateModelProperties(model, out); return model; @@ -142,8 +139,7 @@ public class CldsDao { /** * Get a model from the database given the controlNameUuid. * - * @param controlNameUuid - * the control name uuid + * @param controlNameUuid the control name uuid * @return the model by uuid */ public CldsModel getModelByUuid(String controlNameUuid) { @@ -153,8 +149,7 @@ public class CldsDao { /** * Get a model and template information from the database given the model name. * - * @param modelName - * the model name + * @param modelName the model name * @return model model template */ @@ -186,21 +181,19 @@ public class CldsDao { * Update model in the database using parameter values and return updated model * object. * - * @param model - * the model - * @param userid - * the userid + * @param model the model + * @param userid the userid * @return model */ public CldsModel setModel(CldsModel model, String userid) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", model.getName()) - .addValue("v_template_id", model.getTemplateId()).addValue("v_user_id", userid) - .addValue("v_model_prop_text", model.getPropText()) - .addValue("v_model_blueprint_text", model.getBlueprintText()) - .addValue("v_service_type_id", model.getTypeId()).addValue("v_deployment_id", model.getDeploymentId()) - .addValue("v_deployment_status_url", model.getDeploymentStatusUrl()) - .addValue(V_CONTROL_NAME_PREFIX, model.getControlNamePrefix()) - .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()); + .addValue("v_template_id", model.getTemplateId()).addValue("v_user_id", userid) + .addValue("v_model_prop_text", model.getPropText()) + .addValue("v_model_blueprint_text", model.getBlueprintText()) + .addValue("v_service_type_id", model.getTypeId()).addValue("v_deployment_id", model.getDeploymentId()) + .addValue("v_deployment_status_url", model.getDeploymentStatusUrl()) + .addValue(V_CONTROL_NAME_PREFIX, model.getControlNamePrefix()) + .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()); Map<String, Object> out = logSqlExecution(procSetModel, in); model.setControlNamePrefix((String) out.get(V_CONTROL_NAME_PREFIX)); model.setControlNameUuid((String) out.get(V_CONTROL_NAME_UUID)); @@ -213,10 +206,8 @@ public class CldsDao { * Inserts new modelInstance in the database using parameter values and return * updated model object. * - * @param model - * the model - * @param modelInstancesList - * the model instances list + * @param model the model + * @param modelInstancesList the model instances list */ public void insModelInstance(CldsModel model, List<CldsModelInstance> modelInstancesList) { // Delete all existing model instances for given controlNameUUID @@ -230,9 +221,9 @@ public class CldsDao { logger.debug("v_vm_name={}", currModelInstance.getVmName()); logger.debug("v_location={}", currModelInstance.getLocation()); SqlParameterSource in = new MapSqlParameterSource() - .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()) - .addValue("v_vm_name", currModelInstance.getVmName()) - .addValue("v_location", currModelInstance.getLocation()); + .addValue(V_CONTROL_NAME_UUID, model.getControlNameUuid()) + .addValue("v_vm_name", currModelInstance.getVmName()) + .addValue("v_location", currModelInstance.getLocation()); Map<String, Object> out = logSqlExecution(procInsModelInstance, in); model.setId((String) (out.get("v_model_id"))); CldsModelInstance modelInstance = new CldsModelInstance(); @@ -248,23 +239,19 @@ public class CldsDao { * Insert an event in the database - require either modelName or * controlNamePrefix/controlNameUuid. * - * @param modelName - * the model name - * @param controlNamePrefix - * the control name prefix - * @param controlNameUuid - * the control name uuid - * @param cldsEvent - * the clds event + * @param modelName the model name + * @param controlNamePrefix the control name prefix + * @param controlNameUuid the control name uuid + * @param cldsEvent the clds event * @return clds event */ public CldsEvent insEvent(String modelName, String controlNamePrefix, String controlNameUuid, CldsEvent cldsEvent) { CldsEvent event = new CldsEvent(); SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName) - .addValue(V_CONTROL_NAME_PREFIX, controlNamePrefix).addValue(V_CONTROL_NAME_UUID, controlNameUuid) - .addValue("v_user_id", cldsEvent.getUserid()).addValue("v_action_cd", cldsEvent.getActionCd()) - .addValue("v_action_state_cd", cldsEvent.getActionStateCd()) - .addValue("v_process_instance_id", cldsEvent.getProcessInstanceId()); + .addValue(V_CONTROL_NAME_PREFIX, controlNamePrefix).addValue(V_CONTROL_NAME_UUID, controlNameUuid) + .addValue("v_user_id", cldsEvent.getUserid()).addValue("v_action_cd", cldsEvent.getActionCd()) + .addValue("v_action_state_cd", cldsEvent.getActionStateCd()) + .addValue("v_process_instance_id", cldsEvent.getProcessInstanceId()); Map<String, Object> out = logSqlExecution(procInsEvent, in); event.setId((String) (out.get("v_event_id"))); return event; @@ -279,14 +266,12 @@ public class CldsDao { /** * Update event with process instance id. * - * @param eventId - * the event id - * @param processInstanceId - * the process instance id + * @param eventId the event id + * @param processInstanceId the process instance id */ public void updEvent(String eventId, String processInstanceId) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_event_id", eventId) - .addValue("v_process_instance_id", processInstanceId); + .addValue("v_process_instance_id", processInstanceId); logSqlExecution(procUpdEvent, in); } @@ -304,16 +289,14 @@ public class CldsDao { * Update template in the database using parameter values and return updated * template object. * - * @param template - * the template - * @param userid - * the userid + * @param template the template + * @param userid the userid */ public void setTemplate(CldsTemplate template, String userid) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_template_name", template.getName()) - .addValue("v_user_id", userid).addValue("v_template_bpmn_text", template.getBpmnText()) - .addValue("v_template_image_text", template.getImageText()) - .addValue("v_template_doc_text", template.getPropText()); + .addValue("v_user_id", userid).addValue("v_template_bpmn_text", template.getBpmnText()) + .addValue("v_template_image_text", template.getImageText()) + .addValue("v_template_doc_text", template.getPropText()); // properties to setup the template is return from the logSqlExecution method setTemplateBaseProp(template, logSqlExecution(procSetTemplate, in)); @@ -332,8 +315,7 @@ public class CldsDao { /** * Get a template from the database given the model name. * - * @param templateName - * the template name + * @param templateName the template name * @return model template */ public CldsTemplate getTemplate(String templateName) { @@ -354,10 +336,8 @@ public class CldsDao { /** * Helper method to setup the base template properties. * - * @param template - * the template - * @param prop - * collection with the properties + * @param template the template + * @param prop collection with the properties */ private void setTemplateBaseProp(CldsTemplate template, Map prop) { template.setId((String) prop.get("v_template_id")); @@ -393,8 +373,8 @@ public class CldsDao { public List<CldsModelProp> getDeployedModelProperties() { List<CldsModelProp> cldsModelPropList = new ArrayList<>(); 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'"; + + "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) { @@ -409,46 +389,9 @@ public class CldsDao { } /** - * Method to get deployed/active models with model properties. - * - * @return list of CLDS-Monitoring-Details: CLOSELOOP_NAME | Close loop name - * used in the CLDS application (prefix: ClosedLoop- + unique ClosedLoop - * ID) MODEL_NAME | Model Name in CLDS application SERVICE_TYPE_ID | - * TypeId returned from the DCAE application when the ClosedLoop is - * submitted (DCAEServiceTypeRequest generated in DCAE application). - * DEPLOYMENT_ID | Id generated when the ClosedLoop is deployed in DCAE. - * TEMPLATE_NAME | Template used to generate the ClosedLoop model. - * ACTION_CD | Current state of the ClosedLoop in CLDS application. - */ - public List<CldsMonitoringDetails> getCldsMonitoringDetails() { - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); - List<CldsMonitoringDetails> cldsMonitoringDetailsList = new ArrayList<>(); - String modelsSql = "SELECT CONCAT(M.CONTROL_NAME_PREFIX, M.CONTROL_NAME_UUID) AS CLOSELOOP_NAME , " - + "M.MODEL_NAME, M.SERVICE_TYPE_ID, M.DEPLOYMENT_ID, T.TEMPLATE_NAME, E.ACTION_CD, E.USER_ID, E.TIMESTAMP " - + "FROM MODEL M, TEMPLATE T, EVENT E " + "WHERE M.TEMPLATE_ID = T.TEMPLATE_ID AND M.EVENT_ID = E.EVENT_ID " - + "ORDER BY ACTION_CD"; - List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(modelsSql); - CldsMonitoringDetails cldsMonitoringDetails = null; - for (Map<String, Object> row : rows) { - cldsMonitoringDetails = new CldsMonitoringDetails(); - cldsMonitoringDetails.setCloseloopName((String) row.get("CLOSELOOP_NAME")); - cldsMonitoringDetails.setModelName((String) row.get("MODEL_NAME")); - cldsMonitoringDetails.setServiceTypeId((String) row.get("SERVICE_TYPE_ID")); - cldsMonitoringDetails.setDeploymentId((String) row.get("DEPLOYMENT_ID")); - cldsMonitoringDetails.setTemplateName((String) row.get("TEMPLATE_NAME")); - cldsMonitoringDetails.setAction((String) row.get("ACTION_CD")); - cldsMonitoringDetails.setUserid((String) row.get("USER_ID")); - cldsMonitoringDetails.setTimestamp(sdf.format(row.get("TIMESTAMP"))); - cldsMonitoringDetailsList.add(cldsMonitoringDetails); - } - return cldsMonitoringDetailsList; - } - - /** * Method to delete model from database. * - * @param modelName - * the model name + * @param modelName the model name */ public void deleteModel(String modelName) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_model_name", modelName); @@ -476,10 +419,8 @@ public class CldsDao { /** * Helper method to setup the event prop to the CldsEvent class. * - * @param event - * the clds event - * @param prop - * collection with the configuration + * @param event the clds event + * @param prop collection with the configuration */ private void setEventProp(CldsEvent event, Map prop) { event.setId((String) prop.get("v_event_id")); @@ -501,8 +442,7 @@ public class CldsDao { /** * Method to retrieve a tosca models by Policy Type from database. * - * @param policyType - * the policy type + * @param policyType the policy type * @return List of CldsToscaModel */ public List<CldsToscaModel> getToscaModelByPolicyType(String policyType) { @@ -512,8 +452,7 @@ public class CldsDao { /** * Method to retrieve a tosca models by toscaModelName, version from database. * - * @param toscaModelName - * the tosca model name + * @param toscaModelName the tosca model name * @return List of CldsToscaModel */ public List<CldsToscaModel> getToscaModelByName(String toscaModelName) { @@ -528,13 +467,13 @@ public class CldsDao { String toscaModelSql = new StringBuilder("SELECT tm.tosca_model_name, tm.tosca_model_id, tm.policy_type, " + "tmr.tosca_model_revision_id, tmr.tosca_model_json, tmr.version, tmr.user_id, tmr.createdTimestamp," - + "tmr.lastUpdatedTimestamp").append(toscaModelName != null ? (", tmr.tosca_model_yaml") : "") - .append(" FROM tosca_model tm, tosca_model_revision tmr WHERE tm.tosca_model_id = tmr.tosca_model_id") - .append(toscaModelName != null ? (" AND tm.tosca_model_name = '" + toscaModelName + "'") : "") - .append(policyType != null ? (" AND tm.policy_type = '" + policyType + "'") : "") - .append(" AND tmr.version = (select max(version) from tosca_model_revision st where tmr.tosca_model_id" - + "=st.tosca_model_id)") - .toString(); + + "tmr.lastUpdatedTimestamp").append(toscaModelName != null ? (", tmr.tosca_model_yaml") : "").append( + " FROM tosca_model tm, tosca_model_revision tmr WHERE tm.tosca_model_id = tmr.tosca_model_id") + .append(toscaModelName != null ? (" AND tm.tosca_model_name = '" + toscaModelName + "'") : "") + .append(policyType != null ? (" AND tm.policy_type = '" + policyType + "'") : "") + .append(" AND tmr.version = (select max(version) from tosca_model_revision st where tmr.tosca_model_id" + + "=st.tosca_model_id)") + .toString(); List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(toscaModelSql); @@ -562,17 +501,15 @@ public class CldsDao { /** * Method to upload a new version of Tosca Model Yaml in Database. * - * @param cldsToscaModel - * the clds tosca model - * @param userId - * the user id + * @param cldsToscaModel the clds tosca model + * @param userId the user id * @return CldsToscaModel clds tosca model */ public CldsToscaModel updateToscaModelWithNewVersion(CldsToscaModel cldsToscaModel, String userId) { SqlParameterSource in = new MapSqlParameterSource().addValue("v_tosca_model_id", cldsToscaModel.getId()) - .addValue("v_version", cldsToscaModel.getVersion()) - .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) - .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()).addValue("v_user_id", userId); + .addValue("v_version", cldsToscaModel.getVersion()) + .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) + .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()).addValue("v_user_id", userId); Map<String, Object> out = logSqlExecution(procInsertNewToscaModelVersion, in); cldsToscaModel.setRevisionId((String) out.get("v_revision_id")); return cldsToscaModel; @@ -581,19 +518,17 @@ public class CldsDao { /** * Method to upload a new Tosca model Yaml in DB. Default version is 1.0 * - * @param cldsToscaModel - * the clds tosca model - * @param userId - * the user id + * @param cldsToscaModel the clds tosca model + * @param userId the user id * @return CldsToscaModel clds tosca model */ public CldsToscaModel insToscaModel(CldsToscaModel cldsToscaModel, String userId) { SqlParameterSource in = new MapSqlParameterSource() - .addValue("v_tosca_model_name", cldsToscaModel.getToscaModelName()) - .addValue("v_policy_type", cldsToscaModel.getPolicyType()) - .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) - .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()) - .addValue("v_version", cldsToscaModel.getVersion()).addValue("v_user_id", userId); + .addValue("v_tosca_model_name", cldsToscaModel.getToscaModelName()) + .addValue("v_policy_type", cldsToscaModel.getPolicyType()) + .addValue("v_tosca_model_yaml", cldsToscaModel.getToscaModelYaml()) + .addValue("v_tosca_model_json", cldsToscaModel.getToscaModelJson()) + .addValue("v_version", cldsToscaModel.getVersion()).addValue("v_user_id", userId); Map<String, Object> out = logSqlExecution(procInsertToscaModel, in); cldsToscaModel.setId((String) (out.get("v_tosca_model_id"))); cldsToscaModel.setRevisionId((String) (out.get("v_revision_id"))); @@ -604,13 +539,12 @@ public class CldsDao { /** * Method to insert a new Dictionary in Database. * - * @param cldsDictionary - * the clds dictionary + * @param cldsDictionary the clds dictionary */ public void insDictionary(CldsDictionary cldsDictionary) { SqlParameterSource in = new MapSqlParameterSource() - .addValue("v_dictionary_name", cldsDictionary.getDictionaryName()) - .addValue("v_user_id", cldsDictionary.getCreatedBy()); + .addValue("v_dictionary_name", cldsDictionary.getDictionaryName()) + .addValue("v_user_id", cldsDictionary.getCreatedBy()); Map<String, Object> out = logSqlExecution(procInsertDictionary, in); cldsDictionary.setDictionaryId((String) out.get("v_dictionary_id")); } @@ -618,20 +552,15 @@ public class CldsDao { /** * Method to update Dictionary with new info in Database. * - * @param dictionaryId - * the dictionary id - * @param cldsDictionary - * the clds dictionary - * @param userId - * the user id + * @param dictionaryId the dictionary id + * @param cldsDictionary the clds dictionary + * @param userId the user id */ public void updateDictionary(String dictionaryId, CldsDictionary cldsDictionary, String userId) { String dictionarySql = new StringBuilder("UPDATE dictionary SET dictionary_name = '") - .append(cldsDictionary.getDictionaryName()) - .append("', modified_by = '").append(userId) - .append("'WHERE dictionary_id = '").append(dictionaryId).append("'") - .toString(); + .append(cldsDictionary.getDictionaryName()).append("', modified_by = '").append(userId) + .append("'WHERE dictionary_id = '").append(dictionaryId).append("'").toString(); jdbcTemplateObject.update(dictionarySql); cldsDictionary.setUpdatedBy(userId); } @@ -639,10 +568,8 @@ public class CldsDao { /** * Method to get list of Dictionaries from the Database. * - * @param dictionaryId - * the dictionary id - * @param dictionaryName - * the dictionary name + * @param dictionaryId the dictionary id + * @param dictionaryName the dictionary name * @return dictionary */ public List<CldsDictionary> getDictionary(String dictionaryId, String dictionaryName) { @@ -660,9 +587,9 @@ public class CldsDao { } else { whereFilter = ""; } - String dictionarySql = new StringBuilder("SELECT dictionary_id, dictionary_name, created_by, " - + "modified_by, timestamp FROM dictionary") - .append(whereFilter).toString(); + String dictionarySql = new StringBuilder( + "SELECT dictionary_id, dictionary_name, created_by, " + "modified_by, timestamp FROM dictionary") + .append(whereFilter).toString(); List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql); @@ -683,18 +610,16 @@ public class CldsDao { /** * Method to insert a new Dictionary Element for given dictionary in Database. * - * @param cldsDictionaryItem - * the clds dictionary item - * @param userId - * the user id + * @param cldsDictionaryItem the clds dictionary item + * @param userId the user id */ public void insDictionarElements(CldsDictionaryItem cldsDictionaryItem, String userId) { SqlParameterSource in = new MapSqlParameterSource() - .addValue("v_dictionary_id", cldsDictionaryItem.getDictionaryId()) - .addValue("v_dict_element_name", cldsDictionaryItem.getDictElementName()) - .addValue("v_dict_element_short_name", cldsDictionaryItem.getDictElementShortName()) - .addValue("v_dict_element_description", cldsDictionaryItem.getDictElementDesc()) - .addValue("v_dict_element_type", cldsDictionaryItem.getDictElementType()).addValue("v_user_id", userId); + .addValue("v_dictionary_id", cldsDictionaryItem.getDictionaryId()) + .addValue("v_dict_element_name", cldsDictionaryItem.getDictElementName()) + .addValue("v_dict_element_short_name", cldsDictionaryItem.getDictElementShortName()) + .addValue("v_dict_element_description", cldsDictionaryItem.getDictElementDesc()) + .addValue("v_dict_element_type", cldsDictionaryItem.getDictElementType()).addValue("v_user_id", userId); Map<String, Object> out = logSqlExecution(procInsertDictionaryElement, in); cldsDictionaryItem.setDictElementId((String) out.get("v_dict_element_id")); } @@ -703,25 +628,19 @@ public class CldsDao { * Method to update Dictionary Elements with new info for a given dictionary in * Database. * - * @param dictionaryElementId - * the dictionary element id - * @param cldsDictionaryItem - * the clds dictionary item - * @param userId - * the user id + * @param dictionaryElementId the dictionary element id + * @param cldsDictionaryItem the clds dictionary item + * @param userId the user id */ public void updateDictionaryElements(String dictionaryElementId, CldsDictionaryItem cldsDictionaryItem, - String userId) { + String userId) { String dictionarySql = new StringBuilder().append("UPDATE dictionary_elements SET dict_element_name = '") - .append(cldsDictionaryItem.getDictElementName()) - .append("', dict_element_short_name = '").append(cldsDictionaryItem.getDictElementShortName()) - .append("', dict_element_description= '").append(cldsDictionaryItem.getDictElementDesc()) - .append("', dict_element_type = '").append(cldsDictionaryItem.getDictElementType()) - .append("', modified_by = '").append(userId).append("'") - .append(" WHERE dict_element_id = '") - .append(dictionaryElementId).append("'") - .toString(); + .append(cldsDictionaryItem.getDictElementName()).append("', dict_element_short_name = '") + .append(cldsDictionaryItem.getDictElementShortName()).append("', dict_element_description= '") + .append(cldsDictionaryItem.getDictElementDesc()).append("', dict_element_type = '") + .append(cldsDictionaryItem.getDictElementType()).append("', modified_by = '").append(userId).append("'") + .append(" WHERE dict_element_id = '").append(dictionaryElementId).append("'").toString(); jdbcTemplateObject.update(dictionarySql); cldsDictionaryItem.setUpdatedBy(userId); } @@ -730,26 +649,25 @@ public class CldsDao { * Method to get list of all dictionary elements for a given dictionary in the * Database. * - * @param dictionaryName - * the dictionary name - * @param dictionaryId - * the dictionary id - * @param dictElementShortName - * the dict element short name + * @param dictionaryName the dictionary name + * @param dictionaryId the dictionary id + * @param dictElementShortName the dict element short name * @return dictionary elements */ public List<CldsDictionaryItem> getDictionaryElements(String dictionaryName, String dictionaryId, - String dictElementShortName) { + String dictElementShortName) { SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); List<CldsDictionaryItem> dictionaryItems = new ArrayList<>(); String dictionarySql = new StringBuilder("SELECT de.dict_element_id, de.dictionary_id, de.dict_element_name, " + "de.dict_element_short_name, de.dict_element_description, de.dict_element_type, de.created_by, " + "de.modified_by, de.timestamp FROM dictionary_elements de, " + "dictionary d WHERE de.dictionary_id = d.dictionary_id") - .append((dictionaryId != null) ? (" AND d.dictionary_id = '" + dictionaryId + "'") : "") - .append((dictElementShortName != null) ? (" AND de.dict_element_short_name = '" + dictElementShortName - + "'") : "") - .append((dictionaryName != null) ? (" AND dictionary_name = '" + dictionaryName + "'") : "").toString(); + .append((dictionaryId != null) ? (" AND d.dictionary_id = '" + dictionaryId + "'") : "") + .append((dictElementShortName != null) + ? (" AND de.dict_element_short_name = '" + dictElementShortName + "'") + : "") + .append((dictionaryName != null) ? (" AND dictionary_name = '" + dictionaryName + "'") : "") + .toString(); List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql); @@ -775,22 +693,21 @@ public class CldsDao { * Method to get Map of all dictionary elements with key as dictionary short * name and value as the full name. * - * @param dictionaryElementType - * the dictionary element type + * @param dictionaryElementType the dictionary element type * @return Map of dictionary elements as key value pair */ public Map<String, String> getDictionaryElementsByType(String dictionaryElementType) { Map<String, String> dictionaryItems = new HashMap<>(); String dictionarySql = new StringBuilder("SELECT dict_element_name, dict_element_short_name " - + "FROM dictionary_elements WHERE dict_element_type = '") - .append(dictionaryElementType).append("'").toString(); + + "FROM dictionary_elements WHERE dict_element_type = '").append(dictionaryElementType).append("'") + .toString(); List<Map<String, Object>> rows = jdbcTemplateObject.queryForList(dictionarySql); if (rows != null) { rows.forEach(row -> { dictionaryItems.put(((String) row.get("dict_element_short_name")), - ((String) row.get("dict_element_name"))); + ((String) row.get("dict_element_name"))); }); } return dictionaryItems; diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java b/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java deleted file mode 100644 index 2fc04781..00000000 --- a/src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.dao; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.io.IOException; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; - -import org.apache.commons.io.serialization.ValidatingObjectInputStream; -import org.onap.clamp.clds.model.CldsServiceData; -import org.onap.clamp.clds.model.CldsVfData; -import org.onap.clamp.clds.model.CldsVfKPIData; -import org.onap.clamp.clds.model.CldsVfcData; -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(); - try (ValidatingObjectInputStream oip = new ValidatingObjectInputStream(rs.getBlob(4).getBinaryStream())) { - oip.accept(CldsServiceData.class, ArrayList.class, CldsVfData.class, CldsVfcData.class, - CldsVfKPIData.class); - cldsServiceData = (CldsServiceData) oip.readObject(); - cldsServiceData.setAgeOfRecord(rs.getLong(5)); - } catch (IOException | ClassNotFoundException e) { - logger.error("Error caught while deserializing cldsServiceData from database", e); - return null; - } - return cldsServiceData; - } -} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsMonitoringDetails.java b/src/main/java/org/onap/clamp/clds/model/CldsMonitoringDetails.java deleted file mode 100644 index eb05fe40..00000000 --- a/src/main/java/org/onap/clamp/clds/model/CldsMonitoringDetails.java +++ /dev/null @@ -1,113 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.model; - -/** - * Maintains model and template details. - */ -public class CldsMonitoringDetails { - - private String closeloopName; - private String modelId; - private String modelName; - private String serviceTypeId; - private String deploymentId; - private String templateName; - private String action; - private String userid; - private String timestamp; - - public String getCloseloopName() { - return closeloopName; - } - - public void setCloseloopName(String closeloopName) { - this.closeloopName = closeloopName; - } - - public String getModelId() { - return modelId; - } - - public void setModelId(String modelId) { - this.modelId = modelId; - } - - public String getModelName() { - return modelName; - } - - public void setModelName(String modelName) { - this.modelName = modelName; - } - - public String getServiceTypeId() { - return serviceTypeId; - } - - public void setServiceTypeId(String serviceTypeId) { - this.serviceTypeId = serviceTypeId; - } - - public String getDeploymentId() { - return deploymentId; - } - - public void setDeploymentId(String deploymentId) { - this.deploymentId = deploymentId; - } - - public String getTemplateName() { - return templateName; - } - - public void setTemplateName(String templateName) { - this.templateName = templateName; - } - - public String getAction() { - return action; - } - - public void setAction(String action) { - this.action = action; - } - - public String getUserid() { - return userid; - } - - public void setUserid(String userid) { - this.userid = userid; - } - - public String getTimestamp() { - return timestamp; - } - - public void setTimestamp(String time) { - this.timestamp = time; - } - -} diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java deleted file mode 100644 index 441a7ac1..00000000 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java +++ /dev/null @@ -1,350 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END============================================ - * Modifications copyright (c) 2019 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.clds.sdc.controller.installer; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.google.gson.JsonObject; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; -import java.util.Set; -import javax.annotation.PostConstruct; -import javax.xml.transform.TransformerException; -import org.apache.commons.io.IOUtils; -import org.json.simple.parser.ParseException; -import org.onap.clamp.clds.client.DcaeInventoryServices; -import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration; -import org.onap.clamp.clds.config.sdc.BlueprintParserMappingConfiguration; -import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.exception.policy.PolicyModelException; -import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; -import org.onap.clamp.clds.model.CldsModel; -import org.onap.clamp.clds.model.CldsTemplate; -import org.onap.clamp.clds.model.dcae.DcaeInventoryResponse; -import org.onap.clamp.clds.model.properties.ModelProperties; -import org.onap.clamp.clds.service.CldsService; -import org.onap.clamp.clds.service.CldsTemplateService; -import org.onap.clamp.clds.transform.XslTransformer; -import org.onap.clamp.clds.util.JsonUtils; -import org.onap.clamp.clds.util.drawing.SvgFacade; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ApplicationContext; -import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; -import org.yaml.snakeyaml.Yaml; - -/** - * This class will be instantiated by spring config, and used by Sdc Controller. - * There is no state kept by the bean. It's used to deploy the csar/notification - * received from SDC in DB. - */ -@Component -@Qualifier("oldModelInstaller") -public class CsarInstallerImpl implements CsarInstaller { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CsarInstallerImpl.class); - private Map<String, BlueprintParserFilesConfiguration> bpmnMapping = new HashMap<>(); - public static final String TEMPLATE_NAME_PREFIX = "DCAE-Designer-Template-"; - public static final String CONTROL_NAME_PREFIX = "ClosedLoop-"; - public static final String GET_INPUT_BLUEPRINT_PARAM = "get_input"; - // This will be used later as the policy scope - public static final String MODEL_NAME_PREFIX = "CLAMP"; - /** - * The file name that will be loaded by Spring. - */ - @Value("${clamp.config.sdc.blueprint.parser.mapping:'classpath:/clds/blueprint-parser-mapping.json'}") - protected String blueprintMappingFile; - protected ApplicationContext appContext; - private CldsDao cldsDao; - CldsTemplateService cldsTemplateService; - CldsService cldsService; - DcaeInventoryServices dcaeInventoryService; - private XslTransformer cldsBpmnTransformer; - - @Autowired - public CsarInstallerImpl(ApplicationContext appContext, - CldsDao cldsDao, CldsTemplateService cldsTemplateService, CldsService cldsService, - DcaeInventoryServices dcaeInventoryService, XslTransformer cldsBpmnTransformer) { - this.appContext = appContext; - this.cldsDao = cldsDao; - this.cldsTemplateService = cldsTemplateService; - this.cldsService = cldsService; - this.dcaeInventoryService = dcaeInventoryService; - this.cldsBpmnTransformer = cldsBpmnTransformer; - } - - @Autowired - private BlueprintParser blueprintParser; - - @Autowired - private ChainGenerator chainGenerator; - - @Autowired - private SvgFacade svgFacade; - - @PostConstruct - public void loadConfiguration() throws IOException { - BlueprintParserMappingConfiguration - .createFromJson(appContext.getResource(blueprintMappingFile).getInputStream()).stream() - .forEach(e -> bpmnMapping.put(e.getBlueprintKey(), e.getFiles())); - } - - @Override - public boolean isCsarAlreadyDeployed(CsarHandler csar) throws SdcArtifactInstallerException { - boolean alreadyInstalled = true; - for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) { - alreadyInstalled = alreadyInstalled - && CldsModel.retrieve(cldsDao, buildModelName(csar, blueprint.getValue()), true).getId() != null; - } - return alreadyInstalled; - } - - public static String buildModelName(CsarHandler csar, BlueprintArtifact artifact) - throws SdcArtifactInstallerException { - String policyScopePrefix = searchForPolicyScopePrefix(artifact); - if (policyScopePrefix.contains("*")) { - // This is policy_filter type - policyScopePrefix = policyScopePrefix.replaceAll("\\*", ""); - } else { - // This is normally the get_input case - policyScopePrefix = MODEL_NAME_PREFIX; - } - return (policyScopePrefix + "_" + csar.getSdcCsarHelper().getServiceMetadata().getValue("name") + "_v" - + csar.getSdcNotification().getServiceVersion() + "_" - + artifact.getResourceAttached().getResourceInstanceName().replaceAll(" ", "") + "_" - + artifact.getBlueprintArtifactName().replace(".yaml", "")).replace('.', '_'); - } - - @Override - @Transactional - public void installTheCsar(CsarHandler csar) - throws SdcArtifactInstallerException, InterruptedException, PolicyModelException { - try { - logger.info("Installing the CSAR " + csar.getFilePath()); - for (Entry<String, BlueprintArtifact> blueprint : csar.getMapOfBlueprints().entrySet()) { - logger.info("Processing blueprint " + blueprint.getValue().getBlueprintArtifactName()); - createFakeCldsModel(csar, blueprint.getValue(), - createFakeCldsTemplate(csar, blueprint.getValue(), - this.searchForRightMapping(blueprint.getValue())), - queryDcaeToGetServiceTypeId(blueprint.getValue())); - } - createPolicyModel(csar); - logger.info("Successfully installed the CSAR " + csar.getFilePath()); - } catch (IOException e) { - throw new SdcArtifactInstallerException("Exception caught during the Csar installation in database", e); - } catch (ParseException e) { - throw new SdcArtifactInstallerException("Exception caught during the Dcae query to get ServiceTypeId", e); - } - } - - BlueprintParserFilesConfiguration searchForRightMapping(BlueprintArtifact blueprintArtifact) - throws SdcArtifactInstallerException { - List<BlueprintParserFilesConfiguration> listConfig = new ArrayList<>(); - Yaml yaml = new Yaml(); - Map<String, Object> templateNodes = ((Map<String, Object>) ((Map<String, Object>) yaml - .load(blueprintArtifact.getDcaeBlueprint())).get("node_templates")); - bpmnMapping.entrySet().forEach(e -> { - if (templateNodes.keySet().stream().anyMatch(t -> t.contains(e.getKey()))) { - listConfig.add(e.getValue()); - } - }); - if (listConfig.size() > 1) { - throw new SdcArtifactInstallerException( - "The code does not currently support multiple MicroServices in the blueprint"); - } else if (listConfig.isEmpty()) { - throw new SdcArtifactInstallerException("There is no recognized MicroService found in the blueprint"); - } - logger.info("Mapping found for blueprint " + blueprintArtifact.getBlueprintArtifactName() + " is " - + listConfig.get(0).getBpmnXmlFilePath()); - return listConfig.get(0); - } - - String getAllBlueprintParametersInJson(BlueprintArtifact blueprintArtifact) { - JsonObject node = new JsonObject(); - Yaml yaml = new Yaml(); - Map<String, Object> inputsNodes = ((Map<String, Object>) ((Map<String, Object>) yaml - .load(blueprintArtifact.getDcaeBlueprint())).get("inputs")); - inputsNodes.entrySet().stream().filter(e -> !e.getKey().contains("policy_id")).forEach(elem -> { - Object defaultValue = ((Map<String, Object>) elem.getValue()).get("default"); - if (defaultValue != null) { - addPropertyToNode(node, elem.getKey(), defaultValue); - } else { - node.addProperty(elem.getKey(), ""); - } - }); - node.addProperty("policy_id", "AUTO_GENERATED_POLICY_ID_AT_SUBMIT"); - return node.toString(); - } - - private void createPolicyModel(CsarHandler csar) throws PolicyModelException { - try { - Optional<String> policyModelYaml = csar.getPolicyModelYaml(); - // save policy model into the database - } catch (IOException e) { - throw new PolicyModelException("TransformerException when decoding the YamlText", e); - } - } - - private static String searchForPolicyScopePrefix(BlueprintArtifact blueprintArtifact) - throws SdcArtifactInstallerException { - String policyName = null; - Yaml yaml = new Yaml(); - List<String> policyNameList = new ArrayList<>(); - Map<String, Object> templateNodes = ((Map<String, Object>) ((Map<String, Object>) yaml - .load(blueprintArtifact.getDcaeBlueprint())).get("node_templates")); - templateNodes.entrySet().stream().filter(e -> e.getKey().contains("policy")).forEach(ef -> { - String filteredPolicyName = (String) ((Map<String, Object>) ((Map<String, Object>) ef.getValue()) - .get("properties")).get("policy_filter"); - if (policyName != null) { - policyNameList.add(filteredPolicyName); - } else { - String inputPolicyName = (String) ((Map<String, Object>) ((Map<String, Object>) ((Map<String, Object>) - ef.getValue()).get("properties")).get("policy_id")).get(GET_INPUT_BLUEPRINT_PARAM); - if (inputPolicyName != null) { - policyNameList.add(GET_INPUT_BLUEPRINT_PARAM); - } - } - }); - if (policyNameList.size() > 1) { - throw new SdcArtifactInstallerException( - "The code does not currently support multiple Policy MicroServices in the blueprint"); - } else if (policyNameList.isEmpty()) { - throw new SdcArtifactInstallerException( - "There is no recognized Policy MicroService found in the blueprint"); - } - logger.info("policyName found in blueprint " + blueprintArtifact.getBlueprintArtifactName() + " is " - + policyNameList.get(0)); - return policyNameList.get(0); - } - - /** - * This call must be done when deploying the SDC notification as this call get - * the latest version of the artifact (version can be specified to DCAE call). - * - * @return The DcaeInventoryResponse object containing the dcae values - */ - private DcaeInventoryResponse queryDcaeToGetServiceTypeId(BlueprintArtifact blueprintArtifact) - throws IOException, ParseException, InterruptedException { - return dcaeInventoryService.getDcaeInformation(blueprintArtifact.getBlueprintArtifactName(), - blueprintArtifact.getBlueprintInvariantServiceUuid(), - blueprintArtifact.getResourceAttached().getResourceInvariantUUID()); - } - - private CldsTemplate createFakeCldsTemplate(CsarHandler csar, BlueprintArtifact blueprintArtifact, - BlueprintParserFilesConfiguration configFiles) throws IOException, SdcArtifactInstallerException { - - Set<MicroService> microServicesFromBlueprint = blueprintParser.getMicroServices( - blueprintArtifact.getDcaeBlueprint()) ; - List<MicroService> microServicesChain = chainGenerator.getChainOfMicroServices(microServicesFromBlueprint); - if (microServicesChain.isEmpty()) { - microServicesChain = blueprintParser.fallbackToOneMicroService(blueprintArtifact.getDcaeBlueprint()); - } - String imageText = svgFacade.getSvgImage(microServicesChain); - - CldsTemplate template = new CldsTemplate(); - template.setBpmnId("Sdc-Generated"); - template.setBpmnText(IOUtils.toString(appContext.getResource(configFiles.getBpmnXmlFilePath()).getInputStream(), - StandardCharsets.UTF_8)); - template.setPropText( - "{\"global\":[{\"name\":\"service\",\"value\":[\"" + blueprintArtifact.getDcaeBlueprint() + "\"]}]}"); - template - .setImageText(imageText); - template.setName(TEMPLATE_NAME_PREFIX + buildModelName(csar, blueprintArtifact)); - template.save(cldsDao, null); - logger.info("Fake Clds Template created for blueprint " + blueprintArtifact.getBlueprintArtifactName() - + " with name " + template.getName()); - return template; - } - - private CldsModel createFakeCldsModel(CsarHandler csar, BlueprintArtifact blueprintArtifact, - CldsTemplate cldsTemplate, DcaeInventoryResponse dcaeInventoryResponse) throws SdcArtifactInstallerException { - - if (dcaeInventoryResponse == null) { - throw new SdcArtifactInstallerException( - "DCAE inventory response is NULL, query to DCAE fail to be answered properly, " - + "this is required to deploy CSAR properly !!!"); - } - try { - CldsModel cldsModel = new CldsModel(); - cldsModel.setName(buildModelName(csar, blueprintArtifact)); - cldsModel.setBlueprintText(blueprintArtifact.getDcaeBlueprint()); - cldsModel.setTemplateName(cldsTemplate.getName()); - cldsModel.setTemplateId(cldsTemplate.getId()); - cldsModel.setBpmnText(cldsTemplate.getBpmnText()); - cldsModel.setTypeId(dcaeInventoryResponse.getTypeId()); - cldsModel.setTypeName(dcaeInventoryResponse.getTypeName()); - cldsModel.setControlNamePrefix(CONTROL_NAME_PREFIX); - // We must save it otherwise object won't be created in db - // and proptext will always be null - cldsModel.setPropText("{\"global\":[]}"); - // Must save first to have the generated id available to generate - // the policyId - cldsModel = cldsModel.save(cldsDao, null); - cldsModel = setModelPropText(cldsModel, blueprintArtifact, cldsTemplate); - logger.info("Fake Clds Model created for blueprint " + blueprintArtifact.getBlueprintArtifactName() - + " with name " + cldsModel.getName()); - return cldsModel; - } catch (TransformerException e) { - throw new SdcArtifactInstallerException("TransformerException when decoding the BpmnText", e); - } - } - - private CldsModel setModelPropText(CldsModel cldsModel, BlueprintArtifact blueprintArtifact, - CldsTemplate cldsTemplate) throws TransformerException { - // Do a test to validate the BPMN - new ModelProperties(cldsModel.getName(), cldsModel.getControlName(), "PUT", false, - cldsBpmnTransformer.doXslTransformToString(cldsTemplate.getBpmnText()), "{}"); - String inputParams = "{\"name\":\"deployParameters\",\"value\":" - + getAllBlueprintParametersInJson(blueprintArtifact) + "}"; - cldsModel.setPropText("{\"global\":[{\"name\":\"service\",\"value\":[\"" - + blueprintArtifact.getBlueprintInvariantServiceUuid() + "\"]},{\"name\":\"vf\",\"value\":[\"" - + blueprintArtifact.getResourceAttached().getResourceInvariantUUID() - + "\"]},{\"name\":\"actionSet\",\"value\":[\"vnfRecipe\"]},{\"name\":\"location\",\"value\":[\"DC1\"]}," - + inputParams + "]}"); - return cldsModel.save(cldsDao, null); - } - - private void addPropertyToNode(JsonObject node, String key, Object value) { - if (value instanceof String) { - node.addProperty(key, (String) value); - } else if (value instanceof Number) { - node.addProperty(key, (Number) value); - } else if (value instanceof Boolean) { - node.addProperty(key, (Boolean) value); - } else if (value instanceof Character) { - node.addProperty(key, (Character) value); - } else { - node.addProperty(key, JsonUtils.GSON.toJson(value)); - } - } -} diff --git a/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java b/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java deleted file mode 100644 index 454056cd..00000000 --- a/src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java +++ /dev/null @@ -1,179 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Modifications Copyright (c) 2019 Samsung - * ================================================================================ - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.service; - -import java.util.Date; -import java.util.List; - -import javax.annotation.PostConstruct; - -import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.model.CldsDictionary; -import org.onap.clamp.clds.model.CldsDictionaryItem; -import org.onap.clamp.clds.util.LoggingUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; - -/** - * REST services to manage dictionary and dictionary items for Tosca Model. - */ -@Component -public class CldsDictionaryService extends SecureServiceBase { - - @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") - private String cldsPermissionTypeTosca; - @Value("${clamp.config.security.permission.instance:dev}") - private String cldsPermissionInstance; - private SecureServicePermission permissionReadTosca; - private SecureServicePermission permissionUpdateTosca; - - @Autowired - private CldsDao cldsDao; - - private LoggingUtils util = new LoggingUtils(logger); - - - @PostConstruct - private void initConstruct() { - permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); - permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, - "update"); - } - - /** - * REST Service that creates a Dictionary. - * - * @param dictionaryName dictionary name - * @return CldsDictionary that was created in DB. - */ - public CldsDictionary createDictionary(String dictionaryName) { - CldsDictionary cldsDictionary = new CldsDictionary(); - cldsDictionary.setDictionaryName(dictionaryName); - cldsDictionary.save(cldsDictionary.getDictionaryName(), cldsDao, getUserId()); - return cldsDictionary; - } - - /** - * REST Service that creates or Updates a Dictionary. - * Used in clds-services.xml - * - * @param cldsDictionary clds dictionary - * @return ResponseEntity with CldsDictionary that was created in DB. - */ - public ResponseEntity<CldsDictionary> createOrUpdateDictionary(String dictionaryName, - CldsDictionary cldsDictionary) { - - Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsDictionaryService: createOrUpdateDictionary", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionUpdateTosca); - - if (cldsDictionary == null) { - - cldsDictionary = createDictionary(dictionaryName); - } else { - - if (cldsDictionary.getDictionaryName() == null) { - cldsDictionary.setDictionaryName(dictionaryName); - } - - cldsDictionary.save(cldsDictionary.getDictionaryName(), cldsDao, getUserId()); - } - - LoggingUtils.setTimeContext(startTime, new Date()); - LoggingUtils.setResponseContext("0", "createOrUpdateDictionary success", this.getClass().getName()); - auditLogger.info("createOrUpdateDictionary completed"); - - return new ResponseEntity<>(cldsDictionary, HttpStatus.OK); - } - - /** - * REST Service that creates or Updates a Dictionary Elements for dictionary - * in DB. - * - * @param dictionaryName dictionary name - * @param dictionaryItem dictionary item - * @return CldsDictionaryItem A dictionary items that was created or updated - * in DB - */ - public ResponseEntity<CldsDictionaryItem> createOrUpdateDictionaryElements(String dictionaryName, - CldsDictionaryItem dictionaryItem) { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsDictionaryService: createOrUpdateDictionaryElements", - getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionUpdateTosca); - dictionaryItem.save(dictionaryName, cldsDao, getUserId()); - auditLogInfo("createOrUpdateDictionaryElements", startTime); - return new ResponseEntity<>(dictionaryItem, HttpStatus.OK); - } - - /** - * Rest Service that retrieves all CLDS dictionary in DB. - * - * @return CldsDictionary List List of CldsDictionary available in DB - */ - public ResponseEntity<List<CldsDictionary>> getAllDictionaryNames() { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsDictionaryService: getAllDictionaryNames", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionReadTosca); - List<CldsDictionary> dictionaries = cldsDao.getDictionary(null, null); - auditLogInfo("getAllDictionaryNames", startTime); - return new ResponseEntity<>(dictionaries, HttpStatus.OK); - } - - /** - * Rest Service that retrieves all CLDS dictionary items in DB for a give - * dictionary name. - * - * @param dictionaryName dictionary name - * @return CldsDictionaryItem list List of CLDS Dictionary items for a given - * dictionary name - */ - public ResponseEntity<List<CldsDictionaryItem>> getDictionaryElementsByName(String dictionaryName) { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsDictionaryService: getDictionaryElementsByName", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionReadTosca); - List<CldsDictionaryItem> dictionaryItems = cldsDao.getDictionaryElements(dictionaryName, null, null); - auditLogInfo("getDictionaryElementsByName", startTime); - return new ResponseEntity<>(dictionaryItems, HttpStatus.OK); - } - - public ResponseEntity<?> deleteDictionary() { - return null; - } - - // Created for the integration test - public void setLoggingUtil(LoggingUtils utilP) { - util = utilP; - } - -}
\ No newline at end of file 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 d9956e3a..3a2cb092 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -28,48 +28,24 @@ package org.onap.clamp.clds.service; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; -import java.io.IOException; + import java.lang.reflect.Type; import java.util.Date; import java.util.List; -import java.util.UUID; + import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.BadRequestException; -import javax.xml.transform.TransformerException; + import org.apache.camel.Produce; -import org.json.simple.parser.ParseException; import org.onap.clamp.clds.camel.CamelProxy; -import org.onap.clamp.clds.client.DcaeDispatcherServices; -import org.onap.clamp.clds.client.DcaeInventoryServices; -import org.onap.clamp.clds.config.ClampProperties; -import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.exception.policy.PolicyClientException; -import org.onap.clamp.clds.exception.sdc.SdcCommunicationException; -import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsInfo; -import org.onap.clamp.clds.model.CldsModel; -import org.onap.clamp.clds.model.CldsModelProp; -import org.onap.clamp.clds.model.CldsMonitoringDetails; -import org.onap.clamp.clds.model.CldsTemplate; -import org.onap.clamp.clds.model.DcaeEvent; -import org.onap.clamp.clds.model.ValueItem; -import org.onap.clamp.clds.model.properties.ModelProperties; import org.onap.clamp.clds.model.sdc.SdcServiceInfo; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; -import org.onap.clamp.clds.transform.XslTransformer; -import org.onap.clamp.clds.util.JsonUtils; import org.onap.clamp.clds.util.LoggingUtils; import org.onap.clamp.clds.util.ONAPLogConstants; import org.slf4j.event.Level; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; -import org.springframework.web.client.HttpClientErrorException; /** * Service to save and retrieve the CLDS model attributes. @@ -81,7 +57,7 @@ public class CldsService extends SecureServiceBase { * The constant LIST_OF_SDC_SERVICE_INFO_TYPE. */ public static final Type LIST_OF_SDC_SERVICE_INFO_TYPE = new TypeToken<List<SdcServiceInfo>>() { - }.getType(); + }.getType(); @Produce(uri = "direct:processSubmit") private CamelProxy camelProxy; /** @@ -93,12 +69,6 @@ public class CldsService extends SecureServiceBase { */ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsService.class); - /** - * The constant GLOBAL_PROPERTIES_KEY. - */ - public static final String GLOBAL_PROPERTIES_KEY = "files.globalProperties"; - private final String cldsPermissionTypeClManage; - private final String cldsPermissionTypeClEvent; private final String cldsPermissionTypeFilterVf; private final String cldsPermissionInstance; /** @@ -126,11 +96,6 @@ public class CldsService extends SecureServiceBase { */ final SecureServicePermission permissionUpdateTosca; - private final CldsDao cldsDao; - private final XslTransformer cldsBpmnTransformer; - private final ClampProperties refProp; - private final DcaeDispatcherServices dcaeDispatcherServices; - private final DcaeInventoryServices dcaeInventoryServices; private LoggingUtils util = new LoggingUtils(logger); @Autowired @@ -139,11 +104,6 @@ public class CldsService extends SecureServiceBase { /** * Instantiates a new Clds service. * - * @param cldsDao the clds dao - * @param cldsBpmnTransformer the clds bpmn transformer - * @param refProp the ref prop - * @param dcaeDispatcherServices the dcae dispatcher services - * @param dcaeInventoryServices the dcae inventory services * @param cldsPersmissionTypeCl the clds persmission type cl * @param cldsPermissionTypeClManage the clds permission type cl manage * @param cldsPermissionTypeClEvent the clds permission type cl event @@ -153,72 +113,32 @@ public class CldsService extends SecureServiceBase { * @param cldsPermissionInstance the clds permission instance */ @Autowired - public CldsService(CldsDao cldsDao, XslTransformer cldsBpmnTransformer, ClampProperties refProp, - DcaeDispatcherServices dcaeDispatcherServices, - DcaeInventoryServices dcaeInventoryServices, - @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") - String cldsPersmissionTypeCl, - @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") - String cldsPermissionTypeClManage, - @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.instance:dev}") - String cldsPermissionInstance) { - this.cldsDao = cldsDao; - this.cldsBpmnTransformer = cldsBpmnTransformer; - this.refProp = refProp; - this.dcaeDispatcherServices = dcaeDispatcherServices; - this.dcaeInventoryServices = dcaeInventoryServices; - this.cldsPermissionTypeClManage = cldsPermissionTypeClManage; - this.cldsPermissionTypeClEvent = cldsPermissionTypeClEvent; + public CldsService( + @Value("${clamp.config.security.permission.type.cl:permission-type-cl}") String cldsPersmissionTypeCl, + @Value("${clamp.config.security.permission.type.cl.manage:permission-type-cl-manage}") String cldsPermissionTypeClManage, + @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.instance:dev}") String cldsPermissionInstance) { this.cldsPermissionTypeFilterVf = cldsPermissionTypeFilterVf; this.cldsPermissionInstance = cldsPermissionInstance; permissionReadCl = SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "read"); permissionUpdateCl = SecureServicePermission.create(cldsPersmissionTypeCl, cldsPermissionInstance, "update"); permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance, - "read"); + "read"); permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, cldsPermissionInstance, - "update"); + "update"); permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, - "update"); - } - - /** - * Gets clds details. - * list of CLDS-Monitoring-Details: CLOSELOOP_NAME | Close loop name - * used in the CLDS application (prefix: ClosedLoop- + unique ClosedLoop ID) - * MODEL_NAME | Model Name in CLDS application SERVICE_TYPE_ID | TypeId returned - * from the DCAE application when the ClosedLoop is submitted - * (DCAEServiceTypeRequest generated in DCAE application). DEPLOYMENT_ID | Id - * generated when the ClosedLoop is deployed in DCAE. TEMPLATE_NAME | Template - * used to generate the ClosedLoop model. ACTION_CD | Current state of the - * ClosedLoop in CLDS application. - * @return the clds details - */ - public List<CldsMonitoringDetails> getCldsDetails() { - util.entering(request, "CldsService: GET model details"); - - final Date startTime = new Date(); - List<CldsMonitoringDetails> cldsMonitoringDetailsList = cldsDao.getCldsMonitoringDetails(); - - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("GET cldsDetails completed"); - util.exiting("200", "Get cldsDetails success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return cldsMonitoringDetailsList; + "update"); } /** - * Gets clds info. - * CLDS IFO service will return 3 things 1. User Name 2. CLDS code version that - * is currently installed from pom.xml file 3. User permissions + * Gets clds info. CLDS IFO service will return 3 things 1. User Name 2. CLDS + * code version that is currently installed from pom.xml file 3. User + * permissions + * * @return the clds info */ public CldsInfo getCldsInfo() { @@ -237,294 +157,6 @@ public class CldsService extends SecureServiceBase { } /** - * REST service that retrieves BPMN for a CLDS model name from the database. - * This is subset of the json getModel. This is only expected to be used for - * testing purposes, not by the UI. - * - * @param modelName the model name - * @return bpmn xml text - content of bpmn given name - */ - public String getBpmnXml(String modelName) { - util.entering(request, "CldsService: GET model bpmn"); - final Date startTime = new Date(); - isAuthorized(permissionReadCl); - logger.info("GET bpmnText for modelName={}", modelName); - final CldsModel model = CldsModel.retrieve(cldsDao, modelName, false); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("GET model bpmn completed"); - util.exiting("200", "Get model bpmn success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return model.getBpmnText(); - } - - /** - * REST service that retrieves image for a CLDS model name from the database. - * This is subset of the json getModel. This is only expected to be used for - * testing purposes, not by the UI. - * - * @param modelName the model name - * @return image xml text - content of image given name - */ - public String getImageXml(String modelName) { - util.entering(request, "CldsService: GET model image"); - final Date startTime = new Date(); - isAuthorized(permissionReadCl); - logger.info("GET imageText for modelName={}", modelName); - final CldsModel model = CldsModel.retrieve(cldsDao, modelName, false); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("GET model image completed"); - util.exiting("200", "Get model image success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return model.getImageText(); - } - - /** - * REST service that retrieves a CLDS model by name from the database. - * - * @param modelName the model name - * @return clds model - clds model for the given model name - */ - public CldsModel getModel(String modelName) { - util.entering(request, "CldsService: GET model"); - final Date startTime = new Date(); - isAuthorized(permissionReadCl); - logger.debug("GET model for modelName={}", modelName); - CldsModel cldsModel = CldsModel.retrieve(cldsDao, modelName, false); - isAuthorizedForVf(cldsModel); - // Try an update for DCAE status - // Checking condition whether our CLDS model can call Inventory Method - try { - // Method to call dcae inventory and invoke insert event method - if (cldsModel.canDcaeInventoryCall() - && !cldsModel.getTemplateName().startsWith(CsarInstaller.TEMPLATE_NAME_PREFIX)) { - dcaeInventoryServices.setEventInventory(cldsModel, getUserId()); - } - // This is a blocking call - if (cldsModel.getEvent().isActionCd(CldsEvent.ACTION_DEPLOY) - && !CldsModel.STATUS_ACTIVE.equals(cldsModel.getStatus()) && cldsModel.getDeploymentId() != null - && cldsModel.getDeploymentStatusUrl() != null) { - checkDcaeDeploymentStatus(cldsModel, CldsEvent.ACTION_DEPLOY, false); - // Refresh the model object in any cases for new event - cldsModel = CldsModel.retrieve(cldsDao, cldsModel.getName(), false); - } - } catch (Exception e) { - LoggingUtils.setErrorContext("900", "Set event inventory error"); - logger.error("getModel set event Inventory error:" + e); - } - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("GET model completed"); - util.exiting("200", "Get model success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return cldsModel; - } - - /** - * REST service that saves a CLDS model by name in the database. - * - * @param modelName the model name - * @param cldsModel the clds model - * @return the clds model - */ - public CldsModel putModel(String modelName, CldsModel cldsModel) { - util.entering(request, "CldsService: PUT model"); - final Date startTime = new Date(); - isAuthorized(permissionUpdateCl); - isAuthorizedForVf(cldsModel); - logger.info("PUT model for modelName={}", modelName); - logger.info("PUT bpmnText={}", cldsModel.getBpmnText()); - logger.info("PUT propText={}", cldsModel.getPropText()); - logger.info("PUT imageText={}", cldsModel.getImageText()); - fillInCldsModel(cldsModel); - cldsModel.save(cldsDao, getUserId()); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("PUT model completed"); - util.exiting("200", "Put model success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return cldsModel; - } - - /** - * REST service that retrieves a list of CLDS model names. - * - * @return model names in JSON - */ - public List<ValueItem> getModelNames() { - util.entering(request, "CldsService: GET model names"); - final Date startTime = new Date(); - isAuthorized(permissionReadCl); - logger.info("GET list of model names"); - final List<ValueItem> names = cldsDao.getModelNames(); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("GET model names completed"); - util.exiting("200", "Get model names success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - 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. - * - * @param action the action - * @param modelName the model name - * @param test the test - * @param model the model - * @return response entity - * @throws TransformerException In case of issues when doing the XSLT of the BPMN flow - * @throws ParseException In case of issues when parsing the JSON - */ - public ResponseEntity<?> putModelAndProcessAction(String action, String modelName, String test, CldsModel model) - throws TransformerException, ParseException { - util.entering(request, "CldsService: Process model action"); - final Date startTime = new Date(); - String errorMessage = ""; - String actionCd = ""; - try { - actionCd = action.toUpperCase(); - SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage, - cldsPermissionInstance, actionCd); - isAuthorized(permisionManage); - isAuthorizedForVf(model); - String userId = getUserId(); - logger.info("PUT actionCd={}", actionCd); - logger.info("PUT modelName={}", modelName); - logger.info("PUT test={}", test); - logger.info("PUT bpmnText={}", model.getBpmnText()); - logger.info("PUT propText={}", model.getPropText()); - logger.info("PUT userId={}", userId); - logger.info("PUT getTypeId={}", model.getTypeId()); - logger.info("PUT deploymentId={}", model.getDeploymentId()); - this.fillInCldsModel(model); - // save model to db just in case - model.save(cldsDao, getUserId()); - - // get vars and format if necessary - final String prop = model.getPropText(); - final String bpmn = model.getBpmnText(); - final String docText = model.getDocText(); - final String controlName = model.getControlName(); - final String bpmnJson = cldsBpmnTransformer.doXslTransformToString(bpmn); - logger.info("PUT bpmnJson={}", bpmnJson); - // Test flag coming from UI or from Clamp config - boolean isTest = Boolean.parseBoolean(test) - || Boolean.parseBoolean(refProp.getStringValue("action.test.override")); - logger.info("PUT isTest={}", isTest); - boolean isInsertTestEvent = Boolean.parseBoolean(refProp.getStringValue("action.insert.test.event")); - logger.info("PUT isInsertTestEvent={}", isInsertTestEvent); - // determine if requested action is permitted - model.validateAction(actionCd); - logger.info("modelProp - " + prop); - logger.info("docText - " + docText); - try { - String result = camelProxy.executeAction(actionCd, prop, bpmnJson, modelName, controlName, docText, - isTest, userId, isInsertTestEvent, model.getEvent().getActionCd()); - logger.info("Starting Camel flow on request, result is: ", result); - } catch (SdcCommunicationException | PolicyClientException | BadRequestException e) { - logger.error("Exception occured during invoking Camel process", e); - errorMessage = e.getMessage(); - } - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("Process model action completed"); - } catch (Exception e) { - logger.error("Exception occured during putModelAndProcessAction", e); - errorMessage = e.getMessage(); - } - - if (null == errorMessage || (null != errorMessage && !errorMessage.isEmpty())) { - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), actionCd, CldsEvent.ACTION_STATE_ERROR, - null); - // Need a refresh as new events have been inserted - model = CldsModel.retrieve(cldsDao, modelName, false); - if (null == errorMessage) { - errorMessage = "No response from Policy"; - } - model.setErrorMessageForUi(errorMessage); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "putModelAndProcessAction failed", Level.INFO, - ONAPLogConstants.ResponseStatus.ERROR); - return new ResponseEntity<>(model, HttpStatus.INTERNAL_SERVER_ERROR); - } else { - // Need a refresh as new events have been inserted, could have been deleted so - // not blocking call - model = CldsModel.retrieve(cldsDao, modelName, true); - util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return new ResponseEntity<>(model, HttpStatus.OK); - } - } - - /** - * REST service that accepts events for a model. - * - * @param test the test - * @param dcaeEvent the dcae event - * @return the string - */ - public String postDcaeEvent(String test, DcaeEvent dcaeEvent) { - util.entering(request, "CldsService: Post dcae event"); - final Date startTime = new Date(); - String userid = null; - // TODO: allow auth checking to be turned off by removing the permission - // type property - if (cldsPermissionTypeClEvent != null && cldsPermissionTypeClEvent.length() > 0) { - SecureServicePermission permissionEvent = SecureServicePermission.create(cldsPermissionTypeClEvent, - cldsPermissionInstance, dcaeEvent.getEvent()); - isAuthorized(permissionEvent); - userid = getUserId(); - } - // Flag indicates whether it is triggered by Validation Test button from - // UI - boolean isTest = Boolean.parseBoolean(test); - int instanceCount = 0; - if (dcaeEvent.getInstances() != null) { - instanceCount = dcaeEvent.getInstances().size(); - } - String msgInfo = "event=" + dcaeEvent.getEvent() + " serviceUUID=" + dcaeEvent.getServiceUUID() - + " resourceUUID=" + dcaeEvent.getResourceUUID() - + " artifactName=" + dcaeEvent.getArtifactName() - + " instance count=" + instanceCount + " isTest=" + isTest; - logger.info("POST dcae event {}", msgInfo); - if (isTest) { - logger.warn("Ignorning test event from DCAE"); - } else { - if (DcaeEvent.EVENT_DEPLOYMENT.equalsIgnoreCase(dcaeEvent.getEvent())) { - CldsModel.insertModelInstance(cldsDao, dcaeEvent, userid); - } else { - CldsEvent.insEvent(cldsDao, dcaeEvent.getControlName(), userid, dcaeEvent.getCldsActionCd(), - CldsEvent.ACTION_STATE_RECEIVED, null); - } - } - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("Post dcae event completed"); - util.exiting("200", "Post dcae event success", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return msgInfo; - } - - /** - * REST service that retrieves total properties required by UI. - * - * @return the sdc properties - * @throws IOException In case of issues - */ - public String getSdcProperties() throws IOException { - return refProp.getJsonTemplate(GLOBAL_PROPERTIES_KEY).toString(); - } - - - /** * Determine if the user is authorized for a particular VF by its invariant * UUID. * @@ -534,7 +166,7 @@ public class CldsService extends SecureServiceBase { public boolean isAuthorizedForVf(String vfInvariantUuid) { if (cldsPermissionTypeFilterVf != null && !cldsPermissionTypeFilterVf.isEmpty()) { SecureServicePermission permission = SecureServicePermission.create(cldsPermissionTypeFilterVf, - cldsPermissionInstance, vfInvariantUuid); + cldsPermissionInstance, vfInvariantUuid); return isAuthorized(permission); } else { // if CLDS_PERMISSION_TYPE_FILTER_VF property is not provided, then @@ -545,169 +177,6 @@ public class CldsService extends SecureServiceBase { } /** - * Determine if the user is authorized for a particular VF by its invariant - * UUID. If not authorized, then NotAuthorizedException is thrown. - * - * @param model The clds model - * @return boolean or throws NotAuthorizedException - */ - private boolean isAuthorizedForVf(CldsModel model) { - String vf = ModelProperties.getVf(model); - if (vf == null || vf.length() == 0) { - logger.info("VF not found in model"); - return true; - } else { - return isAuthorizedForVf(vf); - } - } - - /** - * Deploy model response entity. - * - * @param modelName the model name - * @param model the model - * @return the response entity - */ - public ResponseEntity<CldsModel> deployModel(String modelName, CldsModel model) { - util.entering(request, "CldsService: Deploy model"); - final Date startTime = new Date(); - String errorMessage = ""; - try { - fillInCldsModel(model); - String bpmnJson = cldsBpmnTransformer.doXslTransformToString(model.getBpmnText()); - logger.info("PUT bpmnJson={}", bpmnJson); - SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage, - cldsPermissionInstance, CldsEvent.ACTION_DEPLOY); - isAuthorized(permisionManage); - isAuthorizedForVf(model); - 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()) { - deploymentId = model.getDeploymentId(); - } else { - model.setDeploymentId(deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId"); - } - model.setDeploymentStatusUrl(dcaeDispatcherServices.createNewDeployment(deploymentId, model.getTypeId(), - modelProp.getGlobal().getDeployParameters())); - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), CldsEvent.ACTION_DEPLOY, - CldsEvent.ACTION_STATE_INITIATED, null); - model.save(cldsDao, getUserId()); - // This is a blocking call - checkDcaeDeploymentStatus(model, CldsEvent.ACTION_DEPLOY, true); - // Refresh the model object in any cases for new event - model = CldsModel.retrieve(cldsDao, model.getName(), false); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("Deploy model completed"); - } catch (Exception e) { - errorMessage = e.getMessage(); - logger.error("Exception occured during deployModel", e); - } - if (!errorMessage.isEmpty()) { - model.setErrorMessageForUi(errorMessage); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DeployModel failed", Level.INFO, - ONAPLogConstants.ResponseStatus.ERROR); - return new ResponseEntity<>(model, HttpStatus.INTERNAL_SERVER_ERROR); - } else { - util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return new ResponseEntity<>(model, HttpStatus.OK); - } - } - - /** - * Un deploy model response entity. - * - * @param modelName the model name - * @param model the model - * @return the response entity - */ - public ResponseEntity<CldsModel> unDeployModel(String modelName, CldsModel model) { - util.entering(request, "CldsService: Undeploy model"); - final Date startTime = new Date(); - String errorMessage = ""; - try { - SecureServicePermission permisionManage = SecureServicePermission.create(cldsPermissionTypeClManage, - cldsPermissionInstance, CldsEvent.ACTION_UNDEPLOY); - isAuthorized(permisionManage); - isAuthorizedForVf(model); - model.setDeploymentStatusUrl( - dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(), model.getTypeId())); - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), CldsEvent.ACTION_UNDEPLOY, - CldsEvent.ACTION_STATE_INITIATED, null); - // clean the deployment ID - model.setDeploymentId(null); - model.save(cldsDao, getUserId()); - // This is a blocking call - checkDcaeDeploymentStatus(model, CldsEvent.ACTION_UNDEPLOY, true); - // Refresh the model object in any cases for new event - model = CldsModel.retrieve(cldsDao, model.getName(), false); - // audit log - LoggingUtils.setTimeContext(startTime, new Date()); - auditLogger.info("Undeploy model completed"); - } catch (Exception e) { - errorMessage = e.getMessage(); - logger.error("Exception occured during unDeployModel", e); - } - if (!errorMessage.isEmpty()) { - model.setErrorMessageForUi(errorMessage); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "UndeployModel failed", Level.INFO, - ONAPLogConstants.ResponseStatus.ERROR); - return new ResponseEntity<>(model, HttpStatus.INTERNAL_SERVER_ERROR); - } else { - util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED); - return new ResponseEntity<>(model, HttpStatus.OK); - } - } - - private void checkDcaeDeploymentStatus(CldsModel model, String cldsEvent, boolean withRetry) - throws InterruptedException { - String operationStatus = withRetry - ? dcaeDispatcherServices.getOperationStatusWithRetry(model.getDeploymentStatusUrl()) - : dcaeDispatcherServices.getOperationStatus(model.getDeploymentStatusUrl()); - if ("succeeded".equalsIgnoreCase(operationStatus)) { - logger.info(cldsEvent + " model (" + model.getName() + ") succeeded...Deployment Id is - " - + model.getDeploymentId()); - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), cldsEvent, - CldsEvent.ACTION_STATE_COMPLETED, null); - } else { - String info = "DCAE " + cldsEvent + " (" + model.getName() + ") failed...Operation Status is - " - + operationStatus; - logger.info(info); - CldsEvent.insEvent(cldsDao, model.getControlName(), getUserId(), cldsEvent, CldsEvent.ACTION_STATE_ERROR, - null); - util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), "DCAE operation(" + cldsEvent + ") failed", - Level.INFO, ONAPLogConstants.ResponseStatus.ERROR); - throw new HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, info); - } - } - - private void checkForDuplicateServiceVf(String modelName, String modelPropText) throws IOException { - JsonElement globalNode = JsonUtils.GSON.fromJson(modelPropText, JsonObject.class).get("global"); - String service = JsonUtils.getStringValueByName(globalNode, "service"); - List<String> resourceVf = JsonUtils.getStringValuesByName(globalNode, "vf"); - if (service != null && resourceVf != null && !resourceVf.isEmpty()) { - List<CldsModelProp> cldsModelPropList = cldsDao.getDeployedModelProperties(); - for (CldsModelProp cldsModelProp : cldsModelPropList) { - JsonElement currentNode = JsonUtils.GSON - .fromJson(cldsModelProp.getPropText(), JsonObject.class) - .get("global"); - String currentService = JsonUtils.getStringValueByName(currentNode, "service"); - List<String> currentVf = JsonUtils.getStringValuesByName(currentNode, "vf"); - 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."); - } - } - } - } - } - - /** * Sets logging util. * * @param utilP the util p diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java deleted file mode 100644 index 183db8bd..00000000 --- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java +++ /dev/null @@ -1,166 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Modifications Copyright (c) 2019 Samsung - * ================================================================================ - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.service; - -import java.util.Date; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.servlet.http.HttpServletRequest; - -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.util.LoggingUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - * Service to save and retrieve the CLDS model attributes. - */ -@Component -public class CldsTemplateService extends SecureServiceBase { - - @Value("${clamp.config.security.permission.type.template:permission-type-template}") - private String cldsPermissionTypeTemplate; - @Value("${clamp.config.security.permission.instance:dev}") - private String cldsPermissionInstance; - private SecureServicePermission permissionReadTemplate; - private SecureServicePermission permissionUpdateTemplate; - @Autowired - private HttpServletRequest request; - - @PostConstruct - private final void afterConstruction() { - permissionReadTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, - cldsPermissionInstance, "read"); - permissionUpdateTemplate = SecureServicePermission.create(cldsPermissionTypeTemplate, - cldsPermissionInstance, "update"); - } - - @Autowired - private CldsDao cldsDao; - private LoggingUtils util = new LoggingUtils(logger); - - /** - * REST service that retrieves BPMN for a CLDS template name from the - * database. This is subset of the json getModel. This is only expected to - * be used for testing purposes, not by the UI. - * - * @param templateName template name - * @return bpmn xml text - content of bpmn given name - */ - public String getBpmnTemplate(String templateName) { - util.entering(request, "CldsTemplateService: GET template bpmn"); - final Date startTime = new Date(); - isAuthorized(permissionReadTemplate); - logger.info("GET bpmnText for templateName=" + templateName); - - CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false); - auditLogInfo(util, "GET template bpmn", startTime); - return template.getBpmnText(); - } - - /** - * REST service that retrieves image for a CLDS template name from the - * database. This is subset of the json getModel. This is only expected to - * be used for testing purposes, not by the UI. - * - * @param templateName template name - * @return image xml text - content of image given name - */ - public String getImageXml(String templateName) { - util.entering(request, "CldsTemplateService: GET template image"); - final Date startTime = new Date(); - isAuthorized(permissionReadTemplate); - logger.info("GET imageText for templateName=" + templateName); - - CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false); - auditLogInfo(util, "GET template image", startTime); - return template.getImageText(); - } - - /** - * REST service that retrieves a CLDS template by name from the database. - * - * @param templateName template name - * @return clds template - clds template for the given template name - */ - public CldsTemplate getTemplate(String templateName) { - util.entering(request, "CldsTemplateService: GET template"); - final Date startTime = new Date(); - isAuthorized(permissionReadTemplate); - logger.info("GET model for templateName=" + templateName); - - CldsTemplate template = CldsTemplate.retrieve(cldsDao, templateName, false); - template.setUserAuthorizedToUpdate(isAuthorizedNoException(permissionUpdateTemplate)); - auditLogInfo(util, "GET template", startTime); - return template; - } - - /** - * REST service that saves a CLDS template by name in the database. - * - * @param templateName template name - * @param cldsTemplate clds template - * @return The CldsTemplate modified and saved in DB - */ - public CldsTemplate putTemplate(String templateName, CldsTemplate cldsTemplate) { - util.entering(request, "CldsTemplateService: PUT template"); - final Date startTime = new Date(); - isAuthorized(permissionUpdateTemplate); - logger.info("PUT Template for templateName=" + templateName); - logger.info("PUT bpmnText=" + cldsTemplate.getBpmnText()); - logger.info("PUT propText=" + cldsTemplate.getPropText()); - logger.info("PUT imageText=" + cldsTemplate.getImageText()); - cldsTemplate.setName(templateName); - cldsTemplate.save(cldsDao, null); - auditLogInfo(util, "PUT template", startTime); - return cldsTemplate; - } - - /** - * REST service that retrieves a list of CLDS template names. - * - * @return template names in JSON - */ - public List<ValueItem> getTemplateNames() { - util.entering(request, "CldsTemplateService: GET template names"); - final Date startTime = new Date(); - isAuthorized(permissionReadTemplate); - logger.info("GET list of template names"); - - List<ValueItem> names = cldsDao.getTemplateNames(); - auditLogInfo(util, "GET template names", startTime); - return names; - } - - // Created for the integration test - public void setLoggingUtil(LoggingUtils utilP) { - util = utilP; - } -} diff --git a/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java b/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java deleted file mode 100644 index 0d53e915..00000000 --- a/src/main/java/org/onap/clamp/clds/service/CldsToscaService.java +++ /dev/null @@ -1,166 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Modifications Copyright (c) 2019 Samsung - * ================================================================================ - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.service; - -import java.util.Collections; -import java.util.Date; -import java.util.List; -import java.util.Optional; - -import javax.annotation.PostConstruct; - -import org.onap.clamp.clds.client.req.policy.PolicyClient; -import org.onap.clamp.clds.config.ClampProperties; -import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.model.CldsToscaModel; -import org.onap.clamp.clds.util.LoggingUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; - -/** - * REST services to manage Tosca Model. - */ -@Component -public class CldsToscaService extends SecureServiceBase { - - @Value("${clamp.config.security.permission.type.tosca:permission-type-tosca}") - private String cldsPermissionTypeTosca; - @Value("${clamp.config.security.permission.instance:dev}") - private String cldsPermissionInstance; - private SecureServicePermission permissionReadTosca; - private SecureServicePermission permissionUpdateTosca; - - @Autowired - private CldsDao cldsDao; - - @Autowired - private ClampProperties refProp; - - @Autowired - private PolicyClient policyClient; - private LoggingUtils util = new LoggingUtils(logger); - - @PostConstruct - private final void initConstruct() { - permissionReadTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, "read"); - permissionUpdateTosca = SecureServicePermission.create(cldsPermissionTypeTosca, cldsPermissionInstance, - "update"); - } - - /** - * REST service to upload a new Tosca Model or update an existing Tosca - * model with new version. This API will parse the Tosca model yaml and - * generates a JSON schema out of it. - * - * @param toscaModelName - * Tosca model name to be used as a key - * @param cldsToscaModel - * Object containing the tosca model yaml - * - * @return clds tosca models - list of CLDS tosca models for a given policy - * type - */ - public ResponseEntity<?> parseToscaModelAndSave(String toscaModelName, CldsToscaModel cldsToscaModel) { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsToscaService: Parse Tosca model and save", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionUpdateTosca); - cldsToscaModel.setToscaModelName(toscaModelName); - cldsToscaModel = cldsToscaModel.save(cldsDao, refProp, policyClient, getUserId()); - auditLogInfo("Parse Tosca model and save", startTime); - return new ResponseEntity<>(cldsToscaModel, HttpStatus.CREATED); - } - - /** - * REST service to retrieve all Tosca models from the CLDS database. - * - * @return clds tosca models - list of CLDS tosca models - */ - public List<CldsToscaModel> getAllToscaModels() { - // TODO revisit based on new permissions - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsToscaService: Get All tosca models", getPrincipalName()); - isAuthorized(permissionReadTosca); - - Optional<List<CldsToscaModel>> cldsToscaModels = Optional.ofNullable(cldsDao.getAllToscaModels()); - auditLogInfo("Get All tosca models", startTime); - return cldsToscaModels.orElse(Collections.emptyList()); - } - - /** - * REST service that retrieves a CLDS Tosca model by model name from the - * database. - * - * @param toscaModelName - * Path param with tosca model name - * - * @return clds tosca model - CLDS tosca model for a given tosca model name - */ - public CldsToscaModel getToscaModel(String toscaModelName) { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsToscaService: Get tosca models by model name", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionReadTosca); - - Optional<List<CldsToscaModel>> cldsToscaModels = Optional.ofNullable( - cldsDao.getToscaModelByName(toscaModelName)); - auditLogInfo("Get tosca models by model name", startTime); - return cldsToscaModels.map(models -> models.get(0)).orElse(null); - } - - /** - * REST service that retrieves a CLDS Tosca model lists for a policy type - * from the database. - * @param policyType - * The type of the policy - * @return clds tosca model - CLDS tosca model for a given policy type - */ - public CldsToscaModel getToscaModelsByPolicyType(String policyType) { - final Date startTime = new Date(); - LoggingUtils.setRequestContext("CldsToscaService: Get tosca models by policyType", getPrincipalName()); - // TODO revisit based on new permissions - isAuthorized(permissionReadTosca); - - Optional<List<CldsToscaModel>> cldsToscaModels = Optional.ofNullable( - cldsDao.getToscaModelByPolicyType(policyType)); - auditLogInfo("Get tosca models by policyType", startTime); - return cldsToscaModels.map(models -> models.get(0)).orElse(null); - } - - public ResponseEntity<?> deleteToscaModelById(String toscaModeId) { - // TODO - return null; - } - - // Created for the integration test - public void setLoggingUtil(LoggingUtils utilP) { - util = utilP; - } - -} diff --git a/src/main/resources/META-INF/resources/swagger.html b/src/main/resources/META-INF/resources/swagger.html index 0a0a877c..d2ec9660 100644 --- a/src/main/resources/META-INF/resources/swagger.html +++ b/src/main/resources/META-INF/resources/swagger.html @@ -444,313 +444,132 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </li> <li><a href="#_paths">2. Paths</a> <ul class="sectlevel2"> -<li><a href="#_route187">2.1. PUT /v1/clds/action/{action}/{modelName}?test={test}</a> +<li><a href="#_route32">2.1. GET /v1/clds/cldsInfo</a> <ul class="sectlevel3"> -<li><a href="#_parameters">2.1.1. Parameters</a></li> -<li><a href="#_responses">2.1.2. Responses</a></li> -<li><a href="#_consumes">2.1.3. Consumes</a></li> -<li><a href="#_produces">2.1.4. Produces</a></li> +<li><a href="#_responses">2.1.1. Responses</a></li> +<li><a href="#_produces">2.1.2. Produces</a></li> </ul> </li> -<li><a href="#_route179">2.2. GET /v1/clds/cldsDetails</a> +<li><a href="#_route33">2.2. GET /v1/healthcheck</a> <ul class="sectlevel3"> <li><a href="#_responses_2">2.2.1. Responses</a></li> <li><a href="#_produces_2">2.2.2. Produces</a></li> </ul> </li> -<li><a href="#_route180">2.3. GET /v1/clds/cldsInfo</a> +<li><a href="#_route34">2.3. GET /v1/user/getUser</a> <ul class="sectlevel3"> <li><a href="#_responses_3">2.3.1. Responses</a></li> <li><a href="#_produces_3">2.3.2. Produces</a></li> </ul> </li> -<li><a href="#_route188">2.4. POST /v1/clds/dcae/event?test={test}</a> +<li><a href="#_route30">2.4. PUT /v2/loop/delete/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_2">2.4.1. Parameters</a></li> +<li><a href="#_parameters">2.4.1. Parameters</a></li> <li><a href="#_responses_4">2.4.2. Responses</a></li> -<li><a href="#_consumes_2">2.4.3. Consumes</a></li> -<li><a href="#_produces_4">2.4.4. Produces</a></li> </ul> </li> -<li><a href="#_route190">2.5. PUT /v1/clds/deploy/{modelName}</a> +<li><a href="#_route25">2.5. PUT /v2/loop/deploy/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_3">2.5.1. Parameters</a></li> +<li><a href="#_parameters_2">2.5.1. Parameters</a></li> <li><a href="#_responses_5">2.5.2. Responses</a></li> -<li><a href="#_consumes_3">2.5.3. Consumes</a></li> -<li><a href="#_produces_5">2.5.4. Produces</a></li> +<li><a href="#_produces_4">2.5.3. Produces</a></li> </ul> </li> -<li><a href="#_route186">2.6. GET /v1/clds/model-names</a> +<li><a href="#_route19">2.6. GET /v2/loop/getAllNames</a> <ul class="sectlevel3"> <li><a href="#_responses_6">2.6.1. Responses</a></li> -<li><a href="#_produces_6">2.6.2. Produces</a></li> +<li><a href="#_produces_5">2.6.2. Produces</a></li> </ul> </li> -<li><a href="#_route182">2.7. GET /v1/clds/model/bpmn/{modelName}</a> +<li><a href="#_route31">2.7. GET /v2/loop/getstatus/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_4">2.7.1. Parameters</a></li> +<li><a href="#_parameters_3">2.7.1. Parameters</a></li> <li><a href="#_responses_7">2.7.2. Responses</a></li> -<li><a href="#_produces_7">2.7.3. Produces</a></li> +<li><a href="#_produces_6">2.7.3. Produces</a></li> </ul> </li> -<li><a href="#_route183">2.8. GET /v1/clds/model/image/{modelName}</a> +<li><a href="#_route28">2.8. PUT /v2/loop/restart/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_5">2.8.1. Parameters</a></li> +<li><a href="#_parameters_4">2.8.1. Parameters</a></li> <li><a href="#_responses_8">2.8.2. Responses</a></li> -<li><a href="#_produces_8">2.8.3. Produces</a></li> +<li><a href="#_produces_7">2.8.3. Produces</a></li> </ul> </li> -<li><a href="#_route184">2.9. GET /v1/clds/model/{modelName}</a> +<li><a href="#_route27">2.9. PUT /v2/loop/stop/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_6">2.9.1. Parameters</a></li> +<li><a href="#_parameters_5">2.9.1. Parameters</a></li> <li><a href="#_responses_9">2.9.2. Responses</a></li> -<li><a href="#_produces_9">2.9.3. Produces</a></li> +<li><a href="#_produces_8">2.9.3. Produces</a></li> </ul> </li> -<li><a href="#_route185">2.10. PUT /v1/clds/model/{modelName}</a> +<li><a href="#_route29">2.10. PUT /v2/loop/submit/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_7">2.10.1. Parameters</a></li> +<li><a href="#_parameters_6">2.10.1. Parameters</a></li> <li><a href="#_responses_10">2.10.2. Responses</a></li> -<li><a href="#_consumes_4">2.10.3. Consumes</a></li> -<li><a href="#_produces_10">2.10.4. Produces</a></li> +<li><a href="#_produces_9">2.10.3. Produces</a></li> </ul> </li> -<li><a href="#_route189">2.11. GET /v1/clds/properties</a> +<li><a href="#_route21">2.11. GET /v2/loop/svgRepresentation/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_responses_11">2.11.1. Responses</a></li> -<li><a href="#_produces_11">2.11.2. Produces</a></li> +<li><a href="#_parameters_7">2.11.1. Parameters</a></li> +<li><a href="#_responses_11">2.11.2. Responses</a></li> +<li><a href="#_produces_10">2.11.3. Produces</a></li> </ul> </li> -<li><a href="#_route191">2.12. PUT /v1/clds/undeploy/{modelName}</a> +<li><a href="#_route26">2.12. PUT /v2/loop/undeploy/{loopName}</a> <ul class="sectlevel3"> <li><a href="#_parameters_8">2.12.1. Parameters</a></li> <li><a href="#_responses_12">2.12.2. Responses</a></li> -<li><a href="#_consumes_5">2.12.3. Consumes</a></li> -<li><a href="#_produces_12">2.12.4. Produces</a></li> +<li><a href="#_produces_11">2.12.3. Produces</a></li> </ul> </li> -<li><a href="#_route196">2.13. GET /v1/cldsTempate/template-names</a> +<li><a href="#_route22">2.13. POST /v2/loop/updateGlobalProperties/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_responses_13">2.13.1. Responses</a></li> -<li><a href="#_produces_13">2.13.2. Produces</a></li> +<li><a href="#_parameters_9">2.13.1. Parameters</a></li> +<li><a href="#_responses_13">2.13.2. Responses</a></li> +<li><a href="#_consumes">2.13.3. Consumes</a></li> +<li><a href="#_produces_12">2.13.4. Produces</a></li> </ul> </li> -<li><a href="#_route192">2.14. GET /v1/cldsTempate/template/bpmn/{templateName}</a> +<li><a href="#_route24">2.14. POST /v2/loop/updateMicroservicePolicy/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_9">2.14.1. Parameters</a></li> +<li><a href="#_parameters_10">2.14.1. Parameters</a></li> <li><a href="#_responses_14">2.14.2. Responses</a></li> -<li><a href="#_produces_14">2.14.3. Produces</a></li> +<li><a href="#_consumes_2">2.14.3. Consumes</a></li> +<li><a href="#_produces_13">2.14.4. Produces</a></li> </ul> </li> -<li><a href="#_route193">2.15. GET /v1/cldsTempate/template/image/{templateName}</a> +<li><a href="#_route23">2.15. POST /v2/loop/updateOperationalPolicies/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_10">2.15.1. Parameters</a></li> +<li><a href="#_parameters_11">2.15.1. Parameters</a></li> <li><a href="#_responses_15">2.15.2. Responses</a></li> -<li><a href="#_produces_15">2.15.3. Produces</a></li> +<li><a href="#_consumes_3">2.15.3. Consumes</a></li> +<li><a href="#_produces_14">2.15.4. Produces</a></li> </ul> </li> -<li><a href="#_route194">2.16. GET /v1/cldsTempate/template/{templateName}</a> +<li><a href="#_route20">2.16. GET /v2/loop/{loopName}</a> <ul class="sectlevel3"> -<li><a href="#_parameters_11">2.16.1. Parameters</a></li> +<li><a href="#_parameters_12">2.16.1. Parameters</a></li> <li><a href="#_responses_16">2.16.2. Responses</a></li> -<li><a href="#_produces_16">2.16.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route195">2.17. PUT /v1/cldsTempate/template/{templateName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_12">2.17.1. Parameters</a></li> -<li><a href="#_responses_17">2.17.2. Responses</a></li> -<li><a href="#_consumes_6">2.17.3. Consumes</a></li> -<li><a href="#_produces_17">2.17.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route204">2.18. GET /v1/dictionary</a> -<ul class="sectlevel3"> -<li><a href="#_responses_18">2.18.1. Responses</a></li> -<li><a href="#_produces_18">2.18.2. Produces</a></li> -</ul> -</li> -<li><a href="#_route203">2.19. PUT /v1/dictionary/{dictionaryName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_13">2.19.1. Parameters</a></li> -<li><a href="#_responses_19">2.19.2. Responses</a></li> -<li><a href="#_consumes_7">2.19.3. Consumes</a></li> -<li><a href="#_produces_19">2.19.4. Produces</a></li> -</ul> -</li> -<li><a href="#_v1_dictionary_dictionaryname_items_get">2.20. GET /v1/dictionary/{dictionaryName}/items</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_14">2.20.1. Parameters</a></li> -<li><a href="#_responses_20">2.20.2. Responses</a></li> -<li><a href="#_produces_20">2.20.3. Produces</a></li> -</ul> -</li> -<li><a href="#_v1_dictionary_dictionaryname_items_put">2.21. PUT /v1/dictionary/{dictionaryName}/items</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_15">2.21.1. Parameters</a></li> -<li><a href="#_responses_21">2.21.2. Responses</a></li> -<li><a href="#_consumes_8">2.21.3. Consumes</a></li> -<li><a href="#_produces_21">2.21.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route181">2.22. GET /v1/healthcheck</a> -<ul class="sectlevel3"> -<li><a href="#_responses_22">2.22.1. Responses</a></li> -<li><a href="#_produces_22">2.22.2. Produces</a></li> -</ul> -</li> -<li><a href="#_route200">2.23. GET /v1/tosca/models</a> -<ul class="sectlevel3"> -<li><a href="#_responses_23">2.23.1. Responses</a></li> -<li><a href="#_produces_23">2.23.2. Produces</a></li> -</ul> -</li> -<li><a href="#_route198">2.24. GET /v1/tosca/models/policyType/{policyType}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_16">2.24.1. Parameters</a></li> -<li><a href="#_responses_24">2.24.2. Responses</a></li> -<li><a href="#_produces_24">2.24.3. Produces</a></li> -</ul> -</li> -<li><a href="#_v1_tosca_models_toscamodelname_get">2.25. GET /v1/tosca/models/{toscaModelName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_17">2.25.1. Parameters</a></li> -<li><a href="#_responses_25">2.25.2. Responses</a></li> -<li><a href="#_produces_25">2.25.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route197">2.26. PUT /v1/tosca/models/{toscaModelName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_18">2.26.1. Parameters</a></li> -<li><a href="#_responses_26">2.26.2. Responses</a></li> -<li><a href="#_consumes_9">2.26.3. Consumes</a></li> -<li><a href="#_produces_26">2.26.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route205">2.27. GET /v1/user/getUser</a> -<ul class="sectlevel3"> -<li><a href="#_responses_27">2.27.1. Responses</a></li> -<li><a href="#_produces_27">2.27.2. Produces</a></li> -</ul> -</li> -<li><a href="#_route177">2.28. PUT /v2/loop/delete/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_19">2.28.1. Parameters</a></li> -<li><a href="#_responses_28">2.28.2. Responses</a></li> -</ul> -</li> -<li><a href="#_route172">2.29. PUT /v2/loop/deploy/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_20">2.29.1. Parameters</a></li> -<li><a href="#_responses_29">2.29.2. Responses</a></li> -<li><a href="#_produces_28">2.29.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route166">2.30. GET /v2/loop/getAllNames</a> -<ul class="sectlevel3"> -<li><a href="#_responses_30">2.30.1. Responses</a></li> -<li><a href="#_produces_29">2.30.2. Produces</a></li> -</ul> -</li> -<li><a href="#_route178">2.31. GET /v2/loop/getstatus/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_21">2.31.1. Parameters</a></li> -<li><a href="#_responses_31">2.31.2. Responses</a></li> -<li><a href="#_produces_30">2.31.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route175">2.32. PUT /v2/loop/restart/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_22">2.32.1. Parameters</a></li> -<li><a href="#_responses_32">2.32.2. Responses</a></li> -<li><a href="#_produces_31">2.32.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route174">2.33. PUT /v2/loop/stop/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_23">2.33.1. Parameters</a></li> -<li><a href="#_responses_33">2.33.2. Responses</a></li> -<li><a href="#_produces_32">2.33.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route176">2.34. PUT /v2/loop/submit/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_24">2.34.1. Parameters</a></li> -<li><a href="#_responses_34">2.34.2. Responses</a></li> -<li><a href="#_produces_33">2.34.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route168">2.35. GET /v2/loop/svgRepresentation/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_25">2.35.1. Parameters</a></li> -<li><a href="#_responses_35">2.35.2. Responses</a></li> -<li><a href="#_produces_34">2.35.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route173">2.36. PUT /v2/loop/undeploy/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_26">2.36.1. Parameters</a></li> -<li><a href="#_responses_36">2.36.2. Responses</a></li> -<li><a href="#_produces_35">2.36.3. Produces</a></li> -</ul> -</li> -<li><a href="#_route169">2.37. POST /v2/loop/updateGlobalProperties/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_27">2.37.1. Parameters</a></li> -<li><a href="#_responses_37">2.37.2. Responses</a></li> -<li><a href="#_consumes_10">2.37.3. Consumes</a></li> -<li><a href="#_produces_36">2.37.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route171">2.38. POST /v2/loop/updateMicroservicePolicy/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_28">2.38.1. Parameters</a></li> -<li><a href="#_responses_38">2.38.2. Responses</a></li> -<li><a href="#_consumes_11">2.38.3. Consumes</a></li> -<li><a href="#_produces_37">2.38.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route170">2.39. POST /v2/loop/updateOperationalPolicies/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_29">2.39.1. Parameters</a></li> -<li><a href="#_responses_39">2.39.2. Responses</a></li> -<li><a href="#_consumes_12">2.39.3. Consumes</a></li> -<li><a href="#_produces_38">2.39.4. Produces</a></li> -</ul> -</li> -<li><a href="#_route167">2.40. GET /v2/loop/{loopName}</a> -<ul class="sectlevel3"> -<li><a href="#_parameters_30">2.40.1. Parameters</a></li> -<li><a href="#_responses_40">2.40.2. Responses</a></li> -<li><a href="#_produces_39">2.40.3. Produces</a></li> +<li><a href="#_produces_15">2.16.3. Produces</a></li> </ul> </li> </ul> </li> <li><a href="#_definitions">3. Definitions</a> <ul class="sectlevel2"> -<li><a href="#_cldsdictionary">3.1. CldsDictionary</a></li> -<li><a href="#_cldsdictionaryitem">3.2. CldsDictionaryItem</a></li> -<li><a href="#_cldsevent">3.3. CldsEvent</a></li> -<li><a href="#_cldsinfo">3.4. CldsInfo</a></li> -<li><a href="#_cldsmodel">3.5. CldsModel</a></li> -<li><a href="#_cldsmodelinstance">3.6. CldsModelInstance</a></li> -<li><a href="#_cldsmonitoringdetails">3.7. CldsMonitoringDetails</a></li> -<li><a href="#_cldstemplate">3.8. CldsTemplate</a></li> -<li><a href="#_cldstoscamodel">3.9. CldsToscaModel</a></li> -<li><a href="#_dcaeevent">3.10. DcaeEvent</a></li> -<li><a href="#_externalcomponent">3.11. ExternalComponent</a></li> -<li><a href="#_externalcomponentstate">3.12. ExternalComponentState</a></li> -<li><a href="#_jsonarray">3.13. JsonArray</a></li> -<li><a href="#_jsonnull">3.14. JsonNull</a></li> -<li><a href="#_jsonobject">3.15. JsonObject</a></li> -<li><a href="#_jsonprimitive">3.16. JsonPrimitive</a></li> -<li><a href="#_loop">3.17. Loop</a></li> -<li><a href="#_looplog">3.18. LoopLog</a></li> -<li><a href="#_microservicepolicy">3.19. MicroServicePolicy</a></li> -<li><a href="#_number">3.20. Number</a></li> -<li><a href="#_operationalpolicy">3.21. OperationalPolicy</a></li> -<li><a href="#_valueitem">3.22. ValueItem</a></li> +<li><a href="#_cldsinfo">3.1. CldsInfo</a></li> +<li><a href="#_externalcomponent">3.2. ExternalComponent</a></li> +<li><a href="#_externalcomponentstate">3.3. ExternalComponentState</a></li> +<li><a href="#_jsonarray">3.4. JsonArray</a></li> +<li><a href="#_jsonnull">3.5. JsonNull</a></li> +<li><a href="#_jsonobject">3.6. JsonObject</a></li> +<li><a href="#_jsonprimitive">3.7. JsonPrimitive</a></li> +<li><a href="#_loop">3.8. Loop</a></li> +<li><a href="#_looplog">3.9. LoopLog</a></li> +<li><a href="#_microservicepolicy">3.10. MicroServicePolicy</a></li> +<li><a href="#_number">3.11. Number</a></li> +<li><a href="#_operationalpolicy">3.12. OperationalPolicy</a></li> </ul> </li> </ul> @@ -763,13 +582,13 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <div class="sect2"> <h3 id="_version_information"><a class="anchor" href="#_version_information"></a><a class="link" href="#_version_information">1.1. Version information</a></h3> <div class="paragraph"> -<p><em>Version</em> : 4.1.1-SNAPSHOT</p> +<p><em>Version</em> : 4.1.2-SNAPSHOT</p> </div> </div> <div class="sect2"> <h3 id="_uri_scheme"><a class="anchor" href="#_uri_scheme"></a><a class="link" href="#_uri_scheme">1.2. URI scheme</a></h3> <div class="paragraph"> -<p><em>Host</em> : localhost:43819<br> +<p><em>Host</em> : localhost:40147<br> <em>BasePath</em> : /restservices/clds/<br> <em>Schemes</em> : HTTP</p> </div> @@ -780,127 +599,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <h2 id="_paths"><a class="anchor" href="#_paths"></a><a class="link" href="#_paths">2. Paths</a></h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_route187"><a class="anchor" href="#_route187"></a><a class="link" href="#_route187">2.1. PUT /v1/clds/action/{action}/{modelName}?test={test}</a></h3> -<div class="sect3"> -<h4 id="_parameters"><a class="anchor" href="#_parameters"></a><a class="link" href="#_parameters">2.1.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>action</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName}?test={test</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses"><a class="anchor" href="#_responses"></a><a class="link" href="#_responses">2.1.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes"><a class="anchor" href="#_consumes"></a><a class="link" href="#_consumes">2.1.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces"><a class="anchor" href="#_produces"></a><a class="link" href="#_produces">2.1.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route179"><a class="anchor" href="#_route179"></a><a class="link" href="#_route179">2.2. GET /v1/clds/cldsDetails</a></h3> -<div class="sect3"> -<h4 id="_responses_2"><a class="anchor" href="#_responses_2"></a><a class="link" href="#_responses_2">2.2.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmonitoringdetails">CldsMonitoringDetails</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_2"><a class="anchor" href="#_produces_2"></a><a class="link" href="#_produces_2">2.2.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route180"><a class="anchor" href="#_route180"></a><a class="link" href="#_route180">2.3. GET /v1/clds/cldsInfo</a></h3> +<h3 id="_route32"><a class="anchor" href="#_route32"></a><a class="link" href="#_route32">2.1. GET /v1/clds/cldsInfo</a></h3> <div class="sect3"> -<h4 id="_responses_3"><a class="anchor" href="#_responses_3"></a><a class="link" href="#_responses_3">2.3.1. Responses</a></h4> +<h4 id="_responses"><a class="anchor" href="#_responses"></a><a class="link" href="#_responses">2.1.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -924,1105 +625,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_3"><a class="anchor" href="#_produces_3"></a><a class="link" href="#_produces_3">2.3.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route188"><a class="anchor" href="#_route188"></a><a class="link" href="#_route188">2.4. POST /v1/clds/dcae/event?test={test}</a></h3> -<div class="sect3"> -<h4 id="_parameters_2"><a class="anchor" href="#_parameters_2"></a><a class="link" href="#_parameters_2">2.4.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_dcaeevent">DcaeEvent</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_4"><a class="anchor" href="#_responses_4"></a><a class="link" href="#_responses_4">2.4.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_2"><a class="anchor" href="#_consumes_2"></a><a class="link" href="#_consumes_2">2.4.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_4"><a class="anchor" href="#_produces_4"></a><a class="link" href="#_produces_4">2.4.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route190"><a class="anchor" href="#_route190"></a><a class="link" href="#_route190">2.5. PUT /v1/clds/deploy/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_3"><a class="anchor" href="#_parameters_3"></a><a class="link" href="#_parameters_3">2.5.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_5"><a class="anchor" href="#_responses_5"></a><a class="link" href="#_responses_5">2.5.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_3"><a class="anchor" href="#_consumes_3"></a><a class="link" href="#_consumes_3">2.5.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_5"><a class="anchor" href="#_produces_5"></a><a class="link" href="#_produces_5">2.5.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route186"><a class="anchor" href="#_route186"></a><a class="link" href="#_route186">2.6. GET /v1/clds/model-names</a></h3> -<div class="sect3"> -<h4 id="_responses_6"><a class="anchor" href="#_responses_6"></a><a class="link" href="#_responses_6">2.6.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_valueitem">ValueItem</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_6"><a class="anchor" href="#_produces_6"></a><a class="link" href="#_produces_6">2.6.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route182"><a class="anchor" href="#_route182"></a><a class="link" href="#_route182">2.7. GET /v1/clds/model/bpmn/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_4"><a class="anchor" href="#_parameters_4"></a><a class="link" href="#_parameters_4">2.7.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_7"><a class="anchor" href="#_responses_7"></a><a class="link" href="#_responses_7">2.7.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_7"><a class="anchor" href="#_produces_7"></a><a class="link" href="#_produces_7">2.7.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>text/xml</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route183"><a class="anchor" href="#_route183"></a><a class="link" href="#_route183">2.8. GET /v1/clds/model/image/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_5"><a class="anchor" href="#_parameters_5"></a><a class="link" href="#_parameters_5">2.8.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_8"><a class="anchor" href="#_responses_8"></a><a class="link" href="#_responses_8">2.8.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_8"><a class="anchor" href="#_produces_8"></a><a class="link" href="#_produces_8">2.8.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>text/xml</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route184"><a class="anchor" href="#_route184"></a><a class="link" href="#_route184">2.9. GET /v1/clds/model/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_6"><a class="anchor" href="#_parameters_6"></a><a class="link" href="#_parameters_6">2.9.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_9"><a class="anchor" href="#_responses_9"></a><a class="link" href="#_responses_9">2.9.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_9"><a class="anchor" href="#_produces_9"></a><a class="link" href="#_produces_9">2.9.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route185"><a class="anchor" href="#_route185"></a><a class="link" href="#_route185">2.10. PUT /v1/clds/model/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_7"><a class="anchor" href="#_parameters_7"></a><a class="link" href="#_parameters_7">2.10.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_10"><a class="anchor" href="#_responses_10"></a><a class="link" href="#_responses_10">2.10.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_4"><a class="anchor" href="#_consumes_4"></a><a class="link" href="#_consumes_4">2.10.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_10"><a class="anchor" href="#_produces_10"></a><a class="link" href="#_produces_10">2.10.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route189"><a class="anchor" href="#_route189"></a><a class="link" href="#_route189">2.11. GET /v1/clds/properties</a></h3> -<div class="sect3"> -<h4 id="_responses_11"><a class="anchor" href="#_responses_11"></a><a class="link" href="#_responses_11">2.11.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_11"><a class="anchor" href="#_produces_11"></a><a class="link" href="#_produces_11">2.11.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route191"><a class="anchor" href="#_route191"></a><a class="link" href="#_route191">2.12. PUT /v1/clds/undeploy/{modelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_8"><a class="anchor" href="#_parameters_8"></a><a class="link" href="#_parameters_8">2.12.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsmodel">CldsModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_12"><a class="anchor" href="#_responses_12"></a><a class="link" href="#_responses_12">2.12.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_5"><a class="anchor" href="#_consumes_5"></a><a class="link" href="#_consumes_5">2.12.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_12"><a class="anchor" href="#_produces_12"></a><a class="link" href="#_produces_12">2.12.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route196"><a class="anchor" href="#_route196"></a><a class="link" href="#_route196">2.13. GET /v1/cldsTempate/template-names</a></h3> -<div class="sect3"> -<h4 id="_responses_13"><a class="anchor" href="#_responses_13"></a><a class="link" href="#_responses_13">2.13.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_valueitem">ValueItem</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_13"><a class="anchor" href="#_produces_13"></a><a class="link" href="#_produces_13">2.13.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route192"><a class="anchor" href="#_route192"></a><a class="link" href="#_route192">2.14. GET /v1/cldsTempate/template/bpmn/{templateName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_9"><a class="anchor" href="#_parameters_9"></a><a class="link" href="#_parameters_9">2.14.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_14"><a class="anchor" href="#_responses_14"></a><a class="link" href="#_responses_14">2.14.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_14"><a class="anchor" href="#_produces_14"></a><a class="link" href="#_produces_14">2.14.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>text/xml</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route193"><a class="anchor" href="#_route193"></a><a class="link" href="#_route193">2.15. GET /v1/cldsTempate/template/image/{templateName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_10"><a class="anchor" href="#_parameters_10"></a><a class="link" href="#_parameters_10">2.15.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_15"><a class="anchor" href="#_responses_15"></a><a class="link" href="#_responses_15">2.15.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_15"><a class="anchor" href="#_produces_15"></a><a class="link" href="#_produces_15">2.15.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>text/xml</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route194"><a class="anchor" href="#_route194"></a><a class="link" href="#_route194">2.16. GET /v1/cldsTempate/template/{templateName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_11"><a class="anchor" href="#_parameters_11"></a><a class="link" href="#_parameters_11">2.16.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_16"><a class="anchor" href="#_responses_16"></a><a class="link" href="#_responses_16">2.16.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstemplate">CldsTemplate</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_16"><a class="anchor" href="#_produces_16"></a><a class="link" href="#_produces_16">2.16.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route195"><a class="anchor" href="#_route195"></a><a class="link" href="#_route195">2.17. PUT /v1/cldsTempate/template/{templateName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_12"><a class="anchor" href="#_parameters_12"></a><a class="link" href="#_parameters_12">2.17.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstemplate">CldsTemplate</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_17"><a class="anchor" href="#_responses_17"></a><a class="link" href="#_responses_17">2.17.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstemplate">CldsTemplate</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_6"><a class="anchor" href="#_consumes_6"></a><a class="link" href="#_consumes_6">2.17.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_17"><a class="anchor" href="#_produces_17"></a><a class="link" href="#_produces_17">2.17.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route204"><a class="anchor" href="#_route204"></a><a class="link" href="#_route204">2.18. GET /v1/dictionary</a></h3> -<div class="sect3"> -<h4 id="_responses_18"><a class="anchor" href="#_responses_18"></a><a class="link" href="#_responses_18">2.18.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionary">CldsDictionary</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_18"><a class="anchor" href="#_produces_18"></a><a class="link" href="#_produces_18">2.18.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route203"><a class="anchor" href="#_route203"></a><a class="link" href="#_route203">2.19. PUT /v1/dictionary/{dictionaryName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_13"><a class="anchor" href="#_parameters_13"></a><a class="link" href="#_parameters_13">2.19.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionary">CldsDictionary</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_19"><a class="anchor" href="#_responses_19"></a><a class="link" href="#_responses_19">2.19.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionary">CldsDictionary</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_7"><a class="anchor" href="#_consumes_7"></a><a class="link" href="#_consumes_7">2.19.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_19"><a class="anchor" href="#_produces_19"></a><a class="link" href="#_produces_19">2.19.4. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_v1_dictionary_dictionaryname_items_get"><a class="anchor" href="#_v1_dictionary_dictionaryname_items_get"></a><a class="link" href="#_v1_dictionary_dictionaryname_items_get">2.20. GET /v1/dictionary/{dictionaryName}/items</a></h3> -<div class="sect3"> -<h4 id="_parameters_14"><a class="anchor" href="#_parameters_14"></a><a class="link" href="#_parameters_14">2.20.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_20"><a class="anchor" href="#_responses_20"></a><a class="link" href="#_responses_20">2.20.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionary">CldsDictionary</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_20"><a class="anchor" href="#_produces_20"></a><a class="link" href="#_produces_20">2.20.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_v1_dictionary_dictionaryname_items_put"><a class="anchor" href="#_v1_dictionary_dictionaryname_items_put"></a><a class="link" href="#_v1_dictionary_dictionaryname_items_put">2.21. PUT /v1/dictionary/{dictionaryName}/items</a></h3> -<div class="sect3"> -<h4 id="_parameters_15"><a class="anchor" href="#_parameters_15"></a><a class="link" href="#_parameters_15">2.21.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionaryitem">CldsDictionaryItem</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_21"><a class="anchor" href="#_responses_21"></a><a class="link" href="#_responses_21">2.21.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsdictionaryitem">CldsDictionaryItem</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_consumes_8"><a class="anchor" href="#_consumes_8"></a><a class="link" href="#_consumes_8">2.21.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_21"><a class="anchor" href="#_produces_21"></a><a class="link" href="#_produces_21">2.21.4. Produces</a></h4> +<h4 id="_produces"><a class="anchor" href="#_produces"></a><a class="link" href="#_produces">2.1.2. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2033,235 +636,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route181"><a class="anchor" href="#_route181"></a><a class="link" href="#_route181">2.22. GET /v1/healthcheck</a></h3> +<h3 id="_route33"><a class="anchor" href="#_route33"></a><a class="link" href="#_route33">2.2. GET /v1/healthcheck</a></h3> <div class="sect3"> -<h4 id="_responses_22"><a class="anchor" href="#_responses_22"></a><a class="link" href="#_responses_22">2.22.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 33.3333%;"> -<col style="width: 66.6667%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">No Content</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_22"><a class="anchor" href="#_produces_22"></a><a class="link" href="#_produces_22">2.22.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route200"><a class="anchor" href="#_route200"></a><a class="link" href="#_route200">2.23. GET /v1/tosca/models</a></h3> -<div class="sect3"> -<h4 id="_responses_23"><a class="anchor" href="#_responses_23"></a><a class="link" href="#_responses_23">2.23.1. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstoscamodel">CldsToscaModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_23"><a class="anchor" href="#_produces_23"></a><a class="link" href="#_produces_23">2.23.2. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route198"><a class="anchor" href="#_route198"></a><a class="link" href="#_route198">2.24. GET /v1/tosca/models/policyType/{policyType}</a></h3> -<div class="sect3"> -<h4 id="_parameters_16"><a class="anchor" href="#_parameters_16"></a><a class="link" href="#_parameters_16">2.24.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>policyType</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_24"><a class="anchor" href="#_responses_24"></a><a class="link" href="#_responses_24">2.24.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstoscamodel">CldsToscaModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_24"><a class="anchor" href="#_produces_24"></a><a class="link" href="#_produces_24">2.24.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_v1_tosca_models_toscamodelname_get"><a class="anchor" href="#_v1_tosca_models_toscamodelname_get"></a><a class="link" href="#_v1_tosca_models_toscamodelname_get">2.25. GET /v1/tosca/models/{toscaModelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_17"><a class="anchor" href="#_parameters_17"></a><a class="link" href="#_parameters_17">2.25.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_25"><a class="anchor" href="#_responses_25"></a><a class="link" href="#_responses_25">2.25.2. Responses</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 10%;"> -<col style="width: 70%;"> -<col style="width: 20%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">HTTP Code</th> -<th class="tableblock halign-left valign-middle">Description</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">Output type</p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstoscamodel">CldsToscaModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_produces_25"><a class="anchor" href="#_produces_25"></a><a class="link" href="#_produces_25">2.25.3. Produces</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -</div> -<div class="sect2"> -<h3 id="_route197"><a class="anchor" href="#_route197"></a><a class="link" href="#_route197">2.26. PUT /v1/tosca/models/{toscaModelName}</a></h3> -<div class="sect3"> -<h4 id="_parameters_18"><a class="anchor" href="#_parameters_18"></a><a class="link" href="#_parameters_18">2.26.1. Parameters</a></h4> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 22.2222%;"> -<col style="width: 33.3333%;"> -<col style="width: 44.4445%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Type</th> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelName</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>body</strong><br> -<em>required</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldstoscamodel">CldsToscaModel</a></p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect3"> -<h4 id="_responses_26"><a class="anchor" href="#_responses_26"></a><a class="link" href="#_responses_26">2.26.2. Responses</a></h4> +<h4 id="_responses_2"><a class="anchor" href="#_responses_2"></a><a class="link" href="#_responses_2">2.2.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 33.3333%;"> @@ -2282,17 +659,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_consumes_9"><a class="anchor" href="#_consumes_9"></a><a class="link" href="#_consumes_9">2.26.3. Consumes</a></h4> -<div class="ulist"> -<ul> -<li> -<p><code>application/json</code></p> -</li> -</ul> -</div> -</div> -<div class="sect3"> -<h4 id="_produces_26"><a class="anchor" href="#_produces_26"></a><a class="link" href="#_produces_26">2.26.4. Produces</a></h4> +<h4 id="_produces_2"><a class="anchor" href="#_produces_2"></a><a class="link" href="#_produces_2">2.2.2. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2303,9 +670,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route205"><a class="anchor" href="#_route205"></a><a class="link" href="#_route205">2.27. GET /v1/user/getUser</a></h3> +<h3 id="_route34"><a class="anchor" href="#_route34"></a><a class="link" href="#_route34">2.3. GET /v1/user/getUser</a></h3> <div class="sect3"> -<h4 id="_responses_27"><a class="anchor" href="#_responses_27"></a><a class="link" href="#_responses_27">2.27.1. Responses</a></h4> +<h4 id="_responses_3"><a class="anchor" href="#_responses_3"></a><a class="link" href="#_responses_3">2.3.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 33.3333%;"> @@ -2326,7 +693,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_27"><a class="anchor" href="#_produces_27"></a><a class="link" href="#_produces_27">2.27.2. Produces</a></h4> +<h4 id="_produces_3"><a class="anchor" href="#_produces_3"></a><a class="link" href="#_produces_3">2.3.2. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2337,9 +704,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route177"><a class="anchor" href="#_route177"></a><a class="link" href="#_route177">2.28. PUT /v2/loop/delete/{loopName}</a></h3> +<h3 id="_route30"><a class="anchor" href="#_route30"></a><a class="link" href="#_route30">2.4. PUT /v2/loop/delete/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_19"><a class="anchor" href="#_parameters_19"></a><a class="link" href="#_parameters_19">2.28.1. Parameters</a></h4> +<h4 id="_parameters"><a class="anchor" href="#_parameters"></a><a class="link" href="#_parameters">2.4.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2364,7 +731,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_28"><a class="anchor" href="#_responses_28"></a><a class="link" href="#_responses_28">2.28.2. Responses</a></h4> +<h4 id="_responses_4"><a class="anchor" href="#_responses_4"></a><a class="link" href="#_responses_4">2.4.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 33.3333%;"> @@ -2386,9 +753,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route172"><a class="anchor" href="#_route172"></a><a class="link" href="#_route172">2.29. PUT /v2/loop/deploy/{loopName}</a></h3> +<h3 id="_route25"><a class="anchor" href="#_route25"></a><a class="link" href="#_route25">2.5. PUT /v2/loop/deploy/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_20"><a class="anchor" href="#_parameters_20"></a><a class="link" href="#_parameters_20">2.29.1. Parameters</a></h4> +<h4 id="_parameters_2"><a class="anchor" href="#_parameters_2"></a><a class="link" href="#_parameters_2">2.5.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2413,7 +780,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_29"><a class="anchor" href="#_responses_29"></a><a class="link" href="#_responses_29">2.29.2. Responses</a></h4> +<h4 id="_responses_5"><a class="anchor" href="#_responses_5"></a><a class="link" href="#_responses_5">2.5.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2437,7 +804,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_28"><a class="anchor" href="#_produces_28"></a><a class="link" href="#_produces_28">2.29.3. Produces</a></h4> +<h4 id="_produces_4"><a class="anchor" href="#_produces_4"></a><a class="link" href="#_produces_4">2.5.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2448,9 +815,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route166"><a class="anchor" href="#_route166"></a><a class="link" href="#_route166">2.30. GET /v2/loop/getAllNames</a></h3> +<h3 id="_route19"><a class="anchor" href="#_route19"></a><a class="link" href="#_route19">2.6. GET /v2/loop/getAllNames</a></h3> <div class="sect3"> -<h4 id="_responses_30"><a class="anchor" href="#_responses_30"></a><a class="link" href="#_responses_30">2.30.1. Responses</a></h4> +<h4 id="_responses_6"><a class="anchor" href="#_responses_6"></a><a class="link" href="#_responses_6">2.6.1. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2474,7 +841,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_29"><a class="anchor" href="#_produces_29"></a><a class="link" href="#_produces_29">2.30.2. Produces</a></h4> +<h4 id="_produces_5"><a class="anchor" href="#_produces_5"></a><a class="link" href="#_produces_5">2.6.2. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2485,9 +852,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route178"><a class="anchor" href="#_route178"></a><a class="link" href="#_route178">2.31. GET /v2/loop/getstatus/{loopName}</a></h3> +<h3 id="_route31"><a class="anchor" href="#_route31"></a><a class="link" href="#_route31">2.7. GET /v2/loop/getstatus/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_21"><a class="anchor" href="#_parameters_21"></a><a class="link" href="#_parameters_21">2.31.1. Parameters</a></h4> +<h4 id="_parameters_3"><a class="anchor" href="#_parameters_3"></a><a class="link" href="#_parameters_3">2.7.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2512,7 +879,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_31"><a class="anchor" href="#_responses_31"></a><a class="link" href="#_responses_31">2.31.2. Responses</a></h4> +<h4 id="_responses_7"><a class="anchor" href="#_responses_7"></a><a class="link" href="#_responses_7">2.7.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2536,7 +903,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_30"><a class="anchor" href="#_produces_30"></a><a class="link" href="#_produces_30">2.31.3. Produces</a></h4> +<h4 id="_produces_6"><a class="anchor" href="#_produces_6"></a><a class="link" href="#_produces_6">2.7.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2547,9 +914,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route175"><a class="anchor" href="#_route175"></a><a class="link" href="#_route175">2.32. PUT /v2/loop/restart/{loopName}</a></h3> +<h3 id="_route28"><a class="anchor" href="#_route28"></a><a class="link" href="#_route28">2.8. PUT /v2/loop/restart/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_22"><a class="anchor" href="#_parameters_22"></a><a class="link" href="#_parameters_22">2.32.1. Parameters</a></h4> +<h4 id="_parameters_4"><a class="anchor" href="#_parameters_4"></a><a class="link" href="#_parameters_4">2.8.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2574,7 +941,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_32"><a class="anchor" href="#_responses_32"></a><a class="link" href="#_responses_32">2.32.2. Responses</a></h4> +<h4 id="_responses_8"><a class="anchor" href="#_responses_8"></a><a class="link" href="#_responses_8">2.8.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2598,7 +965,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_31"><a class="anchor" href="#_produces_31"></a><a class="link" href="#_produces_31">2.32.3. Produces</a></h4> +<h4 id="_produces_7"><a class="anchor" href="#_produces_7"></a><a class="link" href="#_produces_7">2.8.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2609,9 +976,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route174"><a class="anchor" href="#_route174"></a><a class="link" href="#_route174">2.33. PUT /v2/loop/stop/{loopName}</a></h3> +<h3 id="_route27"><a class="anchor" href="#_route27"></a><a class="link" href="#_route27">2.9. PUT /v2/loop/stop/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_23"><a class="anchor" href="#_parameters_23"></a><a class="link" href="#_parameters_23">2.33.1. Parameters</a></h4> +<h4 id="_parameters_5"><a class="anchor" href="#_parameters_5"></a><a class="link" href="#_parameters_5">2.9.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2636,7 +1003,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_33"><a class="anchor" href="#_responses_33"></a><a class="link" href="#_responses_33">2.33.2. Responses</a></h4> +<h4 id="_responses_9"><a class="anchor" href="#_responses_9"></a><a class="link" href="#_responses_9">2.9.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2660,7 +1027,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_32"><a class="anchor" href="#_produces_32"></a><a class="link" href="#_produces_32">2.33.3. Produces</a></h4> +<h4 id="_produces_8"><a class="anchor" href="#_produces_8"></a><a class="link" href="#_produces_8">2.9.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2671,9 +1038,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route176"><a class="anchor" href="#_route176"></a><a class="link" href="#_route176">2.34. PUT /v2/loop/submit/{loopName}</a></h3> +<h3 id="_route29"><a class="anchor" href="#_route29"></a><a class="link" href="#_route29">2.10. PUT /v2/loop/submit/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_24"><a class="anchor" href="#_parameters_24"></a><a class="link" href="#_parameters_24">2.34.1. Parameters</a></h4> +<h4 id="_parameters_6"><a class="anchor" href="#_parameters_6"></a><a class="link" href="#_parameters_6">2.10.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2698,7 +1065,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_34"><a class="anchor" href="#_responses_34"></a><a class="link" href="#_responses_34">2.34.2. Responses</a></h4> +<h4 id="_responses_10"><a class="anchor" href="#_responses_10"></a><a class="link" href="#_responses_10">2.10.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2722,7 +1089,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_33"><a class="anchor" href="#_produces_33"></a><a class="link" href="#_produces_33">2.34.3. Produces</a></h4> +<h4 id="_produces_9"><a class="anchor" href="#_produces_9"></a><a class="link" href="#_produces_9">2.10.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2733,9 +1100,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route168"><a class="anchor" href="#_route168"></a><a class="link" href="#_route168">2.35. GET /v2/loop/svgRepresentation/{loopName}</a></h3> +<h3 id="_route21"><a class="anchor" href="#_route21"></a><a class="link" href="#_route21">2.11. GET /v2/loop/svgRepresentation/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_25"><a class="anchor" href="#_parameters_25"></a><a class="link" href="#_parameters_25">2.35.1. Parameters</a></h4> +<h4 id="_parameters_7"><a class="anchor" href="#_parameters_7"></a><a class="link" href="#_parameters_7">2.11.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2760,7 +1127,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_35"><a class="anchor" href="#_responses_35"></a><a class="link" href="#_responses_35">2.35.2. Responses</a></h4> +<h4 id="_responses_11"><a class="anchor" href="#_responses_11"></a><a class="link" href="#_responses_11">2.11.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2784,7 +1151,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_34"><a class="anchor" href="#_produces_34"></a><a class="link" href="#_produces_34">2.35.3. Produces</a></h4> +<h4 id="_produces_10"><a class="anchor" href="#_produces_10"></a><a class="link" href="#_produces_10">2.11.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2795,9 +1162,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route173"><a class="anchor" href="#_route173"></a><a class="link" href="#_route173">2.36. PUT /v2/loop/undeploy/{loopName}</a></h3> +<h3 id="_route26"><a class="anchor" href="#_route26"></a><a class="link" href="#_route26">2.12. PUT /v2/loop/undeploy/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_26"><a class="anchor" href="#_parameters_26"></a><a class="link" href="#_parameters_26">2.36.1. Parameters</a></h4> +<h4 id="_parameters_8"><a class="anchor" href="#_parameters_8"></a><a class="link" href="#_parameters_8">2.12.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2822,7 +1189,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_36"><a class="anchor" href="#_responses_36"></a><a class="link" href="#_responses_36">2.36.2. Responses</a></h4> +<h4 id="_responses_12"><a class="anchor" href="#_responses_12"></a><a class="link" href="#_responses_12">2.12.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2846,7 +1213,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_35"><a class="anchor" href="#_produces_35"></a><a class="link" href="#_produces_35">2.36.3. Produces</a></h4> +<h4 id="_produces_11"><a class="anchor" href="#_produces_11"></a><a class="link" href="#_produces_11">2.12.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2857,9 +1224,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route169"><a class="anchor" href="#_route169"></a><a class="link" href="#_route169">2.37. POST /v2/loop/updateGlobalProperties/{loopName}</a></h3> +<h3 id="_route22"><a class="anchor" href="#_route22"></a><a class="link" href="#_route22">2.13. POST /v2/loop/updateGlobalProperties/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_27"><a class="anchor" href="#_parameters_27"></a><a class="link" href="#_parameters_27">2.37.1. Parameters</a></h4> +<h4 id="_parameters_9"><a class="anchor" href="#_parameters_9"></a><a class="link" href="#_parameters_9">2.13.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2890,7 +1257,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_37"><a class="anchor" href="#_responses_37"></a><a class="link" href="#_responses_37">2.37.2. Responses</a></h4> +<h4 id="_responses_13"><a class="anchor" href="#_responses_13"></a><a class="link" href="#_responses_13">2.13.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2914,7 +1281,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_consumes_10"><a class="anchor" href="#_consumes_10"></a><a class="link" href="#_consumes_10">2.37.3. Consumes</a></h4> +<h4 id="_consumes"><a class="anchor" href="#_consumes"></a><a class="link" href="#_consumes">2.13.3. Consumes</a></h4> <div class="ulist"> <ul> <li> @@ -2924,7 +1291,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect3"> -<h4 id="_produces_36"><a class="anchor" href="#_produces_36"></a><a class="link" href="#_produces_36">2.37.4. Produces</a></h4> +<h4 id="_produces_12"><a class="anchor" href="#_produces_12"></a><a class="link" href="#_produces_12">2.13.4. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -2935,9 +1302,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route171"><a class="anchor" href="#_route171"></a><a class="link" href="#_route171">2.38. POST /v2/loop/updateMicroservicePolicy/{loopName}</a></h3> +<h3 id="_route24"><a class="anchor" href="#_route24"></a><a class="link" href="#_route24">2.14. POST /v2/loop/updateMicroservicePolicy/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_28"><a class="anchor" href="#_parameters_28"></a><a class="link" href="#_parameters_28">2.38.1. Parameters</a></h4> +<h4 id="_parameters_10"><a class="anchor" href="#_parameters_10"></a><a class="link" href="#_parameters_10">2.14.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -2968,7 +1335,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_38"><a class="anchor" href="#_responses_38"></a><a class="link" href="#_responses_38">2.38.2. Responses</a></h4> +<h4 id="_responses_14"><a class="anchor" href="#_responses_14"></a><a class="link" href="#_responses_14">2.14.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -2992,7 +1359,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_consumes_11"><a class="anchor" href="#_consumes_11"></a><a class="link" href="#_consumes_11">2.38.3. Consumes</a></h4> +<h4 id="_consumes_2"><a class="anchor" href="#_consumes_2"></a><a class="link" href="#_consumes_2">2.14.3. Consumes</a></h4> <div class="ulist"> <ul> <li> @@ -3002,7 +1369,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect3"> -<h4 id="_produces_37"><a class="anchor" href="#_produces_37"></a><a class="link" href="#_produces_37">2.38.4. Produces</a></h4> +<h4 id="_produces_13"><a class="anchor" href="#_produces_13"></a><a class="link" href="#_produces_13">2.14.4. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -3013,9 +1380,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route170"><a class="anchor" href="#_route170"></a><a class="link" href="#_route170">2.39. POST /v2/loop/updateOperationalPolicies/{loopName}</a></h3> +<h3 id="_route23"><a class="anchor" href="#_route23"></a><a class="link" href="#_route23">2.15. POST /v2/loop/updateOperationalPolicies/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_29"><a class="anchor" href="#_parameters_29"></a><a class="link" href="#_parameters_29">2.39.1. Parameters</a></h4> +<h4 id="_parameters_11"><a class="anchor" href="#_parameters_11"></a><a class="link" href="#_parameters_11">2.15.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -3046,7 +1413,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_39"><a class="anchor" href="#_responses_39"></a><a class="link" href="#_responses_39">2.39.2. Responses</a></h4> +<h4 id="_responses_15"><a class="anchor" href="#_responses_15"></a><a class="link" href="#_responses_15">2.15.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -3070,7 +1437,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_consumes_12"><a class="anchor" href="#_consumes_12"></a><a class="link" href="#_consumes_12">2.39.3. Consumes</a></h4> +<h4 id="_consumes_3"><a class="anchor" href="#_consumes_3"></a><a class="link" href="#_consumes_3">2.15.3. Consumes</a></h4> <div class="ulist"> <ul> <li> @@ -3080,7 +1447,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect3"> -<h4 id="_produces_38"><a class="anchor" href="#_produces_38"></a><a class="link" href="#_produces_38">2.39.4. Produces</a></h4> +<h4 id="_produces_14"><a class="anchor" href="#_produces_14"></a><a class="link" href="#_produces_14">2.15.4. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -3091,9 +1458,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </div> </div> <div class="sect2"> -<h3 id="_route167"><a class="anchor" href="#_route167"></a><a class="link" href="#_route167">2.40. GET /v2/loop/{loopName}</a></h3> +<h3 id="_route20"><a class="anchor" href="#_route20"></a><a class="link" href="#_route20">2.16. GET /v2/loop/{loopName}</a></h3> <div class="sect3"> -<h4 id="_parameters_30"><a class="anchor" href="#_parameters_30"></a><a class="link" href="#_parameters_30">2.40.1. Parameters</a></h4> +<h4 id="_parameters_12"><a class="anchor" href="#_parameters_12"></a><a class="link" href="#_parameters_12">2.16.1. Parameters</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 22.2222%;"> @@ -3118,7 +1485,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_responses_40"><a class="anchor" href="#_responses_40"></a><a class="link" href="#_responses_40">2.40.2. Responses</a></h4> +<h4 id="_responses_16"><a class="anchor" href="#_responses_16"></a><a class="link" href="#_responses_16">2.16.2. Responses</a></h4> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 10%;"> @@ -3142,7 +1509,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect3"> -<h4 id="_produces_39"><a class="anchor" href="#_produces_39"></a><a class="link" href="#_produces_39">2.40.3. Produces</a></h4> +<h4 id="_produces_15"><a class="anchor" href="#_produces_15"></a><a class="link" href="#_produces_15">2.16.3. Produces</a></h4> <div class="ulist"> <ul> <li> @@ -3158,158 +1525,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b <h2 id="_definitions"><a class="anchor" href="#_definitions"></a><a class="link" href="#_definitions">3. Definitions</a></h2> <div class="sectionbody"> <div class="sect2"> -<h3 id="_cldsdictionary"><a class="anchor" href="#_cldsdictionary"></a><a class="link" href="#_cldsdictionary">3.1. CldsDictionary</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>cldsDictionaryItems</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">< <a href="#_cldsdictionaryitem">CldsDictionaryItem</a> > array</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>createdBy</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>lastUpdatedDate</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>updatedBy</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldsdictionaryitem"><a class="anchor" href="#_cldsdictionaryitem"></a><a class="link" href="#_cldsdictionaryitem">3.2. CldsDictionaryItem</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>createdBy</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictElementDesc</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictElementId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictElementName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictElementShortName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictElementType</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>dictionaryId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>lastUpdatedDate</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>updatedBy</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldsevent"><a class="anchor" href="#_cldsevent"></a><a class="link" href="#_cldsevent">3.3. CldsEvent</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>actionCd</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>actionStateCd</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>processInstanceId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>userid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldsinfo"><a class="anchor" href="#_cldsinfo"></a><a class="link" href="#_cldsinfo">3.4. CldsInfo</a></h3> +<h3 id="_cldsinfo"><a class="anchor" href="#_cldsinfo"></a><a class="link" href="#_cldsinfo">3.1. CldsInfo</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -3366,429 +1582,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_cldsmodel"><a class="anchor" href="#_cldsmodel"></a><a class="link" href="#_cldsmodel">3.5. CldsModel</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>blueprintText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>bpmnText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>cldsModelInstanceList</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">< <a href="#_cldsmodelinstance">CldsModelInstance</a> > array</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlNamePrefix</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlNameUuid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>deploymentId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>deploymentStatusUrl</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>docText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>errorMessageForUi</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>event</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_cldsevent">CldsEvent</a></p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>imageText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>permittedActionCd</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">< string > array</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>propText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>typeId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>typeName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldsmodelinstance"><a class="anchor" href="#_cldsmodelinstance"></a><a class="link" href="#_cldsmodelinstance">3.6. CldsModelInstance</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>location</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelInstanceId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>vmName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldsmonitoringdetails"><a class="anchor" href="#_cldsmonitoringdetails"></a><a class="link" href="#_cldsmonitoringdetails">3.7. CldsMonitoringDetails</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>action</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>closeloopName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>deploymentId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceTypeId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>templateName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>timestamp</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>userid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldstemplate"><a class="anchor" href="#_cldstemplate"></a><a class="link" href="#_cldstemplate">3.8. CldsTemplate</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>bpmnId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>bpmnText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>bpmnUserid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlNamePrefix</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlNameUuid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>imageId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>imageText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>imageUserid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>propId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>propText</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>propUserid</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>userAuthorizedToUpdate</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_cldstoscamodel"><a class="anchor" href="#_cldstoscamodel"></a><a class="link" href="#_cldstoscamodel">3.9. CldsToscaModel</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>createdDate</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>lastUpdatedDate</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>policyType</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>revisionId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelJson</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelYaml</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>userId</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>version</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">number (double)</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_dcaeevent"><a class="anchor" href="#_dcaeevent"></a><a class="link" href="#_dcaeevent">3.10. DcaeEvent</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>cldsActionCd</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>controlName</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>event</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>instances</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">< <a href="#_cldsmodelinstance">CldsModelInstance</a> > array</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>resourceUUID</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceUUID</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> -<div class="sect2"> -<h3 id="_externalcomponent"><a class="anchor" href="#_externalcomponent"></a><a class="link" href="#_externalcomponent">3.11. ExternalComponent</a></h3> +<h3 id="_externalcomponent"><a class="anchor" href="#_externalcomponent"></a><a class="link" href="#_externalcomponent">3.2. ExternalComponent</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -3815,7 +1609,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_externalcomponentstate"><a class="anchor" href="#_externalcomponentstate"></a><a class="link" href="#_externalcomponentstate">3.12. ExternalComponentState</a></h3> +<h3 id="_externalcomponentstate"><a class="anchor" href="#_externalcomponentstate"></a><a class="link" href="#_externalcomponentstate">3.3. ExternalComponentState</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -3847,7 +1641,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_jsonarray"><a class="anchor" href="#_jsonarray"></a><a class="link" href="#_jsonarray">3.13. JsonArray</a></h3> +<h3 id="_jsonarray"><a class="anchor" href="#_jsonarray"></a><a class="link" href="#_jsonarray">3.4. JsonArray</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -3964,7 +1758,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_jsonnull"><a class="anchor" href="#_jsonnull"></a><a class="link" href="#_jsonnull">3.14. JsonNull</a></h3> +<h3 id="_jsonnull"><a class="anchor" href="#_jsonnull"></a><a class="link" href="#_jsonnull">3.5. JsonNull</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4081,7 +1875,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_jsonobject"><a class="anchor" href="#_jsonobject"></a><a class="link" href="#_jsonobject">3.15. JsonObject</a></h3> +<h3 id="_jsonobject"><a class="anchor" href="#_jsonobject"></a><a class="link" href="#_jsonobject">3.6. JsonObject</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4198,7 +1992,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_jsonprimitive"><a class="anchor" href="#_jsonprimitive"></a><a class="link" href="#_jsonprimitive">3.16. JsonPrimitive</a></h3> +<h3 id="_jsonprimitive"><a class="anchor" href="#_jsonprimitive"></a><a class="link" href="#_jsonprimitive">3.7. JsonPrimitive</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4330,7 +2124,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_loop"><a class="anchor" href="#_loop"></a><a class="link" href="#_loop">3.17. Loop</a></h3> +<h3 id="_loop"><a class="anchor" href="#_loop"></a><a class="link" href="#_loop">3.8. Loop</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4412,7 +2206,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_looplog"><a class="anchor" href="#_looplog"></a><a class="link" href="#_looplog">3.18. LoopLog</a></h3> +<h3 id="_looplog"><a class="anchor" href="#_looplog"></a><a class="link" href="#_looplog">3.9. LoopLog</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4459,7 +2253,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_microservicepolicy"><a class="anchor" href="#_microservicepolicy"></a><a class="link" href="#_microservicepolicy">3.19. MicroServicePolicy</a></h3> +<h3 id="_microservicepolicy"><a class="anchor" href="#_microservicepolicy"></a><a class="link" href="#_microservicepolicy">3.10. MicroServicePolicy</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4511,13 +2305,13 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </table> </div> <div class="sect2"> -<h3 id="_number"><a class="anchor" href="#_number"></a><a class="link" href="#_number">3.20. Number</a></h3> +<h3 id="_number"><a class="anchor" href="#_number"></a><a class="link" href="#_number">3.11. Number</a></h3> <div class="paragraph"> <p><em>Type</em> : object</p> </div> </div> <div class="sect2"> -<h3 id="_operationalpolicy"><a class="anchor" href="#_operationalpolicy"></a><a class="link" href="#_operationalpolicy">3.21. OperationalPolicy</a></h3> +<h3 id="_operationalpolicy"><a class="anchor" href="#_operationalpolicy"></a><a class="link" href="#_operationalpolicy">3.12. OperationalPolicy</a></h3> <table class="tableblock frame-all grid-all stretch"> <colgroup> <col style="width: 42.8571%;"> @@ -4553,28 +2347,6 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b </tbody> </table> </div> -<div class="sect2"> -<h3 id="_valueitem"><a class="anchor" href="#_valueitem"></a><a class="link" href="#_valueitem">3.22. ValueItem</a></h3> -<table class="tableblock frame-all grid-all stretch"> -<colgroup> -<col style="width: 42.8571%;"> -<col style="width: 57.1429%;"> -</colgroup> -<thead> -<tr> -<th class="tableblock halign-left valign-middle">Name</th> -<th class="tableblock halign-left valign-middle">Schema</th> -</tr> -</thead> -<tbody> -<tr> -<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>value</strong><br> -<em>optional</em></p></td> -<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td> -</tr> -</tbody> -</table> -</div> </div> </div> </div> diff --git a/src/main/resources/clds/camel/rest/clds-services.xml b/src/main/resources/clds/camel/rest/clds-services.xml index d4baa09a..b3061dc4 100644 --- a/src/main/resources/clds/camel/rest/clds-services.xml +++ b/src/main/resources/clds/camel/rest/clds-services.xml @@ -1,11 +1,5 @@ <rests xmlns="http://camel.apache.org/schema/spring"> <rest > - <get uri="/v1/clds/cldsDetails" - outType="org.onap.clamp.clds.model.CldsMonitoringDetails" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getCldsDetails()" /> - </get> <get uri="/v1/clds/cldsInfo" outType="org.onap.clamp.clds.model.CldsInfo" produces="application/json"> @@ -16,153 +10,6 @@ <to uri="bean:org.onap.clamp.clds.service.CldsHealthcheckService?method=gethealthcheck()" /> </get> - <get uri="/v1/clds/model/bpmn/{modelName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getBpmnXml(${header.modelName})" /> - </get> - <get uri="/v1/clds/model/image/{modelName}" produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getImageXml(${header.modelName})" /> - </get> - <get uri="/v1/clds/model/{modelName}" - outType="org.onap.clamp.clds.model.CldsModel" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getModel(${header.modelName})" /> - </get> - <put uri="/v1/clds/model/{modelName}" - type="org.onap.clamp.clds.model.CldsModel" - consumes="application/json" - outType="org.onap.clamp.clds.model.CldsModel" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=putModel(${header.modelName},${body})" /> - </put> - <get uri="/v1/clds/model-names" - outType="org.onap.clamp.clds.model.ValueItem" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getModelNames()" /> - </get> - <put uri="/v1/clds/action/{action}/{modelName}?test={test}" - type="org.onap.clamp.clds.model.CldsModel" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=putModelAndProcessAction(${header.action},${header.modelName},${header.test},${body})" /> - </put> - <post uri="/v1/clds/dcae/event?test={test}" - type="org.onap.clamp.clds.model.DcaeEvent" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=postDcaeEvent(${header.test},${body})" /> - </post> - <get uri="/v1/clds/properties" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=getSdcProperties()" /> - </get> - <put uri="/v1/clds/deploy/{modelName}" - type="org.onap.clamp.clds.model.CldsModel" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=deployModel(${header.modelName},${body})" /> - </put> - <put uri="/v1/clds/undeploy/{modelName}" - type="org.onap.clamp.clds.model.CldsModel" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsService?method=unDeployModel(${header.modelName},${body})" /> - </put> - - - - - <get uri="/v1/cldsTempate/template/bpmn/{templateName}" - produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getBpmnTemplate(${header.templateName})" /> - </get> - <get uri="/v1/cldsTempate/template/image/{templateName}" - produces="text/xml"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getImageXml(${header.templateName})" /> - </get> - <get uri="/v1/cldsTempate/template/{templateName}" - outType="org.onap.clamp.clds.model.CldsTemplate" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplate(${header.templateName})" /> - </get> - <put uri="/v1/cldsTempate/template/{templateName}" - type="org.onap.clamp.clds.model.CldsTemplate" - consumes="application/json" - outType="org.onap.clamp.clds.model.CldsTemplate" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=putTemplate(${header.templateName},${body})" /> - </put> - <get uri="/v1/cldsTempate/template-names" - outType="org.onap.clamp.clds.model.ValueItem" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsTemplateService?method=getTemplateNames()" /> - </get> - - - <put uri="/v1/tosca/models/{toscaModelName}" - type="org.onap.clamp.clds.model.CldsToscaModel" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=parseToscaModelAndSave(${header.toscaModelName},${body})" /> - </put> - <get uri="/v1/tosca/models/policyType/{policyType}" - outType="org.onap.clamp.clds.model.CldsToscaModel" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getToscaModelsByPolicyType(${header.policyType})" /> - </get> - <get uri="/v1/tosca/models" - outType="org.onap.clamp.clds.model.CldsToscaModel" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getAllToscaModels()" /> - </get> - <get uri="/v1/tosca/models/{toscaModelName}" - outType="org.onap.clamp.clds.model.CldsToscaModel" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsToscaService?method=getToscaModel(${header.toscaModelName})" /> - </get> - - - <put uri="/v1/dictionary/{dictionaryName}" - type="org.onap.clamp.clds.model.CldsDictionary" - outType="org.onap.clamp.clds.model.CldsDictionary" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=createOrUpdateDictionary(${header.dictionaryName},${body})" /> - </put> - - <get uri="/v1/dictionary" - outType="org.onap.clamp.clds.model.CldsDictionary" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=getAllDictionaryNames()" /> - </get> - - <put uri="/v1/dictionary/{dictionaryName}/items" - type="org.onap.clamp.clds.model.CldsDictionaryItem" - outType="org.onap.clamp.clds.model.CldsDictionaryItem" - consumes="application/json" produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=createOrUpdateDictionaryElements(${header.dictionaryName},${body})" /> - </put> - - <get uri="/v1/dictionary/{dictionaryName}/items" - outType="org.onap.clamp.clds.model.CldsDictionary" - produces="application/json"> - <to - uri="bean:org.onap.clamp.clds.service.CldsDictionaryService?method=getDictionaryElementsByName(${header.dictionaryName})" /> - </get> <get uri="/v1/user/getUser" produces="text/plain"> <to diff --git a/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java index 97b33e13..65ab4c5e 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java @@ -24,14 +24,11 @@ package org.onap.clamp.clds.it; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; import javax.ws.rs.NotFoundException; @@ -42,7 +39,6 @@ import org.junit.runner.RunWith; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsModel; -import org.onap.clamp.clds.model.CldsMonitoringDetails; import org.onap.clamp.clds.model.CldsTemplate; import org.onap.clamp.clds.util.ResourceFileUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -67,8 +63,7 @@ public class CldsDaoItCase { /** * Setup the variable before the tests execution. * - * @throws IOException - * In case of issues when opening the files + * @throws IOException In case of issues when opening the files */ @Before public void setupBefore() throws IOException { @@ -144,17 +139,7 @@ public class CldsDaoItCase { newModel.setTemplateId(newTemplate.getId()); newModel.setDocText(newTemplate.getPropText()); CldsEvent.insEvent(cldsDao, newModel, "user", CldsEvent.ACTION_RESTART, CldsEvent.ACTION_STATE_COMPLETED, - "process-instance-id"); - } - - @Test - public void testGetCldsMonitoringDetails() { - List<CldsMonitoringDetails> cldsMonitoringDetailsList = new ArrayList<CldsMonitoringDetails>(); - cldsMonitoringDetailsList = cldsDao.getCldsMonitoringDetails(); - cldsMonitoringDetailsList.forEach(clName -> { - logger.info(clName.getCloseloopName()); - assertNotNull(clName.getCloseloopName()); - }); + "process-instance-id"); } } diff --git a/src/test/java/org/onap/clamp/clds/it/CldsDictionaryServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsDictionaryServiceItCase.java deleted file mode 100644 index 5218c925..00000000 --- a/src/test/java/org/onap/clamp/clds/it/CldsDictionaryServiceItCase.java +++ /dev/null @@ -1,177 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Modifications Copyright (c) 2019 Samsung - * ================================================================================ - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.util.LinkedList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Matchers; -import org.mockito.Mockito; -import org.onap.clamp.clds.model.CldsDictionary; -import org.onap.clamp.clds.model.CldsDictionaryItem; -import org.onap.clamp.clds.service.CldsDictionaryService; -import org.onap.clamp.clds.util.LoggingUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.ResponseEntity; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.userdetails.User; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * Test CLDS Dictionary Service APIs. - */ -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -public class CldsDictionaryServiceItCase { - - private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDictionaryServiceItCase.class); - @Autowired - private CldsDictionaryService cldsDictionaryService; - private CldsDictionary cldsDictionary; - private CldsDictionaryItem cldsDictionaryItem; - private List<GrantedAuthority> authList = new LinkedList<>(); - - private static final String DICTIONARY_NAME = "TestDictionary"; - - /** - * Setup the variable before the tests execution. - * - */ - @Before - public void setupBefore() { - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read")); - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|update")); - 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|*")); - authList.add(new SimpleGrantedAuthority("permission-type-tosca|dev|read")); - authList.add(new SimpleGrantedAuthority("permission-type-tosca|dev|update")); - - Authentication authentication = - new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList); - SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Mockito.when(securityContext.getAuthentication()).thenReturn(authentication); - - LoggingUtils util = Mockito.mock(LoggingUtils.class); - Mockito.doNothing().when(util).entering(Matchers.any(HttpServletRequest.class), Matchers.any(String.class)); - cldsDictionaryService.setLoggingUtil(util); - - cldsDictionaryService.setSecurityContext(securityContext); - - cldsDictionary = cldsDictionaryService.createDictionary(DICTIONARY_NAME); - - cldsDictionaryItem = new CldsDictionaryItem(); - cldsDictionaryItem.setDictElementShortName("TestDictionaryItemShortName"); - cldsDictionaryItem.setDictElementName("TestDictionaryItemName"); - cldsDictionaryItem.setDictElementType("string"); - cldsDictionaryItem.setDictionaryId(cldsDictionary.getDictionaryId()); - cldsDictionaryItem.setDictElementDesc("TestDictionaryItemDesc"); - cldsDictionaryService.createOrUpdateDictionaryElements(DICTIONARY_NAME, cldsDictionaryItem); - - logger.info("Initial Clds Dictionary uploaded in DB:" + cldsDictionaryItem); - } - - @Test - public void testCreateDictionaryFromString() { - String dictionaryName = "TestDefaultDictionary"; - CldsDictionary dictionary = cldsDictionaryService.createDictionary(dictionaryName); - assertNotNull(dictionary); - logger.info("CLDS Default Dictionary is:" + dictionary); - assertEquals(dictionaryName, dictionary.getDictionaryName()); - } - - @Test - public void testCreateOrUpdateDictionaryUsedByFrontend() { - ResponseEntity<CldsDictionary> responseEntity = - cldsDictionaryService.createOrUpdateDictionary(DICTIONARY_NAME, null); - CldsDictionary dictionary1 = responseEntity.getBody(); - - responseEntity = cldsDictionaryService.createOrUpdateDictionary(DICTIONARY_NAME, cldsDictionary); - CldsDictionary dictionary2 = responseEntity.getBody(); - - responseEntity = cldsDictionaryService.createOrUpdateDictionary(DICTIONARY_NAME, new CldsDictionary()); - CldsDictionary dictionary3 = responseEntity.getBody(); - - assertNotNull(dictionary1); - assertNotNull(dictionary2); - assertNotNull(dictionary3); - assertEquals(DICTIONARY_NAME, dictionary1.getDictionaryName()); - assertEquals(DICTIONARY_NAME, dictionary2.getDictionaryName()); - assertNotNull(dictionary3.getDictionaryName()); - assertEquals(DICTIONARY_NAME, dictionary3.getDictionaryName()); - } - - @Test - public void testCreateOrUpdateDictionaryElements() { - cldsDictionaryItem = new CldsDictionaryItem(); - cldsDictionaryItem.setDictElementShortName("TestDictionaryItemShortName1"); - cldsDictionaryItem.setDictElementName("TestDictionaryItemName1"); - cldsDictionaryItem.setDictElementType("string"); - cldsDictionaryItem.setDictionaryId(cldsDictionary.getDictionaryId()); - cldsDictionaryItem.setDictElementDesc("TestDictionaryItemDesc1"); - - ResponseEntity<CldsDictionaryItem> responseEntity = cldsDictionaryService - .createOrUpdateDictionaryElements(DICTIONARY_NAME, cldsDictionaryItem); - CldsDictionaryItem dictionaryItem = responseEntity.getBody(); - assertNotNull(dictionaryItem); - logger.info("CLDS Dictionary Item is:" + dictionaryItem); - assertEquals("TestDictionaryItemName1", dictionaryItem.getDictElementName()); - } - - @Test - public void testGetAllDictionaryNames() { - ResponseEntity<List<CldsDictionary>> responseEntity = cldsDictionaryService.getAllDictionaryNames(); - List<CldsDictionary> dictionaries = responseEntity.getBody(); - assertNotNull(dictionaries); - logger.info("CLDS Dictionary List is:" + dictionaries); - } - - @Test - public void testGetDictionaryElementsByName() { - ResponseEntity<List<CldsDictionaryItem>> responseEntity = cldsDictionaryService - .getDictionaryElementsByName(DICTIONARY_NAME); - List<CldsDictionaryItem> dictionaryItems = responseEntity.getBody(); - assertNotNull(dictionaryItems); - logger.info("CLDS Dictionary Item LIst is:" + dictionaryItems); - } -}
\ 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 faeb0418..963f45be 100644 --- a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java @@ -35,32 +35,20 @@ import java.util.List; import java.util.Properties; import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.NotFoundException; -import javax.xml.transform.TransformerException; -import org.apache.commons.lang3.RandomStringUtils; -import org.json.simple.parser.ParseException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Matchers; import org.mockito.Mockito; import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsInfo; -import org.onap.clamp.clds.model.CldsModel; -import org.onap.clamp.clds.model.CldsMonitoringDetails; -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; -import org.skyscreamer.jsonassert.JSONAssert; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; @@ -93,8 +81,7 @@ public class CldsServiceItCase { /** * Setup the variable before the tests execution. * - * @throws IOException - * In case of issues when opening the files + * @throws IOException In case of issues when opening the files */ @Before public void setupBefore() throws IOException { @@ -154,127 +141,4 @@ public class CldsServiceItCase { assertEquals(cldsInfo.getCldsVersion(), prop.getProperty("clds.version")); assertEquals(cldsInfo.getUserName(), "admin"); } - - @Test - public void testGetCldsDetails() throws IOException { - List<CldsMonitoringDetails> cldsMonitoringDetailsList = cldsService.getCldsDetails(); - assertNotNull(cldsMonitoringDetailsList); - } - - @Test(expected = NotFoundException.class) - public void testCompleteFlow() throws TransformerException, ParseException { - SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Mockito.when(securityContext.getAuthentication()).thenReturn(authentication); - - cldsService.setSecurityContext(securityContext); - // Add the template first - CldsTemplate newTemplate = new CldsTemplate(); - String randomNameTemplate = RandomStringUtils.randomAlphanumeric(5); - newTemplate.setName(randomNameTemplate); - newTemplate.setBpmnText(bpmnText); - newTemplate.setImageText(imageText); - // Save the template in DB - cldsDao.setTemplate(newTemplate, "user"); - // Test if it's well there - CldsTemplate newTemplateRead = cldsDao.getTemplate(randomNameTemplate); - assertEquals(bpmnText, newTemplateRead.getBpmnText()); - assertEquals(imageText, newTemplateRead.getImageText()); - // Save the model - String randomNameModel = RandomStringUtils.randomAlphanumeric(5); - CldsModel newModel = new CldsModel(); - newModel.setName(randomNameModel); - newModel.setBpmnText(bpmnText); - newModel.setImageText(imageText); - newModel.setPropText(bpmnPropText); - newModel.setControlNamePrefix("ClosedLoop-"); - newModel.setTemplateName(randomNameTemplate); - newModel.setTemplateId(newTemplate.getId()); - newModel.setDocText(docText); - // Test the PutModel method - - cldsService.putModel(randomNameModel, newModel); - - assertEquals(bpmnText, cldsService.getBpmnXml(randomNameModel)); - assertEquals(imageText, cldsService.getImageXml(randomNameModel)); - - // Verify whether it has been added properly or not - assertNotNull(cldsDao.getModel(randomNameModel)); - - CldsModel model = cldsService.getModel(randomNameModel); - // Verify with GetModel - assertEquals(model.getTemplateName(), randomNameTemplate); - assertEquals(model.getName(), randomNameModel); - - assertTrue(cldsService.getModelNames().size() >= 1); - - // Should fail - 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)); - assertNotNull(responseEntity); - 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.putModelAndProcessAction(CldsEvent.ACTION_STOP, randomNameModel, "false", - cldsService.getModel(randomNameModel)); - assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK)); - assertNotNull(responseEntity.getBody()); - assertTrue(CldsModel.STATUS_STOPPED.equals(((CldsModel) responseEntity.getBody()).getStatus())); - assertTrue(CldsModel.STATUS_STOPPED.equals(cldsService.getModel(randomNameModel).getStatus())); - - responseEntity = cldsService.putModelAndProcessAction(CldsEvent.ACTION_RESTART, randomNameModel, "false", - cldsService.getModel(randomNameModel)); - 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.putModelAndProcessAction(CldsEvent.ACTION_UPDATE, randomNameModel, "false", - cldsService.getModel(randomNameModel)); - 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)); - assertNotNull(responseEntity); - 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.putModelAndProcessAction(CldsEvent.ACTION_DELETE, randomNameModel, "false", - cldsService.getModel(randomNameModel)); - assertNotNull(responseEntity); - assertTrue(responseEntity.getStatusCode().equals(HttpStatus.OK)); - assertNotNull(responseEntity.getBody()); - // This will raise an exception - cldsService.getModel(randomNameModel); - } - - @Test - public void testDcaePost() { - 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); - } } diff --git a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java deleted file mode 100644 index ba8b0b79..00000000 --- a/src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java +++ /dev/null @@ -1,171 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.io.IOException; -import java.security.Principal; -import java.util.LinkedList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Matchers; -import org.mockito.Mockito; -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.service.CldsTemplateService; -import org.onap.clamp.clds.util.LoggingUtils; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.core.userdetails.User; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * Test HTTP and HTTPS settings + redirection of HTTP to HTTPS. - */ -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -public class CldsTemplateServiceItCase { - - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateServiceItCase.class); - @Autowired - private CldsTemplateService cldsTemplateService; - @Autowired - private CldsDao cldsDao; - private String bpmnText; - private String imageText; - private String bpmnPropText; - private CldsTemplate cldsTemplate; - private Authentication authentication; - private List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>(); - private LoggingUtils util; - - /** - * Setup the variable before the tests execution. - * - * @throws IOException - * In case of issues when opening the files - */ - @Before - public void setupBefore() throws IOException { - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read")); - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|update")); - 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); - - SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Mockito.when(securityContext.getAuthentication()).thenReturn(authentication); - - util = Mockito.mock(LoggingUtils.class); - Mockito.doNothing().when(util).entering(Matchers.any(HttpServletRequest.class), Matchers.any(String.class)); - cldsTemplateService.setLoggingUtil(util); - - cldsTemplateService.setSecurityContext(securityContext); - bpmnText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-template.xml"); - imageText = ResourceFileUtil.getResourceAsString("example/dao/image-template.xml"); - bpmnPropText = ResourceFileUtil.getResourceAsString("example/dao/bpmn-prop.json"); - cldsTemplate = new CldsTemplate(); - cldsTemplate.setName("testModel"); - cldsTemplate.setBpmnText(bpmnText); - cldsTemplate.setImageText(imageText); - cldsTemplate.setPropText(bpmnPropText); - cldsTemplateService.putTemplate("testModel", cldsTemplate); - } - - @Test - public void testPutTemplate() throws Exception { - CldsTemplate savedTemplate = CldsTemplate.retrieve(cldsDao, "testModel", false); - assertNotNull(savedTemplate); - logger.info("saved template bpmn text is:" + savedTemplate.getBpmnText()); - assertEquals(bpmnText, savedTemplate.getBpmnText()); - assertEquals(imageText, savedTemplate.getImageText()); - assertEquals(bpmnPropText, savedTemplate.getPropText()); - assertEquals("testModel", savedTemplate.getName()); - } - - @Test - public void testGetTemplate() throws Exception { - CldsTemplate getTemplate = cldsTemplateService.getTemplate("testModel"); - assertNotNull(getTemplate); - assertEquals(bpmnText, getTemplate.getBpmnText()); - assertEquals(imageText, getTemplate.getImageText()); - assertEquals(bpmnPropText, getTemplate.getPropText()); - assertEquals("testModel", getTemplate.getName()); - } - - @Test - public void testGetImageXml() throws Exception { - String imageXml = cldsTemplateService.getImageXml("testModel"); - assertEquals(imageText, imageXml); - } - - @Test - public void testGetBpmnTemplate() throws Exception { - String bpmnTemplate = cldsTemplateService.getBpmnTemplate("testModel"); - assertEquals(bpmnText, bpmnTemplate); - } - - @Test - public void testGetTemplateNames() throws Exception { - CldsTemplate cldsTemplateNew = new CldsTemplate(); - cldsTemplateNew.setName("testModelNew"); - cldsTemplateNew.setBpmnText(bpmnText); - cldsTemplateNew.setImageText(imageText); - cldsTemplateNew.setPropText(bpmnPropText); - cldsTemplateService.putTemplate("testModelNew", cldsTemplateNew); - List<ValueItem> templateNames = cldsTemplateService.getTemplateNames(); - boolean testModel = false; - boolean testModelNew = false; - for (ValueItem item : templateNames) { - if (item.getValue().equals("testModel")) { - testModel = true; - } - if (item.getValue().equals("testModelNew")) { - testModelNew = true; - } - } - assertTrue(testModel || testModelNew); - } -} diff --git a/src/test/java/org/onap/clamp/clds/it/CldsToscaServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsToscaServiceItCase.java deleted file mode 100644 index 992c06e8..00000000 --- a/src/test/java/org/onap/clamp/clds/it/CldsToscaServiceItCase.java +++ /dev/null @@ -1,136 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.it; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - -import java.io.IOException; -import java.util.LinkedList; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Matchers; -import org.mockito.Mockito; -import org.onap.clamp.clds.model.CldsToscaModel; -import org.onap.clamp.clds.service.CldsToscaService; -import org.onap.clamp.clds.util.LoggingUtils; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.http.ResponseEntity; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.GrantedAuthority; -import org.springframework.security.core.authority.SimpleGrantedAuthority; -import org.springframework.security.core.context.SecurityContext; -import org.springframework.security.core.userdetails.User; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -/** - * Test CLDS Tosca Service APIs. - */ -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) -public class CldsToscaServiceItCase { - - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsToscaServiceItCase.class); - @Autowired - private CldsToscaService cldsToscaService; - private String toscaModelYaml; - private Authentication authentication; - private CldsToscaModel cldsToscaModel; - private List<GrantedAuthority> authList = new LinkedList<>(); - private LoggingUtils util; - - /** - * Setup the variable before the tests execution. - * - * @throws IOException - * In case of issues when opening the files - */ - @Before - public void setupBefore() throws IOException { - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read")); - authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|update")); - 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|*")); - authList.add(new SimpleGrantedAuthority("permission-type-tosca|dev|read")); - authList.add(new SimpleGrantedAuthority("permission-type-tosca|dev|update")); - authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList); - - SecurityContext securityContext = Mockito.mock(SecurityContext.class); - Mockito.when(securityContext.getAuthentication()).thenReturn(authentication); - - util = Mockito.mock(LoggingUtils.class); - Mockito.doNothing().when(util).entering(Matchers.any(HttpServletRequest.class), Matchers.any(String.class)); - cldsToscaService.setLoggingUtil(util); - - cldsToscaService.setSecurityContext(securityContext); - - toscaModelYaml = ResourceFileUtil.getResourceAsString("tosca/tca-policy-test.yaml"); - - cldsToscaModel = new CldsToscaModel(); - cldsToscaModel.setToscaModelName("tca-policy-test"); - cldsToscaModel.setToscaModelYaml(toscaModelYaml); - cldsToscaModel.setUserId("admin"); - cldsToscaModel.setPolicyType("tca"); - cldsToscaService.parseToscaModelAndSave("tca-policy-test", cldsToscaModel); - logger.info("Initial Tosca Model uploaded in DB:" + cldsToscaModel); - } - - @Test - public void testParseToscaModelAndSave() throws Exception { - ResponseEntity responseEntity = cldsToscaService.parseToscaModelAndSave("tca-policy-test", cldsToscaModel); - CldsToscaModel savedModel = (CldsToscaModel) responseEntity.getBody(); - assertNotNull(savedModel); - logger.info("Parsed Tosca Model is:" + savedModel); - assertEquals("tca-policy-test", savedModel.getToscaModelName()); - } - - @Test - public void testGetToscaModel() throws Exception { - CldsToscaModel savedModel = cldsToscaService.getToscaModel("tca-policy-test"); - assertNotNull(savedModel); - assertEquals("tca-policy-test", savedModel.getToscaModelName()); - } - - @Test - public void testGetToscaModelsByPolicyType() throws Exception { - CldsToscaModel savedModel = cldsToscaService.getToscaModelsByPolicyType("tca"); - assertNotNull(savedModel); - assertEquals("tca-policy-test", savedModel.getToscaModelName()); - assertEquals("tca", savedModel.getPolicyType()); - } - -} diff --git a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java index 9b83e721..7c520a25 100644 --- a/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java @@ -45,7 +45,7 @@ import org.springframework.test.util.ReflectionTestUtils; */ @RunWith(SpringRunner.class) @SpringBootTest -@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller") +@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller-new") public class SdcControllersConfigurationItCase { @Autowired @@ -60,7 +60,7 @@ public class SdcControllersConfigurationItCase { public void testGetAllDefinedControllers() throws IOException { loadFile("classpath:/clds/sdc-controllers-config.json"); Map<String, SdcSingleControllerConfiguration> mapResult = sdcControllersConfiguration - .getAllDefinedControllers(); + .getAllDefinedControllers(); assertTrue(mapResult.size() == 2); assertEquals("sdc-controller1", mapResult.get("sdc-controller1").getSdcControllerName()); assertEquals("sdc-controller2", mapResult.get("sdc-controller2").getSdcControllerName()); @@ -69,10 +69,10 @@ public class SdcControllersConfigurationItCase { @Test public void testGetSdcSingleControllerConfiguration() throws IOException { loadFile("classpath:/clds/sdc-controllers-config.json"); - assertEquals("sdc-controller1", - sdcControllersConfiguration.getSdcSingleControllerConfiguration("sdc-controller1").getSdcControllerName()); - assertEquals("sdc-controller2", - sdcControllersConfiguration.getSdcSingleControllerConfiguration("sdc-controller2").getSdcControllerName()); + assertEquals("sdc-controller1", sdcControllersConfiguration + .getSdcSingleControllerConfiguration("sdc-controller1").getSdcControllerName()); + assertEquals("sdc-controller2", sdcControllersConfiguration + .getSdcSingleControllerConfiguration("sdc-controller2").getSdcControllerName()); } @Test(expected = JsonSyntaxException.class) diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java index 0f0ecaed..695b8516 100644 --- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java +++ b/src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java @@ -27,11 +27,13 @@ package org.onap.clamp.clds.it.sdc.controller; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; + import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; + import org.assertj.core.api.Assertions; import org.junit.Before; import org.junit.Test; @@ -104,45 +106,48 @@ public class SdcSingleControllerItCase { */ @Before public void init() { - sdcSingleController = new SdcSingleController(clampProp, csarInstaller, - SdcSingleControllerConfigurationTest.loadControllerConfiguration("clds/sdc-controller-config-TLS.json", - "sdc-controller1"), - null) { + sdcSingleController = new SdcSingleController(clampProp, csarInstaller, SdcSingleControllerConfigurationTest + .loadControllerConfiguration("clds/sdc-controller-config-TLS.json", "sdc-controller1"), null) { }; } @Test public void testTreatNotification() { - //when + // when sdcSingleController.treatNotification(buildFakeSdcNotification()); - //then + // then Assertions.assertThat(sdcSingleController.getNbOfNotificationsOngoing()).isEqualTo(0); } @Test public void testCloseSdc() throws SdcControllerException { - //when + // when sdcSingleController.closeSdc(); - //then + // then assertThat(sdcSingleController.getControllerStatus()).isEqualTo(SdcSingleControllerStatus.STOPPED); } @Test - public void testActivateCallback() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, InstantiationException, ClassNotFoundException { - //given - MDCAdapter mdcAdapter = MDC.getMDCAdapter(); - Class<?> innerClass = Class.forName("org.onap.clamp.clds.sdc.controller.SdcSingleController$SdcNotificationCallBack"); - Constructor<?> constructor = innerClass.getDeclaredConstructor(SdcSingleController.class, SdcSingleController.class); + public void testActivateCallback() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, + InstantiationException, ClassNotFoundException { + // given + + Class<?> innerClass = Class + .forName("org.onap.clamp.clds.sdc.controller.SdcSingleController$SdcNotificationCallBack"); + Constructor<?> constructor = innerClass.getDeclaredConstructor(SdcSingleController.class, + SdcSingleController.class); constructor.setAccessible(true); - Object child = constructor.newInstance(sdcSingleController,sdcSingleController); - Method method = child.getClass().getDeclaredMethod("activateCallback",INotificationData.class); + Object child = constructor.newInstance(sdcSingleController, sdcSingleController); + Method method = child.getClass().getDeclaredMethod("activateCallback", INotificationData.class); method.setAccessible(true); - //when - method.invoke(child,buildFakeSdcNotification()); - //then + MDCAdapter mdcAdapter = MDC.getMDCAdapter(); + // when + method.invoke(child, buildFakeSdcNotification()); + // then assertThat(mdcAdapter.get("ResponseCode")).isEqualTo("0"); assertThat(mdcAdapter.get("StatusCode")).isEqualTo("COMPLETE"); - assertThat(mdcAdapter.get("ResponseDescription")).isEqualTo("SDC Notification received and processed successfully"); + assertThat(mdcAdapter.get("ResponseDescription")) + .isEqualTo("SDC Notification received and processed successfully"); assertThat(mdcAdapter.get("ClassName")).isEqualTo(child.getClass().getName()); } } diff --git a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java deleted file mode 100644 index e1b963cc..00000000 --- a/src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java +++ /dev/null @@ -1,214 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Modifications copyright (c) 2019 Nokia - * =================================================================== - * 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============================================ - * =================================================================== - * - */ - -package org.onap.clamp.clds.it.sdc.controller.installer; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.RandomStringUtils; -import org.json.JSONException; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.onap.clamp.clds.dao.CldsDao; -import org.onap.clamp.clds.exception.policy.PolicyModelException; -import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException; -import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; -import org.onap.clamp.clds.model.CldsModel; -import org.onap.clamp.clds.model.CldsTemplate; -import org.onap.clamp.clds.sdc.controller.installer.BlueprintArtifact; -import org.onap.clamp.clds.sdc.controller.installer.CsarHandler; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller; -import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.onap.sdc.api.notification.INotificationData; -import org.onap.sdc.api.notification.IResourceInstance; -import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; -import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; -import org.onap.sdc.toscaparser.api.elements.Metadata; -import org.skyscreamer.jsonassert.JSONAssert; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -@ActiveProfiles(profiles = "clamp-default,clamp-default-user,clamp-sdc-controller") -public class CsarInstallerItCase { - - private static final String INVARIANT_SERVICE_UUID = "4cc5b45a-1f63-4194-8100-cd8e14248c92"; - private static final String INVARIANT_RESOURCE1_UUID = "07e266fc-49ab-4cd7-8378-ca4676f1b9ec"; - private static final String INVARIANT_RESOURCE2_UUID = "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"; - private static final String RESOURCE_INSTANCE_NAME_RESOURCE1 = "ResourceInstanceName1"; - private static final String RESOURCE_INSTANCE_NAME_RESOURCE2 = "ResourceInstanceName2"; - - @Autowired - @Qualifier("oldModelInstaller") - private CsarInstaller csarInstaller; - - @Autowired - private CldsDao cldsDao; - - @Test(expected = SdcArtifactInstallerException.class) - public void testInstallTheCsarFail() throws SdcArtifactInstallerException, SdcToscaParserException, - CsarHandlerException, IOException, InterruptedException, PolicyModelException { - CsarHandler csarHandler = Mockito.mock(CsarHandler.class); - BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class); - Mockito.when(blueprintArtifact.getResourceAttached()).thenReturn(Mockito.mock(IResourceInstance.class)); - Map<String, BlueprintArtifact> blueprintMap = new HashMap<>(); - blueprintMap.put("resourceid", blueprintArtifact); - Mockito.when(csarHandler.getMapOfBlueprints()).thenReturn(blueprintMap); - Mockito.when(blueprintArtifact.getDcaeBlueprint()).thenReturn( - IOUtils.toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/not-recognized.yaml"), - StandardCharsets.UTF_8)); - csarInstaller.installTheCsar(csarHandler); - fail("Should have raised an SdcArtifactInstallerException"); - } - - private BlueprintArtifact buildFakeBuildprintArtifact(String instanceName, String invariantResourceUuid, - String blueprintFilePath, String artifactName, String invariantServiceUuid) throws IOException { - IResourceInstance resource = Mockito.mock(IResourceInstance.class); - Mockito.when(resource.getResourceInstanceName()).thenReturn(instanceName); - Mockito.when(resource.getResourceInvariantUUID()).thenReturn(invariantResourceUuid); - BlueprintArtifact blueprintArtifact = Mockito.mock(BlueprintArtifact.class); - Mockito.when(blueprintArtifact.getDcaeBlueprint()) - .thenReturn(ResourceFileUtil.getResourceAsString(blueprintFilePath)); - Mockito.when(blueprintArtifact.getBlueprintArtifactName()).thenReturn(artifactName); - Mockito.when(blueprintArtifact.getBlueprintInvariantServiceUuid()).thenReturn(invariantServiceUuid); - Mockito.when(blueprintArtifact.getResourceAttached()).thenReturn(resource); - return blueprintArtifact; - } - - private CsarHandler buildFakeCsarHandler(String generatedName) throws IOException { - // Create fake notification - INotificationData notificationData = Mockito.mock(INotificationData.class); - Mockito.when(notificationData.getServiceVersion()).thenReturn("1.0"); - // Create fake resource in notification - CsarHandler csarHandler = Mockito.mock(CsarHandler.class); - List<IResourceInstance> listResources = new ArrayList<>(); - Mockito.when(notificationData.getResources()).thenReturn(listResources); - Map<String, BlueprintArtifact> blueprintMap = new HashMap<>(); - Mockito.when(csarHandler.getMapOfBlueprints()).thenReturn(blueprintMap); - // Create fake blueprint artifact 1 on resource1 - BlueprintArtifact blueprintArtifact = buildFakeBuildprintArtifact(RESOURCE_INSTANCE_NAME_RESOURCE1, - INVARIANT_RESOURCE1_UUID, "example/sdc/blueprint-dcae/tca.yaml", "tca.yaml", INVARIANT_SERVICE_UUID); - listResources.add(blueprintArtifact.getResourceAttached()); - blueprintMap.put(blueprintArtifact.getBlueprintArtifactName(), blueprintArtifact); - // Create fake blueprint artifact 2 on resource2 - blueprintArtifact = buildFakeBuildprintArtifact(RESOURCE_INSTANCE_NAME_RESOURCE2, INVARIANT_RESOURCE2_UUID, - "example/sdc/blueprint-dcae/tca_2.yaml", "tca_2.yaml", INVARIANT_SERVICE_UUID); - listResources.add(blueprintArtifact.getResourceAttached()); - blueprintMap.put(blueprintArtifact.getBlueprintArtifactName(), blueprintArtifact); - - // Create fake blueprint artifact 3 on resource 1 so that it's possible to - // test multiple CL deployment per Service/vnf - blueprintArtifact = buildFakeBuildprintArtifact(RESOURCE_INSTANCE_NAME_RESOURCE1, INVARIANT_RESOURCE1_UUID, - "example/sdc/blueprint-dcae/tca_3.yaml", "tca_3.yaml", INVARIANT_SERVICE_UUID); - blueprintMap.put(blueprintArtifact.getBlueprintArtifactName(), blueprintArtifact); - - // Build fake csarhandler - Mockito.when(csarHandler.getSdcNotification()).thenReturn(notificationData); - // Build fake csar Helper - ISdcCsarHelper csarHelper = Mockito.mock(ISdcCsarHelper.class); - Metadata data = Mockito.mock(Metadata.class); - Mockito.when(data.getValue("name")).thenReturn(generatedName); - Mockito.when(csarHelper.getServiceMetadata()).thenReturn(data); - Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(csarHelper); - return csarHandler; - } - - @Test - public void testIsCsarAlreadyDeployedTca() throws SdcArtifactInstallerException, SdcToscaParserException, - CsarHandlerException, IOException, InterruptedException, PolicyModelException { - String generatedName = RandomStringUtils.randomAlphanumeric(5); - CsarHandler csarHandler = buildFakeCsarHandler(generatedName); - assertFalse(csarInstaller.isCsarAlreadyDeployed(csarHandler)); - csarInstaller.installTheCsar(csarHandler); - assertTrue(csarInstaller.isCsarAlreadyDeployed(csarHandler)); - } - - @Test - public void testInstallTheCsarTca() throws SdcArtifactInstallerException, SdcToscaParserException, - CsarHandlerException, IOException, JSONException, InterruptedException, PolicyModelException { - String generatedName = RandomStringUtils.randomAlphanumeric(5); - CsarHandler csar = buildFakeCsarHandler(generatedName); - csarInstaller.installTheCsar(csar); - CldsModel cldsModel1 = verifyClosedLoopModelLoadedInDb(csar, "tca.yaml"); - JSONAssert.assertEquals( - IOUtils.toString(ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca.json"), - StandardCharsets.UTF_8), - cldsModel1.getPropText(), true); - CldsModel cldsModel2 = verifyClosedLoopModelLoadedInDb(csar, "tca_2.yaml"); - JSONAssert.assertEquals(IOUtils.toString( - ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca-2.json"), - StandardCharsets.UTF_8), cldsModel2.getPropText(), true); - CldsModel cldsModel3 = verifyClosedLoopModelLoadedInDb(csar, "tca_3.yaml"); - JSONAssert.assertEquals(IOUtils.toString( - ResourceFileUtil.getResourceAsStream("example/sdc/blueprint-dcae/prop-text-for-tca-3.json"), - StandardCharsets.UTF_8), cldsModel3.getPropText(), true); - } - - private CldsModel verifyClosedLoopModelLoadedInDb(CsarHandler csar, String artifactName) - throws SdcArtifactInstallerException { - - // Get the template back from DB - CldsTemplate templateFromDb = CldsTemplate.retrieve(cldsDao, CsarInstallerImpl.TEMPLATE_NAME_PREFIX - + CsarInstallerImpl.buildModelName(csar, csar.getMapOfBlueprints().get(artifactName)), false); - assertNotNull(templateFromDb); - assertNotNull(templateFromDb.getBpmnText()); - assertNotNull(templateFromDb.getImageText()); - assertNotNull(templateFromDb.getPropText()); - assertTrue(templateFromDb.getPropText().contains("global") - && templateFromDb.getPropText().contains("node_templates:")); - assertEquals(templateFromDb.getName(), CsarInstallerImpl.TEMPLATE_NAME_PREFIX - + CsarInstallerImpl.buildModelName(csar, csar.getMapOfBlueprints().get(artifactName))); - // Get the Model back from DB - CldsModel modelFromDb = CldsModel.retrieve(cldsDao, - CsarInstallerImpl.buildModelName(csar, csar.getMapOfBlueprints().get(artifactName)), true); - assertNotNull(modelFromDb); - assertNotNull(modelFromDb.getBpmnText()); - assertNotNull(modelFromDb.getImageText()); - assertNotNull(modelFromDb.getPropText()); - assertTrue(modelFromDb.getPropText().contains("policy_id")); - assertEquals(CsarInstallerImpl.buildModelName(csar, csar.getMapOfBlueprints().get(artifactName)), - modelFromDb.getName()); - assertEquals(CsarInstallerImpl.CONTROL_NAME_PREFIX, modelFromDb.getControlNamePrefix()); - return modelFromDb; - } -} diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java deleted file mode 100644 index e462455f..00000000 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java +++ /dev/null @@ -1,167 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2019 Nokia 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============================================ - * * Modifications copyright (c) 2019 Nokia - * =================================================================== - * - */ - -package org.onap.clamp.clds.sdc.controller.installer; - -import com.google.gson.JsonObject; - -import java.io.IOException; -import java.io.InputStream; - -import org.apache.commons.io.IOUtils; -import org.assertj.core.api.Assertions; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.clamp.clds.client.DcaeInventoryServices; -import org.onap.clamp.clds.config.sdc.BlueprintParserFilesConfiguration; -import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException; -import org.onap.clamp.clds.service.CldsService; -import org.onap.clamp.clds.service.CldsTemplateService; -import org.onap.clamp.clds.transform.XslTransformer; -import org.onap.clamp.clds.util.JsonUtils; -import org.onap.clamp.clds.util.ResourceFileUtil; -import org.onap.sdc.api.notification.INotificationData; -import org.onap.sdc.api.notification.IResourceInstance; -import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; -import org.onap.sdc.toscaparser.api.elements.Metadata; -import org.springframework.context.ApplicationContext; -import org.springframework.core.io.Resource; - -@RunWith(MockitoJUnitRunner.class) -public class LoopCsarInstallerTest { - - @Mock - private CsarHandler csarHandler; - - @Mock - private ApplicationContext applicationContext; - - @Mock - private DcaeInventoryServices dcaeInventoryServices; - - @Mock - private IResourceInstance resourceInstance; - - @Mock - private CldsService cldsService; - - @Mock - private INotificationData notificationData; - - @Mock - private Metadata metadata; - - @Mock - private ISdcCsarHelper sdcCsarHelper; - - private CsarInstallerImpl csarInstaller; - private BlueprintArtifact artifact; - - /** - * Set up method. throws: Exception - */ - @Before - public void setUp() throws Exception { - String dceaBlueprint = ResourceFileUtil.getResourceAsString("tosca/dcea_blueprint.yml"); - artifact = prepareBlueprintArtifact(dceaBlueprint); - csarInstaller = new CsarInstallerImpl(applicationContext, null, new CldsTemplateService(), cldsService, - dcaeInventoryServices, new XslTransformer()); - } - - @Test - public void shouldReturnInputParametersFromBlueprint() { - // given - String expectedBlueprintInputsText = "{\"aaiEnrichmentHost\":\"aai.onap.svc.cluster.local\"" - + ",\"aaiEnrichmentPort\":\"8443\"" + ",\"enableAAIEnrichment\":true" + ",\"dmaap_host\":\"message-router\"" - + ",\"dmaap_port\":\"3904\"" + ",\"enableRedisCaching\":false" + ",\"redisHosts\":\"dcae-redis:6379\"" - + ",\"tag_version\":" - + "\"nexus3.onap.org:10001/onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0\"" - + ",\"consul_host\":\"consul-server\"" + ",\"consul_port\":\"8500\",\"cbs_host\":\"{\\\"test\\\":" - + "{\\\"test\\\":\\\"test\\\"}}\",\"cbs_port\":\"10000\"" - + ",\"external_port\":\"32010\",\"policy_id\":\"AUTO_GENERATED_POLICY_ID_AT_SUBMIT\"}"; - - JsonObject expectedBlueprintInputs = JsonUtils.GSON.fromJson(expectedBlueprintInputsText, JsonObject.class); - // when - String parametersInJson = csarInstaller.getAllBlueprintParametersInJson(artifact); - // then - Assertions.assertThat(JsonUtils.GSON.fromJson(parametersInJson, JsonObject.class)) - .isEqualTo(expectedBlueprintInputs); - } - - @Test - public void shouldReturnBuildModelName() throws SdcArtifactInstallerException { - // given - String expectedModelName = "CLAMP_test_name_" + "vtest_service_version_" + "test_resource_instance_name_" - + "test_artifact_name"; - prepareMockCsarHandler("name", "test_name", "test_service_version"); - Mockito.when(resourceInstance.getResourceInstanceName()).thenReturn("test_resource_instance_name"); - // when - String actualModelName = CsarInstallerImpl.buildModelName(csarHandler, artifact); - // then - Assertions.assertThat(actualModelName).isEqualTo(expectedModelName); - } - - @Test - public void shouldReturnRightMapping() throws SdcArtifactInstallerException, IOException { - // given - String input = "[{\"blueprintKey\":\"tca_k8s\"," + "\"dcaeDeployable\":false," - + "\"files\":{\"svgXmlFilePath\":\"samplePath\",\"bpmnXmlFilePath\":\"samplePath\"}}]"; - BlueprintParserFilesConfiguration filesConfiguration = new BlueprintParserFilesConfiguration(); - filesConfiguration.setBpmnXmlFilePath("samplePath"); - filesConfiguration.setSvgXmlFilePath("samplePath"); - Resource resource = Mockito.mock(Resource.class); - InputStream inputStream = IOUtils.toInputStream(input, "UTF-8"); - Mockito.when(applicationContext.getResource(Mockito.any(String.class))).thenReturn(resource); - Mockito.when(resource.getInputStream()).thenReturn(inputStream); - csarInstaller.loadConfiguration(); - // when - BlueprintParserFilesConfiguration configuration = csarInstaller.searchForRightMapping(artifact); - - // then - Assertions.assertThat(configuration.getBpmnXmlFilePath()).isEqualTo("samplePath"); - Assertions.assertThat(configuration.getSvgXmlFilePath()).isEqualTo("samplePath"); - } - - private BlueprintArtifact prepareBlueprintArtifact(String dceaBlueprint) { - artifact = new BlueprintArtifact(); - artifact.setBlueprintArtifactName("test_artifact_name"); - artifact.setBlueprintInvariantServiceUuid("test_inv_uuid"); - artifact.setResourceAttached(resourceInstance); - artifact.setDcaeBlueprint(dceaBlueprint); - return artifact; - } - - private void prepareMockCsarHandler(String metadataNameMockInput, String metadataNameMockOutput, - String serviceVersion) { - Mockito.when(csarHandler.getSdcCsarHelper()).thenReturn(sdcCsarHelper); - Mockito.when(sdcCsarHelper.getServiceMetadata()).thenReturn(metadata); - Mockito.when(metadata.getValue(metadataNameMockInput)).thenReturn(metadataNameMockOutput); - Mockito.when(csarHandler.getSdcNotification()).thenReturn(notificationData); - Mockito.when(notificationData.getServiceVersion()).thenReturn(serviceVersion); - } -}
\ No newline at end of file |