X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fclamp%2Floop%2FLoopService.java;h=953a59471c74dc7eb2c22dc5058eb8c60f84a8a7;hb=fb4b25f6827accf6f975f9ca9a7aaee08d335c2f;hp=85e24cd00f362e1e51da595dae78fed9fa09d921;hpb=825612628f130b394f9ee1aa1ad2cca41b67bc7f;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 85e24cd0..953a5947 100644 --- a/src/main/java/org/onap/clamp/loop/LoopService.java +++ b/src/main/java/org/onap/clamp/loop/LoopService.java @@ -24,12 +24,14 @@ package org.onap.clamp.loop; import com.google.gson.JsonObject; - import java.util.List; import java.util.Set; - import javax.persistence.EntityNotFoundException; - +import org.apache.commons.lang3.RandomStringUtils; +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.Policy; import org.onap.clamp.policy.microservice.MicroServicePolicy; import org.onap.clamp.policy.microservice.MicroServicePolicyService; import org.onap.clamp.policy.operational.OperationalPolicy; @@ -49,6 +51,12 @@ public class LoopService { @Autowired private OperationalPolicyService operationalPolicyService; + @Autowired + private PolicyModelsService policyModelsService; + + @Autowired + private LoopTemplatesService loopTemplateService; + Loop saveOrUpdateLoop(Loop loop) { return loopsRepository.save(loop); } @@ -65,6 +73,24 @@ public class LoopService { 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.save(new Loop(loopName,loopTemplateService.getLoopTemplate(templateName))); + } + + /** + * 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); @@ -76,6 +102,51 @@ public class LoopService { loopsRepository.save(loop); } + /** + * This method add 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 addOperationalPolicy(String loopName, String policyType, String policyVersion) { + Loop loop = getLoop(loopName); + PolicyModel policyModel = policyModelsService.getPolicyModel(policyType, policyVersion); + if (policyModel == null) { + return null; + } + loop.addOperationalPolicy( + new OperationalPolicy(Policy.generatePolicyName("OPERATIONAL", loop.getModelService().getName(), + loop.getModelService().getVersion(), RandomStringUtils.randomAlphanumeric(3), + RandomStringUtils.randomAlphanumeric(4)), loop, null, policyModel, null, null, null)); + 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); @@ -105,4 +176,20 @@ public class LoopService { return loopsRepository.findById(loopName) .orElseThrow(() -> new EntityNotFoundException("Couldn't find closed loop named: " + loopName)); } + + /** + * Api to refresh the Operational Policy UI window. + * + * @param loopName The loop Name + * @return The refreshed loop object + */ + public Loop refreshOpPolicyJsonRepresentation(String loopName) { + Loop loop = findClosedLoopByName(loopName); + Set policyList = loop.getOperationalPolicies(); + for (OperationalPolicy policy : policyList) { + policy.updateJsonRepresentation(); + } + loop.setOperationalPolicies(policyList); + return loopsRepository.save(loop); + } }