diff options
Diffstat (limited to 'framework/src/onos/apps/vtn/vtnweb')
47 files changed, 0 insertions, 5400 deletions
diff --git a/framework/src/onos/apps/vtn/vtnweb/pom.xml b/framework/src/onos/apps/vtn/vtnweb/pom.xml deleted file mode 100644 index 0aa1f616..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/pom.xml +++ /dev/null @@ -1,87 +0,0 @@ -<?xml version="1.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. - --> -<project - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" - xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.onosproject</groupId> - <artifactId>onos-app-vtn</artifactId> - <version>1.4.0-rc1</version> - <relativePath>../pom.xml</relativePath> - </parent> - - - <artifactId>onos-app-vtn-web</artifactId> - <packaging>bundle</packaging> - <properties> - <web.context>/onos/vtn</web.context> - </properties> - - <dependencies> - <dependency> - <groupId>javax.ws.rs</groupId> - <artifactId>jsr311-api</artifactId> - <version>1.1.1</version> - </dependency> - <dependency> - <groupId>org.onosproject</groupId> - <artifactId>onos-app-vtn-rsc</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - <extensions>true</extensions> - <configuration> - <instructions> - <_wab>src/main/webapp/</_wab> - <Bundle-SymbolicName> - ${project.groupId}.${project.artifactId} - </Bundle-SymbolicName> - <Import-Package> - org.slf4j, - org.osgi.framework, - javax.ws.rs, - javax.ws.rs.core, - com.sun.jersey.api.core, - com.sun.jersey.spi.container.servlet, - com.sun.jersey.server.impl.container.servlet, - com.fasterxml.jackson.databind, - com.fasterxml.jackson.databind.node, - com.fasterxml.jackson.core, - org.apache.karaf.shell.commands, - org.apache.commons.lang.math.*, - com.google.common.*, - org.onlab.packet.*, - org.onlab.rest.*, - org.onosproject.*, - org.onlab.util.*, - org.jboss.netty.util.* - </Import-Package> - <Web-ContextPath>${web.context}</Web-ContextPath> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - -</project>
\ No newline at end of file diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java deleted file mode 100644 index f7e97d5d..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FloatingIpWebResource.java +++ /dev/null @@ -1,285 +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.checkNotNull; -import static javax.ws.rs.core.Response.Status.BAD_REQUEST; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; -import static javax.ws.rs.core.Response.Status.CREATED; -import static javax.ws.rs.core.Response.Status.CONFLICT; -import static javax.ws.rs.core.Response.Status.NO_CONTENT; - -import java.io.IOException; -import java.io.InputStream; -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 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.DefaultFloatingIp; -import org.onosproject.vtnrsc.FloatingIp; -import org.onosproject.vtnrsc.FloatingIpId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.RouterId; -import org.onosproject.vtnrsc.FloatingIp.Status; -import org.onosproject.vtnrsc.floatingip.FloatingIpService; -import org.onosproject.vtnweb.web.FloatingIpCodec; -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.Sets; - -@Path("floatingips") -public class FloatingIpWebResource extends AbstractWebResource { - private final Logger log = LoggerFactory - .getLogger(FloatingIpWebResource.class); - public static final String CREATE_FAIL = "Floating IP is failed to create!"; - public static final String UPDATE_FAIL = "Floating IP is failed to update!"; - public static final String GET_FAIL = "Floating IP is failed to get!"; - public static final String NOT_EXIST = "Floating IP does not exist!"; - public static final String DELETE_SUCCESS = "Floating IP delete success!"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response listFloatingIps() { - Collection<FloatingIp> floatingIps = get(FloatingIpService.class) - .getFloatingIps(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("floatingips", - new FloatingIpCodec().encode(floatingIps, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{floatingIpUUID}") - @Produces(MediaType.APPLICATION_JSON) - public Response getFloatingIp(@PathParam("floatingIpUUID") String id, - @QueryParam("fields") List<String> fields) { - - if (!get(FloatingIpService.class).exists(FloatingIpId.of(id))) { - return Response.status(NOT_FOUND).entity(NOT_EXIST).build(); - } - FloatingIp sub = nullIsNotFound(get(FloatingIpService.class) - .getFloatingIp(FloatingIpId.of(id)), GET_FAIL); - - ObjectNode result = new ObjectMapper().createObjectNode(); - if (fields.size() > 0) { - result.set("floatingip", - new FloatingIpCodec().extracFields(sub, this, fields)); - } else { - result.set("floatingip", new FloatingIpCodec().encode(sub, this)); - } - return ok(result.toString()).build(); - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createFloatingIp(final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = mapper.readTree(input); - Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound((get(FloatingIpService.class) - .createFloatingIps(floatingIps)), - 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("{floatingIpUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateFloatingIp(@PathParam("floatingIpUUID") String id, - final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = mapper.readTree(input); - Collection<FloatingIp> floatingIps = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound(get(FloatingIpService.class) - .updateFloatingIps(floatingIps), 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("{floatingIpUUID}") - @DELETE - public Response deleteSingleFloatingIp(@PathParam("floatingIpUUID") String id) - throws IOException { - try { - FloatingIpId floatingIpId = FloatingIpId.of(id); - Set<FloatingIpId> floatingIpIds = Sets.newHashSet(floatingIpId); - get(FloatingIpService.class).removeFloatingIps(floatingIpIds); - return Response.status(NO_CONTENT).entity(DELETE_SUCCESS).build(); - } catch (Exception e) { - return Response.status(NOT_FOUND).entity(e.getMessage()).build(); - } - } - - private Collection<FloatingIp> createOrUpdateByInputStream(JsonNode subnode) - throws Exception { - checkNotNull(subnode, JSON_NOT_NULL); - Collection<FloatingIp> floatingIps = null; - JsonNode floatingIpNodes = subnode.get("floatingips"); - if (floatingIpNodes == null) { - floatingIpNodes = subnode.get("floatingip"); - } - log.debug("floatingNodes is {}", floatingIpNodes.toString()); - - if (floatingIpNodes.isArray()) { - throw new IllegalArgumentException("only singleton requests allowed"); - } else { - floatingIps = changeJsonToSub(floatingIpNodes); - } - return floatingIps; - } - - /** - * Returns a collection of floatingIps from floatingIpNodes. - * - * @param floatingIpNodes the floatingIp json node - * @return floatingIps a collection of floatingIp - * @throws Exception when any argument is illegal - */ - public Collection<FloatingIp> changeJsonToSub(JsonNode floatingIpNodes) - throws Exception { - checkNotNull(floatingIpNodes, JSON_NOT_NULL); - Map<FloatingIpId, FloatingIp> subMap = new HashMap<FloatingIpId, FloatingIp>(); - if (!floatingIpNodes.hasNonNull("id")) { - throw new IllegalArgumentException("id should not be null"); - } else if (floatingIpNodes.get("id").asText().isEmpty()) { - throw new IllegalArgumentException("id should not be empty"); - } - FloatingIpId id = FloatingIpId.of(floatingIpNodes.get("id") - .asText()); - - if (!floatingIpNodes.hasNonNull("tenant_id")) { - throw new IllegalArgumentException("tenant_id should not be null"); - } else if (floatingIpNodes.get("tenant_id").asText().isEmpty()) { - throw new IllegalArgumentException("tenant_id should not be empty"); - } - TenantId tenantId = TenantId.tenantId(floatingIpNodes.get("tenant_id") - .asText()); - - if (!floatingIpNodes.hasNonNull("floating_network_id")) { - throw new IllegalArgumentException( - "floating_network_id should not be null"); - } else if (floatingIpNodes.get("floating_network_id").asText() - .isEmpty()) { - throw new IllegalArgumentException( - "floating_network_id should not be empty"); - } - TenantNetworkId networkId = TenantNetworkId.networkId(floatingIpNodes - .get("floating_network_id").asText()); - - VirtualPortId portId = null; - if (floatingIpNodes.hasNonNull("port_id")) { - portId = VirtualPortId.portId(floatingIpNodes.get("port_id") - .asText()); - } - - RouterId routerId = null; - if (floatingIpNodes.hasNonNull("router_id")) { - routerId = RouterId.valueOf(floatingIpNodes.get("router_id") - .asText()); - } - - IpAddress fixedIp = null; - if (floatingIpNodes.hasNonNull("fixed_ip_address")) { - fixedIp = IpAddress.valueOf(floatingIpNodes.get("fixed_ip_address") - .asText()); - } - - if (!floatingIpNodes.hasNonNull("floating_ip_address")) { - throw new IllegalArgumentException( - "floating_ip_address should not be null"); - } else if (floatingIpNodes.get("floating_ip_address").asText() - .isEmpty()) { - throw new IllegalArgumentException( - "floating_ip_address should not be empty"); - } - IpAddress floatingIp = IpAddress.valueOf(floatingIpNodes - .get("floating_ip_address").asText()); - - if (!floatingIpNodes.hasNonNull("status")) { - throw new IllegalArgumentException("status should not be null"); - } else if (floatingIpNodes.get("status").asText().isEmpty()) { - throw new IllegalArgumentException("status should not be empty"); - } - Status status = Status.valueOf(floatingIpNodes.get("status").asText()); - - DefaultFloatingIp floatingIpObj = new DefaultFloatingIp(id, tenantId, - networkId, - portId, - routerId, - floatingIp, - fixedIp, status); - subMap.put(id, floatingIpObj); - return Collections.unmodifiableCollection(subMap.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; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java deleted file mode 100644 index 4fd3fa48..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/FlowClassifierWebResource.java +++ /dev/null @@ -1,164 +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 javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; - -import java.io.IOException; -import java.io.InputStream; - -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program flow classifier. - */ -@Path("flow_classifiers") -public class FlowClassifierWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(FlowClassifierWebResource.class); - - public static final String FLOW_CLASSIFIER_NOT_FOUND = "Flow classifier not found"; - - /** - * Get all flow classifiers created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response getFlowClassifiers() { - Iterable<FlowClassifier> flowClassifiers = get(FlowClassifierService.class).getFlowClassifiers(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode flowClassifierEntry = result.putArray("flow_classifiers"); - if (flowClassifiers != null) { - for (final FlowClassifier flowClassifier : flowClassifiers) { - flowClassifierEntry.add(codec(FlowClassifier.class).encode(flowClassifier, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a flow classifier. - * - * @param id - * flow classifier id - * @return 200 OK , 404 if given identifier does not exist - */ - @GET - @Path("{flow_id}") - @Produces(MediaType.APPLICATION_JSON) - public Response getFlowClassifier(@PathParam("flow_id") String id) { - FlowClassifier flowClassifier = nullIsNotFound(get(FlowClassifierService.class) - .getFlowClassifier(FlowClassifierId.of(id)), FLOW_CLASSIFIER_NOT_FOUND); - - ObjectNode result = mapper().createObjectNode(); - result.set("flow_classifier", codec(FlowClassifier.class).encode(flowClassifier, this)); - - return ok(result.toString()).build(); - } - - /** - * Creates and stores a new flow classifier. - * - * @param stream - * flow classifier from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createFlowClassifier(InputStream stream) { - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode flow = jsonTree.get("flow_classifier"); - - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this); - Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).createFlowClassifier(flowClassifier), - FLOW_CLASSIFIER_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException ex) { - log.error("Exception while creating flow classifier {}.", ex.toString()); - throw new IllegalArgumentException(ex); - } - } - - /** - * Update details of a flow classifier. - * - * @param id - * flow classifier id - * @param stream - * InputStream - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{flow_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateFlowClassifier(@PathParam("flow_id") String id, final InputStream stream) { - try { - - JsonNode jsonTree = mapper().readTree(stream); - JsonNode flow = jsonTree.get("flow_classifier"); - FlowClassifier flowClassifier = codec(FlowClassifier.class).decode((ObjectNode) flow, this); - Boolean result = nullIsNotFound(get(FlowClassifierService.class).updateFlowClassifier(flowClassifier), - FLOW_CLASSIFIER_NOT_FOUND); - return Response.status(OK).entity(result.toString()).build(); - } catch (IOException e) { - log.error("Update flow classifier failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a flow classifier. - * - * @param id - * flow classifier id - */ - @Path("{flow_id}") - @DELETE - public void deleteFlowClassifier(@PathParam("flow_id") String id) { - log.debug("Deletes flow classifier by identifier {}.", id); - FlowClassifierId flowClassifierId = FlowClassifierId.of(id); - Boolean issuccess = nullIsNotFound(get(FlowClassifierService.class).removeFlowClassifier(flowClassifierId), - FLOW_CLASSIFIER_NOT_FOUND); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java deleted file mode 100644 index e7b908b7..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortChainWebResource.java +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2014-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 javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; - -import java.io.IOException; -import java.io.InputStream; - -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port chain. - */ - -@Path("port_chains") -public class PortChainWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortChainWebResource.class); - public static final String PORT_CHAIN_NOT_FOUND = "Port chain not found"; - public static final String PORT_CHAIN_ID_EXIST = "Port chain exists"; - public static final String PORT_CHAIN_ID_NOT_EXIST = "Port chain does not exist with identifier"; - - /** - * Get details of all port chains created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response getPortChains() { - Iterable<PortChain> portChains = get(PortChainService.class).getPortChains(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portChainEntry = result.putArray("port_chains"); - if (portChains != null) { - for (final PortChain portChain : portChains) { - portChainEntry.add(codec(PortChain.class).encode(portChain, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port chain id. - * - * @param id port chain id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{chain_id}") - @Produces(MediaType.APPLICATION_JSON) - public Response getPortPain(@PathParam("chain_id") String id) { - - PortChain portChain = nullIsNotFound(get(PortChainService.class).getPortChain(PortChainId.of(id)), - PORT_CHAIN_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - result.set("port_chain", codec(PortChain.class).encode(portChain, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port chain. - * - * @param stream port chain from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortChain(InputStream stream) { - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode port = jsonTree.get("port_chain"); - PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this); - Boolean issuccess = nullIsNotFound(get(PortChainService.class).createPortChain(portChain), - PORT_CHAIN_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port chain {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port chain id. - * - * @param id port chain id - * @param stream port chain json - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{chain_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPain(@PathParam("chain_id") String id, - final InputStream stream) { - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode port = jsonTree.get("port_chain"); - PortChain portChain = codec(PortChain.class).decode((ObjectNode) port, this); - Boolean result = nullIsNotFound(get(PortChainService.class).updatePortChain(portChain), - PORT_CHAIN_NOT_FOUND); - return Response.status(OK).entity(result.toString()).build(); - } catch (IOException e) { - log.error("Update port chain failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port chain id. - * - * @param id port chain id - */ - @Path("{chain_id}") - @DELETE - public void deletePortPain(@PathParam("chain_id") String id) { - log.debug("Deletes port chain by identifier {}.", id); - PortChainId portChainId = PortChainId.of(id); - - Boolean issuccess = nullIsNotFound(get(PortChainService.class).removePortChain(portChainId), - PORT_CHAIN_NOT_FOUND); - if (!issuccess) { - log.debug("Port Chain identifier {} does not exist", id); - } - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java deleted file mode 100644 index dc5328a2..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairGroupWebResource.java +++ /dev/null @@ -1,168 +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 javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; - -import java.io.IOException; -import java.io.InputStream; - -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -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.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port pair group. - */ - -@Path("port_pair_groups") -public class PortPairGroupWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortPairGroupWebResource.class); - public static final String PORT_PAIR_GROUP_NOT_FOUND = "Port pair group not found"; - public static final String PORT_PAIR_GROUP_ID_EXIST = "Port pair group exists"; - public static final String PORT_PAIR_GROUP_ID_NOT_EXIST = "Port pair group does not exist with identifier"; - - /** - * Get details of all port pair groups created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response getPortPairGroups() { - Iterable<PortPairGroup> portPairGroups = get(PortPairGroupService.class).getPortPairGroups(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portPairGroupEntry = result.putArray("port_pair_groups"); - if (portPairGroups != null) { - for (final PortPairGroup portPairGroup : portPairGroups) { - portPairGroupEntry.add(codec(PortPairGroup.class).encode(portPairGroup, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port pair group id. - * - * @param id port pair group id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{group_id}") - @Produces(MediaType.APPLICATION_JSON) - public Response getPortPairGroup(@PathParam("group_id") String id) { - PortPairGroup portPairGroup = nullIsNotFound(get(PortPairGroupService.class) - .getPortPairGroup(PortPairGroupId.of(id)), - PORT_PAIR_GROUP_NOT_FOUND); - - ObjectNode result = mapper().createObjectNode(); - result.set("port_pair_group", codec(PortPairGroup.class).encode(portPairGroup, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port pair group. - * - * @param stream port pair group from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortPairGroup(InputStream stream) { - - try { - ObjectMapper mapper = new ObjectMapper(); - ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); - JsonNode port = jsonTree.get("port_pair_group"); - - PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this); - Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).createPortPairGroup(portPairGroup), - PORT_PAIR_GROUP_NOT_FOUND); - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port pair group {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port pair group id. - * - * @param id port pair group id - * @param stream port pair group from json - * @return 200 OK, 404 if given identifier does not exist - */ - @PUT - @Path("{group_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPairGroup(@PathParam("group_id") String id, - final InputStream stream) { - try { - ObjectMapper mapper = new ObjectMapper(); - ObjectNode jsonTree = (ObjectNode) mapper.readTree(stream); - JsonNode port = jsonTree.get("port_pair_group"); - PortPairGroup portPairGroup = codec(PortPairGroup.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairGroupService.class).updatePortPairGroup(portPairGroup), - PORT_PAIR_GROUP_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Update port pair group failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port pair group id. - * - * @param id port pair group id - */ - @Path("{group_id}") - @DELETE - public void deletePortPairGroup(@PathParam("group_id") String id) { - log.debug("Deletes port pair group by identifier {}.", id); - PortPairGroupId portPairGroupId = PortPairGroupId.of(id); - Boolean issuccess = nullIsNotFound(get(PortPairGroupService.class).removePortPairGroup(portPairGroupId), - PORT_PAIR_GROUP_NOT_FOUND); - if (!issuccess) { - log.debug("Port pair group identifier {} does not exist", id); - } - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java deleted file mode 100644 index 4ed8ecd8..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/PortPairWebResource.java +++ /dev/null @@ -1,159 +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 javax.ws.rs.core.Response.Status.OK; -import static org.onlab.util.Tools.nullIsNotFound; - -import java.io.IOException; -import java.io.InputStream; - -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Query and program port pair. - */ -@Path("port_pairs") -public class PortPairWebResource extends AbstractWebResource { - - private final Logger log = LoggerFactory.getLogger(PortPairWebResource.class); - public static final String PORT_PAIR_NOT_FOUND = "Port pair not found"; - public static final String PORT_PAIR_ID_EXIST = "Port pair exists"; - public static final String PORT_PAIR_ID_NOT_EXIST = "Port pair does not exist with identifier"; - - /** - * Get details of all port pairs created. - * - * @return 200 OK - */ - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response getPortPairs() { - Iterable<PortPair> portPairs = get(PortPairService.class).getPortPairs(); - ObjectNode result = mapper().createObjectNode(); - ArrayNode portPairEntry = result.putArray("port_pairs"); - if (portPairs != null) { - for (final PortPair portPair : portPairs) { - portPairEntry.add(codec(PortPair.class).encode(portPair, this)); - } - } - return ok(result.toString()).build(); - } - - /** - * Get details of a specified port pair id. - * - * @param id port pair id - * @return 200 OK, 404 if given identifier does not exist - */ - @GET - @Path("{pair_id}") - @Produces(MediaType.APPLICATION_JSON) - public Response getPortPair(@PathParam("pair_id") String id) { - PortPair portPair = nullIsNotFound(get(PortPairService.class).getPortPair(PortPairId.of(id)), - PORT_PAIR_NOT_FOUND); - ObjectNode result = mapper().createObjectNode(); - result.set("port_pair", codec(PortPair.class).encode(portPair, this)); - return ok(result.toString()).build(); - } - - /** - * Creates a new port pair. - * - * @param stream port pair from JSON - * @return status of the request - CREATED if the JSON is correct, - * BAD_REQUEST if the JSON is invalid - */ - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPortPair(InputStream stream) { - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode port = jsonTree.get("port_pair"); - PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).createPortPair(portPair), - PORT_PAIR_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Exception while creating port pair {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Update details of a specified port pair id. - * - * @param id port pair id - * @param stream port pair from json - * @return 200 OK, 404 if the given identifier does not exist - */ - @PUT - @Path("{pair_id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updatePortPair(@PathParam("pair_id") String id, - final InputStream stream) { - try { - ObjectNode jsonTree = (ObjectNode) mapper().readTree(stream); - JsonNode port = jsonTree.get("port_pair"); - PortPair portPair = codec(PortPair.class).decode((ObjectNode) port, this); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).updatePortPair(portPair), - PORT_PAIR_NOT_FOUND); - return Response.status(OK).entity(isSuccess.toString()).build(); - } catch (IOException e) { - log.error("Update port pair failed because of exception {}.", e.toString()); - throw new IllegalArgumentException(e); - } - } - - /** - * Delete details of a specified port pair id. - * - * @param id port pair id - */ - @Path("{pair_id}") - @DELETE - public void deletePortPair(@PathParam("pair_id") String id) { - - PortPairId portPairId = PortPairId.of(id); - Boolean isSuccess = nullIsNotFound(get(PortPairService.class).removePortPair(portPairId), PORT_PAIR_NOT_FOUND); - if (!isSuccess) { - log.debug("Port pair identifier {} does not exist", id); - } - } -} 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; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java deleted file mode 100644 index 0cc59a4e..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/SubnetWebResource.java +++ /dev/null @@ -1,379 +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.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.IpAddress.Version; -import org.onlab.packet.IpPrefix; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.AllocationPool; -import org.onosproject.vtnrsc.DefaultAllocationPool; -import org.onosproject.vtnrsc.DefaultHostRoute; -import org.onosproject.vtnrsc.DefaultSubnet; -import org.onosproject.vtnrsc.HostRoute; -import org.onosproject.vtnrsc.Subnet; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.Subnet.Mode; -import org.onosproject.vtnrsc.subnet.SubnetService; -import org.onosproject.vtnweb.web.SubnetCodec; -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("subnets") -public class SubnetWebResource extends AbstractWebResource { - private final Logger log = LoggerFactory.getLogger(SubnetWebResource.class); - public static final String SUBNET_NOT_CREATED = "Subnet failed to create!"; - public static final String SUBNET_NOT_FOUND = "Subnet is not found"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - @GET - @Produces(MediaType.APPLICATION_JSON) - public Response listSubnets() { - Iterable<Subnet> subnets = get(SubnetService.class).getSubnets(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("subnets", new SubnetCodec().encode(subnets, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{subnetUUID}") - @Produces(MediaType.APPLICATION_JSON) - public Response getSubnet(@PathParam("subnetUUID") String id) { - - if (!get(SubnetService.class).exists(SubnetId.subnetId(id))) { - return Response.status(NOT_FOUND) - .entity(SUBNET_NOT_FOUND).build(); - } - Subnet sub = nullIsNotFound(get(SubnetService.class) - .getSubnet(SubnetId.subnetId(id)), - SUBNET_NOT_FOUND); - - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("subnet", new SubnetCodec().encode(sub, this)); - return ok(result.toString()).build(); - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createSubnet(final InputStream input) { - - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = mapper.readTree(input); - Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound((get(SubnetService.class) - .createSubnets(subnets)), - SUBNET_NOT_CREATED); - - if (!result) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(SUBNET_NOT_CREATED).build(); - } - return Response.status(202).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{subnetUUID}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateSubnet(@PathParam("id") String id, - final InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode subnode = mapper.readTree(input); - Iterable<Subnet> subnets = createOrUpdateByInputStream(subnode); - Boolean result = nullIsNotFound(get(SubnetService.class) - .updateSubnets(subnets), SUBNET_NOT_FOUND); - if (!result) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(SUBNET_NOT_FOUND).build(); - } - return Response.status(203).entity(result.toString()).build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @Path("{subnetUUID}") - @DELETE - public Response deleteSingleSubnet(@PathParam("subnetUUID") String id) - throws IOException { - try { - SubnetId subId = SubnetId.subnetId(id); - Set<SubnetId> subIds = new HashSet<>(); - subIds.add(subId); - get(SubnetService.class).removeSubnets(subIds); - return Response.status(201).entity("SUCCESS").build(); - } catch (Exception e) { - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - private Iterable<Subnet> createOrUpdateByInputStream(JsonNode subnode) { - checkNotNull(subnode, JSON_NOT_NULL); - Iterable<Subnet> subnets = null; - JsonNode subnetNodes = subnode.get("subnets"); - if (subnetNodes == null) { - subnetNodes = subnode.get("subnet"); - } - log.debug("subnetNodes is {}", subnetNodes.toString()); - if (subnetNodes.isArray()) { - subnets = changeJsonToSubs(subnetNodes); - } else { - subnets = changeJsonToSub(subnetNodes); - } - return subnets; - } - - /** - * Returns a collection of subnets from subnetNodes. - * - * @param subnetNodes the subnet json node - * @return subnets a collection of subnets - */ - public Iterable<Subnet> changeJsonToSubs(JsonNode subnetNodes) { - checkNotNull(subnetNodes, JSON_NOT_NULL); - Map<SubnetId, Subnet> subMap = new HashMap<>(); - for (JsonNode subnetNode : subnetNodes) { - if (!subnetNode.hasNonNull("id")) { - return null; - } - SubnetId id = SubnetId.subnetId(subnetNode.get("id").asText()); - String subnetName = subnetNode.get("name").asText(); - TenantId tenantId = TenantId - .tenantId(subnetNode.get("tenant_id").asText()); - TenantNetworkId networkId = TenantNetworkId - .networkId(subnetNode.get("network_id").asText()); - String version = subnetNode.get("ip_version").asText(); - Version ipVersion; - switch (version) { - case "4": - ipVersion = Version.INET; - break; - case "6": - ipVersion = Version.INET; - break; - default: - throw new IllegalArgumentException("ipVersion should be 4 or 6."); - } - IpPrefix cidr = IpPrefix.valueOf(subnetNode.get("cidr").asText()); - IpAddress gatewayIp = IpAddress - .valueOf(subnetNode.get("gateway_ip").asText()); - Boolean dhcpEnabled = subnetNode.get("enable_dhcp").asBoolean(); - Boolean shared = subnetNode.get("shared").asBoolean(); - JsonNode hostRoutes = subnetNode.get("host_routes"); - Iterable<HostRoute> hostRoutesIt = jsonNodeToHostRoutes(hostRoutes); - JsonNode allocationPools = subnetNode.get("allocation_pools"); - Iterable<AllocationPool> allocationPoolsIt = jsonNodeToAllocationPools(allocationPools); - Mode ipV6AddressMode = Mode - .valueOf(subnetNode.get("ipv6_address_mode").asText()); - Mode ipV6RaMode = Mode - .valueOf(subnetNode.get("ipv6_ra_mode").asText()); - Subnet subnet = new DefaultSubnet(id, subnetName, networkId, - tenantId, ipVersion, cidr, - gatewayIp, dhcpEnabled, shared, - Sets.newHashSet(hostRoutesIt), ipV6AddressMode, - ipV6RaMode, Sets.newHashSet(allocationPoolsIt)); - subMap.put(id, subnet); - } - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Returns a collection of subnets from subnetNodes. - * - * @param subnetNodes the subnet json node - * @return subnets a collection of subnets - */ - public Iterable<Subnet> changeJsonToSub(JsonNode subnetNodes) { - checkNotNull(subnetNodes, JSON_NOT_NULL); - checkArgument(subnetNodes.get("enable_dhcp").isBoolean(), "enable_dhcp should be boolean"); - checkArgument(subnetNodes.get("shared").isBoolean(), "shared should be boolean"); - Map<SubnetId, Subnet> subMap = new HashMap<>(); - if (!subnetNodes.hasNonNull("id")) { - return null; - } - SubnetId id = SubnetId.subnetId(subnetNodes.get("id").asText()); - String subnetName = subnetNodes.get("name").asText(); - TenantId tenantId = TenantId - .tenantId(subnetNodes.get("tenant_id").asText()); - TenantNetworkId networkId = TenantNetworkId - .networkId(subnetNodes.get("network_id").asText()); - String version = subnetNodes.get("ip_version").asText(); - Version ipVersion; - switch (version) { - case "4": - ipVersion = Version.INET; - break; - case "6": - ipVersion = Version.INET; - break; - default: - throw new IllegalArgumentException("ipVersion should be 4 or 6."); - } - - IpPrefix cidr = IpPrefix.valueOf(subnetNodes.get("cidr").asText()); - IpAddress gatewayIp = IpAddress - .valueOf(subnetNodes.get("gateway_ip").asText()); - Boolean dhcpEnabled = subnetNodes.get("enable_dhcp").asBoolean(); - Boolean shared = subnetNodes.get("shared").asBoolean(); - JsonNode hostRoutes = subnetNodes.get("host_routes"); - Iterable<HostRoute> hostRoutesIt = jsonNodeToHostRoutes(hostRoutes); - JsonNode allocationPools = subnetNodes.get("allocation_pools"); - Iterable<AllocationPool> allocationPoolsIt = jsonNodeToAllocationPools(allocationPools); - - Mode ipV6AddressMode = getMode(subnetNodes.get("ipv6_address_mode") - .asText()); - Mode ipV6RaMode = getMode(subnetNodes.get("ipv6_ra_mode").asText()); - - Subnet subnet = new DefaultSubnet(id, subnetName, networkId, tenantId, - ipVersion, cidr, gatewayIp, - dhcpEnabled, shared, Sets.newHashSet(hostRoutesIt), - ipV6AddressMode, ipV6RaMode, - Sets.newHashSet(allocationPoolsIt)); - subMap.put(id, subnet); - return Collections.unmodifiableCollection(subMap.values()); - } - - /** - * Gets ipv6_address_mode or ipv6_ra_mode type. - * - * @param mode the String value in JsonNode - * @return ipV6Mode Mode of the ipV6Mode - */ - private Mode getMode(String mode) { - Mode ipV6Mode; - if (mode == null) { - return null; - } - switch (mode) { - case "dhcpv6-stateful": - ipV6Mode = Mode.DHCPV6_STATEFUL; - break; - case "dhcpv6-stateless": - ipV6Mode = Mode.DHCPV6_STATELESS; - break; - case "slaac": - ipV6Mode = Mode.SLAAC; - break; - default: - ipV6Mode = null; - } - return ipV6Mode; - } - - /** - * Changes JsonNode alocPools to a collection of the alocPools. - * - * @param allocationPools the allocationPools JsonNode - * @return a collection of allocationPools - */ - public Iterable<AllocationPool> jsonNodeToAllocationPools(JsonNode allocationPools) { - checkNotNull(allocationPools, JSON_NOT_NULL); - ConcurrentMap<Integer, AllocationPool> alocplMaps = Maps - .newConcurrentMap(); - Integer i = 0; - for (JsonNode node : allocationPools) { - IpAddress startIp = IpAddress.valueOf(node.get("start").asText()); - IpAddress endIp = IpAddress.valueOf(node.get("end").asText()); - AllocationPool alocPls = new DefaultAllocationPool(startIp, endIp); - alocplMaps.putIfAbsent(i, alocPls); - i++; - } - return Collections.unmodifiableCollection(alocplMaps.values()); - } - - /** - * Changes hostRoutes JsonNode to a collection of the hostRoutes. - * - * @param hostRoutes the hostRoutes json node - * @return a collection of hostRoutes - */ - public Iterable<HostRoute> jsonNodeToHostRoutes(JsonNode hostRoutes) { - checkNotNull(hostRoutes, JSON_NOT_NULL); - ConcurrentMap<Integer, HostRoute> hostRouteMaps = Maps - .newConcurrentMap(); - Integer i = 0; - for (JsonNode node : hostRoutes) { - IpAddress nexthop = IpAddress.valueOf(node.get("nexthop").asText()); - IpPrefix destination = IpPrefix.valueOf(node.get("destination") - .asText()); - HostRoute hostRoute = new DefaultHostRoute(nexthop, destination); - hostRouteMaps.putIfAbsent(i, hostRoute); - i++; - } - return Collections.unmodifiableCollection(hostRouteMaps.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; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java deleted file mode 100644 index fd2c4790..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/TenantNetworkWebResource.java +++ /dev/null @@ -1,364 +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.checkNotNull; -import static com.google.common.base.Preconditions.checkArgument; -import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.OK; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; - -import java.io.InputStream; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -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.util.ItemNotFoundException; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.DefaultTenantNetwork; -import org.onosproject.vtnrsc.PhysicalNetwork; -import org.onosproject.vtnrsc.SegmentationId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetwork; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.TenantNetwork.State; -import org.onosproject.vtnrsc.TenantNetwork.Type; -import org.onosproject.vtnrsc.tenantnetwork.TenantNetworkService; -import org.onosproject.vtnweb.web.TenantNetworkCodec; -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; - -/** - * REST resource for interacting with the inventory of networks. - */ -@Path("networks") -public class TenantNetworkWebResource extends AbstractWebResource { - public static final String NETWORK_NOT_FOUND = "Network is not found"; - public static final String NETWORK_ID_EXIST = "Network id is existed"; - public static final String NETWORK_ID_NOT_EXIST = "Network id is not existed"; - public static final String CREATE_NETWORK = "create network"; - public static final String UPDATE_NETWORK = "update network"; - public static final String DELETE_NETWORK = "delete network"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - - protected static final Logger log = LoggerFactory - .getLogger(TenantNetworkWebResource.class); - private final ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps - .newConcurrentMap(); - - @GET - @Produces({ MediaType.APPLICATION_JSON }) - public Response getNetworks(@QueryParam("id") String queryId, - @QueryParam("name") String queryName, - @QueryParam("admin_state_up") String queryadminStateUp, - @QueryParam("status") String querystate, - @QueryParam("shared") String queryshared, - @QueryParam("tenant_id") String querytenantId, - @QueryParam("router:external") String routerExternal, - @QueryParam("provider:network_type") String type, - @QueryParam("provider:physical_network") String physicalNetwork, - @QueryParam("provider:segmentation_id") String segmentationId) { - Iterable<TenantNetwork> networks = get(TenantNetworkService.class) - .getNetworks(); - Iterator<TenantNetwork> networkors = networks.iterator(); - while (networkors.hasNext()) { - TenantNetwork network = networkors.next(); - if ((queryId == null || queryId.equals(network.id().toString())) - && (queryName == null || queryName.equals(network.name())) - && (queryadminStateUp == null || queryadminStateUp - .equals(Boolean.toString(network.adminStateUp()))) - && (querystate == null || querystate.equals(network.state() - .toString())) - && (queryshared == null || queryshared.equals(Boolean.toString(network - .shared()))) - && (querytenantId == null || querytenantId.equals(network - .tenantId().toString())) - && (routerExternal == null || routerExternal.equals(Boolean.toString(network - .routerExternal()))) - && (type == null || type.equals(network.type().toString())) - && (physicalNetwork == null || physicalNetwork - .equals(network.physicalNetwork().toString())) - && (segmentationId == null || segmentationId.equals(network - .segmentationId().toString()))) { - networksMap.putIfAbsent(network.id(), network); - } - } - networks = Collections.unmodifiableCollection(networksMap.values()); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("networks", new TenantNetworkCodec().encode(networks, this)); - - return ok(result.toString()).build(); - } - - private State isState(String state) { - if (state.equals("ACTIVE")) { - return TenantNetwork.State.ACTIVE; - } else if (state.equals("BUILD")) { - return TenantNetwork.State.BUILD; - } else if (state.equals("DOWN")) { - return TenantNetwork.State.DOWN; - } else if (state.equals("ERROR")) { - return TenantNetwork.State.ERROR; - } else { - return null; - } - } - - private Type isType(String type) { - if (type.equals("LOCAL")) { - return TenantNetwork.Type.LOCAL; - } else { - return null; - } - } - - @GET - @Path("{id}") - @Produces({ MediaType.APPLICATION_JSON }) - public Response getNetwork(@PathParam("id") String id) { - - if (!get(TenantNetworkService.class).exists(TenantNetworkId - .networkId(id))) { - return Response.status(NOT_FOUND) - .entity(NETWORK_NOT_FOUND).build(); - } - TenantNetwork network = nullIsNotFound(get(TenantNetworkService.class) - .getNetwork(TenantNetworkId.networkId(id)), NETWORK_NOT_FOUND); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("network", new TenantNetworkCodec().encode(network, this)); - - return ok(result.toString()).build(); - - } - - @POST - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response createNetworks(InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = mapper.readTree(input); - JsonNode nodes = null; - Iterable<TenantNetwork> networks = null; - if (cfg.get("network") != null) { - nodes = cfg.get("network"); - if (nodes.isArray()) { - networks = changeJson2objs(nodes); - } else { - networks = changeJson2obj(CREATE_NETWORK, null, nodes); - } - } else if (cfg.get("networks") != null) { - nodes = cfg.get("networks"); - networks = changeJson2objs(nodes); - } - Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class) - .createNetworks(networks)), - NETWORK_NOT_FOUND); - - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Creates tenantNetwork exception {}.", e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{id}") - @Produces(MediaType.APPLICATION_JSON) - @Consumes(MediaType.APPLICATION_JSON) - public Response updateNetworks(@PathParam("id") String id, InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = mapper.readTree(input); - JsonNode nodes = null; - Iterable<TenantNetwork> networks = null; - if (cfg.get("network") != null) { - nodes = cfg.get("network"); - if (nodes.isArray()) { - networks = changeJson2objs(nodes); - } else { - networks = changeJson2obj(UPDATE_NETWORK, - TenantNetworkId.networkId(id), - nodes); - } - } else if (cfg.get("networks") != null) { - nodes = cfg.get("networks"); - networks = changeJson2objs(nodes); - } - Boolean issuccess = nullIsNotFound((get(TenantNetworkService.class) - .updateNetworks(networks)), - NETWORK_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Updates tenantNetwork failed because of exception {}.", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @DELETE - @Path("{id}") - public Response deleteNetworks(@PathParam("id") String id) { - log.debug("Deletes network by identifier {}.", id); - Set<TenantNetworkId> networkSet = new HashSet<>(); - networkSet.add(TenantNetworkId.networkId(id)); - Boolean issuccess = nullIsNotFound(get(TenantNetworkService.class) - .removeNetworks(networkSet), NETWORK_NOT_FOUND); - if (!issuccess) { - log.debug("Network identifier {} is not existed", id); - return Response.status(INTERNAL_SERVER_ERROR) - .entity(NETWORK_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } - - /** - * Returns a collection of tenantNetworks. - * - * @param flag the flag - * @param networkId network identifier - * @param node the network json node - * @return a collection of tenantNetworks - */ - public Iterable<TenantNetwork> changeJson2obj(String flag, - TenantNetworkId networkId, - JsonNode node) { - checkNotNull(node, JSON_NOT_NULL); - TenantNetwork network = null; - ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps - .newConcurrentMap(); - checkArgument(node.get("admin_state_up").isBoolean(), "admin_state_up should be boolean"); - checkArgument(node.get("shared").isBoolean(), "shared should be boolean"); - checkArgument(node.get("router:external").isBoolean(), "router:external should be boolean"); - String name = node.get("name").asText(); - boolean adminStateUp = node.get("admin_state_up").asBoolean(); - String state = node.get("status").asText(); - boolean shared = node.get("shared").asBoolean(); - String tenantId = node.get("tenant_id").asText(); - boolean routerExternal = node.get("router:external").asBoolean(); - String type = node.get("provider:network_type").asText(); - String physicalNetwork = node.get("provider:physical_network").asText(); - String segmentationId = node.get("provider:segmentation_id").asText(); - TenantNetworkId id = null; - if (flag.equals(CREATE_NETWORK)) { - id = TenantNetworkId.networkId(node.get("id").asText()); - } else if (flag.equals(UPDATE_NETWORK)) { - id = networkId; - } - network = new DefaultTenantNetwork( - id, - name, - adminStateUp, - isState(state), - shared, - TenantId.tenantId(tenantId), - routerExternal, - isType(type), - PhysicalNetwork - .physicalNetwork(physicalNetwork), - SegmentationId - .segmentationId(segmentationId)); - networksMap.putIfAbsent(id, network); - - return Collections.unmodifiableCollection(networksMap.values()); - } - - /** - * Returns a collection of tenantNetworks. - * - * @param nodes the network jsonnodes - * @return a collection of tenantNetworks - */ - public Iterable<TenantNetwork> changeJson2objs(JsonNode nodes) { - checkNotNull(nodes, JSON_NOT_NULL); - TenantNetwork network = null; - ConcurrentMap<TenantNetworkId, TenantNetwork> networksMap = Maps - .newConcurrentMap(); - for (JsonNode node : nodes) { - String id = node.get("id").asText(); - String name = node.get("name").asText(); - boolean adminStateUp = node.get("admin_state_up").asBoolean(); - String state = node.get("status").asText(); - boolean shared = node.get("shared").asBoolean(); - String tenantId = node.get("tenant_id").asText(); - boolean routerExternal = node.get("router:external") - .asBoolean(); - String type = node.get("provider:network_type").asText(); - String physicalNetwork = node.get("provider:physical_network").asText(); - String segmentationId = node.get("provider:segmentation_id").asText(); - network = new DefaultTenantNetwork( - TenantNetworkId.networkId(id), - name, - adminStateUp, - isState(state), - shared, - TenantId.tenantId(tenantId), - routerExternal, - isType(type), - PhysicalNetwork.physicalNetwork(physicalNetwork), - SegmentationId.segmentationId(segmentationId)); - networksMap.putIfAbsent(TenantNetworkId.networkId(id), network); - } - - return Collections.unmodifiableCollection(networksMap.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; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java deleted file mode 100644 index e47a57df..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/VirtualPortWebResource.java +++ /dev/null @@ -1,412 +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.INTERNAL_SERVER_ERROR; -import static javax.ws.rs.core.Response.Status.OK; -import static javax.ws.rs.core.Response.Status.NOT_FOUND; - -import java.io.InputStream; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -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.core.MediaType; -import javax.ws.rs.core.Response; - -import org.onlab.packet.IpAddress; -import org.onlab.packet.MacAddress; -import org.onlab.util.ItemNotFoundException; -import org.onosproject.net.DeviceId; -import org.onosproject.rest.AbstractWebResource; -import org.onosproject.vtnrsc.AllowedAddressPair; -import org.onosproject.vtnrsc.BindingHostId; -import org.onosproject.vtnrsc.DefaultVirtualPort; -import org.onosproject.vtnrsc.FixedIp; -import org.onosproject.vtnrsc.SecurityGroup; -import org.onosproject.vtnrsc.SubnetId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.TenantNetworkId; -import org.onosproject.vtnrsc.VirtualPort; -import org.onosproject.vtnrsc.VirtualPort.State; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.virtualport.VirtualPortService; -import org.onosproject.vtnweb.web.VirtualPortCodec; -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; - -/** - * REST resource for interacting with the inventory of infrastructure - * virtualPort. - */ -@Path("ports") -public class VirtualPortWebResource extends AbstractWebResource { - public static final String VPORT_NOT_FOUND = "VirtualPort is not found"; - public static final String VPORT_ID_EXIST = "VirtualPort id is exist"; - public static final String VPORT_ID_NOT_EXIST = "VirtualPort id is not exist"; - public static final String JSON_NOT_NULL = "JsonNode can not be null"; - protected static final Logger log = LoggerFactory - .getLogger(VirtualPortService.class); - - @GET - @Produces({ MediaType.APPLICATION_JSON }) - public Response getPorts() { - Iterable<VirtualPort> virtualPorts = get(VirtualPortService.class) - .getPorts(); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("ports", new VirtualPortCodec().encode(virtualPorts, this)); - return ok(result.toString()).build(); - } - - @GET - @Path("{id}") - @Produces({ MediaType.APPLICATION_JSON }) - public Response getportsById(@PathParam("id") String id) { - - if (!get(VirtualPortService.class).exists(VirtualPortId.portId(id))) { - return Response.status(NOT_FOUND) - .entity(VPORT_NOT_FOUND).build(); - } - VirtualPort virtualPort = nullIsNotFound(get(VirtualPortService.class) - .getPort(VirtualPortId.portId(id)), VPORT_NOT_FOUND); - ObjectNode result = new ObjectMapper().createObjectNode(); - result.set("port", new VirtualPortCodec().encode(virtualPort, this)); - return ok(result.toString()).build(); - } - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response createPorts(InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = mapper.readTree(input); - Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg); - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .createPorts(vPorts), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Creates VirtualPort failed because of exception {}", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @Path("{portUUID}") - @DELETE - public Response deletePorts(@PathParam("portUUID") String id) { - Set<VirtualPortId> vPortIds = new HashSet<>(); - try { - if (id != null) { - vPortIds.add(VirtualPortId.portId(id)); - } - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .removePorts(vPortIds), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Deletes VirtualPort failed because of exception {}", - e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - @PUT - @Path("{id}") - @Consumes(MediaType.APPLICATION_JSON) - @Produces(MediaType.APPLICATION_JSON) - public Response updatePorts(@PathParam("id") String id, InputStream input) { - try { - ObjectMapper mapper = new ObjectMapper(); - JsonNode cfg = mapper.readTree(input); - Iterable<VirtualPort> vPorts = createOrUpdateByInputStream(cfg); - Boolean issuccess = nullIsNotFound(get(VirtualPortService.class) - .updatePorts(vPorts), VPORT_NOT_FOUND); - if (!issuccess) { - return Response.status(INTERNAL_SERVER_ERROR) - .entity(VPORT_ID_NOT_EXIST).build(); - } - return Response.status(OK).entity(issuccess.toString()).build(); - } catch (Exception e) { - log.error("Updates failed because of exception {}", e.toString()); - return Response.status(INTERNAL_SERVER_ERROR).entity(e.toString()) - .build(); - } - } - - /** - * Returns a Object of the currently known infrastructure virtualPort. - * - * @param vPortNode the virtualPort json node - * @return a collection of virtualPorts - */ - public Iterable<VirtualPort> createOrUpdateByInputStream(JsonNode vPortNode) { - checkNotNull(vPortNode, JSON_NOT_NULL); - JsonNode vPortNodes = vPortNode.get("ports"); - if (vPortNodes == null) { - vPortNodes = vPortNode.get("port"); - } - if (vPortNodes.isArray()) { - return changeJsonToPorts(vPortNodes); - } else { - return changeJsonToPort(vPortNodes); - } - } - - /** - * Returns the iterable collection of virtualports from subnetNodes. - * - * @param vPortNodes the virtualPort json node - * @return virtualPorts a collection of virtualPorts - */ - public Iterable<VirtualPort> changeJsonToPorts(JsonNode vPortNodes) { - checkNotNull(vPortNodes, JSON_NOT_NULL); - Map<VirtualPortId, VirtualPort> portMap = new HashMap<>(); - Map<String, String> strMap = new HashMap<>(); - for (JsonNode vPortnode : vPortNodes) { - VirtualPortId id = VirtualPortId.portId(vPortnode.get("id") - .asText()); - String name = vPortnode.get("name").asText(); - TenantId tenantId = TenantId.tenantId(vPortnode.get("tenant_id") - .asText()); - TenantNetworkId networkId = TenantNetworkId.networkId(vPortnode - .get("network_id").asText()); - checkArgument(vPortnode.get("admin_state_up").isBoolean(), "admin_state_up should be boolean"); - Boolean adminStateUp = vPortnode.get("admin_state_up").asBoolean(); - String state = vPortnode.get("status").asText(); - MacAddress macAddress = MacAddress.valueOf(vPortnode - .get("mac_address").asText()); - DeviceId deviceId = DeviceId.deviceId(vPortnode.get("device_id") - .asText()); - String deviceOwner = vPortnode.get("device_owner").asText(); - JsonNode fixedIpNodes = vPortNodes.get("fixed_ips"); - Set<FixedIp> fixedIps = new HashSet<>(); - for (JsonNode fixedIpNode : fixedIpNodes) { - FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode); - fixedIps.add(fixedIp); - } - - BindingHostId bindingHostId = BindingHostId - .bindingHostId(vPortnode.get("binding:host_id").asText()); - String bindingVnicType = vPortnode.get("binding:vnic_type") - .asText(); - String bindingVifType = vPortnode.get("binding:vif_type").asText(); - String bindingVifDetails = vPortnode.get("binding:vif_details") - .asText(); - JsonNode allowedAddressPairJsonNode = vPortnode - .get("allowed_address_pairs"); - Collection<AllowedAddressPair> allowedAddressPairs = - jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode); - JsonNode securityGroupNode = vPortnode.get("security_groups"); - Collection<SecurityGroup> securityGroups = jsonNodeToSecurityGroup(securityGroupNode); - strMap.put("name", name); - strMap.put("deviceOwner", deviceOwner); - strMap.put("bindingVnicType", bindingVnicType); - strMap.put("bindingVifType", bindingVifType); - strMap.put("bindingVifDetails", bindingVifDetails); - VirtualPort vPort = new DefaultVirtualPort(id, networkId, - adminStateUp, strMap, - isState(state), - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - Sets.newHashSet(allowedAddressPairs), - Sets.newHashSet(securityGroups)); - portMap.put(id, vPort); - } - return Collections.unmodifiableCollection(portMap.values()); - } - - /** - * Returns a collection of virtualPorts from subnetNodes. - * - * @param vPortNodes the virtualPort json node - * @return virtualPorts a collection of virtualPorts - */ - public Iterable<VirtualPort> changeJsonToPort(JsonNode vPortNodes) { - checkNotNull(vPortNodes, JSON_NOT_NULL); - Map<VirtualPortId, VirtualPort> vportMap = new HashMap<>(); - Map<String, String> strMap = new HashMap<>(); - VirtualPortId id = VirtualPortId.portId(vPortNodes.get("id").asText()); - String name = vPortNodes.get("name").asText(); - TenantId tenantId = TenantId.tenantId(vPortNodes.get("tenant_id") - .asText()); - TenantNetworkId networkId = TenantNetworkId.networkId(vPortNodes - .get("network_id").asText()); - Boolean adminStateUp = vPortNodes.get("admin_state_up").asBoolean(); - String state = vPortNodes.get("status").asText(); - MacAddress macAddress = MacAddress.valueOf(vPortNodes - .get("mac_address").asText()); - DeviceId deviceId = DeviceId.deviceId(vPortNodes.get("device_id") - .asText()); - String deviceOwner = vPortNodes.get("device_owner").asText(); - JsonNode fixedIpNodes = vPortNodes.get("fixed_ips"); - Set<FixedIp> fixedIps = new HashSet<>(); - for (JsonNode fixedIpNode : fixedIpNodes) { - FixedIp fixedIp = jsonNodeToFixedIps(fixedIpNode); - fixedIps.add(fixedIp); - } - - BindingHostId bindingHostId = BindingHostId - .bindingHostId(vPortNodes.get("binding:host_id").asText()); - String bindingVnicType = vPortNodes.get("binding:vnic_type").asText(); - String bindingVifType = vPortNodes.get("binding:vif_type").asText(); - String bindingVifDetails = vPortNodes.get("binding:vif_details") - .asText(); - JsonNode allowedAddressPairJsonNode = vPortNodes - .get("allowed_address_pairs"); - Collection<AllowedAddressPair> allowedAddressPairs = - jsonNodeToAllowedAddressPair(allowedAddressPairJsonNode); - JsonNode securityGroupNode = vPortNodes.get("security_groups"); - Collection<SecurityGroup> securityGroups = jsonNodeToSecurityGroup(securityGroupNode); - strMap.put("name", name); - strMap.put("deviceOwner", deviceOwner); - strMap.put("bindingVnicType", bindingVnicType); - strMap.put("bindingVifType", bindingVifType); - strMap.put("bindingVifDetails", bindingVifDetails); - VirtualPort vPort = new DefaultVirtualPort(id, networkId, adminStateUp, - strMap, isState(state), - macAddress, tenantId, - deviceId, fixedIps, - bindingHostId, - Sets.newHashSet(allowedAddressPairs), - Sets.newHashSet(securityGroups)); - vportMap.put(id, vPort); - - return Collections.unmodifiableCollection(vportMap.values()); - } - - /** - * Returns a Object of the currently known infrastructure virtualPort. - * - * @param allowedAddressPairs the allowedAddressPairs json node - * @return a collection of allowedAddressPair - */ - public Collection<AllowedAddressPair> jsonNodeToAllowedAddressPair(JsonNode allowedAddressPairs) { - checkNotNull(allowedAddressPairs, JSON_NOT_NULL); - ConcurrentMap<Integer, AllowedAddressPair> allowMaps = Maps - .newConcurrentMap(); - int i = 0; - for (JsonNode node : allowedAddressPairs) { - IpAddress ip = IpAddress.valueOf(node.get("ip_address").asText()); - MacAddress mac = MacAddress.valueOf(node.get("mac_address") - .asText()); - AllowedAddressPair allows = AllowedAddressPair - .allowedAddressPair(ip, mac); - allowMaps.put(i, allows); - i++; - } - log.debug("The jsonNode of allowedAddressPairallow is {}" - + allowedAddressPairs.toString()); - return Collections.unmodifiableCollection(allowMaps.values()); - } - - /** - * Returns a collection of virtualPorts. - * - * @param securityGroups the virtualPort jsonnode - * @return a collection of securityGroups - */ - public Collection<SecurityGroup> jsonNodeToSecurityGroup(JsonNode securityGroups) { - checkNotNull(securityGroups, JSON_NOT_NULL); - ConcurrentMap<Integer, SecurityGroup> securMaps = Maps - .newConcurrentMap(); - int i = 0; - for (JsonNode node : securityGroups) { - SecurityGroup securityGroup = SecurityGroup - .securityGroup(node.asText()); - securMaps.put(i, securityGroup); - i++; - } - return Collections.unmodifiableCollection(securMaps.values()); - } - - /** - * Returns a collection of fixedIps. - * - * @param fixedIpNode the fixedIp jsonnode - * @return a collection of SecurityGroup - */ - public FixedIp jsonNodeToFixedIps(JsonNode fixedIpNode) { - SubnetId subnetId = SubnetId.subnetId(fixedIpNode.get("subnet_id") - .asText()); - IpAddress ipAddress = IpAddress.valueOf(fixedIpNode.get("ip_address") - .asText()); - FixedIp fixedIps = FixedIp.fixedIp(subnetId, ipAddress); - return fixedIps; - } - - /** - * Returns VirtualPort State. - * - * @param state the virtualport state - * @return the virtualPort state - */ - private State isState(String state) { - if (state.equals("ACTIVE")) { - return VirtualPort.State.ACTIVE; - } else { - return VirtualPort.State.DOWN; - } - - } - - /** - * 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; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java deleted file mode 100644 index c81fc3d8..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/resources/package-info.java +++ /dev/null @@ -1,20 +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. - */ - -/** - * VTN web that used rest to creat vtn resources. - */ -package org.onosproject.vtnweb.resources; diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java deleted file mode 100644 index 4b6b662f..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllocationPoolsCodec.java +++ /dev/null @@ -1,40 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.AllocationPool; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet AllocationPool codec. - */ -public final class AllocationPoolsCodec extends JsonCodec<AllocationPool> { - - @Override - public ObjectNode encode(AllocationPool alocPool, CodecContext context) { - checkNotNull(alocPool, "AllocationPools cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("start", alocPool.startIp().toString()) - .put("end", alocPool.endIp().toString()); - return result; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java deleted file mode 100644 index 8ffc4e91..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/AllowedAddressPairCodec.java +++ /dev/null @@ -1,40 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.AllowedAddressPair; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort AllowedAddressPair codec. - */ -public final class AllowedAddressPairCodec extends JsonCodec<AllowedAddressPair> { - - @Override - public ObjectNode encode(AllowedAddressPair alocAddPair, CodecContext context) { - checkNotNull(alocAddPair, "AllowedAddressPair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("ip_address", alocAddPair.ip().toString()) - .put("mac_address", alocAddPair.mac().toString()); - return result; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java deleted file mode 100644 index 559de685..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FixedIpCodec.java +++ /dev/null @@ -1,40 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FixedIp; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort FixedIp codec. - */ -public final class FixedIpCodec extends JsonCodec<FixedIp> { - - @Override - public ObjectNode encode(FixedIp fixIp, CodecContext context) { - checkNotNull(fixIp, "FixedIp cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("subnet_id", fixIp.subnetId().toString()) - .put("ip_address", fixIp.ip().toString()); - return result; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java deleted file mode 100644 index ff5aebb4..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FloatingIpCodec.java +++ /dev/null @@ -1,98 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Iterator; -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FloatingIp; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * FloatingIp JSON codec. - */ -public final class FloatingIpCodec extends JsonCodec<FloatingIp> { - @Override - public ObjectNode encode(FloatingIp floatingIp, CodecContext context) { - checkNotNull(floatingIp, "floatingIp cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", floatingIp.id().floatingIpId().toString()) - .put("floating_network_id", floatingIp.networkId().toString()) - .put("router_id", - floatingIp.routerId() == null ? null : floatingIp - .routerId().routerId()) - .put("tenant_id", floatingIp.tenantId().toString()) - .put("port_id", - floatingIp.portId() == null ? null : floatingIp.portId() - .toString()) - .put("fixed_ip_address", - floatingIp.fixedIp() == null ? null : floatingIp.fixedIp() - .toString()) - .put("floating_ip_address", floatingIp.floatingIp().toString()) - .put("status", floatingIp.status().toString()); - return result; - } - - public ObjectNode extracFields(FloatingIp floatingIp, CodecContext context, - List<String> fields) { - checkNotNull(floatingIp, "floatingIp cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - Iterator<String> i = fields.iterator(); - while (i.hasNext()) { - String s = i.next(); - if (s.equals("floating_network_id")) { - result.put("floating_network_id", floatingIp.networkId() - .toString()); - } - if (s.equals("router_id")) { - result.put("router_id", - floatingIp.routerId() == null ? null : floatingIp - .routerId().routerId()); - } - if (s.equals("tenant_id")) { - result.put("tenant_id", floatingIp.tenantId().toString()); - } - if (s.equals("port_id")) { - result.put("port_id", - floatingIp.portId() == null ? null : floatingIp - .portId().toString()); - } - if (s.equals("id")) { - result.put("id", floatingIp.id().floatingIpId().toString()); - } - if (s.equals("fixed_ip_address")) { - result.put("fixed_ip_address", - floatingIp.fixedIp() == null ? null : floatingIp - .fixedIp().toString()); - } - if (s.equals("floating_ip_address")) { - result.put("floating_ip_address", floatingIp.floatingIp() - .toString()); - } - if (s.equals("status")) { - result.put("status", floatingIp.status().toString()); - } - } - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java deleted file mode 100644 index a18ca362..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/FlowClassifierCodec.java +++ /dev/null @@ -1,134 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import org.onlab.packet.IpPrefix; -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.DefaultFlowClassifier; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow Classifier JSON codec. - */ -public final class FlowClassifierCodec extends JsonCodec<FlowClassifier> { - - private static final String FLOW_CLASSIFIER_ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String ETHER_TYPE = "ethertype"; - private static final String PROTOCOL = "protocol"; - private static final String MIN_SRC_PORT_RANGE = "source_port_range_min"; - private static final String MAX_SRC_PORT_RANGE = "source_port_range_max"; - private static final String MIN_DST_PORT_RANGE = "destination_port_range_min"; - private static final String MAX_DST_PORT_RANGE = "destination_port_range_max"; - private static final String SRC_IP_PREFIX = "source_ip_prefix"; - private static final String DST_IP_PREFIX = "destination_ip_prefix"; - private static final String SRC_PORT = "logical_source_port"; - private static final String DST_PORT = "logical_destination_port"; - private static final String MISSING_MEMBER_MESSAGE = " member is required in Flow Classifier."; - - @Override - public FlowClassifier decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - FlowClassifier.Builder resultBuilder = new DefaultFlowClassifier.Builder(); - - String flowClassifierId = nullIsIllegal(json.get(FLOW_CLASSIFIER_ID), - FLOW_CLASSIFIER_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setFlowClassifierId(FlowClassifierId.of(flowClassifierId)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String flowClassiferName = nullIsIllegal(json.get(NAME), NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(flowClassiferName); - - String flowClassiferDescription = (json.get(DESCRIPTION)).asText(); - resultBuilder.setDescription(flowClassiferDescription); - - String etherType = nullIsIllegal(json.get(ETHER_TYPE), ETHER_TYPE + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setEtherType(etherType); - - String protocol = (json.get(PROTOCOL)).asText(); - resultBuilder.setProtocol(protocol); - - int minSrcPortRange = (json.get(MIN_SRC_PORT_RANGE)).asInt(); - resultBuilder.setMinSrcPortRange(minSrcPortRange); - - int maxSrcPortRange = (json.get(MAX_SRC_PORT_RANGE)).asInt(); - resultBuilder.setMaxSrcPortRange(maxSrcPortRange); - - int minDstPortRange = (json.get(MIN_DST_PORT_RANGE)).asInt(); - resultBuilder.setMinDstPortRange(minDstPortRange); - - int maxDstPortRange = (json.get(MAX_DST_PORT_RANGE)).asInt(); - resultBuilder.setMaxDstPortRange(maxDstPortRange); - - String srcIpPrefix = (json.get(SRC_IP_PREFIX)).asText(); - if (!srcIpPrefix.isEmpty()) { - resultBuilder.setSrcIpPrefix(IpPrefix.valueOf(srcIpPrefix)); - } - - String dstIpPrefix = (json.get(DST_IP_PREFIX)).asText(); - if (!dstIpPrefix.isEmpty()) { - resultBuilder.setDstIpPrefix(IpPrefix.valueOf(dstIpPrefix)); - } - - String srcPort = json.get(SRC_PORT) != null ? (json.get(SRC_PORT)).asText() : ""; - if (!srcPort.isEmpty()) { - resultBuilder.setSrcPort(VirtualPortId.portId(srcPort)); - } - - String dstPort = json.get(DST_PORT) != null ? (json.get(DST_PORT)).asText() : ""; - if (!dstPort.isEmpty()) { - resultBuilder.setDstPort(VirtualPortId.portId(dstPort)); - } - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(FlowClassifier flowClassifier, CodecContext context) { - checkNotNull(flowClassifier, "flowClassifier cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(FLOW_CLASSIFIER_ID, flowClassifier.flowClassifierId().toString()) - .put(TENANT_ID, flowClassifier.tenantId().toString()) - .put(NAME, flowClassifier.name()) - .put(DESCRIPTION, flowClassifier.description()) - .put(ETHER_TYPE, flowClassifier.etherType()) - .put(PROTOCOL, flowClassifier.protocol()) - .put(MIN_SRC_PORT_RANGE, flowClassifier.minSrcPortRange()) - .put(MAX_SRC_PORT_RANGE, flowClassifier.maxSrcPortRange()) - .put(MIN_DST_PORT_RANGE, flowClassifier.minDstPortRange()) - .put(MAX_DST_PORT_RANGE, flowClassifier.maxDstPortRange()) - .put(SRC_IP_PREFIX, flowClassifier.srcIpPrefix().toString()) - .put(DST_IP_PREFIX, flowClassifier.dstIpPrefix().toString()) - .put(SRC_PORT, flowClassifier.srcPort().toString()) - .put(DST_PORT, flowClassifier.dstPort().toString()); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java deleted file mode 100644 index 815a0d02..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/HostRoutesCodec.java +++ /dev/null @@ -1,40 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.HostRoute; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet HostRoute codec. - */ -public final class HostRoutesCodec extends JsonCodec<HostRoute> { - - @Override - public ObjectNode encode(HostRoute hostRoute, CodecContext context) { - checkNotNull(hostRoute, "HostRoute cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("nexthop", hostRoute.nexthop().toString()) - .put("destination", hostRoute.destination().toString()); - return result; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java deleted file mode 100644 index 1e9cf009..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortChainCodec.java +++ /dev/null @@ -1,105 +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.web; - - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import java.util.List; -import java.util.UUID; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.DefaultPortChain; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; - -/** - * Port chain JSON codec. - */ -public final class PortChainCodec extends JsonCodec<PortChain> { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String PORT_PAIR_GROUPS = "port_pair_groups"; - private static final String FLOW_CLASSIFIERS = "flow_classifiers"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortChain"; - - @Override - public PortChain decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortChain.Builder resultBuilder = new DefaultPortChain.Builder(); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortChainId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIR_GROUPS); - if (arrayNode != null) { - List<PortPairGroupId> list = Lists.newArrayList(); - arrayNode.forEach(i -> list.add(PortPairGroupId.of(i.asText()))); - resultBuilder.setPortPairGroups(list); - } - - arrayNode = (ArrayNode) json.path(FLOW_CLASSIFIERS); - if (arrayNode != null) { - List<FlowClassifierId> list = Lists.newArrayList(); - arrayNode.forEach(i -> list.add(FlowClassifierId.of(UUID.fromString(i.asText())))); - resultBuilder.setFlowClassifiers(list); - } - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortChain portChain, CodecContext context) { - checkNotNull(portChain, "port pair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portChain.portChainId().toString()) - .put(TENANT_ID, portChain.tenantId().toString()) - .put(NAME, portChain.name()) - .put(DESCRIPTION, portChain.description()) - .put(PORT_PAIR_GROUPS, portChain.portPairGroups().toString()) - .put(FLOW_CLASSIFIERS, portChain.flowClassifiers().toString()); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java deleted file mode 100644 index 691536f4..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairCodec.java +++ /dev/null @@ -1,94 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.core.CoreService; -import org.onosproject.vtnrsc.DefaultPortPair; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Port Pair JSON codec. - */ -public final class PortPairCodec extends JsonCodec<PortPair> { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String INGRESS = "ingress"; - private static final String EGRESS = "egress"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortPair"; - - @Override - public PortPair decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortPair.Builder resultBuilder = new DefaultPortPair.Builder(); - - CoreService coreService = context.getService(CoreService.class); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortPairId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - String ingressPort = nullIsIllegal(json.get(INGRESS), - INGRESS + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setIngress(ingressPort); - - String egressPort = nullIsIllegal(json.get(EGRESS), - EGRESS + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setEgress(egressPort); - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortPair portPair, CodecContext context) { - checkNotNull(portPair, "port pair cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portPair.portPairId().toString()) - .put(TENANT_ID, portPair.tenantId().toString()) - .put(NAME, portPair.name()) - .put(DESCRIPTION, portPair.description()) - .put(INGRESS, portPair.ingress()) - .put(EGRESS, portPair.egress()); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java deleted file mode 100644 index b5ae266b..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/PortPairGroupCodec.java +++ /dev/null @@ -1,95 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; -import static org.onlab.util.Tools.nullIsIllegal; - -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.core.CoreService; -import org.onosproject.vtnrsc.DefaultPortPairGroup; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.common.collect.Lists; - -/** - * Port Pair Group JSON codec. - */ -public final class PortPairGroupCodec extends JsonCodec<PortPairGroup> { - - private static final String ID = "id"; - private static final String TENANT_ID = "tenant_id"; - private static final String NAME = "name"; - private static final String DESCRIPTION = "description"; - private static final String PORT_PAIRS = "port_pairs"; - private static final String MISSING_MEMBER_MESSAGE = - " member is required in PortPairGroup"; - - @Override - public PortPairGroup decode(ObjectNode json, CodecContext context) { - if (json == null || !json.isObject()) { - return null; - } - - PortPairGroup.Builder resultBuilder = new DefaultPortPairGroup.Builder(); - - CoreService coreService = context.getService(CoreService.class); - - String id = nullIsIllegal(json.get(ID), - ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setId(PortPairGroupId.of(id)); - - String tenantId = nullIsIllegal(json.get(TENANT_ID), - TENANT_ID + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setTenantId(TenantId.tenantId(tenantId)); - - String name = nullIsIllegal(json.get(NAME), - NAME + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setName(name); - - String description = nullIsIllegal(json.get(DESCRIPTION), - DESCRIPTION + MISSING_MEMBER_MESSAGE).asText(); - resultBuilder.setDescription(description); - - List<PortPairId> list = Lists.newArrayList(); - ArrayNode arrayNode = (ArrayNode) json.path(PORT_PAIRS); - arrayNode.forEach(i -> list.add(PortPairId.of(i.asText()))); - resultBuilder.setPortPairs(list); - - return resultBuilder.build(); - } - - @Override - public ObjectNode encode(PortPairGroup portPairGroup, CodecContext context) { - checkNotNull(portPairGroup, "port pair group cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put(ID, portPairGroup.portPairGroupId().toString()) - .put(TENANT_ID, portPairGroup.tenantId().toString()) - .put(NAME, portPairGroup.name()) - .put(DESCRIPTION, portPairGroup.description()) - .put(PORT_PAIRS, portPairGroup.portPairs().toString()); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java deleted file mode 100644 index 61f7e955..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterCodec.java +++ /dev/null @@ -1,91 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import java.util.Iterator; -import java.util.List; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.Router; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Router JSON codec. - */ -public class RouterCodec extends JsonCodec<Router> { - @Override - public ObjectNode encode(Router router, CodecContext context) { - checkNotNull(router, "router cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", router.id().routerId()) - .put("status", router.status().toString()) - .put("name", router.name().toString()) - .put("admin_state_up", router.adminStateUp()) - .put("tenant_id", router.tenantId().toString()) - .put("routes", - router.routes() == null ? null : router.routes() - .toString()); - result.set("external_gateway_info", - router.externalGatewayInfo() == null ? null - : new RouterGatewayInfoCodec() - .encode(router.externalGatewayInfo(), context)); - - return result; - } - - public ObjectNode extracFields(Router router, CodecContext context, - List<String> fields) { - checkNotNull(router, "router cannot be null"); - ObjectNode result = context.mapper().createObjectNode(); - Iterator<String> i = fields.iterator(); - while (i.hasNext()) { - String s = i.next(); - if (s.equals("id")) { - result.put("id", router.id().routerId()); - } - if (s.equals("status")) { - result.put("status", router.status().toString()); - } - if (s.equals("name")) { - result.put("name", router.name().toString()); - } - if (s.equals("admin_state_up")) { - result.put("admin_state_up", router.adminStateUp()); - } - if (s.equals("tenant_id")) { - result.put("tenant_id", router.tenantId().toString()); - } - if (s.equals("routes")) { - result.put("routes", router.routes() == null ? null : router - .routes().toString()); - } - if (s.equals("external_gateway_info")) { - result.set("external_gateway_info", - router.externalGatewayInfo() == null ? null - : new RouterGatewayInfoCodec() - .encode(router.externalGatewayInfo(), - context)); - } - } - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java deleted file mode 100644 index cb9fb67d..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/RouterGatewayInfoCodec.java +++ /dev/null @@ -1,39 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.RouterGateway; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet Router Gateway Info codec. - */ -public class RouterGatewayInfoCodec extends JsonCodec<RouterGateway> { - @Override - public ObjectNode encode(RouterGateway routerGateway, CodecContext context) { - checkNotNull(routerGateway, "routerGateway cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("network_id", routerGateway.networkId().toString()); - result.set("external_fixed_ips", new FixedIpCodec() - .encode(routerGateway.externalFixedIps(), context)); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java deleted file mode 100644 index 18ed61ba..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SecurityGroupCodec.java +++ /dev/null @@ -1,39 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.SecurityGroup; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Virtualport SecurityGroup codec. - */ -public final class SecurityGroupCodec extends JsonCodec<SecurityGroup> { - - @Override - public ObjectNode encode(SecurityGroup securGroup, CodecContext context) { - checkNotNull(securGroup, "SecurityGroup cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("security_group", securGroup.securityGroup()); - return result; - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java deleted file mode 100644 index e3d92fea..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/SubnetCodec.java +++ /dev/null @@ -1,53 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.Subnet; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Subnet JSON codec. - */ -public final class SubnetCodec extends JsonCodec<Subnet> { - @Override - public ObjectNode encode(Subnet subnet, CodecContext context) { - checkNotNull(subnet, "Subnet cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("id", subnet.id().toString()) - .put("gateway_ip", subnet.gatewayIp().toString()) - .put("network_id", subnet.networkId().toString()) - .put("name", subnet.subnetName()) - .put("ip_version", subnet.ipVersion().toString()) - .put("cidr", subnet.cidr().toString()) - .put("shared", subnet.shared()) - .put("enabled_dchp", subnet.dhcpEnabled()) - .put("tenant_id", subnet.tenantId().toString()) - .put("ipv6_address_mode", subnet.ipV6AddressMode() == null ? null - : subnet.ipV6AddressMode().toString()) - .put("ipv6_ra_mode", subnet.ipV6RaMode() == null ? null - : subnet.ipV6RaMode().toString()); - result.set("allocation_pools", new AllocationPoolsCodec().encode(subnet - .allocationPools(), context)); - result.set("host_routes", - new HostRoutesCodec().encode(subnet.hostRoutes(), context)); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java deleted file mode 100644 index 8adba034..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/TenantNetworkCodec.java +++ /dev/null @@ -1,47 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.TenantNetwork; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * TenantNetwork JSON codec. - */ -public final class TenantNetworkCodec extends JsonCodec<TenantNetwork> { - - @Override - public ObjectNode encode(TenantNetwork network, CodecContext context) { - checkNotNull(network, "Network cannot be null"); - ObjectNode result = context.mapper().createObjectNode() - .put("id", network.id().toString()) - .put("name", network.name()) - .put("admin_state_up", network.adminStateUp()) - .put("status", "" + network.state()) - .put("shared", network.shared()) - .put("tenant_id", network.tenantId().toString()) - .put("router:external", network.routerExternal()) - .put("provider:network_type", "" + network.type()) - .put("provider:physical_network", network.physicalNetwork().toString()) - .put("provider:segmentation_id", network.segmentationId().toString()); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java deleted file mode 100644 index 5cea5327..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VirtualPortCodec.java +++ /dev/null @@ -1,57 +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.web; - -import static com.google.common.base.Preconditions.checkNotNull; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.VirtualPort; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * VirtualPort JSON codec. - */ -public final class VirtualPortCodec extends JsonCodec<VirtualPort> { - @Override - public ObjectNode encode(VirtualPort vPort, CodecContext context) { - checkNotNull(vPort, "VPort cannot be null"); - ObjectNode result = context - .mapper() - .createObjectNode() - .put("id", vPort.portId().toString()) - .put("network_id", vPort.networkId().toString()) - .put("admin_state_up", vPort.adminStateUp()) - .put("name", vPort.name()) - .put("status", vPort.state().toString()) - .put("mac_address", vPort.macAddress().toString()) - .put("tenant_id", vPort.tenantId().toString()) - .put("device_id", vPort.deviceId().toString()) - .put("device_owner", vPort.deviceOwner()) - .put("binding:vnic_type", vPort.bindingVnicType()) - .put("binding:Vif_type", vPort.bindingVifType()) - .put("binding:host_id", vPort.bindingHostId().toString()) - .put("binding:vif_details", vPort.bindingVifDetails()); - result.set("allowed_address_pairs", new AllowedAddressPairCodec().encode( - vPort.allowedAddressPairs(), context)); - result.set("fixed_ips", new FixedIpCodec().encode( - vPort.fixedIps(), context)); - result.set("security_groups", new SecurityGroupCodec().encode( - vPort.securityGroups(), context)); - return result; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java deleted file mode 100644 index e2defe59..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/VtnCodecRegistrator.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2014-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.web; - -import org.apache.felix.scr.annotations.Activate; -import org.apache.felix.scr.annotations.Component; -import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Reference; -import org.apache.felix.scr.annotations.ReferenceCardinality; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairGroup; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Implementation of the JSON codec brokering service for VTN app. - */ -@Component(immediate = true) -public class VtnCodecRegistrator { - - private static Logger log = LoggerFactory.getLogger(VtnCodecRegistrator.class); - - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected CodecService codecService; - - @Activate - public void activate() { - codecService.registerCodec(PortPair.class, new PortPairCodec()); - codecService.registerCodec(PortPairGroup.class, new PortPairGroupCodec()); - codecService.registerCodec(FlowClassifier.class, new FlowClassifierCodec()); - codecService.registerCodec(PortChain.class, new PortChainCodec()); - - log.info("Started"); - } - - @Deactivate - public void deactivate() { - log.info("Stopped"); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java b/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java deleted file mode 100644 index 3a609435..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/java/org/onosproject/vtnweb/web/package-info.java +++ /dev/null @@ -1,20 +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. - */ - -/** - * Codecs for virtual tenant objects. - */ -package org.onosproject.vtnweb.web; diff --git a/framework/src/onos/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml b/framework/src/onos/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index 13b377bf..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> -<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" - xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" - id="ONOS" version="2.5"> - <display-name>VTNRSC REST API v1.0</display-name> - - <servlet> - <servlet-name>JAX-RS Service</servlet-name> - <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> - <init-param> - <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> - <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value> - </init-param> - <init-param> - <param-name>com.sun.jersey.config.property.classnames</param-name> - <param-value> - org.onosproject.vtnweb.resources.TenantNetworkWebResource, - org.onosproject.vtnweb.resources.SubnetWebResource, - org.onosproject.vtnweb.resources.VirtualPortWebResource - org.onosproject.vtnweb.resources.FlowClassifierWebResource - org.onosproject.vtnweb.resources.PortChainWebResource - org.onosproject.vtnweb.resources.PortPairGroupWebResource - org.onosproject.vtnweb.resources.PortPairWebResource - org.onosproject.vtnweb.resources.FloatingIpWebResource - org.onosproject.vtnweb.resources.RouterWebResource - </param-value> - </init-param> - <load-on-startup>1</load-on-startup> - </servlet> - - <servlet-mapping> - <servlet-name>JAX-RS Service</servlet-name> - <url-pattern>/*</url-pattern> - </servlet-mapping> -</web-app> diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java deleted file mode 100644 index db08d7c4..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/FlowClassifierResourceTest.java +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright 2014-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 org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.packet.IpPrefix; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.VirtualPortId; -import org.onosproject.vtnrsc.flowclassifier.FlowClassifierService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import com.eclipsesource.json.JsonObject; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.UniformInterfaceException; -import com.sun.jersey.api.client.WebResource; -/** - * Unit tests for flow classifier REST APIs. - */ -public class FlowClassifierResourceTest extends VtnResourceTest { - - final FlowClassifierService flowClassifierService = createMock(FlowClassifierService.class); - - FlowClassifierId flowClassifierId1 = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051"); - TenantId tenantId1 = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1"); - VirtualPortId srcPortId1 = VirtualPortId.portId("dace4513-24fc-4fae-af4b-321c5e2eb3d1"); - VirtualPortId dstPortId1 = VirtualPortId.portId("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"); - - final MockFlowClassifier flowClassifier1 = new MockFlowClassifier(flowClassifierId1, tenantId1, "flowClassifier1", - "Mock flow classifier", "IPv4", "IP", 1001, 1500, - 5001, 6000, IpPrefix.valueOf("1.1.1.1/16"), - IpPrefix.valueOf("22.12.34.45/16"), - srcPortId1, dstPortId1); - - /** - * Mock class for a flow classifier. - */ - private static class MockFlowClassifier implements FlowClassifier { - - private final FlowClassifierId flowClassifierId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String etherType; - private final String protocol; - private final int minSrcPortRange; - private final int maxSrcPortRange; - private final int minDstPortRange; - private final int maxDstPortRange; - private final IpPrefix srcIpPrefix; - private final IpPrefix dstIpPrefix; - private final VirtualPortId srcPort; - private final VirtualPortId dstPort; - - public MockFlowClassifier(FlowClassifierId flowClassifierId, TenantId tenantId, String name, - String description, String etherType, String protocol, int minSrcPortRange, - int maxSrcPortRange, int minDstPortRange, int maxDstPortRange, IpPrefix srcIpPrefix, - IpPrefix dstIpPrefix, VirtualPortId srcPort, VirtualPortId dstPort) { - this.flowClassifierId = flowClassifierId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.etherType = etherType; - this.protocol = protocol; - this.minSrcPortRange = minSrcPortRange; - this.maxSrcPortRange = maxSrcPortRange; - this.minDstPortRange = minDstPortRange; - this.maxDstPortRange = maxDstPortRange; - this.srcIpPrefix = srcIpPrefix; - this.dstIpPrefix = dstIpPrefix; - this.srcPort = srcPort; - this.dstPort = dstPort; - } - - - @Override - public FlowClassifierId flowClassifierId() { - return flowClassifierId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String etherType() { - return etherType; - } - - @Override - public String protocol() { - return protocol; - } - - @Override - public int minSrcPortRange() { - return minSrcPortRange; - } - - @Override - public int maxSrcPortRange() { - return maxSrcPortRange; - } - - @Override - public int minDstPortRange() { - return minDstPortRange; - } - - @Override - public int maxDstPortRange() { - return maxDstPortRange; - } - - @Override - public IpPrefix srcIpPrefix() { - return srcIpPrefix; - } - - @Override - public IpPrefix dstIpPrefix() { - return dstIpPrefix; - } - - @Override - public VirtualPortId srcPort() { - return srcPort; - } - - @Override - public VirtualPortId dstPort() { - return dstPort; - } - - @Override - public boolean exactMatch(FlowClassifier flowClassifier) { - return this.equals(flowClassifier) && - Objects.equals(this.flowClassifierId, flowClassifier.flowClassifierId()) && - Objects.equals(this.tenantId, flowClassifier.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(FlowClassifierService.class, flowClassifierService) - .add(CodecService.class, context.codecManager()); - BaseResource.setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no flow classifiers. - */ - @Test - public void testFlowClassifiersEmpty() { - - expect(flowClassifierService.getFlowClassifiers()).andReturn(null).anyTimes(); - replay(flowClassifierService); - final WebResource rs = resource(); - final String response = rs.path("flow_classifiers").get(String.class); - assertThat(response, is("{\"flow_classifiers\":[]}")); - } - - /** - * Tests the result of a rest api GET for flow classifier id. - */ - @Test - public void testGetFlowClassifierId() { - - final Set<FlowClassifier> flowClassifiers = new HashSet<>(); - flowClassifiers.add(flowClassifier1); - - expect(flowClassifierService.exists(anyObject())).andReturn(true).anyTimes(); - expect(flowClassifierService.getFlowClassifier(anyObject())).andReturn(flowClassifier1).anyTimes(); - replay(flowClassifierService); - - final WebResource rs = resource(); - final String response = rs.path("flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051").get(String.class); - final JsonObject result = JsonObject.readFrom(response); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent flow classifier object throws an exception. - */ - @Test - public void testBadGet() { - expect(flowClassifierService.getFlowClassifier(anyObject())) - .andReturn(null).anyTimes(); - replay(flowClassifierService); - WebResource rs = resource(); - try { - rs.path("flow_classifiers/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae").get(String.class); - fail("Fetch of non-existent flow classifier did not throw an exception"); - } catch (UniformInterfaceException ex) { - assertThat(ex.getMessage(), - containsString("returned a response status of")); - } - } - - /** - * Tests creating a flow classifier with POST. - */ - @Test - public void testPost() { - - expect(flowClassifierService.createFlowClassifier(anyObject())) - .andReturn(true).anyTimes(); - replay(flowClassifierService); - - WebResource rs = resource(); - InputStream jsonStream = FlowClassifierResourceTest.class.getResourceAsStream("post-FlowClassifier.json"); - - ClientResponse response = rs.path("flow_classifiers") - .type(MediaType.APPLICATION_JSON_TYPE) - .post(ClientResponse.class, jsonStream); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a flow classifier. - */ - @Test - public void testDelete() { - expect(flowClassifierService.removeFlowClassifier(anyObject())) - .andReturn(true).anyTimes(); - replay(flowClassifierService); - - WebResource rs = resource(); - - String location = "flow_classifiers/4a334cd4-fe9c-4fae-af4b-321c5e2eb051"; - - ClientResponse deleteResponse = rs.path(location) - .type(MediaType.APPLICATION_JSON_TYPE) - .delete(ClientResponse.class); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java deleted file mode 100644 index 3cb2c83f..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortChainResourceTest.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright 2014-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 org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portchain.PortChainService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.UniformInterfaceException; -import com.sun.jersey.api.client.WebResource; - -/** - * Unit tests for port chain REST APIs. - */ -public class PortChainResourceTest extends VtnResourceTest { - - final PortChainService portChainService = createMock(PortChainService.class); - - PortChainId portChainId1 = PortChainId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - private final List<PortPairGroupId> portPairGroupList1 = Lists.newArrayList(); - private final List<FlowClassifierId> flowClassifierList1 = Lists.newArrayList(); - - - final MockPortChain portChain1 = new MockPortChain(portChainId1, tenantId1, "portChain1", - "Mock port chain", portPairGroupList1, - flowClassifierList1); - - /** - * Mock class for a port chain. - */ - private static class MockPortChain implements PortChain { - - private final PortChainId portChainId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List<PortPairGroupId> portPairGroupList; - private final List<FlowClassifierId> flowClassifierList; - - public MockPortChain(PortChainId portChainId, TenantId tenantId, - String name, String description, - List<PortPairGroupId> portPairGroupList, - List<FlowClassifierId> flowClassifierList) { - - this.portChainId = portChainId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairGroupList = portPairGroupList; - this.flowClassifierList = flowClassifierList; - } - - @Override - public PortChainId portChainId() { - return portChainId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List<PortPairGroupId> portPairGroups() { - return ImmutableList.copyOf(portPairGroupList); - } - - @Override - public List<FlowClassifierId> flowClassifiers() { - return ImmutableList.copyOf(flowClassifierList); - } - - @Override - public boolean exactMatch(PortChain portChain) { - return this.equals(portChain) && - Objects.equals(this.portChainId, portChain.portChainId()) && - Objects.equals(this.tenantId, portChain.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortChainService.class, portChainService) - .add(CodecService.class, context.codecManager()); - BaseResource.setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port chains. - */ - @Test - public void testPortChainsEmpty() { - - expect(portChainService.getPortChains()).andReturn(null).anyTimes(); - replay(portChainService); - final WebResource rs = resource(); - final String response = rs.path("port_chains").get(String.class); - assertThat(response, is("{\"port_chains\":[]}")); - } - - /** - * Tests the result of a rest api GET for port chain id. - */ - @Test - public void testGetPortChainId() { - - final Set<PortChain> portChains = new HashSet<>(); - portChains.add(portChain1); - - expect(portChainService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portChainService.getPortChain(anyObject())).andReturn(portChain1).anyTimes(); - replay(portChainService); - - final WebResource rs = resource(); - final String response = rs.path("port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751").get(String.class); - final JsonObject result = JsonObject.readFrom(response); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port chain object throws an exception. - */ - @Test - public void testBadGet() { - expect(portChainService.getPortChain(anyObject())) - .andReturn(null).anyTimes(); - replay(portChainService); - WebResource rs = resource(); - try { - rs.path("port_chains/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae").get(String.class); - fail("Fetch of non-existent port chain did not throw an exception"); - } catch (UniformInterfaceException ex) { - assertThat(ex.getMessage(), - containsString("returned a response status of")); - } - } - - /** - * Tests creating a port chain with POST. - */ - @Test - public void testPost() { - - expect(portChainService.createPortChain(anyObject())) - .andReturn(true).anyTimes(); - replay(portChainService); - - WebResource rs = resource(); - InputStream jsonStream = PortChainResourceTest.class.getResourceAsStream("post-PortChain.json"); - - ClientResponse response = rs.path("port_chains") - .type(MediaType.APPLICATION_JSON_TYPE) - .post(ClientResponse.class, jsonStream); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port chain. - */ - @Test - public void testDelete() { - expect(portChainService.removePortChain(anyObject())) - .andReturn(true).anyTimes(); - replay(portChainService); - - WebResource rs = resource(); - - String location = "port_chains/1278dcd4-459f-62ed-754b-87fc5e4a6751"; - - ClientResponse deleteResponse = rs.path(location) - .type(MediaType.APPLICATION_JSON_TYPE) - .delete(ClientResponse.class); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java deleted file mode 100644 index c13f2141..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairGroupResourceTest.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2014-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 org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpairgroup.PortPairGroupService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import com.eclipsesource.json.JsonObject; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.UniformInterfaceException; -import com.sun.jersey.api.client.WebResource; -/** - * Unit tests for port pair group REST APIs. - */ -public class PortPairGroupResourceTest extends VtnResourceTest { - - final PortPairGroupService portPairGroupService = createMock(PortPairGroupService.class); - - PortPairGroupId portPairGroupId1 = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - private final List<PortPairId> portPairList1 = Lists.newArrayList(); - - final MockPortPairGroup portPairGroup1 = new MockPortPairGroup(portPairGroupId1, tenantId1, "portPairGroup1", - "Mock port pair group", portPairList1); - - /** - * Mock class for a port pair group. - */ - private static class MockPortPairGroup implements PortPairGroup { - - private final PortPairGroupId portPairGroupId; - private final TenantId tenantId; - private final String name; - private final String description; - private final List<PortPairId> portPairList; - - public MockPortPairGroup(PortPairGroupId portPairGroupId, TenantId tenantId, - String name, String description, - List<PortPairId> portPairList) { - - this.portPairGroupId = portPairGroupId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.portPairList = portPairList; - } - - @Override - public PortPairGroupId portPairGroupId() { - return portPairGroupId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public List<PortPairId> portPairs() { - return ImmutableList.copyOf(portPairList); - } - - @Override - public boolean exactMatch(PortPairGroup portPairGroup) { - return this.equals(portPairGroup) && - Objects.equals(this.portPairGroupId, portPairGroup.portPairGroupId()) && - Objects.equals(this.tenantId, portPairGroup.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory() - .add(PortPairGroupService.class, portPairGroupService) - .add(CodecService.class, context.codecManager()); - BaseResource.setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port pair groups. - */ - @Test - public void testPortPairGroupsEmpty() { - - expect(portPairGroupService.getPortPairGroups()).andReturn(null).anyTimes(); - replay(portPairGroupService); - final WebResource rs = resource(); - final String response = rs.path("port_pair_groups").get(String.class); - assertThat(response, is("{\"port_pair_groups\":[]}")); - } - - /** - * Tests the result of a rest api GET for port pair group id. - */ - @Test - public void testGetPortPairGroupId() { - - final Set<PortPairGroup> portPairGroups = new HashSet<>(); - portPairGroups.add(portPairGroup1); - - expect(portPairGroupService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portPairGroupService.getPortPairGroup(anyObject())).andReturn(portPairGroup1).anyTimes(); - replay(portPairGroupService); - - final WebResource rs = resource(); - final String response = rs.path("port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1").get(String.class); - final JsonObject result = JsonObject.readFrom(response); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port pair group object throws an exception. - */ - @Test - public void testBadGet() { - expect(portPairGroupService.getPortPairGroup(anyObject())) - .andReturn(null).anyTimes(); - replay(portPairGroupService); - WebResource rs = resource(); - try { - rs.path("port_pair_groups/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae").get(String.class); - fail("Fetch of non-existent port pair group did not throw an exception"); - } catch (UniformInterfaceException ex) { - assertThat(ex.getMessage(), - containsString("returned a response status of")); - } - } - - /** - * Tests creating a port pair group with POST. - */ - @Test - public void testPost() { - - expect(portPairGroupService.createPortPairGroup(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairGroupService); - - WebResource rs = resource(); - InputStream jsonStream = PortPairGroupResourceTest.class.getResourceAsStream("post-PortPairGroup.json"); - - ClientResponse response = rs.path("port_pair_groups") - .type(MediaType.APPLICATION_JSON_TYPE) - .post(ClientResponse.class, jsonStream); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port pair group. - */ - @Test - public void testDelete() { - expect(portPairGroupService.removePortPairGroup(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairGroupService); - - WebResource rs = resource(); - - String location = "port_pair_groups/4512d643-24fc-4fae-af4b-321c5e2eb3d1"; - - ClientResponse deleteResponse = rs.path(location) - .type(MediaType.APPLICATION_JSON_TYPE) - .delete(ClientResponse.class); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java deleted file mode 100644 index 36014ec5..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/PortPairResourceTest.java +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright 2014-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 org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; -import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; - -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; - -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.onlab.osgi.ServiceDirectory; -import org.onlab.osgi.TestServiceDirectory; -import org.onlab.rest.BaseResource; -import org.onosproject.codec.CodecService; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; -import org.onosproject.vtnrsc.portpair.PortPairService; -import org.onosproject.vtnweb.web.SfcCodecContext; - -import com.eclipsesource.json.JsonObject; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.UniformInterfaceException; -import com.sun.jersey.api.client.WebResource; -/** - * Unit tests for port pair REST APIs. - */ -public class PortPairResourceTest extends VtnResourceTest { - - final PortPairService portPairService = createMock(PortPairService.class); - - PortPairId portPairId1 = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId1 = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - final MockPortPair portPair1 = new MockPortPair(portPairId1, tenantId1, "portPair1", - "Mock port pair", "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345"); - - /** - * Mock class for a port pair. - */ - private static class MockPortPair implements PortPair { - - private final PortPairId portPairId; - private final TenantId tenantId; - private final String name; - private final String description; - private final String ingress; - private final String egress; - - public MockPortPair(PortPairId portPairId, TenantId tenantId, - String name, String description, - String ingress, String egress) { - - this.portPairId = portPairId; - this.tenantId = tenantId; - this.name = name; - this.description = description; - this.ingress = ingress; - this.egress = egress; - } - - @Override - public PortPairId portPairId() { - return portPairId; - } - - @Override - public TenantId tenantId() { - return tenantId; - } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String ingress() { - return ingress; - } - - @Override - public String egress() { - return egress; - } - - @Override - public boolean exactMatch(PortPair portPair) { - return this.equals(portPair) && - Objects.equals(this.portPairId, portPair.portPairId()) && - Objects.equals(this.tenantId, portPair.tenantId()); - } - } - - /** - * Sets up the global values for all the tests. - */ - @Before - public void setUpTest() { - - SfcCodecContext context = new SfcCodecContext(); - ServiceDirectory testDirectory = new TestServiceDirectory().add(PortPairService.class, portPairService) - .add(CodecService.class, context.codecManager()); - BaseResource.setServiceDirectory(testDirectory); - - } - - /** - * Cleans up. - */ - @After - public void tearDownTest() { - } - - /** - * Tests the result of the rest api GET when there are no port pairs. - */ - @Test - public void testPortPairsEmpty() { - - expect(portPairService.getPortPairs()).andReturn(null).anyTimes(); - replay(portPairService); - final WebResource rs = resource(); - final String response = rs.path("port_pairs").get(String.class); - assertThat(response, is("{\"port_pairs\":[]}")); - } - - /** - * Tests the result of a rest api GET for port pair id. - */ - @Test - public void testGetPortPairId() { - - final Set<PortPair> portPairs = new HashSet<>(); - portPairs.add(portPair1); - - expect(portPairService.exists(anyObject())).andReturn(true).anyTimes(); - expect(portPairService.getPortPair(anyObject())).andReturn(portPair1).anyTimes(); - replay(portPairService); - - final WebResource rs = resource(); - final String response = rs.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae").get(String.class); - final JsonObject result = JsonObject.readFrom(response); - assertThat(result, notNullValue()); - } - - /** - * Tests that a fetch of a non-existent port pair object throws an exception. - */ - @Test - public void testBadGet() { - expect(portPairService.getPortPair(anyObject())) - .andReturn(null).anyTimes(); - replay(portPairService); - WebResource rs = resource(); - try { - rs.path("port_pairs/78dcd363-fc23-aeb6-f44b-56dc5aafb3ae").get(String.class); - fail("Fetch of non-existent port pair did not throw an exception"); - } catch (UniformInterfaceException ex) { - assertThat(ex.getMessage(), - containsString("returned a response status of")); - } - } - - /** - * Tests creating a port pair with POST. - */ - @Test - public void testPost() { - - expect(portPairService.createPortPair(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairService); - - WebResource rs = resource(); - InputStream jsonStream = PortPairResourceTest.class.getResourceAsStream("post-PortPair.json"); - - ClientResponse response = rs.path("port_pairs") - .type(MediaType.APPLICATION_JSON_TYPE) - .post(ClientResponse.class, jsonStream); - assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK)); - } - - /** - * Tests deleting a port pair. - */ - @Test - public void testDelete() { - expect(portPairService.removePortPair(anyObject())) - .andReturn(true).anyTimes(); - replay(portPairService); - - WebResource rs = resource(); - - String location = "port_pairs/78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"; - - ClientResponse deleteResponse = rs.path(location) - .type(MediaType.APPLICATION_JSON_TYPE) - .delete(ClientResponse.class); - assertThat(deleteResponse.getStatus(), - is(HttpURLConnection.HTTP_NO_CONTENT)); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java deleted file mode 100644 index 4b95844d..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/resources/VtnResourceTest.java +++ /dev/null @@ -1,54 +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 java.io.IOException; -import java.net.ServerSocket; - -import com.sun.jersey.test.framework.AppDescriptor; -import com.sun.jersey.test.framework.JerseyTest; -import com.sun.jersey.test.framework.WebAppDescriptor; - -/** - * Base class for VTN REST API tests. Performs common configuration operations. - */ -public class VtnResourceTest extends JerseyTest { - - /** - * Assigns an available port for the test. - * - * @param defaultPort If a port cannot be determined, this one is used. - * @return free port - */ - @Override - public int getPort(int defaultPort) { - try { - ServerSocket socket = new ServerSocket(0); - socket.setReuseAddress(true); - int port = socket.getLocalPort(); - socket.close(); - return port; - } catch (IOException ioe) { - return defaultPort; - } - } - - @Override - public AppDescriptor configure() { - return new WebAppDescriptor.Builder("org.onosproject.vtnweb.resources").build(); - } - -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java deleted file mode 100644 index be36aa83..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/FlowClassifierCodecTest.java +++ /dev/null @@ -1,98 +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.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.FlowClassifier; -import org.onosproject.vtnrsc.FlowClassifierId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow classifier codec unit tests. - */ -public class FlowClassifierCodecTest { - - SfcCodecContext context; - JsonCodec<FlowClassifier> flowClassifierCodec; - /** - * Sets up for each test. Creates a context and fetches the flow classifier - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - flowClassifierCodec = context.codec(FlowClassifier.class); - assertThat(flowClassifierCodec, notNullValue()); - } - - /** - * Reads in a flow classifier from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the flow classifier - * @return decoded flow classifier - * @throws IOException if processing the resource fails - */ - private FlowClassifier getFlowClassifier(String resourceName) throws IOException { - InputStream jsonStream = FlowClassifierCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - FlowClassifier flowClassifier = flowClassifierCodec.decode((ObjectNode) json, context); - assertThat(flowClassifier, notNullValue()); - return flowClassifier; - } - - /** - * Checks that a simple flow classifier decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecFlowClassifierTest() throws IOException { - - FlowClassifier flowClassifier = getFlowClassifier("flowClassifier.json"); - - assertThat(flowClassifier, notNullValue()); - - FlowClassifierId flowClassifierId = FlowClassifierId.of("4a334cd4-fe9c-4fae-af4b-321c5e2eb051"); - TenantId tenantId = TenantId.tenantId("1814726e2d22407b8ca76db5e567dcf1"); - - assertThat(flowClassifier.flowClassifierId().toString(), is(flowClassifierId.toString())); - assertThat(flowClassifier.name(), is("flow1")); - assertThat(flowClassifier.tenantId().toString(), is(tenantId.toString())); - assertThat(flowClassifier.description(), is("flow classifier")); - assertThat(flowClassifier.protocol(), is("tcp")); - assertThat(flowClassifier.minSrcPortRange(), is(22)); - assertThat(flowClassifier.maxSrcPortRange(), is(4000)); - assertThat(flowClassifier.minDstPortRange(), is(80)); - assertThat(flowClassifier.maxDstPortRange(), is(80)); - - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java deleted file mode 100644 index 02681db3..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortChainCodecTest.java +++ /dev/null @@ -1,95 +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.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortChain; -import org.onosproject.vtnrsc.PortChainId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow rule codec unit tests. - */ -public class PortChainCodecTest { - - SfcCodecContext context; - JsonCodec<PortChain> portChainCodec; - /** - * Sets up for each test. Creates a context and fetches the flow rule - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portChainCodec = context.codec(PortChain.class); - assertThat(portChainCodec, notNullValue()); - } - - /** - * Reads in a rule from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the rule - * @return decoded flow rule - * @throws IOException if processing the resource fails - */ - private PortChain getPortChain(String resourceName) throws IOException { - InputStream jsonStream = PortChainCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortChain portChain = portChainCodec.decode((ObjectNode) json, context); - assertThat(portChain, notNullValue()); - return portChain; - } - - /** - * Checks that a simple rule decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortChainTest() throws IOException { - - PortChain portChain = getPortChain("portChain.json"); - - assertThat(portChain, notNullValue()); - - PortChainId portChainId = PortChainId.of("1278dcd4-459f-62ed-754b-87fc5e4a6751"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portChain.portChainId().toString(), is(portChainId.toString())); - assertThat(portChain.name(), is("PC2")); - assertThat(portChain.tenantId().toString(), is(tenantId.toString())); - assertThat(portChain.description(), is("Two flows and two port-pair-groups")); - - assertThat(portChain.flowClassifiers(), notNullValue()); - assertThat(portChain.portPairGroups(), notNullValue()); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java deleted file mode 100644 index 7651e098..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairCodecTest.java +++ /dev/null @@ -1,94 +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.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortPair; -import org.onosproject.vtnrsc.PortPairId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Port pair codec unit tests. - */ -public class PortPairCodecTest { - - SfcCodecContext context; - JsonCodec<PortPair> portPairCodec; - /** - * Sets up for each test. Creates a context and fetches the port pair - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portPairCodec = context.codec(PortPair.class); - assertThat(portPairCodec, notNullValue()); - } - - /** - * Reads in a port pair from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the port pair - * @return decoded port pair - * @throws IOException if processing the resource fails - */ - private PortPair getPortPair(String resourceName) throws IOException { - InputStream jsonStream = PortPairCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortPair portPair = portPairCodec.decode((ObjectNode) json, context); - assertThat(portPair, notNullValue()); - return portPair; - } - - /** - * Checks that a simple port pair decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortPairTest() throws IOException { - - PortPair portPair = getPortPair("portPair.json"); - - assertThat(portPair, notNullValue()); - - PortPairId portPairId = PortPairId.of("78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portPair.portPairId().toString(), is(portPairId.toString())); - assertThat(portPair.name(), is("PP1")); - assertThat(portPair.tenantId().toString(), is(tenantId.toString())); - assertThat(portPair.description(), is("SF-A")); - assertThat(portPair.ingress().toString(), is("dace4513-24fc-4fae-af4b-321c5e2eb3d1")); - assertThat(portPair.egress().toString(), is("aef3478a-4a56-2a6e-cd3a-9dee4e2ec345")); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java deleted file mode 100644 index de2ee001..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/PortPairGroupCodecTest.java +++ /dev/null @@ -1,93 +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.web; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.notNullValue; - -import java.io.IOException; -import java.io.InputStream; - -import org.junit.Before; -import org.junit.Test; -import org.onosproject.codec.JsonCodec; -import org.onosproject.vtnrsc.PortPairGroup; -import org.onosproject.vtnrsc.PortPairGroupId; -import org.onosproject.vtnrsc.TenantId; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -/** - * Flow rule codec unit tests. - */ -public class PortPairGroupCodecTest { - - SfcCodecContext context; - JsonCodec<PortPairGroup> portPairGroupCodec; - /** - * Sets up for each test. Creates a context and fetches the flow rule - * codec. - */ - @Before - public void setUp() { - context = new SfcCodecContext(); - portPairGroupCodec = context.codec(PortPairGroup.class); - assertThat(portPairGroupCodec, notNullValue()); - } - - /** - * Reads in a rule from the given resource and decodes it. - * - * @param resourceName resource to use to read the JSON for the rule - * @return decoded flow rule - * @throws IOException if processing the resource fails - */ - private PortPairGroup getPortPairGroup(String resourceName) throws IOException { - InputStream jsonStream = PortPairGroupCodecTest.class - .getResourceAsStream(resourceName); - ObjectMapper mapper = new ObjectMapper(); - JsonNode json = mapper.readTree(jsonStream); - assertThat(json, notNullValue()); - PortPairGroup portPairGroup = portPairGroupCodec.decode((ObjectNode) json, context); - assertThat(portPairGroup, notNullValue()); - return portPairGroup; - } - - /** - * Checks that a simple rule decodes properly. - * - * @throws IOException if the resource cannot be processed - */ - @Test - public void codecPortPairGroupTest() throws IOException { - - PortPairGroup portPairGroup = getPortPairGroup("portPairGroup.json"); - - assertThat(portPairGroup, notNullValue()); - - PortPairGroupId portPairGroupId = PortPairGroupId.of("4512d643-24fc-4fae-af4b-321c5e2eb3d1"); - TenantId tenantId = TenantId.tenantId("d382007aa9904763a801f68ecf065cf5"); - - assertThat(portPairGroup.portPairGroupId().toString(), is(portPairGroupId.toString())); - assertThat(portPairGroup.name(), is("PG1")); - assertThat(portPairGroup.tenantId().toString(), is(tenantId.toString())); - assertThat(portPairGroup.description(), is("Two port-pairs")); - assertThat(portPairGroup.portPairs(), notNullValue()); - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java b/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java deleted file mode 100644 index c56a4fcb..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/java/org/onosproject/vtnweb/web/SfcCodecContext.java +++ /dev/null @@ -1,68 +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.web; - -import org.onosproject.codec.CodecContext; -import org.onosproject.codec.CodecService; -import org.onosproject.codec.JsonCodec; -import org.onosproject.codec.impl.CodecManager; - -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Mock codec context for use in codec unit tests. - */ -public class SfcCodecContext implements CodecContext { - - private final ObjectMapper mapper = new ObjectMapper(); - private final CodecManager codecManager = new CodecManager(); - private final VtnCodecRegistrator manager = new VtnCodecRegistrator(); - - /** - * Constructs a new mock codec context. - */ - public SfcCodecContext() { - codecManager.activate(); - manager.codecService = codecManager; - manager.activate(); - } - - @Override - public ObjectMapper mapper() { - return mapper; - } - - @SuppressWarnings("unchecked") - @Override - public <T> T getService(Class<T> serviceClass) { - // TODO - return null; - } - - @Override - public <T> JsonCodec<T> codec(Class<T> entityClass) { - return codecManager.getCodec(entityClass); - } - - /** - * Get the codec manager. - * - * @return instance of codec manager - */ - public CodecService codecManager() { - return codecManager; - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json deleted file mode 100644 index 6e72e8fd..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-FlowClassifier.json +++ /dev/null @@ -1,14 +0,0 @@ -{"flow_classifier": { - "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051", - "name": "flow1", - "tenant_id": "1814726e2d22407b8ca76db5e567dcf1", - "description": "flow classifier", - "ethertype": "IPv4", - "protocol": "tcp", - "source_port_range_min": 22, "source_port_range_max": 4000, - "destination_port_range_min": 80, "destination_port_range_max": 80, - "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16", - "logical_destination_port": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "logical_source_port": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json deleted file mode 100644 index 488e290f..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortChain.json +++ /dev/null @@ -1,15 +0,0 @@ -{"port_pair": { - "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751", - "name": "PC2", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two flows and two port-pair-groups", - "flow_classifiers": [ - "456a4a34-2e9c-14ae-37fb-765feae2eb05", - "4a334cd4-fe9c-4fae-af4b-321c5e2eb051" - ], - "port_pair_groups": [ - "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "4a634d49-76dc-4fae-af4b-321c5e23d651" - ] - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json deleted file mode 100644 index 2a774e31..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPair.json +++ /dev/null @@ -1,9 +0,0 @@ -{"port_pair": { - "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae", - "name": "PP1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "SF-A", - "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" - } -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json deleted file mode 100644 index f6a888d9..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/resources/post-PortPairGroup.json +++ /dev/null @@ -1,11 +0,0 @@ -{"port_pair_group": { - "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "name": "portPairGroup1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Mock port pair group", - "port_pairs": [ - "875dfeda-43ed-23fe-454b-764feab2c342", - "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae" - ] -} -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json deleted file mode 100644 index 0fc0b74e..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/flowClassifier.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "id": "4a334cd4-fe9c-4fae-af4b-321c5e2eb051", - "name": "flow1", - "tenant_id": "1814726e2d22407b8ca76db5e567dcf1", - "description": "flow classifier", - "ethertype": "IPv4", - "protocol": "tcp", - "source_port_range_min": 22, "source_port_range_max": 4000, - "destination_port_range_min": 80, "destination_port_range_max": 80, - "source_ip_prefix": "1.1.1.1/16" , "destination_ip_prefix": "22.12.34.45/16" - } diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json deleted file mode 100644 index 07a1bc21..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portChain.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "id": "1278dcd4-459f-62ed-754b-87fc5e4a6751", - "name": "PC2", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two flows and two port-pair-groups", - "flow_classifiers": [ - "456a4a34-2e9c-14ae-37fb-765feae2eb05", - "4a334cd4-fe9c-4fae-af4b-321c5e2eb051" - ], - "port_pair_groups": [ - "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "4a634d49-76dc-4fae-af4b-321c5e23d651" - ] -} diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json deleted file mode 100644 index f858c88c..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPair.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "id": "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae", - "name": "PP1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "SF-A", - "ingress": "dace4513-24fc-4fae-af4b-321c5e2eb3d1", - "egress": "aef3478a-4a56-2a6e-cd3a-9dee4e2ec345" -} - diff --git a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json b/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json deleted file mode 100644 index e19a66fc..00000000 --- a/framework/src/onos/apps/vtn/vtnweb/src/test/resources/org/onosproject/vtnweb/web/portPairGroup.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "4512d643-24fc-4fae-af4b-321c5e2eb3d1", - "name": "PG1", - "tenant_id": "d382007aa9904763a801f68ecf065cf5", - "description": "Two port-pairs", - "port_pairs": [ - "875dfeda-43ed-23fe-454b-764feab2c342", - "78dcd363-fc23-aeb6-f44b-56dc5e2fb3ae" - ] -} |