From 6dfab64262ea5816c761042192c84e498a3177ab Mon Sep 17 00:00:00 2001 From: jhh Date: Wed, 12 Feb 2020 18:20:06 -0600 Subject: tosca compliant op policy support + vcpe test Tosca Compliant and Toscal Legacy Operational policies are both supported for backwards compatibility. vCPE usecase junits to support 2 equivalent policies, one tosca compliant and the other one legacy. Issue-ID: POLICY-2360 Signed-off-by: jhh Change-Id: Iafbfc92bbec42e6a3fe4ceb4a9a17c85e636ea14 Signed-off-by: jhh --- .../server/restful/RestControlLoopManager.java | 113 --------------------- .../server/restful/RestControlLoopManagerTest.java | 23 +---- 2 files changed, 1 insertion(+), 135 deletions(-) (limited to 'controlloop/common/feature-controlloop-management/src') diff --git a/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java b/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java index ff53d5201..35aabe424 100644 --- a/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java +++ b/controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java @@ -25,15 +25,11 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; import javax.ws.rs.Consumes; import javax.ws.rs.GET; -import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @@ -41,13 +37,9 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import org.onap.policy.aai.AaiManager; -import org.onap.policy.controlloop.ControlLoopException; import org.onap.policy.controlloop.drl.legacy.ControlLoopParams; import org.onap.policy.controlloop.eventmanager.ControlLoopEventManager; -import org.onap.policy.controlloop.processor.ControlLoopProcessor; import org.onap.policy.drools.apps.controlloop.feature.management.ControlLoopManagementFeature; -import org.onap.policy.drools.controller.DroolsController; -import org.onap.policy.drools.system.PolicyControllerConstants; import org.onap.policy.drools.system.PolicyEngineConstants; import org.onap.policy.rest.RestManager; import org.slf4j.Logger; @@ -122,111 +114,6 @@ public class RestControlLoopManager { } } - /** - * GET operational policy. - * - * @param controllerName controller name. - * @param sessionName session name. - * @param controlLoopName control loop name. - * @return operational policy. - */ - @GET - @Path("engine/controllers/{controller}/drools/facts/{session}/controlloops/{controlLoopName}/policy") - @Produces(MediaType.TEXT_PLAIN) - @ApiOperation( value = "Operational Policy", notes = "The policy is in yaml format") - @ApiResponses(value = {@ApiResponse(code = 404, message = "The Control Loop cannot be found"), - @ApiResponse(code = 500, message = "The Control Loop has invalid data")}) - public Response policy( - @ApiParam(value = "Policy Controller Name", required = true) @PathParam("controller") String controllerName, - @ApiParam(value = "Drools Session Name", required = true) @PathParam("session") String sessionName, - @ApiParam(value = "Control Loop Name", required = true) @PathParam("controlLoopName") String controlLoopName) { - - try { - ControlLoopParams controlLoopParams = - ControlLoopManagementFeature.controlLoops(controllerName, sessionName) - .filter(c -> c.getClosedLoopControlName().equals(controlLoopName)) - .findFirst() - .orElse(null); - - if (controlLoopParams == null || controlLoopParams.getControlLoopYaml() == null) { - return Response.status(Response.Status.NOT_FOUND).entity("Policy not found").build(); - } - - return Response.status(Status.OK) - .entity(URLDecoder.decode(controlLoopParams.getControlLoopYaml(), "UTF-8")).build(); - } catch (IllegalArgumentException e) { - logger.error("{}", e); - return Response.status(Response.Status.NOT_FOUND).entity(e.getMessage()).build(); - } catch (UnsupportedEncodingException e) { - logger.error("{}", e); - return Response.status(Status.INTERNAL_SERVER_ERROR).entity("Unreadable Policy").build(); - } - } - - /** - * PUT an Operational Policy. - * - * @param controllerName controller name. - * @param sessionName session name. - * @param controlLoopName control loop name. - * @param policy operational policy. - * - * @return operational policy. - */ - - @PUT - @Path("engine/controllers/{controller}/drools/facts/{session}/controlloops/{controlLoopName}/policy") - @Consumes(MediaType.TEXT_PLAIN) - @ApiOperation( value = "Add Operational Policy", notes = "The Operational Policy should be syntactically correct") - @ApiResponses(value = {@ApiResponse(code = 404, message = "The Control Loop cannot be found"), - @ApiResponse(code = 409, message = "The Control Loop exists"), - @ApiResponse(code = 412, message = "The Control Loop Name must be matched in the URL"), - @ApiResponse(code = 406, message = "The Operational Policy is invalid")}) - public Response opOffer( - @ApiParam(value = "Policy Controller Name", required = true) @PathParam("controller") String controllerName, - @ApiParam(value = "Drools Session Name", required = true) @PathParam("session") String sessionName, - @ApiParam(value = "Control Loop Name", required = true) @PathParam("controlLoopName") String controlLoopName, - @ApiParam(value = "Operational Policy", required = true) String policy) { - - try { - ControlLoopParams controlLoop = - ControlLoopManagementFeature.controlLoop(controllerName, sessionName, controlLoopName); - - if (controlLoop != null) { - return Response.status(Status.CONFLICT).entity(controlLoop).build(); - } - - /* validation */ - - ControlLoopProcessor controlLoopProcessor = new ControlLoopProcessor(policy); - - if (!controlLoopName.equals(controlLoopProcessor.getControlLoop().getControlLoopName())) { - return Response.status(Status.PRECONDITION_FAILED) - .entity("Control Loop Name in URL does not match the Operational Policy") - .build(); - } - - DroolsController controller = PolicyControllerConstants.getFactory().get(controllerName).getDrools(); - - controlLoop = new ControlLoopParams(); - controlLoop.setPolicyScope(controller.getGroupId()); - controlLoop.setPolicyName(controller.getArtifactId()); - controlLoop.setPolicyVersion(controller.getVersion()); - controlLoop.setClosedLoopControlName(controlLoopName); - controlLoop.setControlLoopYaml(URLEncoder.encode(policy, "UTF-8")); - - controller.getContainer().insertAll(controlLoop); - return Response.status(Status.OK).entity(controlLoop).build(); - - } catch (IllegalArgumentException i) { - logger.error("{}", i); - return Response.status(Response.Status.NOT_FOUND).entity(i).build(); - } catch (ControlLoopException | UnsupportedEncodingException e) { - logger.error("{}", e); - return Response.status(Status.NOT_ACCEPTABLE).entity(e).build(); - } - } - /** * AAI Custom Query. * diff --git a/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java b/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java index c2a9e536f..7fad4468d 100644 --- a/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java +++ b/controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP * ================================================================================ - * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2020 AT&T 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. @@ -28,11 +28,9 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Collections; import java.util.Properties; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; -import javax.ws.rs.client.Entity; import javax.ws.rs.core.Response.Status; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -179,25 +177,6 @@ public class RestControlLoopManagerTest { assertEquals(Status.NOT_FOUND.getStatusCode(), HttpClientFactoryInstance.getClientFactory() .get(CONTROLLER).get(URL_CONTEXT_PATH_CONTROLLOOP_POLICY).getStatus()); - - String policyFromFile = new String(Files.readAllBytes(Paths.get(POLICY))); - HttpClientFactoryInstance.getClientFactory().get(CONTROLLER).put( - URL_CONTEXT_PATH_CONTROLLOOP_POLICY, Entity.text(policyFromFile), - Collections.emptyMap()); - - assertEquals(Status.OK.getStatusCode(), HttpClientFactoryInstance.getClientFactory() - .get(CONTROLLER).get(URL_CONTEXT_PATH_CONTROLLOOP_POLICY).getStatus()); - - String policyFromPdpD = HttpClientFactoryInstance.getClientFactory().get(CONTROLLER) - .get(URL_CONTEXT_PATH_CONTROLLOOP_POLICY).readEntity(String.class); - - assertEquals(policyFromFile, policyFromPdpD); - - assertEquals(Status.CONFLICT.getStatusCode(), - HttpClientFactoryInstance.getClientFactory().get(CONTROLLER) - .put(URL_CONTEXT_PATH_CONTROLLOOP_POLICY, Entity.text(policyFromFile), - Collections.emptyMap()) - .getStatus()); } /** -- cgit 1.2.3-korg