import java.util.Map.Entry;
import java.util.Set;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.ovsdb.lib.error.SchemaVersionMismatchException;
import org.opendaylight.ovsdb.lib.notation.Mutator;
import org.opendaylight.ovsdb.lib.notation.UUID;
import org.opendaylight.ovsdb.southbound.InstanceIdentifierCodec;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
-import org.opendaylight.ovsdb.southbound.SouthboundProvider;
import org.opendaylight.ovsdb.southbound.SouthboundUtil;
import org.opendaylight.ovsdb.utils.yang.YangUtils;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeBase;
-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.OvsdbPortInterfaceAttributes.VlanMode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfd;
terminationPoint.getName(),portUuid);
//Configure bridge with the above port details
Bridge bridge = transaction.getTypedRowWrapper(Bridge.class);
- if (getBridge(entry.getKey(), nodes) != null) {
- bridge.setName(getBridge(entry.getKey(), nodes).getBridgeName().getValue());
+ String bridgeName = SouthboundUtil
+ .getBridgeNameFromOvsdbNodeId(entry.getKey().firstIdentifierOf(Node.class));
+ if (bridgeName != null) {
+ LOG.trace("Updating bridge {} for newly added port {}", bridgeName, terminationPoint.getName());
+ bridge.setName(bridgeName);
bridge.setPorts(Collections.singleton(new UUID(portUuid)));
transaction.add(op.mutate(bridge)
Mutator.INSERT, bridge.getPortsColumn().getData())
.where(bridge.getNameColumn().getSchema()
.opEqual(bridge.getNameColumn().getData())).build());
+ } else {
+ LOG.error("Missing BridgeName for Node {} during creation of port {}",
+ entry.getKey().firstIdentifierOf(Node.class), terminationPoint.getName());
}
}
}
}
}
- private OvsdbBridgeAugmentation getBridge(final InstanceIdentifier<?> key,
- final Map<InstanceIdentifier<Node>, Node> nodes) {
- OvsdbBridgeAugmentation bridge = null;
- InstanceIdentifier<Node> nodeIid = key.firstIdentifierOf(Node.class);
- if (nodes != null && nodes.get(nodeIid) != null) {
- Node node = nodes.get(nodeIid);
- bridge = node.augmentation(OvsdbBridgeAugmentation.class);
- if (bridge == null) {
- ReadOnlyTransaction transaction = SouthboundProvider.getDb().newReadOnlyTransaction();
- Optional<Node> nodeOptional = SouthboundUtil.readNode(transaction, nodeIid);
- if (nodeOptional.isPresent()) {
- bridge = nodeOptional.get().augmentation(OvsdbBridgeAugmentation.class);
- }
- transaction.close();
- }
- }
- return bridge;
- }
-
public static void stampInstanceIdentifier(final TransactionBuilder transaction,
final InstanceIdentifier<OvsdbTerminationPointAugmentation> iid, final String interfaceName,
final InstanceIdentifierCodec instanceIdentifierCodec) {
import org.opendaylight.ovsdb.schema.openvswitch.Bridge;
import org.opendaylight.ovsdb.schema.openvswitch.Port;
import org.opendaylight.ovsdb.southbound.InstanceIdentifierCodec;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
+import org.opendaylight.ovsdb.southbound.SouthboundUtil;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
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.InstanceIdentifier;
for (InstanceIdentifier<OvsdbTerminationPointAugmentation> removedTpIid: removedTps) {
LOG.debug("Received request to delete termination point {}", removedTpIid);
OvsdbTerminationPointAugmentation original = originals.get(removedTpIid);
- Node originalNode = originalNodes.get(removedTpIid.firstIdentifierOf(Node.class));
- LOG.trace("Termination point's associated original node {}", originalNode);
- OvsdbBridgeAugmentation originalOvsdbBridgeAugmentation =
- originalNode.augmentation(OvsdbBridgeAugmentation.class);
- String bridgeName = null;
- if (originalOvsdbBridgeAugmentation != null) {
- bridgeName = originalOvsdbBridgeAugmentation.getBridgeName().getValue();
- } else {
- Optional<OvsdbBridgeAugmentation> bridgeAug = state.getOvsdbBridgeAugmentation(removedTpIid);
- if (bridgeAug.isPresent()) {
- bridgeName = bridgeAug.get().getBridgeName().getValue();
- } else {
- LOG.error("Bridge does not exist for termination point {}", removedTpIid);
- }
+ String bridgeName = SouthboundUtil.getBridgeNameFromOvsdbNodeId(removedTpIid.firstIdentifierOf(Node.class));
+ if (bridgeName == null) {
+ LOG.error("Missing Bridge Name for Node {} during deletion of Port {}",
+ removedTpIid.firstIdentifierOf(Node.class), original.getName());
+ continue;
}
+ LOG.trace("Deleting port {} from bridge {}", original.getName(), bridgeName);
Port port = transaction.getTypedRowSchema(Port.class);
Optional<OvsdbTerminationPointAugmentation> tpAugmentation =
state.getOvsdbTerminationPointAugmentation(removedTpIid);