diff --git a/apps/cordvtn/pom.xml b/apps/cordvtn/pom.xml new file mode 100644 index 0000000000..9056fbf79f --- /dev/null +++ b/apps/cordvtn/pom.xml @@ -0,0 +1,41 @@ + + + + 4.0.0 + + + org.onosproject + onos-apps + 1.3.0-SNAPSHOT + ../pom.xml + + + onos-app-cordvtn + bundle + + Virtual tenant network service for CORD + + + org.onosproject.cordvtn + + + + + + diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java new file mode 100644 index 0000000000..1dee4761fe --- /dev/null +++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/CordVtnService.java @@ -0,0 +1,52 @@ +/* + * 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.cordvtn; + +import java.util.List; + +/** + * Service for provisioning overlay virtual networks on compute nodes. + */ +public interface CordVtnService { + /** + * Adds new nodes to the service and processes initial setup. + * + * @param ovsdbNodes list of nodes + */ + void addNodes(List ovsdbNodes); + + /** + * Deletes the nodes from the service and cleans up unnecessary configurations + * associated with the deleted nodes. + * + * @param ovsdbNodes list of nodes + */ + void deleteNodes(List ovsdbNodes); + + /** + * Returns the number of the nodes known to the service. + * + * @return number of nodes + */ + int getNodeCount(); + + /** + * Returns all nodes known to the service. + * + * @return list of nodes + */ + List getNodes(); +} diff --git a/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java new file mode 100644 index 0000000000..75e61d79aa --- /dev/null +++ b/apps/cordvtn/src/main/java/org/onosproject/cordvtn/OvsdbNode.java @@ -0,0 +1,90 @@ +/* + * 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.cordvtn; + +import org.onlab.packet.IpAddress; +import org.onlab.packet.TpPort; +import org.onosproject.net.DeviceId; +import org.onosproject.net.behaviour.BridgeConfig; +import org.onosproject.net.behaviour.TunnelConfig; + +/** + * Representation of a node with ovsdb server. + */ +public interface OvsdbNode { + /** + * State of the ovsdb node. + */ + enum State { + READY, CONNECTED, DISCONNECTED + } + + /** + * Returns the IP address of ovsdb server. + * + * @return ip address + */ + IpAddress ip(); + + /** + * Returns the port number of ovsdb server. + * + * @return port number + */ + TpPort port(); + + /** + * Returns the state of the node. + * + * @return state of the node + */ + State getState(); + + /** + * Sets the state of the node. + * + * @param state state of the node + */ + void setState(State state); + + /** + * Returns the device ID of the node. + * + * @return device id + */ + DeviceId getDeviceId(); + + /** + * Sets the device id of the node. + * + * @param deviceId device identifier + */ + void setDeviceId(DeviceId deviceId); + + /** + * Returns the bridge configuration handler of the node. + * + * @return bridge config behavior instance + */ + BridgeConfig getBridgeConfig(); + + /** + * Returns the tunnel configuration handler of the node. + * + * @return tunnel config behavior instance + */ + TunnelConfig getTunnelConfig(); +} diff --git a/apps/pom.xml b/apps/pom.xml index e5cedddecc..f875392b07 100644 --- a/apps/pom.xml +++ b/apps/pom.xml @@ -58,7 +58,8 @@ vtn vtnweb dhcp - + cordvtn + default