summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/onap/clamp/authorization/AuthorizationController.java2
-rw-r--r--src/main/java/org/onap/clamp/clds/config/spring/CldsSdcControllerConfiguration.java113
-rw-r--r--src/main/java/org/onap/clamp/clds/config/spring/SdcControllerConfiguration.java8
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/CldsDao.java299
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/CldsServiceDataMapper.java62
-rw-r--r--src/main/java/org/onap/clamp/clds/model/CldsMonitoringDetails.java113
-rw-r--r--src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarInstallerImpl.java350
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsDictionaryService.java179
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsService.java571
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java166
-rw-r--r--src/main/java/org/onap/clamp/clds/service/CldsToscaService.java166
-rw-r--r--src/main/resources/META-INF/resources/swagger.html2496
-rw-r--r--src/main/resources/clds/camel/rest/clds-services.xml153
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsDaoItCase.java19
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsDictionaryServiceItCase.java177
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java138
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsTemplateServiceItCase.java171
-rw-r--r--src/test/java/org/onap/clamp/clds/it/CldsToscaServiceItCase.java136
-rw-r--r--src/test/java/org/onap/clamp/clds/it/config/SdcControllersConfigurationItCase.java12
-rw-r--r--src/test/java/org/onap/clamp/clds/it/sdc/controller/SdcSingleControllerItCase.java43
-rw-r--r--src/test/java/org/onap/clamp/clds/it/sdc/controller/installer/CsarInstallerItCase.java214
-rw-r--r--src/test/java/org/onap/clamp/clds/sdc/controller/installer/LoopCsarInstallerTest.java167
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">&lt; <a href="#_cldsdictionaryitem">CldsDictionaryItem</a> &gt; 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">&lt; <a href="#_cldsmodelinstance">CldsModelInstance</a> &gt; 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">&lt; string &gt; 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">&lt; <a href="#_cldsmodelinstance">CldsModelInstance</a> &gt; 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