diff options
author | sebdet <sebastien.determe@intl.att.com> | 2019-04-03 17:07:34 +0200 |
---|---|---|
committer | sebdet <sebastien.determe@intl.att.com> | 2019-04-05 14:54:32 +0200 |
commit | 0cb57989949080d6cc3853c432a233605c321388 (patch) | |
tree | f2800aec37b1b2010cbfb70202c4a4925f3090eb /src/main | |
parent | 3772c8513f618f9b76fc7bfa55fa140eb60f2a4b (diff) |
LoopLog repository
Introduction of the loop log repo + refactoring
Issue-ID: CLAMP-303
Change-Id: I3e806993d35f82fd9258e55592391a48eb7e199f
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
Diffstat (limited to 'src/main')
12 files changed, 256 insertions, 122 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; + } + } |