summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java')
-rw-r--r--framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java447
1 files changed, 0 insertions, 447 deletions
diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
deleted file mode 100644
index 6f80dd15..00000000
--- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/RouterWebResource.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright 2015 Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.vtnweb.resources;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
-import static javax.ws.rs.core.Response.Status.CONFLICT;
-import static javax.ws.rs.core.Response.Status.CREATED;
-import static javax.ws.rs.core.Response.Status.NOT_FOUND;
-import static javax.ws.rs.core.Response.Status.NO_CONTENT;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
-
-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;
-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.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.util.ItemNotFoundException;
-import org.onosproject.rest.AbstractWebResource;
-import org.onosproject.vtnrsc.DefaultRouter;
-import org.onosproject.vtnrsc.FixedIp;
-import org.onosproject.vtnrsc.Router;
-import org.onosproject.vtnrsc.Router.Status;
-import org.onosproject.vtnrsc.RouterGateway;
-import org.onosproject.vtnrsc.RouterId;
-import org.onosproject.vtnrsc.RouterInterface;
-import org.onosproject.vtnrsc.SubnetId;
-import org.onosproject.vtnrsc.TenantId;
-import org.onosproject.vtnrsc.TenantNetworkId;
-import org.onosproject.vtnrsc.VirtualPortId;
-import org.onosproject.vtnrsc.router.RouterService;
-import org.onosproject.vtnrsc.routerinterface.RouterInterfaceService;
-import org.onosproject.vtnweb.web.RouterCodec;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-@Path("routers")
-public class RouterWebResource extends AbstractWebResource {
- private final Logger log = LoggerFactory.getLogger(RouterWebResource.class);
- public static final String CREATE_FAIL = "Router is failed to create!";
- public static final String UPDATE_FAIL = "Router is failed to update!";
- public static final String GET_FAIL = "Router is failed to get!";
- public static final String NOT_EXIST = "Router does not exist!";
- public static final String DELETE_SUCCESS = "Router delete success!";
- public static final String JSON_NOT_NULL = "JsonNode can not be null";
- public static final String INTFACR_ADD_SUCCESS = "Interface add success";
- public static final String INTFACR_DEL_SUCCESS = "Interface delete success";
-
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- public Response listRouters() {
- Collection<Router> routers = get(RouterService.class).getRouters();
- ObjectNode result = new ObjectMapper().createObjectNode();
- result.set("routers", new RouterCodec().encode(routers, this));
- return ok(result.toString()).build();
- }
-
- @GET
- @Path("{routerUUID}")
- @Produces(MediaType.APPLICATION_JSON)
- public Response getRouter(@PathParam("routerUUID") String id,
- @QueryParam("fields") List<String> fields) {
-
- if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
- return Response.status(NOT_FOUND)
- .entity("The Router does not exists").build();
- }
- Router sub = nullIsNotFound(get(RouterService.class)
- .getRouter(RouterId.valueOf(id)),
- NOT_EXIST);
-
- ObjectNode result = new ObjectMapper().createObjectNode();
- if (fields.size() > 0) {
- result.set("router",
- new RouterCodec().extracFields(sub, this, fields));
- } else {
- result.set("router", new RouterCodec().encode(sub, this));
- }
- return ok(result.toString()).build();
- }
-
- @POST
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public Response createRouter(final InputStream input) {
- try {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
- Collection<Router> routers = createOrUpdateByInputStream(subnode);
-
- Boolean result = nullIsNotFound((get(RouterService.class)
- .createRouters(routers)),
- CREATE_FAIL);
- if (!result) {
- return Response.status(CONFLICT).entity(CREATE_FAIL).build();
- }
- return Response.status(CREATED).entity(result.toString()).build();
-
- } catch (Exception e) {
- return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
- }
- }
-
- @PUT
- @Path("{routerUUID}")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public Response updateRouter(@PathParam("routerUUID") String id,
- final InputStream input) {
- try {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
- Collection<Router> routers = createOrUpdateByInputStream(subnode);
- Boolean result = nullIsNotFound(get(RouterService.class)
- .updateRouters(routers), UPDATE_FAIL);
- if (!result) {
- return Response.status(CONFLICT).entity(UPDATE_FAIL).build();
- }
- return ok(result.toString()).build();
- } catch (Exception e) {
- return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
- }
- }
-
- @Path("{routerUUID}")
- @DELETE
- public Response deleteSingleRouter(@PathParam("routerUUID") String id)
- throws IOException {
- try {
- RouterId routerId = RouterId.valueOf(id);
- Set<RouterId> routerIds = Sets.newHashSet(routerId);
- get(RouterService.class).removeRouters(routerIds);
- return Response.status(NO_CONTENT).entity(DELETE_SUCCESS).build();
- } catch (Exception e) {
- return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
- }
- }
-
- @PUT
- @Path("{routerUUID}/add_router_interface")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public Response addRouterInterface(@PathParam("routerUUID") String id,
- final InputStream input) {
- if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
- return Response.status(NOT_FOUND).entity(NOT_EXIST).build();
- }
- try {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
- if (!subnode.hasNonNull("id")) {
- throw new IllegalArgumentException("id should not be null");
- } else if (subnode.get("id").asText().isEmpty()) {
- throw new IllegalArgumentException("id should not be empty");
- }
- RouterId routerId = RouterId.valueOf(id);
- if (!subnode.hasNonNull("subnet_id")) {
- throw new IllegalArgumentException("subnet_id should not be null");
- } else if (subnode.get("subnet_id").asText().isEmpty()) {
- throw new IllegalArgumentException("subnet_id should not be empty");
- }
- SubnetId subnetId = SubnetId.subnetId(subnode.get("subnet_id")
- .asText());
- if (!subnode.hasNonNull("tenant_id")) {
- throw new IllegalArgumentException("tenant_id should not be null");
- } else if (subnode.get("tenant_id").asText().isEmpty()) {
- throw new IllegalArgumentException("tenant_id should not be empty");
- }
- TenantId tenentId = TenantId.tenantId(subnode.get("tenant_id")
- .asText());
- if (!subnode.hasNonNull("port_id")) {
- throw new IllegalArgumentException("port_id should not be null");
- } else if (subnode.get("port_id").asText().isEmpty()) {
- throw new IllegalArgumentException("port_id should not be empty");
- }
- VirtualPortId portId = VirtualPortId.portId(subnode.get("port_id")
- .asText());
- RouterInterface routerInterface = RouterInterface
- .routerInterface(subnetId, portId, routerId, tenentId);
- get(RouterInterfaceService.class)
- .addRouterInterface(routerInterface);
- return ok(INTFACR_ADD_SUCCESS).build();
- } catch (Exception e) {
- return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
- }
- }
-
- @PUT
- @Path("{routerUUID}/remove_router_interface")
- @Produces(MediaType.APPLICATION_JSON)
- @Consumes(MediaType.APPLICATION_JSON)
- public Response removeRouterInterface(@PathParam("routerUUID") String id,
- final InputStream input) {
- if (!get(RouterService.class).exists(RouterId.valueOf(id))) {
- return Response.status(NOT_FOUND).entity(NOT_EXIST).build();
- }
- try {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode subnode = mapper.readTree(input);
- if (!subnode.hasNonNull("id")) {
- throw new IllegalArgumentException("id should not be null");
- } else if (subnode.get("id").asText().isEmpty()) {
- throw new IllegalArgumentException("id should not be empty");
- }
- RouterId routerId = RouterId.valueOf(id);
- if (!subnode.hasNonNull("subnet_id")) {
- throw new IllegalArgumentException("subnet_id should not be null");
- } else if (subnode.get("subnet_id").asText().isEmpty()) {
- throw new IllegalArgumentException("subnet_id should not be empty");
- }
- SubnetId subnetId = SubnetId.subnetId(subnode.get("subnet_id")
- .asText());
- if (!subnode.hasNonNull("port_id")) {
- throw new IllegalArgumentException("port_id should not be null");
- } else if (subnode.get("port_id").asText().isEmpty()) {
- throw new IllegalArgumentException("port_id should not be empty");
- }
- VirtualPortId portId = VirtualPortId.portId(subnode.get("port_id")
- .asText());
- if (!subnode.hasNonNull("tenant_id")) {
- throw new IllegalArgumentException("tenant_id should not be null");
- } else if (subnode.get("tenant_id").asText().isEmpty()) {
- throw new IllegalArgumentException("tenant_id should not be empty");
- }
- TenantId tenentId = TenantId.tenantId(subnode.get("tenant_id")
- .asText());
- RouterInterface routerInterface = RouterInterface
- .routerInterface(subnetId, portId, routerId, tenentId);
- get(RouterInterfaceService.class)
- .removeRouterInterface(routerInterface);
- return ok(INTFACR_DEL_SUCCESS).build();
- } catch (Exception e) {
- return Response.status(BAD_REQUEST).entity(e.getMessage()).build();
- }
- }
-
- private Collection<Router> createOrUpdateByInputStream(JsonNode subnode)
- throws Exception {
- checkNotNull(subnode, JSON_NOT_NULL);
- JsonNode routerNode = subnode.get("routers");
- if (routerNode == null) {
- routerNode = subnode.get("router");
- }
- log.debug("routerNode is {}", routerNode.toString());
-
- if (routerNode.isArray()) {
- throw new Exception("only singleton requests allowed");
- } else {
- return changeJsonToSub(routerNode);
- }
- }
-
- /**
- * Returns a collection of floatingIps from floatingIpNodes.
- *
- * @param routerNode the router json node
- * @return routers a collection of router
- * @throws Exception when any argument is illegal
- */
- public Collection<Router> changeJsonToSub(JsonNode routerNode)
- throws Exception {
- checkNotNull(routerNode, JSON_NOT_NULL);
- Map<RouterId, Router> subMap = new HashMap<RouterId, Router>();
- if (!routerNode.hasNonNull("id")) {
- new IllegalArgumentException("id should not be null");
- } else if (routerNode.get("id").asText().isEmpty()) {
- throw new IllegalArgumentException("id should not be empty");
- }
- RouterId id = RouterId.valueOf(routerNode.get("id").asText());
-
- if (!routerNode.hasNonNull("tenant_id")) {
- throw new IllegalArgumentException("tenant_id should not be null");
- } else if (routerNode.get("tenant_id").asText().isEmpty()) {
- throw new IllegalArgumentException("tenant_id should not be empty");
- }
- TenantId tenantId = TenantId.tenantId(routerNode.get("tenant_id")
- .asText());
-
- VirtualPortId gwPortId = null;
- if (routerNode.hasNonNull("gw_port_id")) {
- gwPortId = VirtualPortId.portId(routerNode.get("gw_port_id")
- .asText());
- }
-
- if (!routerNode.hasNonNull("status")) {
- throw new IllegalArgumentException("status should not be null");
- } else if (routerNode.get("status").asText().isEmpty()) {
- throw new IllegalArgumentException("status should not be empty");
- }
- Status status = Status.valueOf(routerNode.get("status").asText());
-
- String routerName = null;
- if (routerNode.hasNonNull("name")) {
- routerName = routerNode.get("name").asText();
- }
-
- boolean adminStateUp = true;
- checkArgument(routerNode.get("admin_state_up").isBoolean(),
- "admin_state_up should be boolean");
- if (routerNode.hasNonNull("admin_state_up")) {
- adminStateUp = routerNode.get("admin_state_up").asBoolean();
- }
- boolean distributed = false;
- if (routerNode.hasNonNull("distributed")) {
- distributed = routerNode.get("distributed").asBoolean();
- }
- RouterGateway gateway = null;
- if (routerNode.hasNonNull("external_gateway_info")) {
- gateway = jsonNodeToGateway(routerNode.get("external_gateway_info"));
- }
- List<String> routes = new ArrayList<String>();
- DefaultRouter routerObj = new DefaultRouter(id, routerName,
- adminStateUp, status,
- distributed, gateway,
- gwPortId, tenantId, routes);
- subMap.put(id, routerObj);
- return Collections.unmodifiableCollection(subMap.values());
- }
-
- /**
- * Changes JsonNode Gateway to the Gateway.
- *
- * @param gateway the gateway JsonNode
- * @return gateway
- */
- private RouterGateway jsonNodeToGateway(JsonNode gateway) {
- checkNotNull(gateway, JSON_NOT_NULL);
- if (!gateway.hasNonNull("network_id")) {
- throw new IllegalArgumentException("network_id should not be null");
- } else if (gateway.get("network_id").asText().isEmpty()) {
- throw new IllegalArgumentException("network_id should not be empty");
- }
- TenantNetworkId networkId = TenantNetworkId.networkId(gateway
- .get("network_id").asText());
-
- if (!gateway.hasNonNull("enable_snat")) {
- throw new IllegalArgumentException("enable_snat should not be null");
- } else if (gateway.get("enable_snat").asText().isEmpty()) {
- throw new IllegalArgumentException("enable_snat should not be empty");
- }
- checkArgument(gateway.get("enable_snat").isBoolean(),
- "enable_snat should be boolean");
- boolean enableSnat = gateway.get("enable_snat").asBoolean();
-
- if (!gateway.hasNonNull("external_fixed_ips")) {
- throw new IllegalArgumentException(
- "external_fixed_ips should not be null");
- } else if (gateway.get("external_fixed_ips").isNull()) {
- throw new IllegalArgumentException(
- "external_fixed_ips should not be empty");
- }
- Collection<FixedIp> fixedIpList = jsonNodeToFixedIp(gateway
- .get("external_fixed_ips"));
- RouterGateway gatewayObj = RouterGateway.routerGateway(networkId,
- enableSnat,
- fixedIpList);
- return gatewayObj;
- }
-
- /**
- * Changes JsonNode fixedIp to a collection of the fixedIp.
- *
- * @param fixedIp the allocationPools JsonNode
- * @return a collection of fixedIp
- */
- private Collection<FixedIp> jsonNodeToFixedIp(JsonNode fixedIp) {
- checkNotNull(fixedIp, JSON_NOT_NULL);
- ConcurrentMap<Integer, FixedIp> fixedIpMaps = Maps.newConcurrentMap();
- Integer i = 0;
- for (JsonNode node : fixedIp) {
- if (!node.hasNonNull("subnet_id")) {
- throw new IllegalArgumentException("subnet_id should not be null");
- } else if (node.get("subnet_id").asText().isEmpty()) {
- throw new IllegalArgumentException("subnet_id should not be empty");
- }
- SubnetId subnetId = SubnetId.subnetId(node.get("subnet_id")
- .asText());
- if (!node.hasNonNull("ip_address")) {
- throw new IllegalArgumentException("ip_address should not be null");
- } else if (node.get("ip_address").asText().isEmpty()) {
- throw new IllegalArgumentException("ip_address should not be empty");
- }
- IpAddress ipAddress = IpAddress.valueOf(node.get("ip_address")
- .asText());
- FixedIp fixedIpObj = FixedIp.fixedIp(subnetId, ipAddress);
-
- fixedIpMaps.putIfAbsent(i, fixedIpObj);
- i++;
- }
- return Collections.unmodifiableCollection(fixedIpMaps.values());
- }
-
- /**
- * Returns the specified item if that items is null; otherwise throws not
- * found exception.
- *
- * @param item item to check
- * @param <T> item type
- * @param message not found message
- * @return item if not null
- * @throws org.onlab.util.ItemNotFoundException if item is null
- */
- protected <T> T nullIsNotFound(T item, String message) {
- if (item == null) {
- throw new ItemNotFoundException(message);
- }
- return item;
- }
-}