+
+ private void setExternalIds(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
+ Bridge bridge) {
+ Map<String, String> externalIds = bridge.getExternalIdsColumn()
+ .getData();
+ if (externalIds != null && !externalIds.isEmpty()) {
+ Set<String> externalIdKeys = externalIds.keySet();
+ List<BridgeExternalIds> externalIdsList = new ArrayList<>();
+ String externalIdValue;
+ for (String externalIdKey : externalIdKeys) {
+ externalIdValue = externalIds.get(externalIdKey);
+ if (externalIdKey != null && externalIdValue != null) {
+ externalIdsList.add(new BridgeExternalIdsBuilder()
+ .setBridgeExternalIdKey(externalIdKey)
+ .setBridgeExternalIdValue(externalIdValue)
+ .build());
+ }
+ }
+ ovsdbBridgeAugmentationBuilder.setBridgeExternalIds(externalIdsList);
+ }
+ }
+
+ private void setProtocol(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
+ Bridge bridge) {
+ if (SouthboundMapper.createMdsalProtocols(bridge) != null
+ && SouthboundMapper.createMdsalProtocols(bridge).size() > 0) {
+ ovsdbBridgeAugmentationBuilder.setProtocolEntry(SouthboundMapper.createMdsalProtocols(bridge));
+ }
+ }
+
+ private void setDataPath(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
+ Bridge bridge) {
+ DatapathId dpid = SouthboundMapper.createDatapathId(bridge);
+ if (dpid != null) {
+ ovsdbBridgeAugmentationBuilder.setDatapathId(dpid);
+ }
+ }
+
+ private void setOpenFlowNodeRef(OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder,
+ Bridge bridge) {
+ Map<UUID, Controller> updatedControllerRows =
+ TyperUtils.extractRowsUpdated(Controller.class, getUpdates(), getDbSchema());
+ LOG.debug("setOpenFlowNodeRef: updatedControllerRows: {}", updatedControllerRows);
+ for (ControllerEntry controllerEntry: SouthboundMapper.createControllerEntries(bridge, updatedControllerRows)) {
+ if (controllerEntry != null
+ && controllerEntry.isIsConnected() != null && controllerEntry.isIsConnected()) {
+ String [] controllerTarget = controllerEntry.getTarget().getValue().split(":");
+ IpAddress bridgeControllerIpAddress = null;
+ PortNumber bridgeControllerPortNumber = null;
+ for (String targetElement : controllerTarget) {
+ if (InetAddresses.isInetAddress(targetElement)) {
+ bridgeControllerIpAddress = new IpAddress(targetElement.toCharArray());
+ continue;
+ }
+ if (NumberUtils.isNumber(targetElement)) {
+ bridgeControllerPortNumber = new PortNumber(
+ Integer.valueOf(String.valueOf(targetElement)));
+ continue;
+ }
+ }
+ try {
+ Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
+ networkInterfacesLoop:
+ while (networkInterfaces.hasMoreElements()) {
+ NetworkInterface networkInterface = networkInterfaces.nextElement();
+ Enumeration<InetAddress> networkInterfaceAddresses = networkInterface.getInetAddresses();
+ while (networkInterfaceAddresses.hasMoreElements()) {
+ InetAddress networkInterfaceAddress = networkInterfaceAddresses.nextElement();
+ if (bridgeControllerIpAddress.getIpv4Address().getValue()
+ .equals(networkInterfaceAddress.getHostAddress())) {
+ ovsdbBridgeAugmentationBuilder.setBridgeOpenflowNodeRef(
+ getOvsdbConnectionInstance().getInstanceIdentifier());
+ break networkInterfacesLoop;
+ }
+ }
+ }
+ } catch (Exception e) {
+ LOG.warn("Error getting local ip address {}", e);
+ }
+ }
+ }
+ }
+ private InstanceIdentifier<Node> getInstanceIdentifier(Bridge bridge) {
+ return SouthboundMapper.createInstanceIdentifier(getOvsdbConnectionInstance(),
+ bridge);
+ }
+
+ private NodeId getNodeId(Bridge bridge) {
+ NodeKey nodeKey = getInstanceIdentifier(bridge).firstKeyOf(Node.class, NodeKey.class);
+ return nodeKey.getNodeId();
+ }