X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fnetworkconfiguration%2Fneutron%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetworkconfig%2Fneutron%2Fnorthbound%2FNeutronLoadBalancerPoolNorthbound.java;h=5235030b4f47da59d89582add0ee535be3e67dc5;hp=fc5357ccb5f503680b5e5c5c4220118b8a86e1d0;hb=6bc7788edc55aadd91c7e7d642799d5720cd7581;hpb=ee146664ac8ae45439c14a84fe769633c3ebf847 diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java index fc5357ccb5..5235030b4f 100644 --- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java +++ b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronLoadBalancerPoolNorthbound.java @@ -1,9 +1,11 @@ /* - * Copyright (C) 2014 Red Hat, Inc. + * Copyright (C) 2014 SDN Hub, LLC. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html + * + * Authors : Srini Seetharaman */ package org.opendaylight.controller.networkconfig.neutron.northbound; @@ -15,6 +17,7 @@ import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoo import org.opendaylight.controller.networkconfig.neutron.INeutronLoadBalancerPoolCRUD; import org.opendaylight.controller.networkconfig.neutron.NeutronCRUDInterfaces; import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPool; +import org.opendaylight.controller.networkconfig.neutron.NeutronLoadBalancerPoolMember; import org.opendaylight.controller.northbound.commons.RestMessages; import org.opendaylight.controller.northbound.commons.exception.BadRequestException; import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException; @@ -22,6 +25,7 @@ import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailab import org.opendaylight.controller.sal.utils.ServiceHelper; import javax.ws.rs.Consumes; +import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; @@ -31,6 +35,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; + import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -53,6 +58,12 @@ import java.util.List; * http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration * */ + +/** + * For now, the LB pool member data is maintained with the INeutronLoadBalancerPoolCRUD, + * and not duplicated within the INeutronLoadBalancerPoolMemberCRUD's cache. + */ + @Path("/pools") public class NeutronLoadBalancerPoolNorthbound { @@ -83,7 +94,7 @@ public class NeutronLoadBalancerPoolNorthbound { @QueryParam("healthmonitor_id") String queryLoadBalancerPoolHealthMonitorID, @QueryParam("admin_state_up") String queryLoadBalancerIsAdminStateUp, @QueryParam("status") String queryLoadBalancerPoolStatus, - @QueryParam("members") List queryLoadBalancerPoolMembers, + @QueryParam("members") List queryLoadBalancerPoolMembers, // pagination @QueryParam("limit") String limit, @QueryParam("marker") String marker, @@ -217,7 +228,7 @@ public class NeutronLoadBalancerPoolNorthbound { NeutronLoadBalancerPool test = i.next(); /* - * Verify that the firewall doesn't already exist + * Verify that the loadBalancerPool doesn't already exist */ if (loadBalancerPoolInterface.neutronLoadBalancerPoolExists(test.getLoadBalancerPoolID())) { @@ -328,4 +339,58 @@ public class NeutronLoadBalancerPoolNorthbound { } return Response.status(200).entity(new NeutronLoadBalancerPoolRequest(loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolID))).build(); } + + /** + * Deletes a LoadBalancerPool + */ + + @Path("{loadBalancerPoolUUID}") + @DELETE + @StatusCodes({ + @ResponseCode(code = 204, condition = "No Content"), + @ResponseCode(code = 401, condition = "Unauthorized"), + @ResponseCode(code = 404, condition = "Not Found"), + @ResponseCode(code = 409, condition = "Conflict"), + @ResponseCode(code = 501, condition = "Not Implemented") }) + public Response deleteLoadBalancerPool( + @PathParam("loadBalancerPoolUUID") String loadBalancerPoolUUID) { + INeutronLoadBalancerPoolCRUD loadBalancerPoolInterface = NeutronCRUDInterfaces.getINeutronLoadBalancerPoolCRUD(this); + if (loadBalancerPoolInterface == null) { + throw new ServiceUnavailableException("LoadBalancerPool CRUD Interface " + + RestMessages.SERVICEUNAVAILABLE.toString()); + } + + /* + * verify the LoadBalancerPool exists and it isn't currently in use + */ + if (!loadBalancerPoolInterface.neutronLoadBalancerPoolExists(loadBalancerPoolUUID)) { + throw new ResourceNotFoundException("LoadBalancerPool UUID does not exist."); + } + if (loadBalancerPoolInterface.neutronLoadBalancerPoolInUse(loadBalancerPoolUUID)) { + return Response.status(409).build(); + } + NeutronLoadBalancerPool singleton = loadBalancerPoolInterface.getNeutronLoadBalancerPool(loadBalancerPoolUUID); + Object[] instances = ServiceHelper.getGlobalInstances(INeutronLoadBalancerPoolAware.class, this, null); + if (instances != null) { + for (Object instance : instances) { + INeutronLoadBalancerPoolAware service = (INeutronLoadBalancerPoolAware) instance; + int status = service.canDeleteNeutronLoadBalancerPool(singleton); + if (status < 200 || status > 299) { + return Response.status(status).build(); + } + } + } + + /* + * remove it and return 204 status + */ + loadBalancerPoolInterface.removeNeutronLoadBalancerPool(loadBalancerPoolUUID); + if (instances != null) { + for (Object instance : instances) { + INeutronLoadBalancerPoolAware service = (INeutronLoadBalancerPoolAware) instance; + service.neutronLoadBalancerPoolDeleted(singleton); + } + } + return Response.status(204).build(); + } }