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.
*/
@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"})
+@Produces("application/json")
+@Consumes("application/json")
public class LegacyApiRestController {
- /**
- * Retrieves all versions of guard policies.
- *
- * @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",
- response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
- responseHeaders = {
- @ResponseHeader(name = "X-MinorVersion",
- description = "Used to request or communicate a MINOR version back from the client"
- + " to the server, and from the server back to the client",
- response = String.class),
- @ResponseHeader(name = "X-PatchVersion",
- description = "Used only to communicate a PATCH version in a response for"
- + " troubleshooting purposes only, and will not be provided by"
- + " the client on request",
- response = String.class),
- @ResponseHeader(name = "X-LatestVersion",
- description = "Used only to communicate an API's latest version",
- response = String.class),
- @ResponseHeader(name = "X-ONAP-RequestID",
- description = "Used to track REST transactions for logging purpose",
- response = UUID.class)
- },
- authorizations = @Authorization(value = "basicAuth"),
- tags = { "Legacy Guard Policy", },
- extensions = {
- @Extension(name = "interface info", properties = {
- @ExtensionProperty(name = "api-version", value = "1.0.0"),
- @ExtensionProperty(name = "last-mod-release", value = "Dublin")
- })
- })
- @ApiResponses(value = {
- @ApiResponse(code = 401, message = "Authentication Error"),
- @ApiResponse(code = 403, message = "Authorization Error"),
- @ApiResponse(code = 500, message = "Internal Server Error")
- })
- public Response getAllGuardPolicies(
- @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();
- } catch (PfModelException | PfModelRuntimeException pfme) {
- return addLoggingHeaders(addVersionControlHeaders(
- Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
- .entity(pfme.getErrorResponse()).build();
- }
- }
+ private static final Logger LOGGER = LoggerFactory.getLogger(LegacyApiRestController.class);
/**
* Retrieves all versions of a particular 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/{policyId}")
- @Produces("application/json; vnd.onap.guard")
+ @Path("/policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{policyId}")
@ApiOperation(value = "Retrieve all versions of a particular guard policy",
notes = "Returns a list of all versions of the specified guard policy",
response = LegacyGuardPolicyOutput.class, responseContainer = "Map",
@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(policyId, null);
+ try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+ Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider.fetchGuardPolicy(policyId, null);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policies).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("GET /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}",
+ policyId, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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")
+ @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",
@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);
+ try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+ Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider
+ .fetchGuardPolicy(policyId, policyVersion);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policies).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("GET /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}/versions/{}",
+ policyId, policyVersion, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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"),
@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);
+ try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+ Map<String, LegacyGuardPolicyOutput> policy = guardPolicyProvider.createGuardPolicy(body);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policy).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("POST /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies", pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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"),
@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);
+ try (LegacyGuardPolicyProvider guardPolicyProvider = new LegacyGuardPolicyProvider()) {
+ Map<String, LegacyGuardPolicyOutput> policies = guardPolicyProvider
+ .deleteGuardPolicy(policyId, policyVersion);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policies).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
- return addLoggingHeaders(addVersionControlHeaders(
- Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
- .entity(pfme.getErrorResponse()).build();
- }
- }
-
- /**
- * Retrieves all versions of operational policies.
- *
- * @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",
- response = LegacyOperationalPolicy.class,
- responseHeaders = {
- @ResponseHeader(name = "X-MinorVersion",
- description = "Used to request or communicate a MINOR version back from the client"
- + " to the server, and from the server back to the client",
- response = String.class),
- @ResponseHeader(name = "X-PatchVersion",
- description = "Used only to communicate a PATCH version in a response for"
- + " troubleshooting purposes only, and will not be provided by"
- + " the client on request",
- response = String.class),
- @ResponseHeader(name = "X-LatestVersion",
- description = "Used only to communicate an API's latest version",
- response = String.class),
- @ResponseHeader(name = "X-ONAP-RequestID",
- description = "Used to track REST transactions for logging purpose",
- response = UUID.class)
- },
- authorizations = @Authorization(value = "basicAuth"),
- tags = { "Legacy Operational Policy", },
- extensions = {
- @Extension(name = "interface info", properties = {
- @ExtensionProperty(name = "api-version", value = "1.0.0"),
- @ExtensionProperty(name = "last-mod-release", value = "Dublin")
- })
- })
- @ApiResponses(value = {
- @ApiResponse(code = 401, message = "Authentication Error"),
- @ApiResponse(code = 403, message = "Authorization Error"),
- @ApiResponse(code = 500, message = "Internal Server Error")
- })
- public Response getAllOperationalPolicies(
- @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();
- } catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("DELETE /policytypes/onap.policies.controlloop.Guard/versions/1.0.0/policies/{}/versions/{}",
+ policyId, policyVersion, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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")
+ @Path("/policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{policyId}")
@ApiOperation(value = "Retrieve all versions of a particular operational policy",
notes = "Returns a list of all versions of the specified operational policy",
response = LegacyOperationalPolicy.class,
@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(policyId, null);
+ try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+ LegacyOperationalPolicy policy = operationalPolicyProvider.fetchOperationalPolicy(policyId, null);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policy).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("GET /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies/{}",
+ policyId, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @return the Response object containing the results of the API operation
*/
@GET
- @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 = "Retrieve one version of a particular operational policy",
notes = "Returns a particular version of a specified operational policy",
response = LegacyOperationalPolicy.class,
@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);
+ try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+ LegacyOperationalPolicy policy = operationalPolicyProvider.fetchOperationalPolicy(policyId, policyVersion);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policy).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("GET /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+ + "policies/{}/versions/{}", policyId, policyVersion, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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"),
@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);
+ try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+ LegacyOperationalPolicy policy = operationalPolicyProvider.createOperationalPolicy(body);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policy).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("POST /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/policies", pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();
* @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"),
@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);
+ try (LegacyOperationalPolicyProvider operationalPolicyProvider = new LegacyOperationalPolicyProvider()) {
+ LegacyOperationalPolicy policy = operationalPolicyProvider
+ .deleteOperationalPolicy(policyId, policyVersion);
return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
.entity(policy).build();
} catch (PfModelException | PfModelRuntimeException pfme) {
+ LOGGER.error("DELETE /policytypes/onap.policies.controlloop.Operational/versions/1.0.0/"
+ + "policies/{}/versions/{}", policyId, policyVersion, pfme);
return addLoggingHeaders(addVersionControlHeaders(
Response.status(pfme.getErrorResponse().getResponseCode())), requestId)
.entity(pfme.getErrorResponse()).build();