Add changes to support application/yaml in api
[policy/api.git] / main / src / main / java / org / onap / policy / api / main / rest / LegacyApiRestController.java
index 38736e8..6a4e39d 100644 (file)
@@ -31,6 +31,7 @@ import io.swagger.annotations.Authorization;
 import io.swagger.annotations.Extension;
 import io.swagger.annotations.ExtensionProperty;
 import io.swagger.annotations.ResponseHeader;
+import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 import javax.ws.rs.Consumes;
@@ -42,14 +43,19 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
+import org.apache.commons.lang3.tuple.Pair;
 import org.onap.policy.api.main.rest.provider.LegacyGuardPolicyProvider;
 import org.onap.policy.api.main.rest.provider.LegacyOperationalPolicyProvider;
+import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
+import org.onap.policy.common.endpoints.utils.NetLoggerUtil;
+import org.onap.policy.common.endpoints.utils.NetLoggerUtil.EventType;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.base.PfModelRuntimeException;
 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput;
 import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput;
 import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Class to provide legacy REST API services.
@@ -58,20 +64,23 @@ import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy;
  */
 @Path("/policy/api/v1")
 @Api(value = "Legacy Policy Design API")
-@Produces({"application/json; vnd.onap.guard", "application/json; vnd.onap.operational"})
-@Consumes({"application/json; vnd.onap.guard", "application/json; vnd.onap.operational"})
-public class LegacyApiRestController {
+@Produces({"application/json", "application/yaml"})
+@Consumes({"application/json", "application/yaml"})
+public class LegacyApiRestController extends CommonRestController {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(LegacyApiRestController.class);
 
     /**
-     * Retrieves all versions of guard policies.
+     * Retrieves the latest version of a particular guard policy.
+     *
+     * @param policyId the ID of specified guard policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies")
-    @Produces("application/json; vnd.onap.guard")
-    @ApiOperation(value = "Retrieve all versions of guard policies",
-            notes = "Returns a list of all versions of guard policies",
+    @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}/versions/latest")
+    @ApiOperation(value = "Retrieve the latest version of a particular guard policy",
+            notes = "Returns the latest version of the specified guard policy",
             response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
@@ -101,35 +110,35 @@ public class LegacyApiRestController {
     @ApiResponses(value = {
             @ApiResponse(code = 401, message = "Authentication Error"),
             @ApiResponse(code = 403, message = "Authorization Error"),
+            @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getAllGuardPolicies(
+    public Response getLatestVersionOfGuardPolicy(
+            @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
-                    .fetchGuardPolicies(null, null);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policies).build();
+        try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+            Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider.fetchGuardPolicy(policyId, null);
+            return makeOkResponse(requestId, policies);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}"
+                + "/versions/latest", policyId, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
     /**
-     * Retrieves all versions of a particular guard policy.
+     * Retrieves the specified version of a particular guard policy.
      *
-     * @param policyId the ID of specified guard policy
+     * @param policyId the ID of specified policy
+     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}")
-    @Produces("application/json; vnd.onap.guard")
-    @ApiOperation(value = "Retrieve all versions of a particular guard policy",
-            notes = "Returns a list of all versions of the specified guard policy",
+    @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
+    @ApiOperation(value = "Retrieve one version of a particular guard policy",
+            notes = "Returns a particular version of a specified guard policy",
             response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
@@ -162,35 +171,34 @@ public class LegacyApiRestController {
             @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getAllVersionsOfGuardPolicy(
+    public Response getSpecificVersionOfGuardPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
+            @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
-                    .fetchGuardPolicies(policyId, null);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policies).build();
+        try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+            Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider
+                    .fetchGuardPolicy(policyId, policyVersion);
+            return makeOkResponse(requestId, policies);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}/versions/{}",
+                    policyId, policyVersion, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
     /**
-     * Retrieves the specified version of a particular guard policy.
+     * Retrieves deployed versions of a particular guard policy in PDP groups.
      *
      * @param policyId the ID of specified policy
-     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.guard")
-    @ApiOperation(value = "Retrieve one version of a particular guard policy",
-            notes = "Returns a particular version of a specified guard policy",
+    @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/"
+         + "policies/{policyId}/versions/deployed")
+    @ApiOperation(value = "Retrieve deployed versions of a particular guard policy in pdp groups",
+            notes = "Returns deployed versions of a specified guard policy in pdp groups",
             response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
@@ -223,20 +231,18 @@ public class LegacyApiRestController {
             @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getSpecificVersionOfGuardPolicy(
+    public Response getDeployedVersionsOfGuardPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
-            @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
-                    .fetchGuardPolicies(policyId, policyVersion);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policies).build();
+        try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+            Map<Pair<String, String>, Map<String, LegacyGuardPolicyOutput>> deployedGuardPolicies =
+                    guardPolicyProvider.fetchDeployedGuardPolicies(policyId);
+            return makeOkResponse(requestId, deployedGuardPolicies);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/"
+                + "policies/{}/versions/deployed", policyId, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
@@ -248,9 +254,7 @@ public class LegacyApiRestController {
      * @return the Response object containing the results of the API operation
      */
     @POST
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies")
-    @Consumes("application/json; vnd.onap.guard")
-    @Produces("application/json; vnd.onap.guard")
+    @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies")
     @ApiOperation(value = "Create a new guard policy",
             notes = "Client should provide entity body of the new guard policy",
             authorizations = @Authorization(value = "basicAuth"),
@@ -289,14 +293,17 @@ public class LegacyApiRestController {
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId,
             @ApiParam(value = "Entity body of policy", required = true) LegacyGuardPolicyInput body) {
 
-        try {
-            Map<String, LegacyGuardPolicyOutput> policy = new LegacyGuardPolicyProvider().createGuardPolicy(body);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        if (NetLoggerUtil.getNetworkLogger().isInfoEnabled()) {
+            NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST,
+                            "/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies", toJson(body));
+        }
+
+        try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+            Map<String, LegacyGuardPolicyOutput> policy = guardPolicyProvider.createGuardPolicy(body);
+            return makeOkResponse(requestId, policy);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("POST /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies", pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
@@ -309,8 +316,7 @@ public class LegacyApiRestController {
      * @return the Response object containing the results of the API operation
      */
     @DELETE
-    @Path("/policytypes/onap.policy.controlloop.guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.guard")
+    @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}/versions/{policyVersion}")
     @ApiOperation(value = "Delete a particular version of a guard policy",
             notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
             authorizations = @Authorization(value = "basicAuth"),
@@ -351,28 +357,28 @@ public class LegacyApiRestController {
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            Map<String, LegacyGuardPolicyOutput> policies = new LegacyGuardPolicyProvider()
-                    .deleteGuardPolicies(policyId, policyVersion);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policies).build();
+        try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+            Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider
+                    .deleteGuardPolicy(policyId, policyVersion);
+            return makeOkResponse(requestId, policies);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("DELETE /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}/versions/{}",
+                    policyId, policyVersion, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
     /**
-     * Retrieves all versions of operational policies.
+     * Retrieves the latest version of a particular operational policy.
+     *
+     * @param policyId the ID of specified operational policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies")
-    @Produces("application/json; vnd.onap.operational")
-    @ApiOperation(value = "Retrieve all versions of operational policies",
-            notes = "Returns a list of all versions of operational policies",
+    @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{policyId}/versions/latest")
+    @ApiOperation(value = "Retrieve the latest version of a particular operational policy",
+            notes = "Returns the latest version of the specified operational policy",
             response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
@@ -402,35 +408,36 @@ public class LegacyApiRestController {
     @ApiResponses(value = {
             @ApiResponse(code = 401, message = "Authentication Error"),
             @ApiResponse(code = 403, message = "Authorization Error"),
+            @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getAllOperationalPolicies(
+    public Response getLatestVersionOfOperationalPolicy(
+            @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
-                    .fetchOperationalPolicies(null, null);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+            LegacyOperationalPolicy policy = operationalPolicyProvider.fetchOperationalPolicy(policyId, null);
+            return makeOkResponse(requestId, policy);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{}"
+                + "/versions/latest", policyId, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
     /**
-     * Retrieves all versions of a particular operational policy.
+     * Retrieves the specified version of a particular operational policy.
      *
-     * @param policyId the ID of specified operational policy
+     * @param policyId the ID of specified policy
+     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies/{policyId}")
-    @Produces("application/json; vnd.onap.operational")
-    @ApiOperation(value = "Retrieve all versions of a particular operational policy",
-            notes = "Returns a list of all versions of the specified operational policy",
+    @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+         + "policies/{policyId}/versions/{policyVersion}")
+    @ApiOperation(value = "Retrieve one version of a particular operational policy",
+            notes = "Returns a particular version of a specified operational policy",
             response = LegacyOperationalPolicy.class,
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
@@ -463,37 +470,34 @@ public class LegacyApiRestController {
             @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getAllVersionsOfOperationalPolicy(
+    public Response getSpecificVersionOfOperationalPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
+            @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
-                    .fetchOperationalPolicies(policyId, null);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+            LegacyOperationalPolicy policy = operationalPolicyProvider.fetchOperationalPolicy(policyId, policyVersion);
+            return makeOkResponse(requestId, policy);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+                + "policies/{}/versions/{}", policyId, policyVersion, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
     /**
-     * Retrieves the specified version of a particular operational policy.
+     * Retrieves deployed versions of a particular operational policy in PDP groups.
      *
      * @param policyId the ID of specified policy
-     * @param policyVersion the version of specified policy
      *
      * @return the Response object containing the results of the API operation
      */
     @GET
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/"
-         + "policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.operational")
-    @ApiOperation(value = "Retrieve one version of a particular operational policy",
-            notes = "Returns a particular version of a specified operational policy",
-            response = LegacyOperationalPolicy.class,
+    @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+         + "policies/{policyId}/versions/deployed")
+    @ApiOperation(value = "Retrieve deployed versions of a particular operational policy in pdp groups",
+            notes = "Returns deployed versions of a specified operational policy in pdp groups",
+            response = LegacyOperationalPolicy.class, responseContainer = "List",
             responseHeaders = {
                     @ResponseHeader(name = "X-MinorVersion",
                                     description = "Used to request or communicate a MINOR version back from the client"
@@ -525,20 +529,18 @@ public class LegacyApiRestController {
             @ApiResponse(code = 404, message = "Resource Not Found"),
             @ApiResponse(code = 500, message = "Internal Server Error")
         })
-    public Response getSpecificVersionOfOperationalPolicy(
+    public Response getDeployedVersionsOfOperationalPolicy(
             @PathParam("policyId") @ApiParam(value = "ID of policy", required = true) String policyId,
-            @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
-                    .fetchOperationalPolicies(policyId, policyVersion);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+            Map<Pair<String, String>, List<LegacyOperationalPolicy>> deployedOperationalPolicies =
+                    operationalPolicyProvider.fetchDeployedOperationalPolicies(policyId);
+            return makeOkResponse(requestId, deployedOperationalPolicies);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("GET /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+                + "policies/{}/versions/deployed", policyId, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
@@ -550,9 +552,7 @@ public class LegacyApiRestController {
      * @return the Response object containing the results of the API operation
      */
     @POST
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/policies")
-    @Consumes("application/json; vnd.onap.operational")
-    @Produces("application/json; vnd.onap.operational")
+    @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies")
     @ApiOperation(value = "Create a new operational policy",
             notes = "Client should provide entity body of the new operational policy",
             authorizations = @Authorization(value = "basicAuth"),
@@ -591,15 +591,17 @@ public class LegacyApiRestController {
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId,
             @ApiParam(value = "Entity body of policy", required = true) LegacyOperationalPolicy body) {
 
-        try {
-            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
-                    .createOperationalPolicy(body);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        if (NetLoggerUtil.getNetworkLogger().isInfoEnabled()) {
+            NetLoggerUtil.log(EventType.IN, CommInfrastructure.REST,
+                            "/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies", toJson(body));
+        }
+
+        try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+            LegacyOperationalPolicy policy = operationalPolicyProvider.createOperationalPolicy(body);
+            return makeOkResponse(requestId, policy);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
+            LOGGER.error("POST /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies", pfme);
+            return makeErrorResponse(requestId, pfme);
         }
     }
 
@@ -612,9 +614,8 @@ public class LegacyApiRestController {
      * @return the Response object containing the results of the API operation
      */
     @DELETE
-    @Path("/policytypes/onap.policy.controlloop.operational/versions/1.0.0/"
+    @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
          + "policies/{policyId}/versions/{policyVersion}")
-    @Produces("application/json; vnd.onap.operational")
     @ApiOperation(value = "Delete a particular version of a specified operational policy",
             notes = "Rule: the version that has been deployed in PDP group(s) cannot be deleted",
             authorizations = @Authorization(value = "basicAuth"),
@@ -655,27 +656,14 @@ public class LegacyApiRestController {
             @PathParam("policyVersion") @ApiParam(value = "Version of policy", required = true) String policyVersion,
             @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) {
 
-        try {
-            LegacyOperationalPolicy policy = new LegacyOperationalPolicyProvider()
-                    .deleteOperationalPolicies(policyId, policyVersion);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                    .entity(policy).build();
+        try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+            LegacyOperationalPolicy policy = operationalPolicyProvider
+                    .deleteOperationalPolicy(policyId, policyVersion);
+            return makeOkResponse(requestId, policy);
         } catch (PfModelException | PfModelRuntimeException pfme) {
-            return addLoggingHeaders(addVersionControlHeaders(
-                    Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
-                    .entity(pfme.getErrorResponse()).build();
-        }
-    }
-
-    private ResponseBuilder addVersionControlHeaders(ResponseBuilder rb) {
-        return rb.header("X-MinorVersion", "0").header("X-PatchVersion", "0").header("X-LatestVersion", "1.0.0");
-    }
-
-    private ResponseBuilder addLoggingHeaders(ResponseBuilder rb, UUID requestId) {
-        if (requestId == null) {
-            // Generate a random uuid if client does not embed requestId in rest request
-            return rb.header("X-ONAP-RequestID", UUID.randomUUID());
+            LOGGER.error("DELETE /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+                + "policies/{}/versions/{}", policyId, policyVersion, pfme);
+            return makeErrorResponse(requestId, pfme);
         }
-        return rb.header("X-ONAP-RequestID", requestId);
     }
 }
\ No newline at end of file