Merge "Start to tease apart things into smaller pieces to make merge logic easier."
authorSam Hague <shague@redhat.com>
Fri, 10 Apr 2015 10:38:56 +0000 (10:38 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Fri, 10 Apr 2015 10:38:56 +0000 (10:38 +0000)
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeCreateCommand.java
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/OpenVSwitchBridgeAddCommand.java [new file with mode: 0644]
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/TransactCommandAggregator.java

index cc5fb6d41c3a5bac298ba1826f0a9e3b446a99a5..b70a4d3ca7bbba20c2ce4fb3c97d127b76c09c81 100644 (file)
@@ -14,14 +14,12 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.ovsdb.lib.notation.Mutator;
 import org.opendaylight.ovsdb.lib.notation.UUID;
 import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
 import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
 import org.opendaylight.ovsdb.schema.openvswitch.Controller;
 import org.opendaylight.ovsdb.schema.openvswitch.Interface;
-import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
 import org.opendaylight.ovsdb.schema.openvswitch.Port;
 import org.opendaylight.ovsdb.southbound.SouthboundConstants;
 import org.opendaylight.ovsdb.southbound.SouthboundMapper;
@@ -105,13 +103,6 @@ public class BridgeCreateCommand implements TransactCommand {
             bridge.setExternalIds(externalIds);
 
             transaction.add(op.insert(bridge).withId(bridgeNamedUuid));
-
-            // OpenVSwitchPart
-            OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class);
-            ovs.setBridges(Sets.newHashSet(new UUID(bridgeNamedUuid)));
-            transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(),
-                    Mutator.INSERT,
-                    ovs.getBridgesColumn().getData()));
         }
     }
 
diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/OpenVSwitchBridgeAddCommand.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/OpenVSwitchBridgeAddCommand.java
new file mode 100644 (file)
index 0000000..7098632
--- /dev/null
@@ -0,0 +1,43 @@
+package org.opendaylight.ovsdb.southbound.ovsdb.transact;
+
+import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+
+import java.util.List;
+
+import org.opendaylight.ovsdb.lib.notation.Mutator;
+import org.opendaylight.ovsdb.lib.notation.UUID;
+import org.opendaylight.ovsdb.lib.operations.Insert;
+import org.opendaylight.ovsdb.lib.operations.Operation;
+import org.opendaylight.ovsdb.lib.operations.TransactionBuilder;
+import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
+import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
+import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
+import org.opendaylight.ovsdb.southbound.SouthboundMapper;
+
+import com.google.common.collect.Sets;
+
+public class OpenVSwitchBridgeAddCommand implements TransactCommand {
+
+    @Override
+    public void execute(TransactionBuilder transaction) {
+        List<Operation> operations = transaction.getOperations();
+        Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
+        for (int count = 0;count < operations.size();count++) {
+            Operation operation = operations.get(count);
+            if (operation instanceof Insert && operation.getTableSchema().equals(bridge.getSchema())) {
+                Insert insert = (Insert)operation;
+                String uuidString = insert.getUuidName() != null
+                        ? insert.getUuidName() : SouthboundMapper.getRandomUUID();
+                insert.setUuidName(uuidString);
+
+                // OpenVSwitchPart
+                UUID uuid = new UUID(uuidString);
+                OpenVSwitch ovs = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), OpenVSwitch.class);
+                ovs.setBridges(Sets.newHashSet(uuid));
+                transaction.add(op.mutate(ovs).addMutation(ovs.getBridgesColumn().getSchema(),
+                        Mutator.INSERT,
+                        ovs.getBridgesColumn().getData()));
+            }
+        }
+    }
+}
index 7ebf19790725e15b9229ebc5bd5a443f22da6b14..20d6e260304bfa5bb60f38a96d4b5f50ed74194f 100644 (file)
@@ -26,6 +26,7 @@ public class TransactCommandAggregator implements TransactCommand {
         this.operationalState = state;
         this.changes = changes;
         commands.add(new BridgeCreateCommand(state,changes));
+        commands.add(new OpenVSwitchBridgeAddCommand());
         commands.add(new BridgeRemovedCommand(state,changes));
         commands.add(new TerminationPointCreateCommand(state,changes));
         commands.add(new TerminationPointDeleteCommand(state, changes));