package org.openstack.atlas.api.mgmt.resources; import org.openstack.atlas.api.helpers.ResponseFactory; import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider; import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerServiceEvents; import org.openstack.atlas.service.domain.pojos.DateTimeToolException; import org.openstack.atlas.util.common.exceptions.ConverterException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import java.util.Calendar; import static org.openstack.atlas.util.converters.DateTimeConverters.isoTocal; public class EventResource extends ManagementDependencyProvider { @GET @Path("loadbalancers/{id: [1-9][0-9]*}/ptr") public Response getPtrEventsByLoadBalancer(@PathParam("id") int loadbalancerId) { if (!isUserInRole("cp,ops,support")) { return ResponseFactory.accessDenied(); } org.openstack.atlas.service.domain.events.pojos.LoadBalancerServiceEvents dEvents; LoadBalancerServiceEvents rEvents = new LoadBalancerServiceEvents(); try { dEvents = getEventRepository().getAllPTREventsByLoadBalancer(loadbalancerId); rEvents = getDozerMapper().map(dEvents, rEvents.getClass()); } catch (Exception ex) { return ResponseFactory.getErrorResponse(ex, null, null); } return Response.status(200).entity(rEvents).build(); } @GET @Path("loadbalancers/{id: [1-9][0-9]*}/atomhopper") public Response getAtomHopperEventsByLoadBalancer(@PathParam("id") int loadbalancerId) { if (!isUserInRole("cp,ops,support")) { return ResponseFactory.accessDenied(); } org.openstack.atlas.service.domain.events.pojos.LoadBalancerServiceEvents dEvents; LoadBalancerServiceEvents rEvents = new LoadBalancerServiceEvents(); try { dEvents = getEventRepository().getAllAtomHopperEventsByLoadBalancer(loadbalancerId); rEvents = getDozerMapper().map(dEvents, rEvents.getClass()); } catch (Exception ex) { return ResponseFactory.getErrorResponse(ex, null, null); } return Response.status(200).entity(rEvents).build(); } @GET @Path("user/{username: [0-9A-Za-z ]+}") public Response getAllEventsByUsername(@PathParam("username") String username, @QueryParam("startDate") String startDate, @QueryParam("endDate") String endDate, @QueryParam("page") Integer page) throws DateTimeToolException, ConverterException { if (!isUserInRole("ops,support")) { return ResponseFactory.accessDenied(); } Calendar startCal; if (startDate == null) { startCal = Calendar.getInstance(); startCal.add(Calendar.MONTH, -4); } else { try { startCal = isoTocal(startDate); } catch (Exception e) { return ResponseFactory.getResponseWithStatus(Response.Status.BAD_REQUEST, "Must specify startDate in the following format: YYYY-MM-DDThh:mm:ss"); } } Calendar endCal; if (endDate == null) { endCal = Calendar.getInstance(); } else { try { endCal = isoTocal(endDate); } catch (Exception e) { return ResponseFactory.getResponseWithStatus(Response.Status.BAD_REQUEST, "Must specify endDate in the following format: YYYY-MM-DDThh:mm:ss"); } } if (page == null) { page = 1; } if (page <= 0) { page = 1; } if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) { return ResponseFactory.getResponseWithStatus(Response.Status.BAD_REQUEST, "Must specify an earlier startDate than endDate."); } org.openstack.atlas.service.domain.events.pojos.LoadBalancerServiceEvents dEvents; LoadBalancerServiceEvents rEvents = new LoadBalancerServiceEvents(); try { dEvents = getEventRepository().getAllEventsForUsername(username, page, startCal, endCal); rEvents = getDozerMapper().map(dEvents, rEvents.getClass()); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } return Response.status(200).entity(rEvents).build(); } }