diff options
author | xuegao <xg353y@intl.att.com> | 2020-03-11 11:22:15 +0100 |
---|---|---|
committer | xuegao <xg353y@intl.att.com> | 2020-03-13 16:16:54 +0100 |
commit | fb4b25f6827accf6f975f9ca9a7aaee08d335c2f (patch) | |
tree | d3cea2040049a9b73fcdd94f79758dd52c75b758 /src | |
parent | 5c3a825851bb1a345620c5c4951726c5b94a0341 (diff) |
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 <xg353y@intl.att.com>
Diffstat (limited to 'src')
5 files changed, 111 insertions, 2 deletions
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 @@ -271,6 +271,17 @@ public class Loop extends AuditEntity implements Serializable { } /** + * 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 @@ -110,6 +110,18 @@ public class LoopController { } /** + * 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. * * @param loopName The loop Name 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<OperationalPolicy> 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 @@ </doTry> </route> </put> + <put uri="/v2/loop/removeOperationaPolicy/{loopName}/policyModel/{policyType}/{policyVersion}" outType="org.onap.clamp.loop.Loop" produces="application/json"> + <route> + <removeHeaders pattern="*" excludePattern="loopName|policyType|policyVersion" /> + <doTry> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=startLog(*, 'REMOVE operational Policy')" /> + <to + uri="bean:org.onap.clamp.authorization.AuthorizationController?method=authorize(*,'cl','','update')" /> + <to uri="direct:load-loop" /> + <to + uri="bean:org.onap.clamp.loop.LoopController?method=removeOperationalPolicy(${header.loopName},${header.policyType},${header.policyVersion})" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('REMOVE OperationalPolicy request successfully executed','INFO',${exchangeProperty[loopObject]})" /> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=endLog()" /> + <doCatch> + <exception>java.lang.Exception</exception> + <handled> + <constant>false</constant> + </handled> + <to + uri="bean:org.onap.clamp.flow.log.FlowLogOperation?method=errorLog()" /> + <log loggingLevel="ERROR" + message="REMOVE OperationalPolicy request failed for loop: ${header.loopName}" /> + <to + uri="bean:org.onap.clamp.loop.log.LoopLogService?method=addLog('REMOVE OperationalPolicy request failed','ERROR',${exchangeProperty[loopObject]})" /> + </doCatch> + </doTry> + </route> + </put> <post uri="/v2/loop/create/{loopName}?templateName={templateName}" outType="org.onap.clamp.loop.Loop" consumes="application/json" diff --git a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java index f017dd899..24a9037ad 100644 --- a/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java +++ b/src/test/java/org/onap/clamp/loop/LoopControllerTestItCase.java @@ -36,14 +36,17 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.onap.clamp.clds.Application; import org.onap.clamp.clds.util.JsonUtils; +import org.onap.clamp.loop.service.Service; import org.onap.clamp.loop.template.LoopTemplate; 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.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.Commit; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @@ -63,6 +66,9 @@ public class LoopControllerTestItCase { MicroServicePolicyService microServicePolicyService; @Autowired + OperationalPolicyService operationalPolicyService; + + @Autowired PolicyModelsService policyModelsService; @Autowired @@ -74,6 +80,8 @@ public class LoopControllerTestItCase { LoopTemplate template = new LoopTemplate(); template.setName("testTemplate"); testLoop.setLoopTemplate(template); + Service modelService = new Service("{\"name\":\"serviceName\",\"UUID\":\"uuid\"}","{}"); + testLoop.setModelService(modelService); loopService.saveOrUpdateLoop(testLoop); } @@ -131,7 +139,7 @@ public class LoopControllerTestItCase { @Transactional public void testUpdateMicroservicePolicy() { saveTestLoopToDb(); - PolicyModel policyModel = new PolicyModel("", + PolicyModel policyModel = new PolicyModel("testPolicyModel", "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0"); policyModelsService.saveOrUpdatePolicyModel(policyModel); MicroServicePolicy policy = new MicroServicePolicy("policyName", policyModel, false, @@ -147,4 +155,28 @@ public class LoopControllerTestItCase { String svgRepresentation = loopController.getSvgRepresentation(EXAMPLE_LOOP_NAME); assertThat(svgRepresentation).isEqualTo("representation"); } + + @Test + @Transactional + public void testAddAndRemoveOperationalPolicies() { + saveTestLoopToDb(); + PolicyModel policyModel = new PolicyModel("testPolicyModel", + "tosca_definitions_version: tosca_simple_yaml_1_0_0","1.0.0"); + policyModelsService.saveOrUpdatePolicyModel(policyModel); + + loopController.addOperationalPolicy(EXAMPLE_LOOP_NAME, "testPolicyModel", "1.0.0"); + + Loop newLoop = loopController.getLoop(EXAMPLE_LOOP_NAME); + Set<OperationalPolicy> 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 |