summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXue Gao <xg353y@intl.att.com>2019-04-05 14:33:59 +0000
committerGerrit Code Review <gerrit@onap.org>2019-04-05 14:33:59 +0000
commit8ca701623868f201f4248131ff7a5b26f547385d (patch)
tree2541d58493756362783a11250e8410b1736a54e3
parentaa35d54be07a0fa89d967a54ade8db2c3b5b4dc7 (diff)
parent0cb57989949080d6cc3853c432a233605c321388 (diff)
Merge "LoopLog repository"
-rw-r--r--src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java3
-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/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/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.java16
-rw-r--r--src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java37
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java22
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java160
-rw-r--r--src/test/java/org/onap/clamp/loop/LoopToJsonTest.java23
-rw-r--r--src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java47
-rw-r--r--src/test/resources/tosca/micro-service-policy-payload.json41
-rw-r--r--src/test/resources/tosca/micro-service-policy-properties.json23
18 files changed, 464 insertions, 230 deletions
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..f3654596 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;
@@ -124,7 +123,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/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/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/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..b14e1450 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,23 @@ 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()));
+ .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..674bd71d 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicy.java
@@ -23,18 +23,21 @@
package org.onap.clamp.policy.operational;
+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 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;
@@ -66,14 +69,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 +88,7 @@ public class OperationalPolicy implements Serializable, Policy {
this.configurationsJson = configurationsJson;
}
+ @Override
public String getName() {
return name;
}
@@ -136,4 +144,23 @@ 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);
+
+ return new GsonBuilder().setPrettyPrinting().create().toJson(policyPayloadResult);
+ }
+
+ public String createGuardPolicyPayload() {
+ return null;
+ }
+
}
diff --git a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
index 9d07415b..a935808a 100644
--- a/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopRepositoriesItCase.java
@@ -30,8 +30,8 @@ import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import java.time.Instant;
-
import java.util.HashSet;
+
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.clamp.clds.Application;
@@ -83,19 +83,16 @@ public class LoopRepositoriesItCase {
return loop;
}
- private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, String policyTosca,
- String jsonProperties, boolean shared) {
+ private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
+ String policyTosca, String jsonProperties, boolean shared) {
MicroServicePolicy µService = new MicroServicePolicy(name, modelType, policyTosca, shared,
- gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>(), "");
+ gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
µService.setProperties(new Gson().fromJson(jsonProperties, JsonObject.class));
return µService;
}
- private LoopLog getLoopLog(LogType type, String message) {
- LoopLog log = new LoopLog();
- log.setLogType(type);
- log.setMessage(message);
- return log;
+ private LoopLog getLoopLog(LogType type, String message, Loop loop) {
+ return new LoopLog(message, type, loop);
}
@Test
@@ -105,10 +102,11 @@ public class LoopRepositoriesItCase {
"123456789", "https://dcaetest.org", "UUID-blueprint");
OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest");
loopTest.addOperationalPolicy(opPolicy);
- MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", "{\"configtype\":\"json\"}",
- "YamlContent", "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
loopTest.addMicroServicePolicy(microServicePolicy);
- LoopLog loopLog = getLoopLog(LogType.INFO, "test message");
+ LoopLog loopLog = getLoopLog(LogType.INFO, "test message", loopTest);
loopTest.addLog(loopLog);
// Attemp to save into the database the entire loop
diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
index 9a44d41b..23723386 100644
--- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
@@ -21,14 +21,17 @@
*
*/
-
package org.onap.clamp.loop;
import static org.assertj.core.api.Assertions.assertThat;
import com.google.gson.JsonObject;
+
import java.util.Set;
import java.util.stream.Collectors;
+
+import javax.transaction.Transactional;
+
import org.assertj.core.util.Lists;
import org.junit.After;
import org.junit.Test;
@@ -39,10 +42,9 @@ import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.operational.OperationalPolicy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.transaction.annotation.Transactional;
+import org.springframework.test.context.junit4.SpringRunner;
-@RunWith(SpringJUnit4ClassRunner.class)
+@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class LoopServiceTestItCase {
@@ -61,18 +63,19 @@ public class LoopServiceTestItCase {
}
@Test
+ @Transactional
public void shouldCreateEmptyLoop() {
- //given
+ // given
String loopBlueprint = "blueprint";
String loopSvg = "representation";
Loop testLoop = createTestLoop(EXAMPLE_LOOP_NAME, loopBlueprint, loopSvg);
testLoop.setGlobalPropertiesJson(JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
testLoop.setLastComputedState(LoopState.DESIGN);
- //when
+ // when
Loop actualLoop = loopService.saveOrUpdateLoop(testLoop);
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop).isEqualTo(loopsRepository.findById(actualLoop.getName()).get());
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
@@ -83,81 +86,77 @@ public class LoopServiceTestItCase {
}
@Test
+ @Transactional
public void shouldAddOperationalPolicyToLoop() {
- //given
+ // given
saveTestLoopToDb();
- JsonObject confJson = JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class);
- String policyName = "policyName";
- OperationalPolicy operationalPolicy = new OperationalPolicy(policyName, null, confJson);
+ OperationalPolicy operationalPolicy = new OperationalPolicy("policyName", null,
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
- //when
- Loop actualLoop = loopService
- .updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(operationalPolicy));
+ // when
+ Loop actualLoop = loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME,
+ Lists.newArrayList(operationalPolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies();
assertThat(savedPolicies).hasSize(1);
- assertThat(savedPolicies)
- .usingElementComparatorIgnoringFields("loop")
- .contains(operationalPolicy);
+ assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop").contains(operationalPolicy);
OperationalPolicy savedPolicy = savedPolicies.iterator().next();
assertThat(savedPolicy.getLoop().getName()).isEqualTo(EXAMPLE_LOOP_NAME);
}
@Test
+ @Transactional
public void shouldAddMicroservicePolicyToLoop() {
- //given
+ // given
saveTestLoopToDb();
- JsonObject confJson = JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class);
- String policyName = "policyName";
- String policyTosca = "policyTosca";
- MicroServicePolicy microServicePolicy = new MicroServicePolicy(policyName, "", policyTosca, false, confJson, null, "");
+ MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", "",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
- //when
- Loop actualLoop = loopService
- .updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(microServicePolicy));
+ // when
+ Loop actualLoop = loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME,
+ Lists.newArrayList(microServicePolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies();
assertThat(savedPolicies).hasSize(1);
assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops")
.containsExactly(microServicePolicy);
- assertThat(savedPolicies).extracting("usedByLoops")
- .hasSize(1);
+ assertThat(savedPolicies).extracting("usedByLoops").hasSize(1);
}
@Test
@Transactional
public void shouldCreateNewMicroservicePolicyAndUpdateJsonRepresentationOfOldOne() {
- //given
+ // given
saveTestLoopToDb();
- String firstPolicyName = "firstPolicyName";
- JsonObject newJsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class);
- String secondPolicyName = "secondPolicyName";
- String secondPolicyTosca = "secondPolicyTosca";
- MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy(firstPolicyName, "", "policyTosca",
- false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null, "");
- loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy));
- MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy(secondPolicyName, "", secondPolicyTosca, true,
- newJsonRepresentation, null, "");
+ MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", "", "", false,
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+ loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy));
+ MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("secondPolicyName", "",
+ "tosca_definitions_version: tosca_simple_yaml_1_0_0", true, JsonUtils.GSON.fromJson("{}", JsonObject.class),
+ null);
- //when
+ // when
firstMicroServicePolicy.setProperties(JsonUtils.GSON.fromJson("{\"name1\":\"value1\"}", JsonObject.class));
Loop actualLoop = loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME,
Lists.newArrayList(firstMicroServicePolicy, secondMicroServicePolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies();
assertThat(savedPolicies).hasSize(2);
+ assertThat(savedPolicies).contains(firstMicroServicePolicy);
+ assertThat(savedPolicies).contains(secondMicroServicePolicy);
assertThat(savedPolicies).usingElementComparatorIgnoringFields("usedByLoops")
.containsExactlyInAnyOrder(firstMicroServicePolicy, secondMicroServicePolicy);
@@ -170,26 +169,24 @@ public class LoopServiceTestItCase {
}
@Test
+ @Transactional
public void shouldRemoveOldMicroservicePolicyIfNotInUpdatedList() {
- //given
+ // given
saveTestLoopToDb();
- JsonObject jsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class);
- String firstPolicyName = "firstPolicyName";
- String secondPolicyName = "policyName";
- String secondPolicyTosca = "secondPolicyTosca";
- MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy(firstPolicyName, "", "policyTosca",
- false, JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null, "");
+ MicroServicePolicy firstMicroServicePolicy = new MicroServicePolicy("firstPolicyName", "",
+ "\"tosca_definitions_version: tosca_simple_yaml_1_0_0\"", false,
+ JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstMicroServicePolicy));
- MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy(secondPolicyName, "", secondPolicyTosca, true,
- jsonRepresentation, null, "");
+ MicroServicePolicy secondMicroServicePolicy = new MicroServicePolicy("policyName", "", "secondPolicyTosca",
+ true, JsonUtils.GSON.fromJson("{}", JsonObject.class), null);
- //when
- Loop actualLoop = loopService
- .updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(secondMicroServicePolicy));
+ // when
+ Loop actualLoop = loopService.updateAndSaveMicroservicePolicies(EXAMPLE_LOOP_NAME,
+ Lists.newArrayList(secondMicroServicePolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<MicroServicePolicy> savedPolicies = actualLoop.getMicroServicePolicies();
@@ -202,82 +199,77 @@ public class LoopServiceTestItCase {
@Test
@Transactional
public void shouldCreateNewOperationalPolicyAndUpdateJsonRepresentationOfOldOne() {
- //given
+ // given
saveTestLoopToDb();
- String firstPolicyName = "firstPolicyName";
JsonObject newJsonConfiguration = JsonUtils.GSON.fromJson("{}", JsonObject.class);
- String secondPolicyName = "secondPolicyName";
- OperationalPolicy firstOperationalPolicy = new OperationalPolicy(firstPolicyName, null,
+
+ OperationalPolicy firstOperationalPolicy = new OperationalPolicy("firstPolicyName", null,
JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy));
- OperationalPolicy secondOperationalPolicy = new OperationalPolicy(secondPolicyName, null, newJsonConfiguration);
+ OperationalPolicy secondOperationalPolicy = new OperationalPolicy("secondPolicyName", null,
+ newJsonConfiguration);
- //when
+ // when
firstOperationalPolicy.setConfigurationsJson(newJsonConfiguration);
Loop actualLoop = loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME,
Lists.newArrayList(firstOperationalPolicy, secondOperationalPolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies();
assertThat(savedPolicies).hasSize(2);
assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop")
.containsExactlyInAnyOrder(firstOperationalPolicy, secondOperationalPolicy);
- Set<String> policiesLoops = Lists.newArrayList(savedPolicies).stream()
- .map(OperationalPolicy::getLoop)
- .map(Loop::getName)
- .collect(Collectors.toSet());
- assertThat(policiesLoops)
- .containsExactly(EXAMPLE_LOOP_NAME);
+ Set<String> policiesLoops = Lists.newArrayList(savedPolicies).stream().map(OperationalPolicy::getLoop)
+ .map(Loop::getName).collect(Collectors.toSet());
+ assertThat(policiesLoops).containsExactly(EXAMPLE_LOOP_NAME);
}
@Test
+ @Transactional
public void shouldRemoveOldOperationalPolicyIfNotInUpdatedList() {
- //given
+ // given
saveTestLoopToDb();
- JsonObject jsonRepresentation = JsonUtils.GSON.fromJson("{}", JsonObject.class);
- String firstPolicyName = "firstPolicyName";
- String secondPolicyName = "policyName";
- OperationalPolicy firstOperationalPolicy = new OperationalPolicy(firstPolicyName, null,
+ OperationalPolicy firstOperationalPolicy = new OperationalPolicy("firstPolicyName", null,
JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class));
loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(firstOperationalPolicy));
- OperationalPolicy secondOperationalPolicy = new OperationalPolicy(secondPolicyName, null, jsonRepresentation);
+ OperationalPolicy secondOperationalPolicy = new OperationalPolicy("policyName", null,
+ JsonUtils.GSON.fromJson("{}", JsonObject.class));
- //when
- Loop actualLoop = loopService
- .updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME, Lists.newArrayList(secondOperationalPolicy));
+ // when
+ Loop actualLoop = loopService.updateAndSaveOperationalPolicies(EXAMPLE_LOOP_NAME,
+ Lists.newArrayList(secondOperationalPolicy));
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
Set<OperationalPolicy> savedPolicies = actualLoop.getOperationalPolicies();
assertThat(savedPolicies).hasSize(1);
- assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop")
- .containsExactly(secondOperationalPolicy);
+ assertThat(savedPolicies).usingElementComparatorIgnoringFields("loop").containsExactly(secondOperationalPolicy);
OperationalPolicy savedPolicy = savedPolicies.iterator().next();
assertThat(savedPolicy.getLoop().getName()).isEqualTo(EXAMPLE_LOOP_NAME);
}
@Test
+ @Transactional
public void shouldCreateModelPropertiesAndUpdateJsonRepresentationOfOldOne() {
- //given
+ // given
saveTestLoopToDb();
String expectedJson = "{\"test\":\"test\"}";
JsonObject baseGlobalProperites = JsonUtils.GSON.fromJson("{}", JsonObject.class);
JsonObject updatedGlobalProperites = JsonUtils.GSON.fromJson(expectedJson, JsonObject.class);
loopService.updateAndSaveGlobalPropertiesJson(EXAMPLE_LOOP_NAME, baseGlobalProperites);
- //when
- Loop actualLoop = loopService
- .updateAndSaveGlobalPropertiesJson(EXAMPLE_LOOP_NAME, updatedGlobalProperites);
+ // when
+ Loop actualLoop = loopService.updateAndSaveGlobalPropertiesJson(EXAMPLE_LOOP_NAME, updatedGlobalProperites);
- //then
+ // then
assertThat(actualLoop).isNotNull();
assertThat(actualLoop.getName()).isEqualTo(EXAMPLE_LOOP_NAME);
JsonObject returnedGlobalProperties = actualLoop.getGlobalPropertiesJson();
diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
index 1c218977..0e03e1b0 100644
--- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
+++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
@@ -33,11 +33,11 @@ import java.util.HashSet;
import java.util.Random;
import org.junit.Test;
+import org.onap.clamp.clds.util.JsonUtils;
import org.onap.clamp.loop.log.LogType;
import org.onap.clamp.loop.log.LoopLog;
import org.onap.clamp.policy.microservice.MicroServicePolicy;
import org.onap.clamp.policy.operational.OperationalPolicy;
-import org.onap.clamp.clds.util.JsonUtils;
public class LoopToJsonTest {
@@ -58,19 +58,17 @@ public class LoopToJsonTest {
return loop;
}
- private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation, String policyTosca,
- String jsonProperties, boolean shared) {
+ private MicroServicePolicy getMicroServicePolicy(String name, String modelType, String jsonRepresentation,
+ String policyTosca, String jsonProperties, boolean shared) {
MicroServicePolicy µService = new MicroServicePolicy(name, modelType, policyTosca, shared,
- gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>(), "");
+ gson.fromJson(jsonRepresentation, JsonObject.class), new HashSet<>());
µService.setProperties(new Gson().fromJson(jsonProperties, JsonObject.class));
return µService;
}
- private LoopLog getLoopLog(LogType type, String message) {
- LoopLog log = new LoopLog();
- log.setLogType(type);
- log.setMessage(message);
+ private LoopLog getLoopLog(LogType type, String message, Loop loop) {
+ LoopLog log = new LoopLog(message, type, loop);
log.setId(Long.valueOf(new Random().nextInt()));
return log;
}
@@ -81,10 +79,11 @@ public class LoopToJsonTest {
"123456789", "https://dcaetest.org", "UUID-blueprint");
OperationalPolicy opPolicy = this.getOperationalPolicy("{\"type\":\"GUARD\"}", "GuardOpPolicyTest");
loopTest.addOperationalPolicy(opPolicy);
- MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "", "{\"configtype\":\"json\"}",
- "YamlContent", "{\"param1\":\"value1\"}", true);
+ MicroServicePolicy microServicePolicy = getMicroServicePolicy("configPolicyTest", "",
+ "{\"configtype\":\"json\"}", "tosca_definitions_version: tosca_simple_yaml_1_0_0",
+ "{\"param1\":\"value1\"}", true);
loopTest.addMicroServicePolicy(microServicePolicy);
- LoopLog loopLog = getLoopLog(LogType.INFO, "test message");
+ LoopLog loopLog = getLoopLog(LogType.INFO, "test message", loopTest);
loopTest.addLog(loopLog);
String jsonSerialized = JsonUtils.GSON_JPA_MODEL.toJson(loopTest);
@@ -94,7 +93,7 @@ public class LoopToJsonTest {
assertNotNull(loopTestDeserialized);
assertThat(loopTestDeserialized).isEqualToIgnoringGivenFields(loopTest, "svgRepresentation", "blueprint");
- //svg and blueprint not exposed so wont be deserialized
+ // svg and blueprint not exposed so wont be deserialized
assertThat(loopTestDeserialized.getBlueprint()).isEqualTo(null);
assertThat(loopTestDeserialized.getSvgRepresentation()).isEqualTo(null);
diff --git a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java
new file mode 100644
index 00000000..c511f341
--- /dev/null
+++ b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java
@@ -0,0 +1,47 @@
+/*-
+ * ============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.microservice;
+
+import com.google.gson.JsonObject;
+
+import java.io.IOException;
+import java.util.HashSet;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.skyscreamer.jsonassert.JSONAssert;
+
+public class MicroServicePayloadTest {
+
+ @Test
+ public void testPayloadConstruction() throws IOException {
+ MicroServicePolicy policy = new MicroServicePolicy("testPolicy", "onap.policy.monitoring.cdap.tca.hi.lo.app",
+ ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"), false, new HashSet<>());
+ policy.setProperties(JsonUtils.GSON.fromJson(
+ ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-properties.json"), JsonObject.class));
+ JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-payload.json"),
+ policy.createPolicyPayload(), false);
+ }
+}
diff --git a/src/test/resources/tosca/micro-service-policy-payload.json b/src/test/resources/tosca/micro-service-policy-payload.json
new file mode 100644
index 00000000..01d6d275
--- /dev/null
+++ b/src/test/resources/tosca/micro-service-policy-payload.json
@@ -0,0 +1,41 @@
+{
+ "tosca_definitions_version": "tosca_simple_yaml_1_0_0",
+ "topology_template": {
+ "policies": [
+ {
+ "testPolicy": {
+ "type": "onap.policy.monitoring.cdap.tca.hi.lo.app",
+ "version": "1.0.0",
+ "metadata": {
+ "policy-id": "testPolicy"
+ },
+ "properties": {
+ "tca_policy": {
+ "domain": "measurementsForVfScaling",
+ "metricsPerEventName": [
+ {
+ "policyVersion": "1.0.0",
+ "thresholds": [
+ {
+ "severity": "CRITICAL",
+ "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+ "thresholdValue": 1,
+ "closedLoopEventStatus": "ONSET",
+ "closedLoopControlName": "test",
+ "version": "1.0.0",
+ "direction": "LESS"
+ }
+ ],
+ "policyName": "test",
+ "controlLoopSchemaType": "VM",
+ "policyScope": "test",
+ "eventName": "test"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/src/test/resources/tosca/micro-service-policy-properties.json b/src/test/resources/tosca/micro-service-policy-properties.json
new file mode 100644
index 00000000..6baa3294
--- /dev/null
+++ b/src/test/resources/tosca/micro-service-policy-properties.json
@@ -0,0 +1,23 @@
+{
+ "domain": "measurementsForVfScaling",
+ "metricsPerEventName": [
+ {
+ "policyVersion": "1.0.0",
+ "thresholds": [
+ {
+ "severity": "CRITICAL",
+ "fieldPath": "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedTotalPacketsDelta",
+ "thresholdValue": 1,
+ "closedLoopEventStatus": "ONSET",
+ "closedLoopControlName": "test",
+ "version": "1.0.0",
+ "direction": "LESS"
+ }
+ ],
+ "policyName": "test",
+ "controlLoopSchemaType": "VM",
+ "policyScope": "test",
+ "eventName": "test"
+ }
+ ]
+}