- public void execute(TransactionBuilder transaction) {
- for (Entry<InstanceIdentifier<?>, DataObject> entry: getChanges().getCreatedData().entrySet()) {
- DataObject dataObject = entry.getValue();
- if (dataObject instanceof OvsdbTerminationPointAugmentation) {
- OvsdbTerminationPointAugmentation terminationPoint = (OvsdbTerminationPointAugmentation) dataObject;
- LOG.debug("Received request to create termination point {}",
- terminationPoint.getName());
- InstanceIdentifier terminationPointIid = entry.getKey();
- Optional<TerminationPoint> terminationPointOptional =
- getOperationalState().getBridgeTerminationPoint(terminationPointIid);
- if (!terminationPointOptional.isPresent()) {
- // Configure interface
- String interfaceUuid = "Interface_" + SouthboundMapper.getRandomUUID();
- Interface ovsInterface =
- TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Interface.class);
- createInterface(terminationPoint, ovsInterface);
- transaction.add(op.insert(ovsInterface).withId(interfaceUuid));
-
- stampInstanceIdentifier(transaction, (InstanceIdentifier<TerminationPoint>) entry.getKey(),
- ovsInterface.getName());
-
- // Configure port with the above interface details
- String portUuid = "Port_" + SouthboundMapper.getRandomUUID();
- Port port = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Port.class);
- createPort(terminationPoint, port, interfaceUuid);
- transaction.add(op.insert(port).withId(portUuid));
-
- //Configure bridge with the above port details
- Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
- if (getBridge(entry.getKey()) != null) {
- bridge.setName(getBridge(entry.getKey()).getBridgeName().getValue());
- bridge.setPorts(Sets.newHashSet(new UUID(portUuid)));
-
- transaction.add(op.mutate(bridge)
- .addMutation(bridge.getPortsColumn().getSchema(),
- Mutator.INSERT,bridge.getPortsColumn().getData())
- .where(bridge.getNameColumn().getSchema()
- .opEqual(bridge.getNameColumn().getData())).build());
- }
+ public void execute(TransactionBuilder transaction, BridgeOperationalState state,
+ Collection<DataTreeModification<Node>> modifications) {
+ execute(transaction, state,
+ TransactUtils.extractCreated(modifications, OvsdbTerminationPointAugmentation.class),
+ TransactUtils.extractCreatedOrUpdated(modifications, Node.class));
+ }
+
+ private void execute(TransactionBuilder transaction, BridgeOperationalState state,
+ Map<InstanceIdentifier<OvsdbTerminationPointAugmentation>,
+ OvsdbTerminationPointAugmentation>
+ createdTerminationPoints, Map<InstanceIdentifier<Node>, Node> nodes) {
+ for (Entry<InstanceIdentifier<OvsdbTerminationPointAugmentation>, OvsdbTerminationPointAugmentation> entry :
+ createdTerminationPoints.entrySet()) {
+ OvsdbTerminationPointAugmentation terminationPoint = entry.getValue();
+ LOG.debug("Received request to create termination point {}",
+ terminationPoint.getName());
+ InstanceIdentifier terminationPointIid = entry.getKey();
+ Optional<TerminationPoint> terminationPointOptional =
+ state.getBridgeTerminationPoint(terminationPointIid);
+ if (!terminationPointOptional.isPresent()) {
+ // Configure interface
+ String interfaceUuid = "Interface_" + SouthboundMapper.getRandomUuid();
+ Interface ovsInterface =
+ TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Interface.class);
+ createInterface(terminationPoint, ovsInterface);
+ transaction.add(op.insert(ovsInterface).withId(interfaceUuid));
+
+ stampInstanceIdentifier(transaction, entry.getKey(), ovsInterface.getName());
+
+ // Configure port with the above interface details
+ String portUuid = "Port_" + SouthboundMapper.getRandomUuid();
+ Port port = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Port.class);
+ createPort(terminationPoint, port, interfaceUuid);
+ transaction.add(op.insert(port).withId(portUuid));
+
+ //Configure bridge with the above port details
+ Bridge bridge = TyperUtils.getTypedRowWrapper(transaction.getDatabaseSchema(), Bridge.class);
+ if (getBridge(entry.getKey(), nodes) != null) {
+ bridge.setName(getBridge(entry.getKey(), nodes).getBridgeName().getValue());
+ bridge.setPorts(Sets.newHashSet(new UUID(portUuid)));
+
+ transaction.add(op.mutate(bridge)
+ .addMutation(bridge.getPortsColumn().getSchema(),
+ Mutator.INSERT, bridge.getPortsColumn().getData())
+ .where(bridge.getNameColumn().getSchema()
+ .opEqual(bridge.getNameColumn().getData())).build());