package org.openstack.atlas.api.mgmt.resources; import org.openstack.atlas.api.faults.HttpResponseBuilder; import org.openstack.atlas.api.helpers.ResponseFactory; import org.openstack.atlas.api.mgmt.repository.ValidatorRepository; import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider; import org.openstack.atlas.api.validation.context.HttpRequestType; import org.openstack.atlas.api.validation.results.ValidatorResult; import org.openstack.atlas.service.domain.pojos.AllAbsoluteLimits; import org.openstack.atlas.docs.loadbalancers.api.management.v1.Limit; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; public class AccountLimitsResource extends ManagementDependencyProvider { private AccountLimitResource accountLimitResource; private int accountId; private int id; @GET public Response retrieveAllLimitsForAccount(@QueryParam("offset") Integer offset, @QueryParam("limit") Integer limit, @QueryParam("marker") Integer marker) { if (!isUserInRole("cp,ops,support")) { return ResponseFactory.accessDenied(); } try { AllAbsoluteLimits accountLimits = accountLimitService.getAllAbsoluteLimitsForAccount(accountId); org.openstack.atlas.docs.loadbalancers.api.management.v1.AllAbsoluteLimits absoluteLimits = getDozerMapper() .map(accountLimits, org.openstack.atlas.docs.loadbalancers.api.management.v1.AllAbsoluteLimits.class); return Response.status(200).entity(absoluteLimits).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } @Path("{id: [1-9][0-9]*}") public AccountLimitResource retrieveLimitResource(@PathParam("id") int id) { accountLimitResource.setAccountId(accountId); accountLimitResource.setId(id); return accountLimitResource; } @POST @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response createAccountLimit(Limit limit){ if (!isUserInRole("cp,ops,support")) { return ResponseFactory.accessDenied(); } ValidatorResult result = ValidatorRepository.getValidatorFor(Limit.class).validate(limit, HttpRequestType.POST); if (!result.passedValidation()) { return Response.status(400).entity(HttpResponseBuilder.buildBadRequestResponse("Validation fault", result.getValidationErrorMessages())).build(); } try { org.openstack.atlas.service.domain.entities.AccountLimit domainAccountLimit = getDozerMapper().map(limit, org.openstack.atlas.service.domain.entities.AccountLimit.class); domainAccountLimit.setAccountId(accountId); accountLimitService.save(domainAccountLimit); return Response.status(Response.Status.ACCEPTED).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } public void setAccountLimitResource(AccountLimitResource accountLimitResource) { this.accountLimitResource = accountLimitResource; } public int getAccountId() { return accountId; } public void setAccountId(int accountId) { this.accountId = accountId; } public int getId() { return id; } public void setId(int id) { this.id = id; } }