Pulling bridge uuid from database for addport now works 15/715/1
authorEvan Zeller <evanrzeller@gmail.com>
Fri, 26 Jul 2013 23:01:00 +0000 (19:01 -0400)
committerEvan Zeller <evanrzeller@gmail.com>
Fri, 26 Jul 2013 23:01:00 +0000 (19:01 -0400)
Signed-off-by: Evan Zeller <evanrzeller@gmail.com>
ovsdb/src/main/java/org/opendaylight/ovsdb/database/OVSBridge.java [new file with mode: 0755]
ovsdb/src/main/java/org/opendaylight/ovsdb/database/OVSInstance.java
ovsdb/src/main/java/org/opendaylight/ovsdb/internal/ConfigurationService.java
ovsdb/src/test/java/org/opendaylight/ovsdb/OvsdbTestAddBridge.java
ovsdb/src/test/java/org/opendaylight/ovsdb/OvsdbTestAddPort.java [changed mode: 0644->0755]

diff --git a/ovsdb/src/main/java/org/opendaylight/ovsdb/database/OVSBridge.java b/ovsdb/src/main/java/org/opendaylight/ovsdb/database/OVSBridge.java
new file mode 100755 (executable)
index 0000000..67754fc
--- /dev/null
@@ -0,0 +1,67 @@
+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
index 9930a406db438900777652f2dc1b81bf870d69aa..063ece74b4a71429ccd66445a27073457e442222 100755 (executable)
@@ -45,8 +45,9 @@ public class OVSInstance {
         }\r
 \r
         Map<String, Object> vSwitchTable = (Map) monitorResponse.get("Open_vSwitch");\r
-\r
-        this.uuid = (String) vSwitchTable.keySet().toArray()[0];\r
+        if(vSwitchTable != null){\r
+            this.uuid = (String) vSwitchTable.keySet().toArray()[0];\r
+        }\r
     }\r
 \r
     public String getUuid(){\r
index a7035867d8cd5ce34b5ecb096f7bce1cecaf19f3..6a307f8b7aef7098ea22e584e0c3fae609cd23ff 100755 (executable)
@@ -3,6 +3,7 @@ package org.opendaylight.ovsdb.internal;
 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;
@@ -248,53 +249,35 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
                 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);
@@ -302,13 +285,14 @@ public class ConfigurationService implements IPluginInNetworkConfigurationServic
                 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);
index 4cbae3f228b5573e92ad332999025b4977d41842..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.58.170");\r
+        params.put(ConnectionConstants.ADDRESS, "192.168.56.101");\r
 \r
         Node node = connectionService.connect(identifier, params);\r
         if(node == null){\r
old mode 100644 (file)
new mode 100755 (executable)
index f70ec41..e0c150d
@@ -27,7 +27,7 @@ public class OvsdbTestAddPort {
         connectionService.init();
         String identifier = "TEST";
         Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();
-        params.put(ConnectionConstants.ADDRESS, "172.16.58.170");
+        params.put(ConnectionConstants.ADDRESS, "192.168.56.101");
 
         Node node = connectionService.connect(identifier, params);
         if(node == null){