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;
@Override
public void execute(ReadWriteTransaction transaction) {
- Collection<Bridge> updatedRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema()).values();
- for(Bridge bridge : updatedRows) {
+ Map<UUID,Bridge> updatedBridgeRows = TyperUtils.extractRowsUpdated(Bridge.class, getUpdates(), getDbSchema());
+ Map<UUID,Controller> updatedControllerRows = TyperUtils.extractRowsUpdated(Controller.class, getUpdates(), getDbSchema());
+ for(Entry<UUID, Bridge> entry : updatedBridgeRows.entrySet()) {
+ Bridge bridge = entry.getValue();
final InstanceIdentifier<Node> nodePath = getKey().toInstanceIndentifier();
Optional<Node> node = Optional.absent();
try{
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);
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<Node> 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();
OvsdbNodeAugmentationBuilder ovsdbNodeBuilder = new OvsdbNodeAugmentationBuilder();
List<ManagedNodeEntry> managedNodes = new ArrayList<ManagedNodeEntry>();
- 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());