.put(DatapathTypeSystem.class,"system")
.put(DatapathTypeNetdev.class,"netdev")
.build();
+ public static final String IID_EXTERNAL_ID_KEY = "opendaylight-iid";
}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.DatapathTypeBase;
-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.DatapathTypeSystem;
+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.OvsdbBridgeName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeProtocolBase;
return createInstanceIdentifier(createManagedNodeId(key, bridgeName));
}
+ public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbClientKey key,Bridge bridge) {
+ String managedNodePathString = bridge
+ .getExternalIdsColumn()
+ .getData()
+ .get(SouthboundConstants.IID_EXTERNAL_ID_KEY);
+ InstanceIdentifier<Node> managedNodePath = null;
+ if (managedNodePathString != null) {
+ managedNodePath = (InstanceIdentifier<Node>) SouthboundUtil
+ .deserializeInstanceIdentifier(managedNodePathString);
+ }
+ if (managedNodePath == null) {
+ managedNodePath = SouthboundMapper.createInstanceIdentifier(key,new OvsdbBridgeName(bridge.getName()));
+ }
+ return managedNodePath;
+ }
+
+ public static NodeId createManagedNodeId(InstanceIdentifier<Node> iid) {
+ NodeKey nodeKey = iid.firstKeyOf(Node.class, NodeKey.class);
+ return nodeKey.getNodeId();
+ }
+
public static InstanceIdentifier<Node> createInstanceIdentifier(OvsdbClientKey key) {
return createInstanceIdentifier(key.getIp(), key.getPort());
}
import static org.opendaylight.ovsdb.lib.operations.Operations.op;
+import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
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.schema.openvswitch.Interface;
import org.opendaylight.ovsdb.schema.openvswitch.OpenVSwitch;
import org.opendaylight.ovsdb.schema.openvswitch.Port;
-import org.opendaylight.ovsdb.schema.openvswitch.Interface;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.ovsdb.southbound.SouthboundMapper;
+import org.opendaylight.ovsdb.southbound.SouthboundUtil;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Override
public void execute(TransactionBuilder transaction) {
- Map<InstanceIdentifier<Node>, OvsdbBridgeAugmentation> created
- = TransactUtils.extractOvsdbManagedNodeCreate(changes);
- for (OvsdbBridgeAugmentation ovsdbManagedNode: created.values()) {
+ Map<InstanceIdentifier<Node>, OvsdbBridgeAugmentation> created =
+ TransactUtils.extractOvsdbManagedNodeCreate(changes);
+ for (Entry<InstanceIdentifier<Node>, OvsdbBridgeAugmentation> ovsdbManagedNodeEntry:
+ created.entrySet()) {
+ OvsdbBridgeAugmentation ovsdbManagedNode = ovsdbManagedNodeEntry.getValue();
LOG.debug("Received request to create ovsdb bridge name: {} uuid: {}",
ovsdbManagedNode.getBridgeName(),
ovsdbManagedNode.getBridgeUuid());
}
bridge.setPorts(Sets.newHashSet(new UUID(portNamedUuid)));
+ // Set the iid external_id
+ Map<String,String> externalIds = new HashMap<String,String>();
+ externalIds.put(SouthboundConstants.IID_EXTERNAL_ID_KEY,
+ SouthboundUtil.serializeInstanceIdentifier(ovsdbManagedNodeEntry.getKey()));
+ bridge.setExternalIds(externalIds);
+
transaction.add(op.insert(bridge).withId(bridgeNamedUuid));
// OpenVSwitchPart
if (node.isPresent()) {
LOG.debug("Node {} is present",node);
NodeBuilder managedNodeBuilder = new NodeBuilder();
- NodeId manageNodeId = SouthboundMapper.createManagedNodeId(getKey(),
- new OvsdbBridgeName(bridge.getName()));
+ InstanceIdentifier<Node> managedNodePath = SouthboundMapper.createInstanceIdentifier(getKey(),bridge);
+ NodeId manageNodeId = SouthboundMapper.createManagedNodeId(managedNodePath);
managedNodeBuilder.setNodeId(manageNodeId);
OvsdbBridgeAugmentationBuilder ovsdbManagedNodeBuilder = new OvsdbBridgeAugmentationBuilder();
ovsdbManagedNodeBuilder.setBridgeName(new OvsdbBridgeName(bridge.getName()));
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.merge(LogicalDatastoreType.OPERATIONAL, managedNodePath, managedNodeBuilder.build());