MD-SAL API integration
[ovsdb.git] / southbound / southbound-impl / src / main / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / TerminationPointCreateCommand.java
index 0f10c8dbbdbb175ff223404290239d9a95691c05..e043b764355902823bb7154707bc9d4e7a089950 100644 (file)
@@ -10,8 +10,6 @@ package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 import static org.opendaylight.ovsdb.lib.operations.Operations.op;
 import static org.opendaylight.ovsdb.southbound.SouthboundUtil.schemaMismatchLog;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -21,12 +19,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.ovsdb.lib.error.SchemaVersionMismatchException;
 import org.opendaylight.ovsdb.lib.notation.Mutator;
 import org.opendaylight.ovsdb.lib.notation.UUID;
@@ -38,11 +33,9 @@ import org.opendaylight.ovsdb.schema.openvswitch.Port;
 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;
@@ -112,8 +105,11 @@ public class TerminationPointCreateCommand implements TransactCommand {
                         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)
@@ -121,6 +117,9 @@ public class TerminationPointCreateCommand implements TransactCommand {
                                     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());
                 }
             }
         }
@@ -358,31 +357,6 @@ public class TerminationPointCreateCommand implements TransactCommand {
         }
     }
 
-    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();
-                CheckedFuture<Optional<Node>, ReadFailedException> future =
-                        transaction.read(LogicalDatastoreType.OPERATIONAL, nodeIid);
-                try {
-                    Optional<Node> nodeOptional = future.get();
-                    if (nodeOptional.isPresent()) {
-                        bridge = nodeOptional.get().augmentation(OvsdbBridgeAugmentation.class);
-                    }
-                } catch (InterruptedException | ExecutionException e) {
-                    LOG.warn("Error reading from datastore",e);
-                }
-                transaction.close();
-            }
-        }
-        return bridge;
-    }
-
     public static void stampInstanceIdentifier(final TransactionBuilder transaction,
             final InstanceIdentifier<OvsdbTerminationPointAugmentation> iid, final String interfaceName,
             final InstanceIdentifierCodec instanceIdentifierCodec) {