Moved monitor to OVSInstance, can add multiple bridges 96/696/1
authorEvan Zeller <evanrzeller@gmail.com>
Wed, 24 Jul 2013 20:47:13 +0000 (16:47 -0400)
committerEvan Zeller <evanrzeller@gmail.com>
Wed, 24 Jul 2013 20:47:13 +0000 (16:47 -0400)
Signed-off-by: Evan Zeller <evanrzeller@gmail.com>
ovsdb/src/main/java/org/opendaylight/ovsdb/database/OVSInstance.java
ovsdb/src/main/java/org/opendaylight/ovsdb/internal/ConfigurationService.java
ovsdb/src/main/java/org/opendaylight/ovsdb/internal/MutateRequest.java
ovsdb/src/test/java/org/opendaylight/ovsdb/OvsdbTestAddBridge.java

index 171587964e0090683d39ef6e00f2c403112a06c1..9930a406db438900777652f2dc1b81bf870d69aa 100755 (executable)
@@ -1,13 +1,54 @@
 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.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
 public class OVSInstance {\r
     private String uuid;\r
 \r
+    public OVSInstance(){\r
+        this.uuid = null;\r
+    }\r
+\r
     public OVSInstance(String uuid){\r
         this.uuid = uuid;\r
     }\r
 \r
+    @SuppressWarnings("unchecked")\r
+    public void monitorOVS(Connection connection){\r
+        List<String> columns = new ArrayList<String>();\r
+        columns.add("_uuid");\r
+        columns.add("bridges");\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("Open_vSwitch", 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> vSwitchTable = (Map) monitorResponse.get("Open_vSwitch");\r
+\r
+        this.uuid = (String) vSwitchTable.keySet().toArray()[0];\r
+    }\r
+\r
     public String getUuid(){\r
         return this.uuid;\r
     }\r
index 8e8bf2832ab3395fd683fab11ec04feb0cd8fa35..eebb67a2b6f32895b3473462309edd935f4fa53f 100755 (executable)
@@ -57,22 +57,6 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
         }
     }
 
-    private OvsdbMessage createAddBridgeMonitorMsg(){
-        Map<String, Object> tables = new HashMap<String, Object>();
-        Map<String, Object> row = new HashMap<String, Object>();
-        ArrayList<String> columns = new ArrayList<String>();
-
-        columns.add("_uuid");
-        columns.add("bridges");
-        row.put("columns", columns);
-        tables.put("Open_vSwitch", row);
-
-        Object[] params = {"Open_vSwitch", null, tables};
-
-        OvsdbMessage msg = new OvsdbMessage("monitor", params);
-        return msg;
-    }
-
     @Override
     @SuppressWarnings("unchecked")
     public boolean createBridgeDomain(Node node, String bridgeIdentifier) throws Throwable{
@@ -93,38 +77,35 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
 
                 Object addSwitchRequest;
 
-                OvsdbMessage monitorMsg = createAddBridgeMonitorMsg();
+                OVSInstance instance = new OVSInstance();
+                instance.monitorOVS(connection);
 
-                connection.sendMessage(monitorMsg);
-                Map<String, Object> monitorResponse = (Map) connection.readResponse(Map.class);
+                if(instance.getUuid() != null){
+                    List<String> bridgeUuidPair = new ArrayList<String>();
+                    bridgeUuidPair.add("named-uuid");
+                    bridgeUuidPair.add(newBridge);
 
-                if(monitorResponse.get("Open_vSwitch") != null){
-                    Map<String, Object> rows = (Map) monitorResponse.get("Open_vSwitch");
-                    Object[] rowsArray = rows.keySet().toArray();
-                    OVSInstance instance = new OVSInstance((String)rowsArray[0]);
+                    List<Object> mutation = new ArrayList<Object>();
+                    mutation.add("bridges");
+                    mutation.add("insert");
+                    mutation.add(bridgeUuidPair);
 
-                    Map<String, Object> vswitchRow = new HashMap<String, Object>();
-                    ArrayList<Object> bridges = new ArrayList<Object>();
-                    bridges.add("set");
-                    ArrayList<Object> set = new ArrayList<Object>();
-                    ArrayList<String> newPair = new ArrayList<String>();
-                    newPair.add("named-uuid");
-                    newPair.add(newBridge);
-                    set.add(newPair);
-                    bridges.add(set);
-                    vswitchRow.put("bridges", bridges);
+                    List<Object> mutations = new ArrayList<Object>();
+                    mutations.add(mutation);
 
-                    ArrayList<Object> where = new ArrayList<Object>();
-                    ArrayList<Object> whereInner = new ArrayList<Object>();
-                    ArrayList<String> uuidPair = new ArrayList<String>();
+                    List<String> ovsUuidPair = new ArrayList<String>();
+                    ovsUuidPair.add("uuid");
+                    ovsUuidPair.add(instance.getUuid());
+
+                    List<Object> whereInner = new ArrayList<Object>();
                     whereInner.add("_uuid");
                     whereInner.add("==");
-                    uuidPair.add("uuid");
-                    uuidPair.add(instance.getUuid());
-                    whereInner.add(uuidPair);
+                    whereInner.add(ovsUuidPair);
+
+                    List<Object> where = new ArrayList<Object>();
                     where.add(whereInner);
 
-                    addSwitchRequest = new UpdateRequest("update", "Open_vSwitch", where, vswitchRow);
+                    addSwitchRequest = new MutateRequest("Open_vSwitch", where, mutations);
                 }
                 else{
                     Map<String, Object> vswitchRow = new HashMap<String, Object>();
@@ -136,7 +117,7 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
                 }
 
                 Map<String, Object> bridgeRow = new HashMap<String, Object>();
-                bridgeRow.put("name", "br1");
+                bridgeRow.put("name", bridgeIdentifier);
                 ArrayList<String> ports = new ArrayList<String>();
                 ports.add("named-uuid");
                 ports.add(newPort);
@@ -144,7 +125,7 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
                 InsertRequest addBridgeRequest = new InsertRequest("insert", "Bridge", newBridge, bridgeRow);
 
                 Map<String, Object> portRow = new HashMap<String, Object>();
-                portRow.put("name", "br1");
+                portRow.put("name", bridgeIdentifier);
                 ArrayList<String> interfaces = new ArrayList<String>();
                 interfaces.add("named-uuid");
                 interfaces.add(newInterface);
@@ -152,7 +133,7 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
                 InsertRequest addPortRequest = new InsertRequest("insert", "Port", newPort, portRow);
 
                 Map<String, Object> interfaceRow = new HashMap<String, Object>();
-                interfaceRow.put("name", "br1");
+                interfaceRow.put("name", bridgeIdentifier);
                 interfaceRow.put("type", "internal");
                 InsertRequest addIntfRequest = new InsertRequest("insert", "Interface", newInterface, interfaceRow);
 
index 2141c13ab347dac80a1f023dba2f13c15bcebbf3..342d25b8d85dcdb0a7820fb571c0e30a0455b8eb 100755 (executable)
@@ -1,14 +1,15 @@
 package org.opendaylight.ovsdb.internal;\r
 \r
 import java.util.ArrayList;\r
+import java.util.List;\r
 \r
 public class MutateRequest {\r
     public String op = "mutate";\r
     public String table;\r
-    public ArrayList<Object> where;\r
-    public ArrayList<Object> mutations;\r
+    public List<Object> where;\r
+    public List<Object> mutations;\r
 \r
-    public MutateRequest(String table, ArrayList<Object> where, ArrayList<Object> mutations){\r
+    public MutateRequest(String table, List<Object> where, List<Object> mutations){\r
         this.table = table;\r
         this.where = where;\r
         this.mutations = mutations;\r
index 51983096c82990bca40be85fb2bf10274eaecc4c..13c42d08bad097599552a19784f44deedbea6d74 100755 (executable)
@@ -26,7 +26,7 @@ public class OvsdbTestAddBridge {
         connectionService.init();\r
         String identifier = "TEST";\r
         Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();\r
-        params.put(ConnectionConstants.ADDRESS, "172.16.3.196");\r
+        params.put(ConnectionConstants.ADDRESS, "192.168.56.101");\r
 \r
         Node node = connectionService.connect(identifier, params);\r
         if(node == null){\r