X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=southbound%2Fsouthbound-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fovsdb%2Fsouthbound%2Fovsdb%2Ftransact%2FDataChangesManagedByOvsdbNodeEvent.java;h=ee835e56808010f7df1095b55ac625cc58919c02;hb=50e7f939993fa9da3c80a1c8d166629a4868af9c;hp=cc6b7d642ec641a8a45154c606bf7d24872fca1c;hpb=6568252fd403a9d7008041db96ee6936a53c7ead;p=ovsdb.git diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/DataChangesManagedByOvsdbNodeEvent.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/DataChangesManagedByOvsdbNodeEvent.java index cc6b7d642..ee835e568 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/DataChangesManagedByOvsdbNodeEvent.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/DataChangesManagedByOvsdbNodeEvent.java @@ -8,13 +8,15 @@ package org.opendaylight.ovsdb.southbound.ovsdb.transact; +import com.google.common.base.Optional; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - +import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; +import org.opendaylight.ovsdb.southbound.SouthboundUtil; 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.OvsdbNodeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation; @@ -26,14 +28,16 @@ public class DataChangesManagedByOvsdbNodeEvent implements AsyncDataChangeEvent, DataObject> { private InstanceIdentifier iid; + private DataBroker db; private AsyncDataChangeEvent, DataObject> event; private Map, DataObject> createdData = null; private Map, DataObject> updatedData = null; private Map, DataObject> originalData = null; private Set> removedPaths; - public DataChangesManagedByOvsdbNodeEvent(InstanceIdentifier iid, - AsyncDataChangeEvent, DataObject> event) { + public DataChangesManagedByOvsdbNodeEvent(DataBroker dataBroker, InstanceIdentifier iid, + AsyncDataChangeEvent, DataObject> event) { + this.db = dataBroker; this.iid = iid; this.event = event; } @@ -41,7 +45,7 @@ public class DataChangesManagedByOvsdbNodeEvent implements private Map, DataObject> filter(Map, DataObject> data) { Map, DataObject> result - = new HashMap, DataObject>(); + = new HashMap<>(); for (Entry, DataObject> entry: data.entrySet()) { if (isManagedBy(entry.getKey())) { result.put(entry.getKey(),entry.getValue()); @@ -76,7 +80,7 @@ public class DataChangesManagedByOvsdbNodeEvent implements @Override public Set> getRemovedPaths() { if (this.removedPaths == null) { - this.removedPaths = new HashSet>(); + this.removedPaths = new HashSet<>(); for (InstanceIdentifier path: event.getRemovedPaths()) { if (isManagedBy(path)) { this.removedPaths.add(path); @@ -105,10 +109,30 @@ public class DataChangesManagedByOvsdbNodeEvent implements if (managedBy != null && managedBy.equals(iid)) { return true; } + + managedBy = getManagedByIidFromOperDS(bridgeIid); + if (managedBy != null && managedBy.equals(iid)) { + return true; + } return false; } + private InstanceIdentifier getManagedByIidFromOperDS(InstanceIdentifier bridgeIid) { + // Get the InstanceIdentifier of the containing node + InstanceIdentifier nodeEntryIid = bridgeIid.firstIdentifierOf(Node.class); + + Optional bridgeNode = SouthboundUtil.readNode(db.newReadWriteTransaction(),nodeEntryIid); + if (bridgeNode.isPresent() && bridgeNode.get() instanceof Node) { + Node node = (Node)bridgeNode.get(); + OvsdbBridgeAugmentation bridge = node.getAugmentation(OvsdbBridgeAugmentation.class); + if (bridge != null && bridge.getManagedBy() != null) { + return bridge.getManagedBy().getValue(); + } + } + return null; + } + private InstanceIdentifier getManagedByIid(Map, DataObject> map, InstanceIdentifier iidToCheck) { // Get the InstanceIdentifier of the containing node