aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/common/feature-controlloop-management
diff options
context:
space:
mode:
authorjhh <jorge.hernandez-herrero@att.com>2020-02-12 18:20:06 -0600
committerJorge Hernandez <jorge.hernandez-herrero@att.com>2020-02-17 20:25:22 +0000
commit6dfab64262ea5816c761042192c84e498a3177ab (patch)
tree665dd3e68a9fc4303898fc9d7fe34d4c404ef7a4 /controlloop/common/feature-controlloop-management
parent43b12b12c0c427bc89ab88f4d4034821d4c9835d (diff)
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 <jorge.hernandez-herrero@att.com> Change-Id: Iafbfc92bbec42e6a3fe4ceb4a9a17c85e636ea14 Signed-off-by: jhh <jorge.hernandez-herrero@att.com>
Diffstat (limited to 'controlloop/common/feature-controlloop-management')
-rw-r--r--controlloop/common/feature-controlloop-management/src/main/java/org/onap/policy/drools/server/restful/RestControlLoopManager.java113
-rw-r--r--controlloop/common/feature-controlloop-management/src/test/java/org/onap/policy/drools/server/restful/RestControlLoopManagerTest.java23
2 files changed, 1 insertions, 135 deletions
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;
@@ -123,111 +115,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.
*
* @param vserverId vServer identifier.
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());
}
/**