X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=southbound%2Fsouthbound-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fovsdb%2Fsouthbound%2Ftransactions%2Fmd%2FOvsdbBridgeUpdateCommand.java;h=03595f3f3c9b73ca6a2f4939b0d75b5ddd6f0041;hb=cedaca2c1cfd73c8e289a000a453444a5e25ea13;hp=f994e08af484626c232caba7f9dd4f647197a5e0;hpb=47e724e5650182471ea26aadc9bb07dd4319f181;p=ovsdb.git diff --git a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbBridgeUpdateCommand.java b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbBridgeUpdateCommand.java index f994e08af..03595f3f3 100644 --- a/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbBridgeUpdateCommand.java +++ b/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/transactions/md/OvsdbBridgeUpdateCommand.java @@ -1,17 +1,21 @@ package org.opendaylight.ovsdb.southbound.transactions.md; import java.util.ArrayList; -import java.util.Collection; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; 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.Controller; import org.opendaylight.ovsdb.southbound.OvsdbClientKey; +import org.opendaylight.ovsdb.southbound.SouthboundConstants; import org.opendaylight.ovsdb.southbound.SouthboundMapper; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId; @@ -43,8 +47,10 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand { @Override public void execute(ReadWriteTransaction transaction) { - Collection updatedRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema()).values(); - for(Bridge bridge : updatedRows) { + Map updatedBridgeRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema()); + Map updatedControllerRows = TyperUtils.extractRowsUpdated(Controller.class, getUpdates(), getDbSchema()); + for(Entry entry : updatedBridgeRows.entrySet()) { + Bridge bridge = entry.getValue(); final InstanceIdentifier nodePath = getKey().toInstanceIndentifier(); Optional node = Optional.absent(); try{ @@ -53,7 +59,7 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand { LOG.debug("Read Operational/DS for Node fail! {}", nodePath, e); } if(node.isPresent()){ - LOG.info("Node {} is present",node); + LOG.debug("Node {} is present",node); NodeBuilder managedNodeBuilder = new NodeBuilder(); NodeId manageNodeId = SouthboundMapper.createManagedNodeId(getKey(), new OvsdbBridgeName(bridge.getName())); managedNodeBuilder.setNodeId(manageNodeId); @@ -64,17 +70,30 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand { if(dpid != null) { ovsdbManagedNodeBuilder.setDatapathId(dpid); } + ovsdbManagedNodeBuilder.setDatapathType(SouthboundMapper.createDatapathType(bridge.getDatapathTypeColumn().getData())); if(SouthboundMapper.createMdsalProtocols(bridge) != null && SouthboundMapper.createMdsalProtocols(bridge).size() > 0) { ovsdbManagedNodeBuilder.setProtocolEntry(SouthboundMapper.createMdsalProtocols(bridge)); } + + if(!SouthboundMapper.createControllerEntries(bridge, updatedControllerRows).isEmpty()) { + ovsdbManagedNodeBuilder.setControllerEntry(SouthboundMapper.createControllerEntries(bridge, updatedControllerRows)); + } + + if(bridge.getFailModeColumn() != null && + bridge.getFailModeColumn().getData() != null && + !bridge.getFailModeColumn().getData().isEmpty()) { + String[] failmodeArray = new String[bridge.getFailModeColumn().getData().size()]; + bridge.getFailModeColumn().getData().toArray(failmodeArray); + ovsdbManagedNodeBuilder.setFailMode(SouthboundConstants.OVSDB_FAIL_MODE_MAP.inverse().get(failmodeArray[0])); + } ovsdbManagedNodeBuilder.setManagedBy(new OvsdbNodeRef(nodePath)); managedNodeBuilder.addAugmentation(OvsdbBridgeAugmentation.class, ovsdbManagedNodeBuilder.build()); InstanceIdentifier managedNodePath = SouthboundMapper.createInstanceIdentifier(manageNodeId); LOG.debug("Store managed node augmentation data {}",ovsdbManagedNodeBuilder.toString()); - transaction.put(LogicalDatastoreType.OPERATIONAL, managedNodePath, managedNodeBuilder.build()); + transaction.merge(LogicalDatastoreType.OPERATIONAL, managedNodePath, managedNodeBuilder.build()); //Update node with managed node reference NodeBuilder nodeBuilder = new NodeBuilder(); @@ -82,8 +101,8 @@ public class OvsdbBridgeUpdateCommand extends AbstractTransactionCommand { OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = new OvsdbNodeAugmentationBuilder(); List managedNodes = new ArrayList(); - ManagedNodeEntry entry = new ManagedNodeEntryBuilder().setBridgeRef(new OvsdbBridgeRef(managedNodePath)).build(); - managedNodes.add(entry); + ManagedNodeEntry managedNodeEntry = new ManagedNodeEntryBuilder().setBridgeRef(new OvsdbBridgeRef(managedNodePath)).build(); + managedNodes.add(managedNodeEntry); ovsdbNodeBuilder.setManagedNodeEntry(managedNodes); nodeBuilder.addAugmentation(OvsdbNodeAugmentation.class, ovsdbNodeBuilder.build());