aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java29
-rw-r--r--src/main/java/org/onap/clamp/clds/dao/CldsDao.java133
-rw-r--r--src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java6
-rw-r--r--src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java23
-rw-r--r--src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java5
-rw-r--r--src/main/java/org/onap/clamp/loop/Loop.java22
-rw-r--r--src/main/java/org/onap/clamp/loop/LoopController.java48
-rw-r--r--src/main/java/org/onap/clamp/loop/LoopOperation.java126
-rw-r--r--src/main/java/org/onap/clamp/loop/LoopService.java52
-rw-r--r--src/main/java/org/onap/clamp/loop/log/LoopLog.java10
-rw-r--r--src/main/java/org/onap/clamp/loop/log/LoopLogService.java43
-rw-r--r--src/main/java/org/onap/clamp/policy/Policy.java18
-rw-r--r--src/main/java/org/onap/clamp/policy/PolicyOperation.java131
-rw-r--r--src/main/java/org/onap/clamp/policy/PolicyService.java4
-rw-r--r--src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java120
-rw-r--r--src/main/java/org/onap/clamp/policy/microservice/MicroservicePolicyService.java19
-rw-r--r--src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java69
17 files changed, 475 insertions, 383 deletions
diff --git a/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java
index 8372e3f5..8e1c75bb 100644
--- a/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java
+++ b/src/main/java/org/onap/clamp/clds/config/spring/CldsConfiguration.java
@@ -5,20 +5,20 @@
* 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.
+ * 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
+ *
+ * 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.config.spring;
@@ -28,10 +28,8 @@ import javax.xml.transform.TransformerConfigurationException;
import org.onap.clamp.clds.config.ClampProperties;
import org.onap.clamp.clds.config.EncodedPasswordBasicDataSource;
-import org.onap.clamp.clds.dao.CldsDao;
import org.onap.clamp.clds.transform.XslTransformer;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
@@ -50,7 +48,7 @@ public class CldsConfiguration {
/**
* Clds Identity database DataSource configuration
- *
+ *
* @return
*/
@Bean(name = "cldsDataSource")
@@ -66,13 +64,6 @@ public class CldsConfiguration {
return bean;
}
- @Bean(name = "cldsDao")
- public CldsDao getCldsDao(@Qualifier("cldsDataSource") DataSource dataSource) {
- CldsDao cldsDao = new CldsDao();
- cldsDao.setDataSource(dataSource);
- return cldsDao;
- }
-
@Bean(name = "cldsBpmnTransformer")
public XslTransformer getCldsBpmnXslTransformer() throws TransformerConfigurationException {
XslTransformer xslTransformer = new XslTransformer();
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 5da26b19..0cf68ea1 100644
--- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java
+++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java
@@ -26,7 +26,6 @@ package org.onap.clamp.clds.dao;
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
-import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
@@ -35,7 +34,6 @@ import java.util.Map;
import javax.sql.DataSource;
-import org.onap.clamp.clds.model.CldsDbServiceCache;
import org.onap.clamp.clds.model.CldsDictionary;
import org.onap.clamp.clds.model.CldsDictionaryItem;
import org.onap.clamp.clds.model.CldsEvent;
@@ -43,11 +41,11 @@ 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.CldsServiceData;
import org.onap.clamp.clds.model.CldsTemplate;
import org.onap.clamp.clds.model.CldsToscaModel;
import org.onap.clamp.clds.model.ValueItem;
-import org.springframework.dao.EmptyResultDataAccessException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
@@ -86,14 +84,17 @@ public class CldsDao {
/**
* Log message when instantiating.
*/
- public CldsDao() {
+ @Autowired
+ public CldsDao(@Qualifier("cldsDataSource") DataSource dataSource) {
logger.info("CldsDao instantiating...");
+ setDataSource(dataSource);
}
/**
* 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);
@@ -117,7 +118,8 @@ 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) {
@@ -138,16 +140,19 @@ 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) {
return getModel(null, controlNameUuid);
}
+
/**
* 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
*/
@@ -179,8 +184,10 @@ 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) {
@@ -208,8 +215,10 @@ 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
@@ -241,10 +250,14 @@ 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) {
@@ -268,8 +281,10 @@ 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)
@@ -291,8 +306,10 @@ 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())
@@ -322,7 +339,8 @@ 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) {
@@ -367,7 +385,7 @@ 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 "
+ + "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;
@@ -421,7 +439,8 @@ public class CldsDao {
/**
* 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);
@@ -461,7 +480,8 @@ 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) {
@@ -471,7 +491,8 @@ 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) {
@@ -486,8 +507,7 @@ public class CldsDao {
String toscaModelSql = "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 "
- + ((toscaModelName != null) ? (", tmr.tosca_model_yaml ") : " ")
+ + "tmr.lastUpdatedTimestamp " + ((toscaModelName != null) ? (", tmr.tosca_model_yaml ") : " ")
+ "FROM tosca_model tm, tosca_model_revision tmr WHERE tm.tosca_model_id = tmr.tosca_model_id "
+ ((toscaModelName != null) ? (" AND tm.tosca_model_name = '" + toscaModelName + "'") : " ")
+ ((policyType != null) ? (" AND tm.policy_type = '" + policyType + "'") : " ")
@@ -520,8 +540,10 @@ 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) {
@@ -537,8 +559,10 @@ 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) {
@@ -558,7 +582,8 @@ 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()
@@ -571,9 +596,12 @@ 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) {
@@ -586,8 +614,10 @@ 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) {
@@ -620,8 +650,10 @@ 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()
@@ -638,9 +670,12 @@ 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) {
@@ -659,9 +694,12 @@ 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,
@@ -701,7 +739,8 @@ 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) {
diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java
index 7447fbae..93374fe1 100644
--- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java
+++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java
@@ -27,7 +27,6 @@ import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
import java.util.Collections;
import java.util.HashSet;
@@ -88,7 +87,8 @@ public class BlueprintParser {
}
}
String msName = theBiggestMicroServiceKey.toLowerCase().contains(HOLMES_PREFIX) ? HOLMES : TCA;
- return Collections.singletonList(new MicroService(msName, "", "", "", ""));
+ return Collections
+ .singletonList(new MicroService(msName, "onap.policy.monitoring.cdap.tca.hi.lo.ap", "", "", ""));
}
String getName(Entry<String, JsonElement> entry) {
@@ -124,7 +124,7 @@ public class BlueprintParser {
if (properties.has(POLICYID)) {
JsonObject policyIdObj = properties.get(POLICYID).getAsJsonObject();
if (policyIdObj.has(POLICY_TYPEID)) {
- return policyIdObj.get(POLICY_TYPEID).getAsString();
+ return policyIdObj.get(POLICY_TYPEID).getAsString();
}
}
}
diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java
index b65a994a..65d5592a 100644
--- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java
+++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/CsarHandler.java
@@ -42,6 +42,7 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.io.IOUtils;
+import org.codehaus.plexus.util.StringUtils;
import org.onap.clamp.clds.exception.sdc.controller.CsarHandlerException;
import org.onap.clamp.clds.exception.sdc.controller.SdcArtifactInstallerException;
import org.onap.sdc.api.notification.IArtifactInfo;
@@ -71,6 +72,8 @@ public class CsarHandler {
public static final String RESOURCE_INSTANCE_NAME_PREFIX = "/Artifacts/Resources/";
public static final String RESOURCE_INSTANCE_NAME_SUFFIX = "/Deployment/";
public static final String POLICY_DEFINITION_NAME_SUFFIX = "Definitions/policies.yml";
+ public static final String DATA_DEFINITION_NAME_SUFFIX = "Definitions/data.yml";
+ public static final String DATA_DEFINITION_KEY = "data_types:";
public CsarHandler(INotificationData iNotif, String controller, String clampCsarPath) throws CsarHandlerException {
this.sdcNotification = iNotif;
@@ -159,6 +162,10 @@ public class CsarHandler {
return csarFilePath;
}
+ public String setFilePath(String newPath) {
+ return csarFilePath = newPath;
+ }
+
public synchronized ISdcCsarHelper getSdcCsarHelper() {
return sdcCsarHelper;
}
@@ -171,12 +178,26 @@ public class CsarHandler {
return mapOfBlueprints;
}
+ /**
+ * Get the whole policy model Yaml. It combines the content of policies.yaml and data.yaml.
+ * @return The whole policy model yaml
+ * @throws IOException The IO Exception
+ */
public Optional<String> getPolicyModelYaml() throws IOException {
String result = null;
try (ZipFile zipFile = new ZipFile(csarFilePath)) {
ZipEntry entry = zipFile.getEntry(POLICY_DEFINITION_NAME_SUFFIX);
if (entry != null) {
- result = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8);
+ ZipEntry data = zipFile.getEntry(DATA_DEFINITION_NAME_SUFFIX);
+ if (data != null) {
+ String dataStr = IOUtils.toString(zipFile.getInputStream(data), StandardCharsets.UTF_8);
+ String dataStrWithoutHeader = dataStr.substring(dataStr.indexOf(DATA_DEFINITION_KEY));
+ String policyStr = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8);
+ StringUtils.chomp(policyStr);
+ result = policyStr.concat(dataStrWithoutHeader);
+ } else {
+ result = IOUtils.toString(zipFile.getInputStream(entry), StandardCharsets.UTF_8);
+ }
} else {
logger.info("Policy model not found inside the CSAR file: " + csarFilePath);
}
diff --git a/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java b/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java
index 05d5c480..9bb9e01e 100644
--- a/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java
+++ b/src/main/java/org/onap/clamp/loop/CsarInstallerImpl.java
@@ -163,8 +163,9 @@ public class CsarInstallerImpl implements CsarInstaller {
Policy.generatePolicyName(microService.getName(), csar.getSdcNotification().getServiceName(),
csar.getSdcNotification().getServiceVersion(),
blueprintArtifact.getResourceAttached().getResourceInstanceName(),
- blueprintArtifact.getBlueprintArtifactName()), microService.getModelType(),
- csar.getPolicyModelYaml().orElse(""), false, new HashSet<>(Arrays.asList(newLoop)), microService.getBlueprintName());
+ blueprintArtifact.getBlueprintArtifactName()),
+ microService.getModelType(), csar.getPolicyModelYaml().orElse(""), false,
+ new HashSet<>(Arrays.asList(newLoop)));
newSet.add(microServicePolicy);
microService.setMappedNameJpa(microServicePolicy.getName());
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index e62874a8..a24d3449 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -134,7 +134,7 @@ public class Loop implements Serializable {
this.name = name;
}
- String getDcaeDeploymentId() {
+ public String getDcaeDeploymentId() {
return dcaeDeploymentId;
}
@@ -142,7 +142,7 @@ public class Loop implements Serializable {
this.dcaeDeploymentId = dcaeDeploymentId;
}
- String getDcaeDeploymentStatusUrl() {
+ public String getDcaeDeploymentStatusUrl() {
return dcaeDeploymentStatusUrl;
}
@@ -150,7 +150,7 @@ public class Loop implements Serializable {
this.dcaeDeploymentStatusUrl = dcaeDeploymentStatusUrl;
}
- String getSvgRepresentation() {
+ public String getSvgRepresentation() {
return svgRepresentation;
}
@@ -158,7 +158,7 @@ public class Loop implements Serializable {
this.svgRepresentation = svgRepresentation;
}
- String getBlueprint() {
+ public String getBlueprint() {
return blueprint;
}
@@ -166,7 +166,7 @@ public class Loop implements Serializable {
this.blueprint = blueprint;
}
- LoopState getLastComputedState() {
+ public LoopState getLastComputedState() {
return lastComputedState;
}
@@ -174,7 +174,7 @@ public class Loop implements Serializable {
this.lastComputedState = lastComputedState;
}
- Set<OperationalPolicy> getOperationalPolicies() {
+ public Set<OperationalPolicy> getOperationalPolicies() {
return operationalPolicies;
}
@@ -182,7 +182,7 @@ public class Loop implements Serializable {
this.operationalPolicies = operationalPolicies;
}
- Set<MicroServicePolicy> getMicroServicePolicies() {
+ public Set<MicroServicePolicy> getMicroServicePolicies() {
return microServicePolicies;
}
@@ -190,7 +190,7 @@ public class Loop implements Serializable {
this.microServicePolicies = microServicePolicies;
}
- JsonObject getGlobalPropertiesJson() {
+ public JsonObject getGlobalPropertiesJson() {
return globalPropertiesJson;
}
@@ -198,7 +198,7 @@ public class Loop implements Serializable {
this.globalPropertiesJson = globalPropertiesJson;
}
- Set<LoopLog> getLoopLogs() {
+ public Set<LoopLog> getLoopLogs() {
return loopLogs;
}
@@ -221,7 +221,7 @@ public class Loop implements Serializable {
log.setLoop(this);
}
- String getDcaeBlueprintId() {
+ public String getDcaeBlueprintId() {
return dcaeBlueprintId;
}
@@ -229,7 +229,7 @@ public class Loop implements Serializable {
this.dcaeBlueprintId = dcaeBlueprintId;
}
- JsonObject getModelPropertiesJson() {
+ public JsonObject getModelPropertiesJson() {
return modelPropertiesJson;
}
diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java
index a02fa933..b862780d 100644
--- a/src/main/java/org/onap/clamp/loop/LoopController.java
+++ b/src/main/java/org/onap/clamp/loop/LoopController.java
@@ -24,7 +24,6 @@
package org.onap.clamp.loop;
import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
@@ -42,9 +41,9 @@ public class LoopController {
private final LoopService loopService;
private static final Type OPERATIONAL_POLICY_TYPE = new TypeToken<List<OperationalPolicy>>() {
- }.getType();
+ }.getType();
private static final Type MICROSERVICE_POLICY_TYPE = new TypeToken<List<MicroServicePolicy>>() {
- }.getType();
+ }.getType();
@Autowired
public LoopController(LoopService loopService) {
@@ -61,32 +60,41 @@ public class LoopController {
/**
* Update the Operational Policy properties.
- * @param loopName The loop name
- * @param operationalPoliciesJson The new Operational Policy properties
+ *
+ * @param loopName
+ * The loop name
+ * @param operationalPoliciesJson
+ * The new Operational Policy properties
* @return The updated loop
*/
public Loop updateOperationalPolicies(String loopName, JsonArray operationalPoliciesJson) {
- List<OperationalPolicy> operationalPolicies = JsonUtils.GSON
- .fromJson(operationalPoliciesJson, OPERATIONAL_POLICY_TYPE);
+ List<OperationalPolicy> operationalPolicies = JsonUtils.GSON.fromJson(operationalPoliciesJson,
+ OPERATIONAL_POLICY_TYPE);
return loopService.updateAndSaveOperationalPolicies(loopName, operationalPolicies);
}
/**
* Update the whole array of MicroService policies properties
- * @param loopName The loop name
- * @param microServicePoliciesJson The array of all MicroService policies properties
+ *
+ * @param loopName
+ * The loop name
+ * @param microServicePoliciesJson
+ * The array of all MicroService policies properties
* @return The updated loop
*/
public Loop updateMicroservicePolicies(String loopName, JsonArray microServicePoliciesJson) {
- List<MicroServicePolicy> microservicePolicies = JsonUtils.GSON
- .fromJson(microServicePoliciesJson, MICROSERVICE_POLICY_TYPE);
+ List<MicroServicePolicy> microservicePolicies = JsonUtils.GSON.fromJson(microServicePoliciesJson,
+ MICROSERVICE_POLICY_TYPE);
return loopService.updateAndSaveMicroservicePolicies(loopName, microservicePolicies);
}
/**
* Update the global properties
- * @param loopName The loop name
- * @param globalProperties The updated global properties
+ *
+ * @param loopName
+ * The loop name
+ * @param globalProperties
+ * The updated global properties
* @return The updated loop
*/
public Loop updateGlobalPropertiesJson(String loopName, JsonObject globalProperties) {
@@ -95,8 +103,11 @@ public class LoopController {
/**
* Update one MicroService policy properties
- * @param loopName The loop name
- * @param newMicroservicePolicy The new MicroService policy properties
+ *
+ * @param loopName
+ * The loop name
+ * @param newMicroservicePolicy
+ * The new MicroService policy properties
* @return The updated MicroService policy
*/
public MicroServicePolicy updateMicroservicePolicy(String loopName, MicroServicePolicy newMicroservicePolicy) {
@@ -105,11 +116,12 @@ public class LoopController {
/**
* Get the SVG representation of the loop
- * @param loopName The loop name
+ *
+ * @param loopName
+ * The loop name
* @return The SVG representation
*/
public String getSVGRepresentation(String loopName) {
- return loopService.getClosedLoopModelSVG(loopName);
-
+ return loopService.getLoop(loopName).getSvgRepresentation();
}
}
diff --git a/src/main/java/org/onap/clamp/loop/LoopOperation.java b/src/main/java/org/onap/clamp/loop/LoopOperation.java
index 7def783b..5b55ab0d 100644
--- a/src/main/java/org/onap/clamp/loop/LoopOperation.java
+++ b/src/main/java/org/onap/clamp/loop/LoopOperation.java
@@ -45,7 +45,6 @@ import org.onap.clamp.clds.config.ClampProperties;
import org.onap.clamp.clds.util.LoggingUtils;
import org.onap.clamp.clds.util.ONAPLogConstants;
import org.onap.clamp.exception.OperationException;
-import org.onap.clamp.policy.PolicyOperation;
import org.onap.clamp.util.HttpConnectionManager;
import org.slf4j.event.Level;
import org.springframework.beans.factory.annotation.Autowired;
@@ -59,30 +58,30 @@ import org.yaml.snakeyaml.Yaml;
@Component
public class LoopOperation {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(LoopOperation.class);
- protected static final EELFLogger auditLogger = EELFManager.getInstance().getMetricsLogger();
+ protected static final EELFLogger logger = EELFManager.getInstance().getLogger(LoopOperation.class);
+ protected static final EELFLogger auditLogger = EELFManager.getInstance().getMetricsLogger();
private final DcaeDispatcherServices dcaeDispatcherServices;
private final LoopService loopService;
private LoggingUtils util = new LoggingUtils(logger);
- private PolicyOperation policyOp;
@Autowired
private HttpServletRequest request;
@Autowired
- public LoopOperation(LoopService loopService, DcaeDispatcherServices dcaeDispatcherServices,
- ClampProperties refProp, HttpConnectionManager httpConnectionManager, PolicyOperation policyOp) {
+ public LoopOperation(LoopService loopService, DcaeDispatcherServices dcaeDispatcherServices,
+ ClampProperties refProp, HttpConnectionManager httpConnectionManager) {
this.loopService = loopService;
this.dcaeDispatcherServices = dcaeDispatcherServices;
- this.policyOp = policyOp;
}
/**
* Deploy the closed loop.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
- * @throws Exceptions during the operation
+ * @throws Exceptions
+ * during the operation
*/
public Loop deployLoop(Exchange camelExchange, String loopName) throws OperationException {
util.entering(request, "CldsService: Deploy model");
@@ -98,10 +97,9 @@ public class LoopOperation {
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.SUBMITTED) {
- String msg = "Deploy loop exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Deploy loop exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be deployed only when it is in SUBMITTED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
@@ -118,25 +116,27 @@ public class LoopOperation {
Map<String, Object> yamlMap = yaml.load(loop.getBlueprint());
JsonObject bluePrint = wrapSnakeObject(yamlMap).getAsJsonObject();
- loop.setDcaeDeploymentStatusUrl(dcaeDispatcherServices.createNewDeployment(deploymentId, loop.getDcaeBlueprintId(), bluePrint));
+ loop.setDcaeDeploymentStatusUrl(
+ dcaeDispatcherServices.createNewDeployment(deploymentId, loop.getDcaeBlueprintId(), bluePrint));
loop.setLastComputedState(LoopState.DEPLOYED);
// save the updated loop
- loopService.saveOrUpdateLoop (loop);
+ loopService.saveOrUpdateLoop(loop);
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
auditLogger.info("Deploy model completed");
util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
- return loop;
+ return loop;
}
/**
* Un deploy closed loop.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
*/
- public Loop unDeployLoop(String loopName) throws OperationException {
+ public Loop unDeployLoop(String loopName) throws OperationException {
util.entering(request, "LoopOperation: Undeploy the closed loop");
Date startTime = new Date();
Loop loop = loopService.getLoop(loopName);
@@ -146,14 +146,13 @@ public class LoopOperation {
util.exiting(HttpStatus.INTERNAL_SERVER_ERROR.toString(), msg, Level.INFO,
ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
- }
+ }
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.DEPLOYED) {
- String msg = "Unploy loop exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Unploy loop exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be undeployed only when it is in DEPLOYED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
@@ -165,7 +164,7 @@ public class LoopOperation {
loop.setLastComputedState(LoopState.SUBMITTED);
// save the updated loop
- loopService.saveOrUpdateLoop (loop);
+ loopService.saveOrUpdateLoop(loop);
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
@@ -175,14 +174,14 @@ public class LoopOperation {
}
private JsonElement wrapSnakeObject(Object o) {
- //NULL => JsonNull
+ // NULL => JsonNull
if (o == null)
return JsonNull.INSTANCE;
// Collection => JsonArray
if (o instanceof Collection) {
JsonArray array = new JsonArray();
- for (Object childObj : (Collection<?>)o)
+ for (Object childObj : (Collection<?>) o)
array.add(wrapSnakeObject(childObj));
return array;
}
@@ -192,14 +191,14 @@ public class LoopOperation {
JsonArray array = new JsonArray();
int length = Array.getLength(array);
- for (int i=0; i<length; i++)
+ for (int i = 0; i < length; i++)
array.add(wrapSnakeObject(Array.get(array, i)));
return array;
}
// Map => JsonObject
if (o instanceof Map) {
- Map<?, ?> map = (Map<?, ?>)o;
+ Map<?, ?> map = (Map<?, ?>) o;
JsonObject jsonObject = new JsonObject();
for (final Map.Entry<?, ?> entry : map.entrySet()) {
@@ -217,12 +216,15 @@ public class LoopOperation {
/**
* Submit the Ms policies.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
- * @throws IOException IO exception
- * @throws Exceptions during the operation
+ * @throws IOException
+ * IO exception
+ * @throws Exceptions
+ * during the operation
*/
- public Loop submitMsPolicies (String loopName) throws OperationException, IOException {
+ public Loop submitMsPolicies(String loopName) throws OperationException, IOException {
util.entering(request, "LoopOperation: delete microservice policies");
Date startTime = new Date();
Loop loop = loopService.getLoop(loopName);
@@ -236,33 +238,34 @@ public class LoopOperation {
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.SUBMITTED && loop.getLastComputedState() != LoopState.DESIGN) {
- String msg = "Submit MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Submit MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be deleted only when it is in SUBMITTED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
// Establish the api call to Policy to create the ms services
- policyOp.createMsPolicy(loop.getMicroServicePolicies());
+ // policyOp.createMsPolicy(loop.getMicroServicePolicies());
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
auditLogger.info("Deletion of MS policies completed");
util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
- return loop;
+ return loop;
}
-
/**
* Delete the Ms policies.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
- * @throws IOException IO exception
- * @throws Exceptions during the operation
+ * @throws IOException
+ * IO exception
+ * @throws Exceptions
+ * during the operation
*/
- public Loop deleteMsPolicies (Exchange camelExchange, String loopName) throws OperationException, IOException {
+ public Loop deleteMsPolicies(Exchange camelExchange, String loopName) throws OperationException, IOException {
util.entering(request, "LoopOperation: delete microservice policies");
Date startTime = new Date();
Loop loop = loopService.getLoop(loopName);
@@ -276,31 +279,32 @@ public class LoopOperation {
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.SUBMITTED) {
- String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be deleted only when it is in SUBMITTED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
// Establish the api call to Policy to create the ms services
- policyOp.deleteMsPolicy(loop.getMicroServicePolicies());
+ // policyOp.deleteMsPolicy(loop.getMicroServicePolicies());
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
auditLogger.info("Deletion of MS policies completed");
util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
- return loop;
+ return loop;
}
/**
* Delete the operational policy.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
- * @throws Exceptions during the operation
+ * @throws Exceptions
+ * during the operation
*/
- public Loop deleteOpPolicy (Exchange camelExchange, String loopName) throws OperationException {
+ public Loop deleteOpPolicy(Exchange camelExchange, String loopName) throws OperationException {
util.entering(request, "LoopOperation: delete guard policy");
Date startTime = new Date();
Loop loop = loopService.getLoop(loopName);
@@ -314,31 +318,32 @@ public class LoopOperation {
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.SUBMITTED) {
- String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be deleted only when it is in SUBMITTED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
// Establish the api call to Policy to delete operational policy
- //client.deleteOpPolicy();
+ // client.deleteOpPolicy();
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
auditLogger.info("Deletion of Guard policy completed");
util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
- return loop;
+ return loop;
}
/**
* Delete the Guard policy.
*
- * @param loopName the loop name
+ * @param loopName
+ * the loop name
* @return the updated loop
- * @throws Exceptions during the operation
+ * @throws Exceptions
+ * during the operation
*/
- public Loop deleteGuardPolicy (Exchange camelExchange, String loopName) throws OperationException {
+ public Loop deleteGuardPolicy(Exchange camelExchange, String loopName) throws OperationException {
util.entering(request, "LoopOperation: delete operational policy");
Date startTime = new Date();
Loop loop = loopService.getLoop(loopName);
@@ -352,20 +357,19 @@ public class LoopOperation {
// verify the current closed loop state
if (loop.getLastComputedState() != LoopState.SUBMITTED) {
- String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ String msg = "Delete MS policies exception: This closed loop is in state:" + loop.getLastComputedState()
+ ". It could be deleted only when it is in SUBMITTED state.";
- util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO,
- ONAPLogConstants.ResponseStatus.ERROR);
+ util.exiting(HttpStatus.CONFLICT.toString(), msg, Level.INFO, ONAPLogConstants.ResponseStatus.ERROR);
throw new OperationException(msg);
}
// Establish the api call to Policy to delete Guard policy
- //client.deleteOpPolicy();
+ // client.deleteOpPolicy();
// audit log
LoggingUtils.setTimeContext(startTime, new Date());
auditLogger.info("Deletion of operational policy completed");
util.exiting(HttpStatus.OK.toString(), "Successful", Level.INFO, ONAPLogConstants.ResponseStatus.COMPLETED);
- return loop;
+ return loop;
}
}
diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java
index 34e1b4be..8d61b877 100644
--- a/src/main/java/org/onap/clamp/loop/LoopService.java
+++ b/src/main/java/org/onap/clamp/loop/LoopService.java
@@ -23,20 +23,22 @@
package org.onap.clamp.loop;
+import com.google.gson.JsonObject;
+
import java.util.List;
import java.util.Set;
-import com.google.gson.JsonObject;
-
import javax.persistence.EntityNotFoundException;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.microservice.MicroservicePolicyService;
import org.onap.clamp.policy.operational.OperationalPolicy;
import org.onap.clamp.policy.operational.OperationalPolicyService;
+import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
@Service
+@Component
public class LoopService {
private final LoopsRepository loopsRepository;
@@ -46,15 +48,14 @@ public class LoopService {
/**
* Constructor.
*/
- public LoopService(LoopsRepository loopsRepository,
- MicroservicePolicyService microservicePolicyService,
+ public LoopService(LoopsRepository loopsRepository, MicroservicePolicyService microservicePolicyService,
OperationalPolicyService operationalPolicyService) {
this.loopsRepository = loopsRepository;
this.microservicePolicyService = microservicePolicyService;
this.operationalPolicyService = operationalPolicyService;
}
- public Loop saveOrUpdateLoop(Loop loop) {
+ Loop saveOrUpdateLoop(Loop loop) {
return loopsRepository.save(loop);
}
@@ -63,61 +64,36 @@ public class LoopService {
}
public Loop getLoop(String loopName) {
- return loopsRepository
- .findById(loopName)
- .orElse(null);
- }
-
- String getClosedLoopModelSVG(String loopName) {
- Loop closedLoopByName = findClosedLoopByName(loopName);
- return closedLoopByName.getSvgRepresentation();
+ return loopsRepository.findById(loopName).orElse(null);
}
Loop updateAndSaveOperationalPolicies(String loopName, List<OperationalPolicy> newOperationalPolicies) {
Loop loop = findClosedLoopByName(loopName);
- updateOperationalPolicies(loop, newOperationalPolicies);
+ Set<OperationalPolicy> newPolicies = operationalPolicyService.updatePolicies(loop, newOperationalPolicies);
+ loop.setOperationalPolicies(newPolicies);
return loopsRepository.save(loop);
}
Loop updateAndSaveMicroservicePolicies(String loopName, List<MicroServicePolicy> newMicroservicePolicies) {
Loop loop = findClosedLoopByName(loopName);
- updateMicroservicePolicies(loop, newMicroservicePolicies);
+ Set<MicroServicePolicy> newPolicies = microservicePolicyService.updatePolicies(loop, newMicroservicePolicies);
+ loop.setMicroServicePolicies(newPolicies);
return loopsRepository.save(loop);
}
Loop updateAndSaveGlobalPropertiesJson(String loopName, JsonObject newGlobalPropertiesJson) {
Loop loop = findClosedLoopByName(loopName);
- updateGlobalPropertiesJson(loop, newGlobalPropertiesJson);
+ loop.setGlobalPropertiesJson(newGlobalPropertiesJson);
return loopsRepository.save(loop);
}
MicroServicePolicy updateMicroservicePolicy(String loopName, MicroServicePolicy newMicroservicePolicy) {
Loop loop = findClosedLoopByName(loopName);
- MicroServicePolicy newPolicies = microservicePolicyService
- .getAndUpdateMicroServicePolicy(loop, newMicroservicePolicy);
+ MicroServicePolicy newPolicies = microservicePolicyService.getAndUpdateMicroServicePolicy(loop,
+ newMicroservicePolicy);
return newPolicies;
}
- private Loop updateOperationalPolicies(Loop loop, List<OperationalPolicy> newOperationalPolicies) {
- Set<OperationalPolicy> newPolicies = operationalPolicyService
- .updatePolicies(loop, newOperationalPolicies);
-
- loop.setOperationalPolicies(newPolicies);
- return loop;
- }
-
- private Loop updateMicroservicePolicies(Loop loop, List<MicroServicePolicy> newMicroservicePolicies) {
- Set<MicroServicePolicy> newPolicies = microservicePolicyService
- .updatePolicies(loop, newMicroservicePolicies);
- loop.setMicroServicePolicies(newPolicies);
- return loop;
- }
-
- private Loop updateGlobalPropertiesJson(Loop loop, JsonObject newGlobalPropertiesJson) {
- loop.setGlobalPropertiesJson(newGlobalPropertiesJson);
- return loop;
- }
-
private Loop findClosedLoopByName(String loopName) {
return loopsRepository.findById(loopName)
.orElseThrow(() -> new EntityNotFoundException("Couldn't find closed loop named: " + loopName));
diff --git a/src/main/java/org/onap/clamp/loop/log/LoopLog.java b/src/main/java/org/onap/clamp/loop/log/LoopLog.java
index 0c51c0c1..3edb2ee5 100644
--- a/src/main/java/org/onap/clamp/loop/log/LoopLog.java
+++ b/src/main/java/org/onap/clamp/loop/log/LoopLog.java
@@ -40,6 +40,7 @@ import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
+
import org.onap.clamp.loop.Loop;
/**
@@ -79,6 +80,15 @@ public class LoopLog implements Serializable {
@Column(name = "log_instant", nullable = false)
private Instant logInstant = Instant.now().truncatedTo(ChronoUnit.SECONDS);
+ public LoopLog() {
+ }
+
+ public LoopLog(String message, LogType logType, Loop loop) {
+ this.message = message;
+ this.logType = logType;
+ this.loop = loop;
+ }
+
public Long getId() {
return id;
}
diff --git a/src/main/java/org/onap/clamp/loop/log/LoopLogService.java b/src/main/java/org/onap/clamp/loop/log/LoopLogService.java
new file mode 100644
index 00000000..b593b41e
--- /dev/null
+++ b/src/main/java/org/onap/clamp/loop/log/LoopLogService.java
@@ -0,0 +1,43 @@
+/*-
+ * ============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============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.loop.log;
+
+import org.onap.clamp.loop.Loop;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class LoopLogService {
+
+ private final LoopLogRepository repository;
+
+ @Autowired
+ public LoopLogService(LoopLogRepository repository) {
+ this.repository = repository;
+ }
+
+ public void addLog(String message, String logType, Loop loop) {
+ repository.save(new LoopLog(message, LogType.valueOf(logType), loop));
+ }
+}
diff --git a/src/main/java/org/onap/clamp/policy/Policy.java b/src/main/java/org/onap/clamp/policy/Policy.java
index 683881bf..f4efab0d 100644
--- a/src/main/java/org/onap/clamp/policy/Policy.java
+++ b/src/main/java/org/onap/clamp/policy/Policy.java
@@ -31,13 +31,21 @@ public interface Policy {
JsonObject getJsonRepresentation();
+ String createPolicyPayload();
+
/**
* Generate the policy name.
- * @param policyType The policy type
- * @param serviceName The service name
- * @param serviceVersion The service version
- * @param resourceName The resource name
- * @param blueprintFilename The blueprint file name
+ *
+ * @param policyType
+ * The policy type
+ * @param serviceName
+ * The service name
+ * @param serviceVersion
+ * The service version
+ * @param resourceName
+ * The resource name
+ * @param blueprintFilename
+ * The blueprint file name
* @return The generated policy name
*/
static String generatePolicyName(String policyType, String serviceName, String serviceVersion, String resourceName,
diff --git a/src/main/java/org/onap/clamp/policy/PolicyOperation.java b/src/main/java/org/onap/clamp/policy/PolicyOperation.java
deleted file mode 100644
index edce8ff5..00000000
--- a/src/main/java/org/onap/clamp/policy/PolicyOperation.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 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.policy;
-
-import java.io.IOException;
-import java.util.Set;
-
-import org.onap.clamp.clds.config.ClampProperties;
-import org.onap.clamp.policy.microservice.MicroServicePolicy;
-import org.onap.clamp.util.HttpConnectionManager;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-
-@Component
-public class PolicyOperation {
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyOperation.class);
- protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
- public static final String POLICY_MSTYPE_PROPERTY_NAME = "policy.ms.type";
- public static final String POLICY_ONAPNAME_PROPERTY_NAME = "policy.onap.name";
- public static final String POLICY_BASENAME_PREFIX_PROPERTY_NAME = "policy.base.policyNamePrefix";
- public static final String POLICY_OP_NAME_PREFIX_PROPERTY_NAME = "policy.op.policyNamePrefix";
- public static final String POLICY_MS_NAME_PREFIX_PROPERTY_NAME = "policy.ms.policyNamePrefix";
- public static final String POLICY_OP_TYPE_PROPERTY_NAME = "policy.op.type";
- public static final String POLICY_GUARD_SUFFIX = "_Guard";
- public static final String POLICY_URL_PROPERTY_NAME = "clamp.config.policy.url";
- public static final String POLICY_URL_SUFFIX = "/versions/1.0.0/policies";
- public static final String POLICY_USER_NAME = "clamp.config.policy.userName";
- public static final String POLICY_PASSWORD = "clamp.config.policy.password";
-
- public static final String TOSCA_DEF_VERSION = "tosca_definitions_version";
- public static final String TOSCA_DEF_VERSION_VALUE = "tosca_simple_yaml_1_0_0";
- public static final String TEMPLATE = "topology_template";
- public static final String POLICIES = "policies";
- public static final String MS_TYPE = "type";
- public static final String MS_VERSION = "version";
- public static final String MS_VERSION_VALUE = "1.0.0";
- public static final String MS_METADATA = "metadata";
- public static final String MS_POLICY_ID = "policy_id";
- public static final String MS_PROPERTIES = "properties";
- public static final String MS_policy = "tca_policy";
-
- private final ClampProperties refProp;
- private final HttpConnectionManager httpConnectionManager;
-
- @Autowired
- public PolicyOperation(ClampProperties refProp, HttpConnectionManager httpConnectionManager) {
- this.refProp = refProp;
- this.httpConnectionManager = httpConnectionManager;
- }
-
- public void createMsPolicy(Set<MicroServicePolicy> policyList) throws IOException {
- // Get policy first? if exist delete???
- // push pdp group
- for (MicroServicePolicy msPolicy:policyList) {
- JsonObject payload = createMsPolicyPayload(msPolicy);
- String policyType = msPolicy.getModelType();
- String url = refProp.getStringValue(POLICY_URL_PROPERTY_NAME) + policyType + POLICY_URL_SUFFIX;
- String userName = refProp.getStringValue(POLICY_USER_NAME);
- String encodedPass = refProp.getStringValue(POLICY_PASSWORD);
- httpConnectionManager.doHttpRequest(url, "POST", payload.toString(), "application/json", "POLICY", userName, encodedPass);
- }
- }
-
- public void deleteMsPolicy(Set<MicroServicePolicy> policyList) throws IOException {
- for (MicroServicePolicy msPolicy:policyList) {
- String policyType = msPolicy.getModelType();
- String url = refProp.getStringValue(POLICY_URL_PROPERTY_NAME) + policyType + POLICY_URL_SUFFIX + "/" + msPolicy.getName();
- String userName = refProp.getStringValue(POLICY_USER_NAME);
- String encodedPass = refProp.getStringValue(POLICY_PASSWORD);
- httpConnectionManager.doHttpRequest(url, "POST", null, null, "POLICY", userName, encodedPass);
- }
- }
-
- private JsonObject createMsPolicyPayload(MicroServicePolicy microService) {
- JsonObject policyConfig = new JsonObject();
- policyConfig.add(MS_policy, microService.getProperties());
-
- JsonObject properties = new JsonObject();
- properties.add(MS_policy, policyConfig);
-
- JsonObject msPolicy = new JsonObject();
- msPolicy.addProperty(MS_TYPE, microService.getModelType());
- msPolicy.addProperty(MS_VERSION, MS_VERSION_VALUE);
- JsonObject metaData = new JsonObject();
- metaData.addProperty(MS_POLICY_ID, microService.getName());
- msPolicy.add(MS_METADATA, metaData);
- msPolicy.add(MS_PROPERTIES, properties);
-
- JsonObject msPolicyWithName = new JsonObject();
- msPolicyWithName.add(microService.getName(), msPolicy);
-
- JsonArray policyArray = new JsonArray();
- policyArray.add(msPolicyWithName);
-
- JsonObject template = new JsonObject();
- template.add(POLICIES, policyArray);
-
- JsonObject configPolicy = new JsonObject();
- configPolicy.addProperty(TOSCA_DEF_VERSION, TOSCA_DEF_VERSION_VALUE);
- configPolicy.add(TEMPLATE, template);
-
- return configPolicy;
- }
-
-}
diff --git a/src/main/java/org/onap/clamp/policy/PolicyService.java b/src/main/java/org/onap/clamp/policy/PolicyService.java
index 05785c04..ae15f86d 100644
--- a/src/main/java/org/onap/clamp/policy/PolicyService.java
+++ b/src/main/java/org/onap/clamp/policy/PolicyService.java
@@ -25,12 +25,12 @@ package org.onap.clamp.policy;
import java.util.List;
import java.util.Set;
+
import org.onap.clamp.loop.Loop;
public interface PolicyService<T extends Policy> {
- Set<T> updatePolicies(Loop loop,
- List<T> newMicroservicePolicies);
+ Set<T> updatePolicies(Loop loop, List<T> newPolicies);
boolean isExisting(String policyName);
}
diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
index c2c60c9c..332b20a0 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroServicePolicy.java
@@ -23,15 +23,20 @@
package org.onap.clamp.policy.microservice;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
@@ -39,11 +44,13 @@ import javax.persistence.Table;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
+import org.json.JSONObject;
import org.onap.clamp.clds.tosca.ToscaYamlToJsonConvertor;
import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
import org.onap.clamp.loop.Loop;
import org.onap.clamp.policy.Policy;
+import org.yaml.snakeyaml.Yaml;
@Entity
@Table(name = "micro_service_policies")
@@ -64,10 +71,6 @@ public class MicroServicePolicy implements Serializable, Policy {
private String modelType;
@Expose
- @Column(nullable = false, name = "blueprint_name")
- private String blueprintName;
-
- @Expose
@Type(type = "json")
@Column(columnDefinition = "json", name = "properties")
private JsonObject properties;
@@ -84,7 +87,7 @@ public class MicroServicePolicy implements Serializable, Policy {
@Column(columnDefinition = "json", name = "json_representation", nullable = false)
private JsonObject jsonRepresentation;
- @ManyToMany(mappedBy = "microServicePolicies")
+ @ManyToMany(mappedBy = "microServicePolicies", fetch = FetchType.EAGER)
private Set<Loop> usedByLoops = new HashSet<>();
public MicroServicePolicy() {
@@ -92,15 +95,22 @@ public class MicroServicePolicy implements Serializable, Policy {
}
/**
- * The constructor.
- * @param name The name of the MicroService
- * @param type The model type of the MicroService
- * @param blueprintName The name in the blueprint
- * @param policyTosca The policy Tosca of the MicroService
- * @param shared The flag indicate whether the MicroService is shared
- * @param usedByLoops The list of loops that uses this MicroService
+ * The constructor that create the json representation from the policyTosca
+ * using the ToscaYamlToJsonConvertor.
+ *
+ * @param name
+ * The name of the MicroService
+ * @param type
+ * The model type of the MicroService
+ * @param policyTosca
+ * The policy Tosca of the MicroService
+ * @param shared
+ * The flag indicate whether the MicroService is shared
+ * @param usedByLoops
+ * The list of loops that uses this MicroService
*/
- public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared, Set<Loop> usedByLoops, String blueprintName) {
+ public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared,
+ Set<Loop> usedByLoops) {
this.name = name;
this.modelType = modelType;
this.policyTosca = policyTosca;
@@ -108,28 +118,39 @@ public class MicroServicePolicy implements Serializable, Policy {
this.jsonRepresentation = JsonUtils.GSON_JPA_MODEL
.fromJson(new ToscaYamlToJsonConvertor(null).parseToscaYaml(policyTosca), JsonObject.class);
this.usedByLoops = usedByLoops;
- this.blueprintName = blueprintName;
+ }
+
+ private JsonObject createJsonFromPolicyTosca() {
+ Map<String, Object> map = new Yaml().load(this.getPolicyTosca());
+ JSONObject jsonObject = new JSONObject(map);
+ return new Gson().fromJson(jsonObject.toString(), JsonObject.class);
}
/**
- * The constructor.
- * @param name The name of the MicroService
- * @param type The model type of the MicroService
- * @param blueprintName The name in the blueprint
- * @param policyTosca The policy Tosca of the MicroService
- * @param shared The flag indicate whether the MicroService is shared
- * @param jsonRepresentation The UI representation in json format
- * @param usedByLoops The list of loops that uses this MicroService
+ * The constructor that does not make use of ToscaYamlToJsonConvertor but take
+ * the jsonRepresentation instead.
+ *
+ * @param name
+ * The name of the MicroService
+ * @param type
+ * The model type of the MicroService
+ * @param policyTosca
+ * The policy Tosca of the MicroService
+ * @param shared
+ * The flag indicate whether the MicroService is shared
+ * @param jsonRepresentation
+ * The UI representation in json format
+ * @param usedByLoops
+ * The list of loops that uses this MicroService
*/
- public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared, JsonObject jsonRepresentation,
- Set<Loop> usedByLoops, String blueprintName) {
+ public MicroServicePolicy(String name, String modelType, String policyTosca, Boolean shared,
+ JsonObject jsonRepresentation, Set<Loop> usedByLoops) {
this.name = name;
this.modelType = modelType;
this.policyTosca = policyTosca;
this.shared = shared;
this.usedByLoops = usedByLoops;
this.jsonRepresentation = jsonRepresentation;
- this.blueprintName = blueprintName;
}
@Override
@@ -141,8 +162,8 @@ public class MicroServicePolicy implements Serializable, Policy {
return modelType;
}
- public String getBlueprintName() {
- return blueprintName;
+ void setModelType(String modelType) {
+ this.modelType = modelType;
}
public JsonObject getProperties() {
@@ -157,7 +178,7 @@ public class MicroServicePolicy implements Serializable, Policy {
return shared;
}
- public void setShared(Boolean shared) {
+ void setShared(Boolean shared) {
this.shared = shared;
}
@@ -165,7 +186,7 @@ public class MicroServicePolicy implements Serializable, Policy {
return policyTosca;
}
- public void setPolicyTosca(String policyTosca) {
+ void setPolicyTosca(String policyTosca) {
this.policyTosca = policyTosca;
}
@@ -174,7 +195,7 @@ public class MicroServicePolicy implements Serializable, Policy {
return jsonRepresentation;
}
- public void setJsonRepresentation(JsonObject jsonRepresentation) {
+ void setJsonRepresentation(JsonObject jsonRepresentation) {
this.jsonRepresentation = jsonRepresentation;
}
@@ -182,7 +203,7 @@ public class MicroServicePolicy implements Serializable, Policy {
return usedByLoops;
}
- public void setUsedByLoops(Set<Loop> usedBy) {
+ void setUsedByLoops(Set<Loop> usedBy) {
this.usedByLoops = usedBy;
}
@@ -216,4 +237,41 @@ public class MicroServicePolicy implements Serializable, Policy {
return true;
}
+ private String getMicroServicePropertyNameFromTosca(JsonObject object) {
+ return object.getAsJsonObject("policy_types").getAsJsonObject(this.modelType).getAsJsonObject("properties")
+ .keySet().toArray(new String[1])[0];
+ }
+
+ @Override
+ public String createPolicyPayload() {
+ JsonObject toscaJson = createJsonFromPolicyTosca();
+
+ JsonObject policyPayloadResult = new JsonObject();
+
+ policyPayloadResult.add("tosca_definitions_version", toscaJson.get("tosca_definitions_version"));
+
+ JsonObject topologyTemplateNode = new JsonObject();
+ policyPayloadResult.add("topology_template", topologyTemplateNode);
+
+ JsonArray policiesArray = new JsonArray();
+ topologyTemplateNode.add("policies", policiesArray);
+
+ JsonObject thisPolicy = new JsonObject();
+ policiesArray.add(thisPolicy);
+
+ JsonObject policyDetails = new JsonObject();
+ thisPolicy.add(this.getName(), policyDetails);
+ policyDetails.addProperty("type", this.getModelType());
+ policyDetails.addProperty("version", "1.0.0");
+
+ JsonObject policyMetadata = new JsonObject();
+ policyDetails.add("metadata", policyMetadata);
+ policyMetadata.addProperty("policy-id", this.getName());
+
+ JsonObject policyProperties = new JsonObject();
+ policyDetails.add("properties", policyProperties);
+ policyProperties.add(this.getMicroServicePropertyNameFromTosca(toscaJson), this.getProperties());
+ return new GsonBuilder().setPrettyPrinting().create().toJson(policyPayloadResult);
+ }
+
}
diff --git a/src/main/java/org/onap/clamp/policy/microservice/MicroservicePolicyService.java b/src/main/java/org/onap/clamp/policy/microservice/MicroservicePolicyService.java
index f95ad3b4..59ddaa00 100644
--- a/src/main/java/org/onap/clamp/policy/microservice/MicroservicePolicyService.java
+++ b/src/main/java/org/onap/clamp/policy/microservice/MicroservicePolicyService.java
@@ -33,7 +33,6 @@ import org.onap.clamp.loop.Loop;
import org.onap.clamp.policy.PolicyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
@Service
public class MicroservicePolicyService implements PolicyService<MicroServicePolicy> {
@@ -46,7 +45,6 @@ public class MicroservicePolicyService implements PolicyService<MicroServicePoli
}
@Override
- @Transactional
public Set<MicroServicePolicy> updatePolicies(Loop loop, List<MicroServicePolicy> newMicroservicePolicies) {
return newMicroservicePolicies.stream().map(policy -> getAndUpdateMicroServicePolicy(loop, policy))
.collect(Collectors.toSet());
@@ -59,21 +57,24 @@ public class MicroservicePolicyService implements PolicyService<MicroServicePoli
/**
* Get and update the MicroService policy properties.
- * @param loop The loop
- * @param policy The new MicroService policy
+ *
+ * @param loop
+ * The loop
+ * @param policy
+ * The new MicroService policy
* @return The updated MicroService policy
*/
- @Transactional
public MicroServicePolicy getAndUpdateMicroServicePolicy(Loop loop, MicroServicePolicy policy) {
- return repository.findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop))
- .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(), policy.getShared(),
- policy.getJsonRepresentation(), Sets.newHashSet(loop), policy.getBlueprintName()));
+ return repository
+ .save(repository.findById(policy.getName()).map(p -> updateMicroservicePolicyProperties(p, policy, loop))
+ .orElse(new MicroServicePolicy(policy.getName(), policy.getModelType(), policy.getPolicyTosca(),
+ policy.getShared(), policy.getJsonRepresentation(), Sets.newHashSet(loop))));
}
private MicroServicePolicy updateMicroservicePolicyProperties(MicroServicePolicy oldPolicy,
MicroServicePolicy newPolicy, Loop loop) {
oldPolicy.setProperties(newPolicy.getProperties());
- if (oldPolicy.getUsedByLoops().contains(loop)) {
+ if (!oldPolicy.getUsedByLoops().contains(loop)) {
oldPolicy.getUsedByLoops().add(loop);
}
return oldPolicy;
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
index c1e075da..b6b591db 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -23,24 +23,34 @@
package org.onap.clamp.policy.operational;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.annotations.Expose;
+
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import javax.persistence.Column;
-import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
+
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
import org.onap.clamp.loop.Loop;
import org.onap.clamp.policy.Policy;
+import org.yaml.snakeyaml.Yaml;
@Entity
@Table(name = "operational_policies")
@@ -66,14 +76,18 @@ public class OperationalPolicy implements Serializable, Policy {
private Loop loop;
public OperationalPolicy() {
- //Serialization
+ // Serialization
}
/**
* The constructor.
- * @param name The name of the operational policy
- * @param loop The loop that uses this operational policy
- * @param configurationsJson The operational policy property in the format of json
+ *
+ * @param name
+ * The name of the operational policy
+ * @param loop
+ * The loop that uses this operational policy
+ * @param configurationsJson
+ * The operational policy property in the format of json
*/
public OperationalPolicy(String name, Loop loop, JsonObject configurationsJson) {
this.name = name;
@@ -81,6 +95,7 @@ public class OperationalPolicy implements Serializable, Policy {
this.configurationsJson = configurationsJson;
}
+ @Override
public String getName() {
return name;
}
@@ -136,4 +151,48 @@ public class OperationalPolicy implements Serializable, Policy {
return true;
}
+ @Override
+ public String createPolicyPayload() {
+ JsonObject policyPayloadResult = new JsonObject();
+
+ policyPayloadResult.addProperty("tosca_definitions_version", "tosca_simple_yaml_1_0_0");
+
+ JsonObject topologyTemplateNode = new JsonObject();
+ policyPayloadResult.add("topology_template", topologyTemplateNode);
+
+ JsonArray policiesArray = new JsonArray();
+ topologyTemplateNode.add("policies", policiesArray);
+
+ JsonObject operationalPolicy = new JsonObject();
+ policiesArray.add(operationalPolicy);
+
+ JsonObject operationalPolicyDetails = new JsonObject();
+ operationalPolicy.add(this.name, operationalPolicyDetails);
+ operationalPolicyDetails.addProperty("type", "onap.policies.controlloop.Operational");
+ operationalPolicyDetails.addProperty("version", "1.0.0");
+
+ JsonObject metadata = new JsonObject();
+ operationalPolicyDetails.add("metadata", metadata);
+ metadata.addProperty("policy-id", this.name);
+
+ operationalPolicyDetails.add("properties", this.configurationsJson.get("operational_policy"));
+
+ Gson gson = new GsonBuilder().create();
+ Map<?, ?> jsonMap = gson.fromJson(gson.toJson(policyPayloadResult), Map.class);
+ return (new Yaml()).dump(jsonMap);
+ }
+
+ public List<String> createGuardPolicyPayloads() {
+ List<String> result = new ArrayList<>();
+
+ JsonObject guard = new JsonObject();
+ JsonElement guardsList = this.getConfigurationsJson().get("guard_policies");
+ for (Entry<String, JsonElement> guardElem : guardsList.getAsJsonObject().entrySet()) {
+ guard.addProperty("policy-id", guardElem.getKey());
+ guard.add("contents", guardElem.getValue());
+ result.add(new GsonBuilder().create().toJson(guard));
+ }
+ return result;
+ }
+
}