From 92edcb18fb7be442c7abf1d5e2cb769df7a58099 Mon Sep 17 00:00:00 2001 From: Anil Vishnoi Date: Fri, 24 Apr 2015 18:38:02 +0530 Subject: [PATCH] Fixed termination point deletion from operational data store. Plugin was not removing termination point operational data from operational data store once port deleted from bridge Change-Id: I61de3e9b5dcdc4ac096422f6445562a194ba9fa1 Signed-off-by: Anil Vishnoi --- .../md/OvsdbPortRemoveCommand.java | 43 +++++++++++++------ .../md/OvsdbPortTransactionCommand.java | 22 ---------- 2 files changed, 30 insertions(+), 35 deletions(-) delete mode 100644 southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortTransactionCommand.java diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortRemoveCommand.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortRemoveCommand.java index 763ae27f9..2279fa0a0 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortRemoveCommand.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortRemoveCommand.java @@ -9,12 +9,15 @@ package org.opendaylight.ovsdb.southbound.transactions.md; import java.util.Collection; +import java.util.Map; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.ovsdb.lib.message.TableUpdates; +import org.opendaylight.ovsdb.lib.notation.UUID; import org.opendaylight.ovsdb.lib.schema.DatabaseSchema; import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils; +import org.opendaylight.ovsdb.schema.openvswitch.Bridge; import org.opendaylight.ovsdb.schema.openvswitch.Port; import org.opendaylight.ovsdb.southbound.SouthboundMapper; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeName; @@ -23,8 +26,12 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class OvsdbPortRemoveCommand extends AbstractTransactionCommand { + private static final Logger LOG = LoggerFactory.getLogger(OvsdbPortRemoveCommand.class); + public OvsdbPortRemoveCommand(ConnectionInfo key, TableUpdates updates, DatabaseSchema dbSchema) { super(key, updates, dbSchema); @@ -36,20 +43,30 @@ public class OvsdbPortRemoveCommand extends AbstractTransactionCommand { String portName = null; Collection portRemovedRows = TyperUtils.extractRowsRemoved( Port.class, getUpdates(), getDbSchema()).values(); - Collection portUpdatedRows = TyperUtils.extractRowsUpdated( - Port.class, getUpdates(), getDbSchema()).values(); - for (Port bridge : portUpdatedRows) { - bridgeName = bridge.getName(); - for (Port port : portRemovedRows) { - portName = port.getName(); - final InstanceIdentifier nodePath = SouthboundMapper - .createInstanceIdentifier(getConnectionInfo(), - new OvsdbBridgeName(bridgeName)).child( - TerminationPoint.class, - new TerminationPointKey(new TpId(portName))); - transaction.delete(LogicalDatastoreType.OPERATIONAL, nodePath); - transaction.submit(); + Map bridgeUpdatedRows = TyperUtils.extractRowsUpdated( + Bridge.class, getUpdates(), getDbSchema()); + Map bridgeUpdatedOldRows = TyperUtils.extractRowsOld( + Bridge.class, getUpdates(), getDbSchema()); + for (Port port : portRemovedRows) { + for (UUID bridgeUUID : bridgeUpdatedOldRows.keySet()) { + Bridge oldBridgeData = bridgeUpdatedOldRows.get(bridgeUUID); + if (oldBridgeData.getPortsColumn().getData().contains(port.getUuidColumn().getData())) { + Bridge updatedBridgeData = bridgeUpdatedRows.get(bridgeUUID); + bridgeName = updatedBridgeData.getName(); + break; + } + } + if (bridgeName == null) { + LOG.warn("Bridge not found for port {}",port); + continue; } + portName = port.getName(); + final InstanceIdentifier nodePath = SouthboundMapper + .createInstanceIdentifier(getConnectionInfo(), + new OvsdbBridgeName(bridgeName)).child( + TerminationPoint.class, + new TerminationPointKey(new TpId(portName))); + transaction.delete(LogicalDatastoreType.OPERATIONAL, nodePath); } } diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortTransactionCommand.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortTransactionCommand.java deleted file mode 100644 index 10d4dbfaa..000000000 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbPortTransactionCommand.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.opendaylight.ovsdb.southbound.transactions.md; - -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.ovsdb.lib.message.TableUpdates; -import org.opendaylight.ovsdb.lib.schema.DatabaseSchema; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo; - -public class OvsdbPortTransactionCommand extends AbstractTransactionCommand { - - public OvsdbPortTransactionCommand(ConnectionInfo key, - TableUpdates updates, DatabaseSchema dbSchema) { - super(key, updates, dbSchema); - // TODO Auto-generated constructor stub - } - - @Override - public void execute(ReadWriteTransaction transaction) { - // TODO Auto-generated method stub - - } - -} -- 2.36.6