X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fnetworkconfiguration%2Fneutron%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetworkconfig%2Fneutron%2Fnorthbound%2FNeutronNetworksNorthbound.java;h=9de5aef5f421eb2436ac73a6dff63e24efcf4c64;hb=c46e223995956f1f759c551163c212947c1e2fb7;hp=c08ee80e24c44f3551d949e0ff607c7264be9167;hpb=97ec40086c461eae4ab2075a11da61fabf755b42;p=controller.git
diff --git a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java
index c08ee80e24..9de5aef5f4 100644
--- a/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java
+++ b/opendaylight/northbound/networkconfiguration/neutron/src/main/java/org/opendaylight/controller/networkconfig/neutron/northbound/NeutronNetworksNorthbound.java
@@ -15,6 +15,7 @@ import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
@@ -22,23 +23,29 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Response;
import org.codehaus.enunciate.jaxrs.ResponseCode;
import org.codehaus.enunciate.jaxrs.StatusCodes;
import org.codehaus.enunciate.jaxrs.TypeHint;
+
import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkCRUD;
import org.opendaylight.controller.networkconfig.neutron.NeutronCRUDInterfaces;
import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
import org.opendaylight.controller.northbound.commons.RestMessages;
+import org.opendaylight.controller.northbound.commons.exception.BadRequestException;
+import org.opendaylight.controller.northbound.commons.exception.ResourceConflictException;
+import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException;
import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailableException;
import org.opendaylight.controller.sal.utils.ServiceHelper;
/**
- * Open DOVE Northbound REST APIs for Network.
- * This class provides REST APIs for managing open DOVE internals related to Networks
+ * Neutron Northbound REST APIs for Network.
+ * This class provides REST APIs for managing neutron Networks
*
*
*
@@ -57,6 +64,9 @@ import org.opendaylight.controller.sal.utils.ServiceHelper;
@Path("/networks")
public class NeutronNetworksNorthbound {
+ @Context
+ UriInfo uriInfo;
+
private NeutronNetwork extractFields(NeutronNetwork o, List fields) {
return o.extractFields(fields);
}
@@ -69,7 +79,7 @@ public class NeutronNetworksNorthbound {
//@TypeHint(OpenStackNetworks.class)
@StatusCodes({
@ResponseCode(code = 200, condition = "Operation successful"),
- @ResponseCode(code = 401, condition = "Unauthorized") })
+ @ResponseCode(code = 401, condition = "Unauthorized")})
public Response listNetworks(
// return fields
@QueryParam("fields") List fields,
@@ -84,13 +94,13 @@ public class NeutronNetworksNorthbound {
@QueryParam("provider_network_type") String queryProviderNetworkType,
@QueryParam("provider_physical_network") String queryProviderPhysicalNetwork,
@QueryParam("provider_segmentation_id") String queryProviderSegmentationID,
- // pagination
- @QueryParam("limit") String limit,
+ // linkTitle
+ @QueryParam("limit") Integer limit,
@QueryParam("marker") String marker,
- @QueryParam("page_reverse") String pageReverse
+ @DefaultValue("false") @QueryParam("page_reverse") Boolean pageReverse
// sorting not supported
) {
- INeutronNetworkCRUD networkInterface = NeutronCRUDInterfaces.getINeutronNetworkCRUD( this);
+ INeutronNetworkCRUD networkInterface = NeutronCRUDInterfaces.getINeutronNetworkCRUD(this);
if (networkInterface == null) {
throw new ServiceUnavailableException("Network CRUD Interface "
+ RestMessages.SERVICEUNAVAILABLE.toString());
@@ -127,9 +137,16 @@ public class NeutronNetworksNorthbound {
}
}
}
- //TODO: apply pagination to results
- return Response.status(200).entity(
- new NeutronNetworkRequest(ans)).build();
+
+ if (limit != null && ans.size() > 1) {
+ // Return a paginated request
+ NeutronNetworkRequest request = (NeutronNetworkRequest) PaginatedRequestFactory.createRequest(limit,
+ marker, pageReverse, uriInfo, ans, NeutronNetwork.class);
+ return Response.status(200).entity(request).build();
+ }
+
+ return Response.status(200).entity(new NeutronNetworkRequest(ans)).build();
+
}
/**
@@ -154,7 +171,7 @@ public class NeutronNetworksNorthbound {
+ RestMessages.SERVICEUNAVAILABLE.toString());
}
if (!networkInterface.networkExists(netUUID)) {
- return Response.status(404).build();
+ throw new ResourceNotFoundException("network UUID does not exist.");
}
if (fields.size() > 0) {
NeutronNetwork ans = networkInterface.getNetwork(netUUID);
@@ -189,7 +206,7 @@ public class NeutronNetworksNorthbound {
* network ID can't already exist
*/
if (networkInterface.networkExists(singleton.getID())) {
- return Response.status(400).build();
+ throw new BadRequestException("network UUID already exists");
}
Object[] instances = ServiceHelper.getGlobalInstances(INeutronNetworkAware.class, this, null);
@@ -226,10 +243,10 @@ public class NeutronNetworksNorthbound {
* already in this bulk request
*/
if (networkInterface.networkExists(test.getID())) {
- return Response.status(400).build();
+ throw new BadRequestException("network UUID already exists");
}
if (testMap.containsKey(test.getID())) {
- return Response.status(400).build();
+ throw new BadRequestException("network UUID already exists");
}
if (instances != null) {
for (Object instance: instances) {
@@ -285,10 +302,10 @@ public class NeutronNetworksNorthbound {
* network has to exist and only a single delta is supported
*/
if (!networkInterface.networkExists(netUUID)) {
- return Response.status(404).build();
+ throw new ResourceNotFoundException("network UUID does not exist.");
}
if (!input.isSingleton()) {
- return Response.status(400).build();
+ throw new BadRequestException("only singleton edits supported");
}
NeutronNetwork delta = input.getSingleton();
@@ -297,7 +314,7 @@ public class NeutronNetworksNorthbound {
*/
if (delta.getID() != null || delta.getTenantID() != null ||
delta.getStatus() != null) {
- return Response.status(400).build();
+ throw new BadRequestException("attribute edit blocked by Neutron");
}
Object[] instances = ServiceHelper.getGlobalInstances(INeutronNetworkAware.class, this, null);
@@ -347,10 +364,10 @@ public class NeutronNetworksNorthbound {
* network has to exist and not be in use before it can be removed
*/
if (!networkInterface.networkExists(netUUID)) {
- return Response.status(404).build();
+ throw new ResourceNotFoundException("network UUID does not exist.");
}
if (networkInterface.networkInUse(netUUID)) {
- return Response.status(409).build();
+ throw new ResourceConflictException("Network ID in use");
}
NeutronNetwork singleton = networkInterface.getNetwork(netUUID);