Bug 6185 - southbound system tests failing when
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / ControllerRemovedCommand.java
index 54405c209b056217712ba25a4d8923ff9cecf305..7592f170b18502263a625de754e0294271fba45a 100644 (file)
@@ -9,9 +9,12 @@ package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 
+import com.google.common.base.Optional;
+import com.google.common.collect.Sets;
+import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
-
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.ovsdb.lib.notation.Mutator;
 import org.opendaylight.ovsdb.lib.notation.UUID;
@@ -20,32 +23,39 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils;
 import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.Sets;
+public class ControllerRemovedCommand implements TransactCommand {
+    private static final Logger LOG = LoggerFactory.getLogger(ControllerRemovedCommand.class);
 
-public class ControllerRemovedCommand extends AbstractTransactCommand {
-
-    public ControllerRemovedCommand(BridgeOperationalState state,
-            AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> changes) {
-        super(state, changes);
+    @Override
+    public void execute(TransactionBuilder transaction, BridgeOperationalState state,
+                        AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> events) {
+        execute(transaction, state, TransactUtils.extractRemoved(events, ControllerEntry.class),
+                TransactUtils.extractCreatedOrUpdatedOrRemoved(events, OvsdbBridgeAugmentation.class));
     }
 
     @Override
-    public void execute(TransactionBuilder transaction) {
-        Set<InstanceIdentifier<ControllerEntry>> removed =
-                TransactUtils.extractRemoved(getChanges(),ControllerEntry.class);
-        Map<InstanceIdentifier<ControllerEntry>, ControllerEntry> operationalControllerEntries
-            = TransactUtils.extractOriginal(getChanges(),ControllerEntry.class);
-        Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation> updatedBridges
-            = TransactUtils.extractCreatedOrUpdatedOrRemoved(getChanges(),OvsdbBridgeAugmentation.class);
-        for (InstanceIdentifier<ControllerEntry> controllerIid : removed) {
+    public void execute(TransactionBuilder transaction, BridgeOperationalState state,
+                        Collection<DataTreeModification<Node>> modifications) {
+        execute(transaction, state, TransactUtils.extractRemoved(modifications, ControllerEntry.class),
+                TransactUtils.extractCreatedOrUpdatedOrRemoved(modifications, OvsdbBridgeAugmentation.class));
+    }
+
+    private void execute(TransactionBuilder transaction, BridgeOperationalState state,
+                         Set<InstanceIdentifier<ControllerEntry>> removedControllers,
+                         Map<InstanceIdentifier<OvsdbBridgeAugmentation>, OvsdbBridgeAugmentation>
+                                 modifiedBridges) {
+        for (InstanceIdentifier<ControllerEntry> controllerIid : removedControllers) {
+            LOG.debug("Removing Registered...ODL controller : {} ", controllerIid);
             InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid =
                     controllerIid.firstIdentifierOf(OvsdbBridgeAugmentation.class);
-            OvsdbBridgeAugmentation ovsdbBridge = updatedBridges.get(bridgeIid);
-            Optional<ControllerEntry> controllerEntryOptional = getOperationalState().getControllerEntry(controllerIid);
+            OvsdbBridgeAugmentation ovsdbBridge = modifiedBridges.get(bridgeIid);
+            Optional<ControllerEntry> controllerEntryOptional = state.getControllerEntry(controllerIid);
             if (ovsdbBridge != null && controllerEntryOptional.isPresent()) {
                 ControllerEntry controllerEntry = controllerEntryOptional.get();
                 Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);