diff options
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 7447fbae1..f3654596c 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 05d5c480c..9bb9e01e7 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 e62874a8a..a24d3449f 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 a02fa9333..b862780de 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 34e1b4bef..8d61b877b 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 0c51c0c1f..3edb2ee59 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 000000000..b593b41ed --- /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 683881bfa..f4efab0d7 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 05785c045..ae15f86da 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 c2c60c9c0..332b20a07 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 f95ad3b4e..b14e14503 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 c1e075daa..674bd71d7 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 9d07415bc..a935808ab 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 9a44d41bc..23723386b 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 1c218977d..0e03e1b06 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 000000000..c511f3415 --- /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 000000000..01d6d275c --- /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 000000000..6baa32942 --- /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" + } + ] +} |