--- /dev/null
+package org.opendaylight.ovsdb.database;\r
+\r
+\r
+import org.opendaylight.ovsdb.internal.Connection;\r
+import org.opendaylight.ovsdb.internal.OvsdbMessage;\r
+\r
+import java.util.*;\r
+\r
+public class OVSBridge {\r
+\r
+ private String uuid;\r
+ private String name;\r
+\r
+ public OVSBridge(String uuid, String name){\r
+ this.uuid = uuid;\r
+ this.name = name;\r
+ }\r
+\r
+ public String getUuid(){\r
+ return this.uuid;\r
+ }\r
+\r
+ public String getName(){\r
+ return this.name;\r
+ }\r
+\r
+ @SuppressWarnings("unchecked")\r
+ public static Map<String, OVSBridge> monitorBridge(Connection connection){\r
+ List<String> columns = new ArrayList<String>();\r
+ columns.add("_uuid");\r
+ columns.add("name");\r
+\r
+ Map<String, List<String>> row = new HashMap<String, List<String>>();\r
+ row.put("columns", columns);\r
+\r
+ Map<String, Map> tables = new HashMap<String, Map>();\r
+ tables.put("Bridge", row);\r
+\r
+ Object[] params = {"Open_vSwitch", null, tables};\r
+\r
+ OvsdbMessage msg = new OvsdbMessage("monitor", params);\r
+ Map<String, Object> monitorResponse = new HashMap<String, Object>();\r
+\r
+ try{\r
+ connection.sendMessage(msg);\r
+ monitorResponse = (Map<String, Object>) connection.readResponse(Map.class);\r
+ } catch (Throwable e){\r
+ e.printStackTrace();\r
+ }\r
+\r
+ Map<String, Object> bridgeTable = (Map) monitorResponse.get("Bridge");\r
+\r
+ Object[] uuidObjects = bridgeTable.keySet().toArray();\r
+ String[] uuids = Arrays.copyOf(uuidObjects, uuidObjects.length, String[].class);\r
+\r
+ Map<String, OVSBridge> result = new HashMap<String, OVSBridge>();\r
+\r
+ for(String uuid : uuids){\r
+ Map<String, Object> newRow = (Map) bridgeTable.get(uuid);\r
+ Map<String, Object> newColumns = (Map) newRow.get("new");\r
+ String name = (String) newColumns.get("name");\r
+ result.put(name, new OVSBridge(uuid, name));\r
+ }\r
+\r
+ return result;\r
+ }\r
+}\r
import java.net.InetAddress;
import java.util.*;
+import org.opendaylight.ovsdb.database.OVSBridge;
import org.opendaylight.ovsdb.database.OVSInstance;
import org.opendaylight.ovsdb.sal.configuration.IPluginInNetworkConfigurationService;
import org.opendaylight.controller.sal.core.Node;
String newInterface = "new_interface";
String newPort = "new_port";
String newSwitch = "new_switch";
- /**
- * bridge_uuid is temporary until we get the Bridge table _uuid
- * returned the value of the bridge is located in the
- * output from ovsdb-client dump tcp:172.16.58.170:6634
- * Replace the one below with that value of the disired bridge.
- */
- String bridge_uuid = "2636c43a-4eb7-4ef0-ab7a-1a95113e05e6";
- Object addSwitchRequest;
+ Map<String, OVSBridge> existingBridges = OVSBridge.monitorBridge(connection);
- OVSInstance instance = new OVSInstance();
- instance.monitorOVS(connection);
+ OVSBridge bridge = existingBridges.get(bridgeIdentifier);
- if(instance.getUuid() != null){
- List<String> bridgeUuidPair = new ArrayList<String>();
- bridgeUuidPair.add("named-uuid");
- bridgeUuidPair.add(newBridge);
+ List<String> portUuidPair = new ArrayList<String>();
+ portUuidPair.add("named-uuid");
+ portUuidPair.add(newPort);
- List<Object> mutation = new ArrayList<Object>();
- mutation.add("ports");
- mutation.add("insert");
- mutation.add(bridgeUuidPair);
- List<Object> mutations = new ArrayList<Object>();
- mutations.add(mutation);
+ List<Object> mutation = new ArrayList<Object>();
+ mutation.add("ports");
+ mutation.add("insert");
+ mutation.add(portUuidPair);
+ List<Object> mutations = new ArrayList<Object>();
+ mutations.add(mutation);
- List<String> ovsUuidPair = new ArrayList<String>();
- ovsUuidPair.add("uuid");
- ovsUuidPair.add(bridge_uuid);
+ List<String> bridgeUuidPair = new ArrayList<String>();
+ bridgeUuidPair.add("uuid");
+ bridgeUuidPair.add(bridge.getUuid());
- List<Object> whereInner = new ArrayList<Object>();
- whereInner.add("_uuid");
- whereInner.add("==");
- whereInner.add(ovsUuidPair);
+ List<Object> whereInner = new ArrayList<Object>();
+ whereInner.add("_uuid");
+ whereInner.add("==");
+ whereInner.add(bridgeUuidPair);
- List<Object> where = new ArrayList<Object>();
- where.add(whereInner);
+ List<Object> where = new ArrayList<Object>();
+ where.add(whereInner);
- addSwitchRequest = new MutateRequest("Bridge", where, mutations);
- }
- else{
- Map<String, Object> vswitchRow = new HashMap<String, Object>();
- ArrayList<String> bridges = new ArrayList<String>();
- bridges.add("named-uuid");
- bridges.add(newBridge);
- vswitchRow.put("bridges", bridges);
- addSwitchRequest = new InsertRequest("insert", "Open_vSwitch", newSwitch, vswitchRow);
- }
+ MutateRequest mutateBridgeRequest = new MutateRequest("Bridge", where, mutations);
Map<String, Object> portRow = new HashMap<String, Object>();
portRow.put("name", portIdentifier);
interfaces.add("named-uuid");
interfaces.add(newInterface);
portRow.put("interfaces", interfaces);
- InsertRequest addPortRequest = new InsertRequest("insert", "Port", newBridge, portRow);
+ InsertRequest addPortRequest = new InsertRequest("insert", "Port", newPort, portRow);
Map<String, Object> interfaceRow = new HashMap<String, Object>();
interfaceRow.put("name", portIdentifier);
+ interfaceRow.put("type", "internal");
InsertRequest addIntfRequest = new InsertRequest("insert", "Interface", newInterface, interfaceRow);
- Object[] params = {"Open_vSwitch", addSwitchRequest, addIntfRequest, addPortRequest};
+ Object[] params = {"Open_vSwitch", mutateBridgeRequest, addIntfRequest, addPortRequest};
OvsdbMessage msg = new OvsdbMessage("transact", params);
connection.sendMessage(msg);