+ // Retrieve the source and/or destination OVSDB node
+ final UniAugmentation sourceUniAugmentation =
+ uniSource.getAugmentation(UniAugmentation.class);
+ final UniAugmentation destinationUniAugmentation =
+ uniDestination.getAugmentation(UniAugmentation.class);
+ final Optional<Node> optionalSourceOvsdbNode =
+ UnimgrUtils.readNode(dataBroker,
+ LogicalDatastoreType.OPERATIONAL,
+ sourceUniAugmentation
+ .getOvsdbNodeRef()
+ .getValue());
+ final Optional<Node> optionalDestinationOvsdbNode =
+ UnimgrUtils.readNode(dataBroker,
+ LogicalDatastoreType.OPERATIONAL,
+ destinationUniAugmentation
+ .getOvsdbNodeRef()
+ .getValue());
+ if (optionalSourceOvsdbNode.isPresent() && optionalDestinationOvsdbNode.isPresent()) {
+ // Retrieve the source and/or destination bridge
+ final InstanceIdentifier<Node> sourceBridgeIid =
+ UnimgrMapper.getOvsdbBridgeNodeIid(optionalSourceOvsdbNode.get());
+ final Optional<Node> optionalSourceBr = UnimgrUtils.readNode(dataBroker,
+ LogicalDatastoreType.OPERATIONAL,
+ sourceBridgeIid);
+ final InstanceIdentifier<Node> destinationBridgeIid =
+ UnimgrMapper.getOvsdbBridgeNodeIid(optionalDestinationOvsdbNode.get());
+ final Optional<Node> optionalDestinationBr = UnimgrUtils.readNode(dataBroker,
+ LogicalDatastoreType.OPERATIONAL,
+ destinationBridgeIid);
+ Node sourceBr = null;
+ Node destinationBr = null;
+ if (optionalSourceBr.isPresent() && optionalDestinationBr.isPresent()) {
+ sourceBr = optionalSourceBr.get();
+ destinationBr = optionalDestinationBr.get();
+
+ // Creating termination points (OVSDB CONFIG
+ // datastore)
+ UnimgrUtils.createTerminationPointNode(dataBroker,
+ uniSource.getAugmentation(UniAugmentation.class),
+ sourceBr,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME,
+ UnimgrConstants.DEFAULT_TUNNEL_IFACE);
+
+ // Create GRE tunnel (OVSDB CONFIG datastore)
+ UnimgrUtils.createGreTunnel(dataBroker,
+ uniSource.getAugmentation(UniAugmentation.class),
+ uniDestination.getAugmentation(UniAugmentation.class),
+ sourceBr,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME,
+ UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME);
+
+ // Create termination points (CONFIG datastore)
+ UnimgrUtils.createTerminationPointNode(dataBroker,
+ uniSource.getAugmentation(UniAugmentation.class),
+ destinationBr,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME,
+ UnimgrConstants.DEFAULT_TUNNEL_IFACE);
+
+ // Create GRE tunnel (OVSDB CONFIG datastore)
+ UnimgrUtils.createGreTunnel(dataBroker,
+ uniDestination.getAugmentation(UniAugmentation.class),
+ uniSource.getAugmentation(UniAugmentation.class), destinationBr,
+ UnimgrConstants.DEFAULT_BRIDGE_NAME,
+ UnimgrConstants.DEFAULT_GRE_TUNNEL_NAME);
+
+ // Update EVC
+ UnimgrUtils.updateEvcNode(LogicalDatastoreType.CONFIGURATION,
+ evcKey,
+ evc,
+ sourceUniIid,
+ destinationUniIid,
+ dataBroker);
+ UnimgrUtils.updateEvcNode(LogicalDatastoreType.OPERATIONAL,
+ evcKey,
+ evc,
+ sourceUniIid,
+ destinationUniIid,
+ dataBroker);
+ } else {
+ LOG.info("Unable to retrieve the source and/or destination bridge.");
+ }
+ } else {
+ LOG.info("Uname to retrieve the source and/or destination ovsdbNode.");
+ }
+ } else {
+ LOG.info("Unable to retrieve the source and/or destination Uni.");
+ }
+ }
+ }
+ }