package org.openstack.atlas.api.mgmt.resources; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIp; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIpAvailabilityReport; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIpAvailabilityReports; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIps; import org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancers; import org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIpBlocks; import org.openstack.atlas.service.domain.entities.LoadBalancer; import org.openstack.atlas.api.helpers.ResponseFactory; import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider; import java.util.List; 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 javax.ws.rs.POST; public class VirtualIpsResource extends ManagementDependencyProvider { private VirtualIpResource virtualIpResource; private VirtualIpAvailabilityReports vipAvailabilityReports; private int id; private Integer accountId; @GET public Response retrieveAllVirtualIps(@QueryParam("offset") Integer offset, @QueryParam("limit") Integer limit) { org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIps rvips = new org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIps(); if (!isUserInRole("cp,ops,support")) { return ResponseFactory.accessDenied(); } try { List<org.openstack.atlas.service.domain.entities.VirtualIp> vips = getVipRepository().getAll("id", offset, limit); for (org.openstack.atlas.service.domain.entities.VirtualIp vip : vips) { org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp rvip = getDozerMapper().map(vip, org.openstack.atlas.docs.loadbalancers.api.v1.VirtualIp.class); rvips.getVirtualIps().add(rvip); } return Response.status(200).entity(rvips).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } @Path("availabilityreport") @GET public Response retrieveAvailabilityReports() { if (!isUserInRole("cp,ops")) { return ResponseFactory.accessDenied(); } List<org.openstack.atlas.service.domain.pojos.VirtualIpAvailabilityReport> dVipReports; VirtualIpAvailabilityReport rVipReport; VirtualIpAvailabilityReports rVipReports = new VirtualIpAvailabilityReports(); dVipReports = getClusterRepository().getVirtualIpAvailabilityReport(null); for (org.openstack.atlas.service.domain.pojos.VirtualIpAvailabilityReport dr : dVipReports) { org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIpAvailabilityReport rr; rr = getDozerMapper().map(dr, org.openstack.atlas.docs.loadbalancers.api.management.v1.VirtualIpAvailabilityReport.class); rVipReports.getVirtualIpAvailabilityReports().add(rr); } return Response.status(200).entity(rVipReports).build(); } @Path("{id: [1-9][0-9]*}") public VirtualIpResource appendVirtualIpsId(@PathParam("id") int id) { virtualIpResource.setId(id); return virtualIpResource; } @Path("lbsbyvipblocks") @POST public Response getLoadBalancersByVirtualIpBlocks(VirtualIpBlocks vBlocks) { if (!isUserInRole("cp,ops")) { return ResponseFactory.accessDenied(); } org.openstack.atlas.service.domain.pojos.VirtualIpBlocks dvBlocks; List<LoadBalancer> dLoadBalancers; LoadBalancers rLoadBalancers = new LoadBalancers(); org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancer rLb; try { dvBlocks = getDozerMapper().map(vBlocks, org.openstack.atlas.service.domain.pojos.VirtualIpBlocks.class); dLoadBalancers = getVipRepository().getLbsByVirtualIp4Blocks(dvBlocks); } catch (Exception ex) { return ResponseFactory.getErrorResponse(ex, null, null); } for (LoadBalancer dLb : dLoadBalancers) { rLb = getDozerMapper().map(dLb, org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancer.class); rLoadBalancers.getLoadBalancers().add(rLb); } return Response.status(200).entity(rLoadBalancers).build(); } @GET @Path("freevips") public Response getFreeVips() { if (!isUserInRole("cp,ops")) { return ResponseFactory.accessDenied(); } List<org.openstack.atlas.service.domain.entities.VirtualIp> dvips; VirtualIps rvips = new VirtualIps(); try { dvips = getVipRepository().listFreeVirtualIps(); for (org.openstack.atlas.service.domain.entities.VirtualIp dvip : dvips) { rvips.getVirtualIps().add(getDozerMapper().map(dvip, VirtualIp.class)); } return Response.status(200).entity(rvips).build(); } catch (Exception e) { return ResponseFactory.getErrorResponse(e, null, null); } } public void setVirtualIpResource(VirtualIpResource virtualIpResource) { this.virtualIpResource = virtualIpResource; } public void setId(int id) { this.id = id; } }