X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fclamp%2Floop%2FLoopService.java;h=af1f58ba7b5fae2745cdb42ab9770f5a4cb287c6;hb=e916ac28ba46ff7cad64f1a3150b128ba4772c70;hp=91b4bdf89f38e305bbe02105c2fa16c33655ff2c;hpb=60e5cc9c7768ddda104069f7773fb636f77587e8;p=clamp.git diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java index 91b4bdf8..af1f58ba 100644 --- a/src/main/java/org/onap/clamp/loop/LoopService.java +++ b/src/main/java/org/onap/clamp/loop/LoopService.java @@ -23,29 +23,42 @@ package org.onap.clamp.loop; +import com.google.gson.JsonObject; +import java.io.IOException; import java.util.List; import java.util.Set; import javax.persistence.EntityNotFoundException; -import org.onap.clamp.policy.microservice.MicroservicePolicyService; -import org.onap.clamp.policy.operational.OperationalPolicyService; +import org.onap.clamp.clds.tosca.update.ToscaConverterWithDictionarySupport; +import org.onap.clamp.loop.template.LoopTemplatesService; +import org.onap.clamp.loop.template.PolicyModel; +import org.onap.clamp.loop.template.PolicyModelsService; 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.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LoopService { - private final LoopsRepository loopsRepository; - private final MicroservicePolicyService microservicePolicyService; - private final OperationalPolicyService operationalPolicyService; + @Autowired + private LoopsRepository loopsRepository; - public LoopService(LoopsRepository loopsRepository, - MicroservicePolicyService microservicePolicyService, - OperationalPolicyService operationalPolicyService) { - this.loopsRepository = loopsRepository; - this.microservicePolicyService = microservicePolicyService; - this.operationalPolicyService = operationalPolicyService; - } + @Autowired + private MicroServicePolicyService microservicePolicyService; + + @Autowired + private OperationalPolicyService operationalPolicyService; + + @Autowired + private PolicyModelsService policyModelsService; + + @Autowired + private LoopTemplatesService loopTemplateService; + + @Autowired + private ToscaConverterWithDictionarySupport toscaConverter; Loop saveOrUpdateLoop(Loop loop) { return loopsRepository.save(loop); @@ -55,37 +68,116 @@ public class LoopService { return loopsRepository.getAllLoopNames(); } - Loop getLoop(String loopName){ + public Loop getLoop(String loopName) { + return loopsRepository.findById(loopName).orElse(null); + } + + public void deleteLoop(String loopName) { + loopsRepository.deleteById(loopName); + } + + /** + * Creates a Loop Instance from Loop Template Name. + * + * @param loopName Name of the Loop to be created + * @param templateName Loop Template to used for Loop + * @return Loop Instance + */ + public Loop createLoopFromTemplate(String loopName, String templateName) { return loopsRepository - .findById(loopName) - .orElse(null); + .save(new Loop(loopName, loopTemplateService.getLoopTemplate(templateName), toscaConverter)); } - String getClosedLoopModelSVG(String loopName) { - Loop closedLoopByName = findClosedLoopByName(loopName); - return closedLoopByName.getSvgRepresentation(); + /** + * This method is used to refresh the DCAE deployment status fields. + * + * @param loop The loop instance to be modified + * @param deploymentId The deployment ID as returned by DCAE + * @param deploymentUrl The Deployment URL as returned by DCAE + */ + public void updateDcaeDeploymentFields(Loop loop, String deploymentId, String deploymentUrl) { + loop.setDcaeDeploymentId(deploymentId); + loop.setDcaeDeploymentStatusUrl(deploymentUrl); + loopsRepository.save(loop); } - Loop updateOperationalPolicies(String loopName, List newOperationalPolicies) { - Loop loop = findClosedLoopByName(loopName); - Set newPolicies = operationalPolicyService - .updatePolicies(loop, newOperationalPolicies); + public void updateLoopState(Loop loop, String newState) { + loop.setLastComputedState(LoopState.valueOf(newState)); + loopsRepository.save(loop); + } + /** + * This method add an operational policy to a loop instance. + * This creates an operational policy from the policy model info and not the loop element model + * + * @param loopName The loop name + * @param policyType The policy model type + * @param policyVersion The policy model version + * @return The loop modified + */ + Loop addOperationalPolicy(String loopName, String policyType, String policyVersion) throws IOException { + Loop loop = getLoop(loopName); + PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion); + if (policyModel == null) { + return null; + } + loop.addOperationalPolicy( + new OperationalPolicy(loop, loop.getModelService(), policyModel, toscaConverter)); + return loopsRepository.saveAndFlush(loop); + } + + /** + * This method remove an operational policy to a loop instance. + * + * @param loopName The loop name + * @param policyType The policy model type + * @param policyVersion The policy model version + * @return The loop modified + */ + Loop removeOperationalPolicy(String loopName, String policyType, String policyVersion) { + Loop loop = getLoop(loopName); + PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion); + if (policyModel == null) { + return null; + } + for (OperationalPolicy opPolicy : loop.getOperationalPolicies()) { + if (opPolicy.getPolicyModel().getPolicyModelType().equals(policyType) + && opPolicy.getPolicyModel().getVersion().equals(policyVersion)) { + loop.removeOperationalPolicy(opPolicy); + break; + } + } + return loopsRepository.saveAndFlush(loop); + } + + Loop updateAndSaveOperationalPolicies(String loopName, List newOperationalPolicies) { + Loop loop = findClosedLoopByName(loopName); + Set newPolicies = operationalPolicyService.updatePolicies(loop, newOperationalPolicies); loop.setOperationalPolicies(newPolicies); return loopsRepository.save(loop); } - Loop updateMicroservicePolicies(String loopName, List newMicroservicePolicies) { + Loop updateAndSaveMicroservicePolicies(String loopName, List newMicroservicePolicies) { Loop loop = findClosedLoopByName(loopName); - Set newPolicies = microservicePolicyService - .updatePolicies(loop, newMicroservicePolicies); - + Set newPolicies = microservicePolicyService.updatePolicies(loop, newMicroservicePolicies); loop.setMicroServicePolicies(newPolicies); return loopsRepository.save(loop); } + Loop updateAndSaveGlobalPropertiesJson(String loopName, JsonObject newGlobalPropertiesJson) { + Loop loop = findClosedLoopByName(loopName); + loop.setGlobalPropertiesJson(newGlobalPropertiesJson); + return loopsRepository.save(loop); + } + + MicroServicePolicy updateMicroservicePolicy(String loopName, MicroServicePolicy newMicroservicePolicy) { + Loop loop = findClosedLoopByName(loopName); + return microservicePolicyService.getAndUpdateMicroServicePolicy(loop, newMicroservicePolicy); + } + private Loop findClosedLoopByName(String loopName) { return loopsRepository.findById(loopName) - .orElseThrow(() -> new EntityNotFoundException("Couldn't find closed loop named: " + loopName)); + .orElseThrow(() -> new EntityNotFoundException("Couldn't find closed loop named: " + loopName)); } } +