diff options
Diffstat (limited to 'framework/src/onos/ovsdb/api/src/main/java')
11 files changed, 113 insertions, 30 deletions
diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java index 899799fa..759ec499 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbBridgeName.java @@ -49,7 +49,7 @@ public final class OvsdbBridgeName { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java index edd25ac6..cfd844d3 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java @@ -16,6 +16,7 @@ package org.onosproject.ovsdb.controller; import com.google.common.util.concurrent.ListenableFuture; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -84,6 +85,15 @@ public interface OvsdbClientService extends OvsdbRPC { void createBridge(String bridgeName); /** + * Creates a bridge. + * + * @param bridgeName bridge name + * @param dpid data path id + * @param exPortName external port name + */ + void createBridge(String bridgeName, String dpid, String exPortName); + + /** * Creates a bridge with given name and dpid. * Sets the bridge's controller with given controllers. * @@ -204,7 +214,7 @@ public interface OvsdbClientService extends OvsdbRPC { String getControllerUuid(String controllerName, String controllerTarget); /** - * Gets the Ovs uuid. + * Gets the OVS uuid. * * @param dbName database name * @return ovs uuid, empty if no uuid is find @@ -212,7 +222,7 @@ public interface OvsdbClientService extends OvsdbRPC { String getOvsUuid(String dbName); /** - * Gets the ovsdb database schema. + * Gets the OVSDB database schema. * * @param dbName database name * @return database schema @@ -220,7 +230,7 @@ public interface OvsdbClientService extends OvsdbRPC { ListenableFuture<DatabaseSchema> getOvsdbSchema(String dbName); /** - * Gets the ovsdb table updates. + * Gets the OVSDB table updates. * * @param dbName database name * @param id random uuid @@ -229,7 +239,7 @@ public interface OvsdbClientService extends OvsdbRPC { ListenableFuture<TableUpdates> monitorTables(String dbName, String id); /** - * Gets the ovsdb config operation result. + * Gets the OVSDB config operation result. * * @param dbName database name * @param operations the list of operations @@ -239,7 +249,7 @@ public interface OvsdbClientService extends OvsdbRPC { List<Operation> operations); /** - * Gets the ovsdb database schema from local. + * Gets the OVSDB database schema from local. * * @param dbName database name * @return database schema @@ -247,17 +257,17 @@ public interface OvsdbClientService extends OvsdbRPC { DatabaseSchema getDatabaseSchema(String dbName); /** - * Gets the ovsdb row from local ovsdb store. + * Gets the OVSDB row from local OVSDB store. * * @param dbName database name * @param tableName table name * @param uuid row uuid - * @return row ovsdb row + * @return row OVSDB row */ Row getRow(String dbName, String tableName, String uuid); /** - * Removes the ovsdb row from local ovsdb store. + * Removes the OVSDB row from local OVSDB store. * * @param dbName database name * @param tableName table name @@ -266,25 +276,25 @@ public interface OvsdbClientService extends OvsdbRPC { void removeRow(String dbName, String tableName, String uuid); /** - * Updates the local ovsdb store. + * Updates the local OVSDB store. * * @param dbName database name * @param tableName table name * @param uuid row uuid - * @param row ovsdb row + * @param row OVSDB row */ void updateOvsdbStore(String dbName, String tableName, String uuid, Row row); /** - * Gets ovsdb local ports. + * Gets OVSDB local ports. * * @param ifaceids the ifaceid that needed - * @return ovsdb ports + * @return OVSDB ports */ Set<OvsdbPort> getLocalPorts(Iterable<String> ifaceids); /** - * Disconnects the ovsdb server. + * Disconnects the OVSDB server. */ void disconnect(); } diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java index 8ccf45f2..02989afa 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbDatapathId.java @@ -47,7 +47,7 @@ public final class OvsdbDatapathId { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java index 35fac7bc..f68b3c8a 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbEvent.java @@ -48,7 +48,7 @@ public final class OvsdbEvent<S> { } /** - * Returns the type of the event. + * Returns the type of event. * * @return event type */ @@ -57,7 +57,7 @@ public final class OvsdbEvent<S> { } /** - * Returns the subject of the event. + * Returns the subject of event. * * @return subject to which this event pertains */ diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java index 10ba80bc..bf724fa4 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbIfaceId.java @@ -47,7 +47,7 @@ public class OvsdbIfaceId { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java index f3bba4b8..60146c85 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbNodeId.java @@ -22,8 +22,8 @@ import java.util.Objects; import org.onlab.packet.IpAddress; /** - * The class representing a OpenStack Compute or Network nodeId. This class is - * immutable. + * The class representing a nodeId of node which using ovsdb connection. + * This class is immutable. */ public final class OvsdbNodeId { private static final String SCHEME = "ovsdb"; @@ -31,7 +31,7 @@ public final class OvsdbNodeId { private final String ipAddress; /** - * Creates a new node identifier from a IpAddress ipAddress, a long port. + * Creates a new node identifier from an IpAddress ipAddress, a long port. * * @param ipAddress node IP address * @param port node port @@ -44,7 +44,7 @@ public final class OvsdbNodeId { @Override public int hashCode() { - return Objects.hash(nodeId); + return nodeId.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java index d9c7c2da..7d40e99f 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortName.java @@ -49,7 +49,7 @@ public final class OvsdbPortName { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java index bd094d04..86fc887a 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortNumber.java @@ -47,7 +47,7 @@ public final class OvsdbPortNumber { @Override public int hashCode() { - return Objects.hash(value); + return Objects.hashCode(value); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java index bf05fc73..fb7cdb00 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbPortType.java @@ -21,14 +21,15 @@ import static com.google.common.base.Preconditions.checkNotNull; import java.util.Objects; /** - * The class representing a port type. This class is immutable. + * The class representing a port type. + * This class is immutable. */ public class OvsdbPortType { private final String value; /** - * Constructor from a String port type. + * Constructor from a String. * * @param value the port type to use */ @@ -38,9 +39,9 @@ public class OvsdbPortType { } /** - * Gets the value of the port type. + * Gets the value of port type. * - * @return the value of the port type + * @return the value of port type */ public String value() { return value; @@ -48,7 +49,7 @@ public class OvsdbPortType { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java index 80befab3..490d640b 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbTunnelName.java @@ -48,7 +48,7 @@ public final class OvsdbTunnelName { @Override public int hashCode() { - return Objects.hash(value); + return value.hashCode(); } @Override diff --git a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java index 3280ad34..c6038632 100644 --- a/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java +++ b/framework/src/onos/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java @@ -24,7 +24,9 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; + import io.netty.channel.Channel; + import org.onlab.packet.IpAddress; import org.onosproject.net.DeviceId; import org.onosproject.net.behaviour.ControllerInfo; @@ -489,6 +491,76 @@ public class DefaultOvsdbClient } @Override + public void createBridge(String bridgeName, String dpid, String exPortName) { + log.debug("create bridge {}", bridgeName); + + DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); + if (dbSchema == null) { + log.warn("The schema is null"); + return; + } + + Bridge bridge = (Bridge) TableGenerator.createTable(dbSchema, + OvsdbTable.BRIDGE); + if (bridge == null) { + log.debug("Can not create bridge"); + return; + } + + Set<String> failModes = new HashSet<>(); + failModes.add("secure"); + bridge.setFailMode(failModes); + + Set<String> protocols = new HashSet<>(); + protocols.add(OvsdbConstant.OPENFLOW13); + bridge.setProtocols(protocols); + + String ovsUuid = getOvsUuid(OvsdbConstant.DATABASENAME); + if (ovsUuid == null) { + log.warn("The Open_vSwitch is null"); + return; + } + + String bridgeUuid = getBridgeUuid(bridgeName); + if (bridgeUuid == null) { + log.debug("Create a new bridge"); + + bridge.setName(bridgeName); + if (dpid != null) { + Map<String, String> options = new HashMap<>(); + options.put("datapath-id", dpid); + bridge.setOtherConfig(options); + } + bridgeUuid = insertConfig(OvsdbConstant.BRIDGE, "_uuid", + OvsdbConstant.DATABASENAME, "bridges", + ovsUuid, bridge.getRow()); + + if (bridgeUuid != null) { + Port port = (Port) TableGenerator.createTable(dbSchema, + OvsdbTable.PORT); + if (port != null) { + log.debug("the port is not null"); + port.setName(bridgeName); + + insertConfig(OvsdbConstant.PORT, "_uuid", "Bridge", "ports", bridgeUuid, + port.getRow()); + } + } + + } else { + log.info("Update a bridge"); + updateConfig(OvsdbConstant.BRIDGE, "_uuid", bridgeUuid, bridge.getRow()); + } + // Create external port + if (exPortName != null) { + createPort(bridgeName, exPortName); + } + + setControllerAuto(bridgeUuid); + log.info("Create bridge success"); + } + + @Override public boolean createBridge(String bridgeName, String dpid, List<ControllerInfo> controllers) { DatabaseSchema dbSchema = schema.get(OvsdbConstant.DATABASENAME); |