From fb4b25f6827accf6f975f9ca9a7aaee08d335c2f Mon Sep 17 00:00:00 2001 From: xuegao Date: Wed, 11 Mar 2020 11:22:15 +0100 Subject: Add remove op policy option Update the UI and backend code to be able to remove op policy for loop instances. Issue-ID: CLAMP-648 Change-Id: Ib3eab4977fe4f1b85e11f2373263197009bbc3e1 Signed-off-by: xuegao --- src/main/java/org/onap/clamp/loop/Loop.java | 11 +++++++ .../java/org/onap/clamp/loop/LoopController.java | 12 ++++++++ src/main/java/org/onap/clamp/loop/LoopService.java | 26 ++++++++++++++++- .../resources/clds/camel/rest/clamp-api-v2.xml | 30 +++++++++++++++++++ .../onap/clamp/loop/LoopControllerTestItCase.java | 34 +++++++++++++++++++++- 5 files changed, 111 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java index f185460cf..2bf3decd6 100644 --- a/src/main/java/org/onap/clamp/loop/Loop.java +++ b/src/main/java/org/onap/clamp/loop/Loop.java @@ -270,6 +270,17 @@ public class Loop extends AuditEntity implements Serializable { this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); } + /** + * This method removes an operational policy to the loop. + * It re-computes the Svg as well. + * + * @param opPolicy the operationalPolicy to add + */ + public void removeOperationalPolicy(OperationalPolicy opPolicy) { + operationalPolicies.remove(opPolicy); + this.setSvgRepresentation(SvgLoopGenerator.getSvgImage(this)); + } + /** * This method adds an micro service policy to the loop. * It re-computes the Svg as well. diff --git a/src/main/java/org/onap/clamp/loop/LoopController.java b/src/main/java/org/onap/clamp/loop/LoopController.java index 1a67455e8..1a4ae5997 100644 --- a/src/main/java/org/onap/clamp/loop/LoopController.java +++ b/src/main/java/org/onap/clamp/loop/LoopController.java @@ -109,6 +109,18 @@ public class LoopController { return loopService.addOperationalPolicy(loopName, policyType, policyVersion); } + /** + * 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 + */ + public Loop removeOperationalPolicy(String loopName, String policyType, String policyVersion) { + return loopService.removeOperationalPolicy(loopName, policyType, policyVersion); + } + /** * This method deletes the loop. * diff --git a/src/main/java/org/onap/clamp/loop/LoopService.java b/src/main/java/org/onap/clamp/loop/LoopService.java index 98a2fbddc..953a59471 100644 --- a/src/main/java/org/onap/clamp/loop/LoopService.java +++ b/src/main/java/org/onap/clamp/loop/LoopService.java @@ -120,7 +120,31 @@ public class LoopService { 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.save(loop); + 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) { diff --git a/src/main/resources/clds/camel/rest/clamp-api-v2.xml b/src/main/resources/clds/camel/rest/clamp-api-v2.xml index fbf90712a..d1c191dc7 100644 --- a/src/main/resources/clds/camel/rest/clamp-api-v2.xml +++ b/src/main/resources/clds/camel/rest/clamp-api-v2.xml @@ -604,6 +604,36 @@ + + + + + + + + + + + + java.lang.Exception + + false + + + + + + + + opPolicyList = newLoop.getOperationalPolicies(); + assertThat(opPolicyList.size()).isEqualTo(1); + for(OperationalPolicy policy : opPolicyList) { + assertThat(policy.getName().contains("OPERATIONAL_serviceName")).isTrue(); + assertThat(policy.getPolicyModel().getPolicyModelType()).isEqualTo("testPolicyModel"); + assertThat(policy.getPolicyModel().getVersion()).isEqualTo("1.0.0"); + } + + loopController.removeOperationalPolicy(EXAMPLE_LOOP_NAME, "testPolicyModel", "1.0.0"); + Loop newLoop2 = loopController.getLoop(EXAMPLE_LOOP_NAME); + assertThat(newLoop2.getOperationalPolicies().size()).isEqualTo(0); + } } \ No newline at end of file -- cgit 1.2.3-korg