public List<Node> getAllBridgesOnOvsdbNode(Node node) { List<Node> nodes = new ArrayList<>(); List<ManagedNodeEntry> managedNodes = node.getAugmentation(OvsdbNodeAugmentation.class).getManagedNodeEntry(); for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); Node bridgeNode = (Node) mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeIid); if (bridgeNode != null) { nodes.add(bridgeNode); } } return nodes; }
@Override public void execute(ReadWriteTransaction transaction) { Collection<Bridge> removedRows = TyperUtils.extractRowsRemoved(Bridge.class, getUpdates(), getDbSchema()).values(); for (Bridge bridge : removedRows) { InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getOvsdbConnectionInstance(), bridge); InstanceIdentifier<ManagedNodeEntry> mnIid = getOvsdbConnectionInstance().getInstanceIdentifier() .augmentation(OvsdbNodeAugmentation.class) .child(ManagedNodeEntry.class, new ManagedNodeEntryKey(new OvsdbBridgeRef(bridgeIid))); // TODO handle removal of reference to managed node from model transaction.delete(LogicalDatastoreType.OPERATIONAL, bridgeIid); transaction.delete(LogicalDatastoreType.OPERATIONAL, mnIid); } }
private Node buildConnectionNode( Bridge bridge) { //Update node with managed node reference NodeBuilder connectionNode = new NodeBuilder(); connectionNode.setNodeId(getOvsdbConnectionInstance().getNodeId()); OvsdbNodeAugmentationBuilder ovsdbConnectionAugmentationBuilder = new OvsdbNodeAugmentationBuilder(); List<ManagedNodeEntry> managedBridges = new ArrayList<>(); InstanceIdentifier<Node> bridgeIid = SouthboundMapper.createInstanceIdentifier(getOvsdbConnectionInstance(), bridge); ManagedNodeEntry managedBridge = new ManagedNodeEntryBuilder().setBridgeRef( new OvsdbBridgeRef(bridgeIid)).build(); managedBridges.add(managedBridge); ovsdbConnectionAugmentationBuilder.setManagedNodeEntry(managedBridges); connectionNode.addAugmentation(OvsdbNodeAugmentation.class, ovsdbConnectionAugmentationBuilder.build()); LOG.debug("Update node with bridge node ref {}", ovsdbConnectionAugmentationBuilder.getManagedNodeEntry().iterator().next()); return connectionNode.build(); }
public List<Node> getAllBridgesOnOvsdbNode(Node node) { List<Node> nodes = new ArrayList<>(); List<ManagedNodeEntry> managedNodes = node.getAugmentation(OvsdbNodeAugmentation.class).getManagedNodeEntry(); for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); Node bridgeNode = (Node) mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeIid); if (bridgeNode != null) { nodes.add(bridgeNode); } } return nodes; }
/** * @param ovnode OVSDB node augmentation. * @param bridgeName String value * @return false if bridge does not exist on the give node. */ private boolean isBridgeOnOvsdbNode( @Nonnull OvsdbNodeAugmentation ovnode, String bridgeName) { boolean found = false; List<ManagedNodeEntry> managedNodes = ovnode.getManagedNodeEntry(); if (managedNodes != null) { for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); if (bridgeIid.toString().contains(bridgeName)) { found = true; break; } } } return found; } }
/** * Generates an Instance Identifier for an OvsdbBridgeNode by retrieving the Iid * via the OvsdbNodeAugmentation's BridgeRef. * the same as createOvsdbBridgeNodeIid. * @param ovsdbNode the ovsdb node * @return An Instance Identifier for a bridge associated with an OVSDB node. */ public static InstanceIdentifier<Node> getOvsdbBridgeNodeIid(Node ovsdbNode) { OvsdbNodeAugmentation ovsdbNodeAugmentation = ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class); InstanceIdentifier<Node> nodePath = ovsdbNodeAugmentation .getManagedNodeEntry() .iterator() .next() .getBridgeRef() .getValue() .firstIdentifierOf(Node.class); return nodePath; }
@SuppressWarnings("unchecked") private Optional<InstanceIdentifier<Node>> getTerminationPointBridge( final ReadWriteTransaction transaction, Node node, String tpName) { OvsdbNodeAugmentation ovsdbNode = node.getAugmentation(OvsdbNodeAugmentation.class); List<ManagedNodeEntry> managedNodes = ovsdbNode.getManagedNodeEntry(); TpId tpId = new TpId(tpName); for ( ManagedNodeEntry managedNodeEntry : managedNodes ) { Node managedNode = readNode(transaction, (InstanceIdentifier<Node>)managedNodeEntry.getBridgeRef().getValue()).get(); for (TerminationPoint tpEntry : managedNode.getTerminationPoint()) { if (tpId.equals(tpEntry.getTpId())) { return Optional.of((InstanceIdentifier<Node>)managedNodeEntry.getBridgeRef().getValue()); } } } return Optional.absent(); }
for (ManagedNodeEntry managedNodeEntry : managedNodeEntries) { final InstanceIdentifier<Node> bridgeIid = (InstanceIdentifier<Node>) managedNodeEntry.getBridgeRef().getValue(); @SuppressWarnings("unchecked") final Optional<Node> bridgeNode = SouthboundUtil.readNode(transaction, bridgeIid);
public boolean isBridgeOnOvsdbNode(Node ovsdbNode, String bridgeName) { boolean found = false; OvsdbNodeAugmentation ovsdbNodeAugmentation = extractNodeAugmentation(ovsdbNode); if (ovsdbNodeAugmentation != null) { List<ManagedNodeEntry> managedNodes = ovsdbNodeAugmentation.getManagedNodeEntry(); if (managedNodes != null) { for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); if (bridgeIid.toString().contains(bridgeName)) { found = true; break; } } } } return found; }
public boolean isBridgeOnOvsdbNode(Node ovsdbNode, String bridgeName) { boolean found = false; OvsdbNodeAugmentation ovsdbNodeAugmentation = extractNodeAugmentation(ovsdbNode); if (ovsdbNodeAugmentation != null) { List<ManagedNodeEntry> managedNodes = ovsdbNodeAugmentation.getManagedNodeEntry(); if (managedNodes != null) { for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); if (bridgeIid.toString().contains(bridgeName)) { found = true; break; } } } } return found; }
public boolean isBridgeOnOvsdbNode(Node ovsdbNode, String bridgeName) { boolean found = false; OvsdbNodeAugmentation ovsdbNodeAugmentation = extractNodeAugmentation(ovsdbNode); if (ovsdbNodeAugmentation != null) { List<ManagedNodeEntry> managedNodes = ovsdbNodeAugmentation.getManagedNodeEntry(); if (managedNodes != null) { for (ManagedNodeEntry managedNode : managedNodes) { InstanceIdentifier<?> bridgeIid = managedNode.getBridgeRef().getValue(); if (bridgeIid.toString().contains(bridgeName)) { found = true; break; } } } } return found; }
@SuppressWarnings("unchecked") private Node getPortsNode(BigInteger dpnId) throws Exception{ InstanceIdentifier<BridgeRefEntry> bridgeRefInfoPath = InstanceIdentifier. create(BridgeRefInfo.class).child(BridgeRefEntry.class, new BridgeRefEntryKey(dpnId)); BridgeRefEntry bridgeRefEntry = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, bridgeRefInfoPath); if (bridgeRefEntry == null) { throw new Exception("no bridge ref entry found for dpnId: " + dpnId); } InstanceIdentifier<Node> nodeId = ((InstanceIdentifier<OvsdbBridgeAugmentation>) bridgeRefEntry .getBridgeReference().getValue()).firstIdentifierOf(Node.class); Node node = mdsalUtils.read(LogicalDatastoreType.OPERATIONAL, nodeId); if (node == null) { throw new Exception("missing node for dpnId: " + dpnId); } return node; } }
@Override public void execute(ReadWriteTransaction transaction) { Optional<Node> ovsdbNodeOpt = SouthboundUtil.readNode(transaction, nodeIid); if (ovsdbNodeOpt.isPresent()) { Node ovsdbNode = ovsdbNodeOpt.get(); OvsdbNodeAugmentation nodeAugmentation = ovsdbNode.getAugmentation(OvsdbNodeAugmentation.class); if (nodeAugmentation != null) { if (nodeAugmentation.getManagedNodeEntry() != null) { for (ManagedNodeEntry managedNode : nodeAugmentation.getManagedNodeEntry()) { transaction.delete( LogicalDatastoreType.OPERATIONAL, managedNode.getBridgeRef().getValue()); } } else { LOG.debug("{} had no managed nodes", ovsdbNode.getNodeId().getValue()); } } transaction.delete(LogicalDatastoreType.OPERATIONAL, nodeIid); } } });
final InstanceIdentifier<Node> bridgeIid = managedNodeEntry .getBridgeRef() .getValue() .firstIdentifierOf(Node.class); final Optional<Node> optBridgeNode = MdsalUtils.readNode(dataBroker, bridgeIid);
for (ManagedNodeEntry managedNode : ovsdbNodeAugmentation.getManagedNodeEntry()) { transaction.delete( LogicalDatastoreType.OPERATIONAL, managedNode.getBridgeRef().getValue());
private OvsdbBridgeAugmentation getBridge(InstanceIdentifier<OvsdbNodeAugmentation> key, Uuid aaUuid) { if (aaUuid == null) { return null; } OvsdbBridgeAugmentation bridge = null; final InstanceIdentifier<Node> nodeIid = key.firstIdentifierOf(Node.class); try (ReadOnlyTransaction transaction = SouthboundProvider.getDb().newReadOnlyTransaction()) { final Optional<Node> nodeOptional = transaction.read(LogicalDatastoreType.OPERATIONAL, nodeIid).get(); if (nodeOptional.isPresent()) { final List<ManagedNodeEntry> managedNodes = nodeOptional.get().getAugmentation(OvsdbNodeAugmentation.class).getManagedNodeEntry(); for (final ManagedNodeEntry managedNode : managedNodes) { final OvsdbBridgeRef ovsdbBridgeRef = managedNode.getBridgeRef(); final InstanceIdentifier<OvsdbBridgeAugmentation> brIid = ovsdbBridgeRef.getValue() .firstIdentifierOf(Node.class).augmentation(OvsdbBridgeAugmentation.class); final Optional<OvsdbBridgeAugmentation> optionalBridge = transaction.read(LogicalDatastoreType.OPERATIONAL, brIid).get(); bridge = optionalBridge.orNull(); if (bridge != null && bridge.getAutoAttach() != null && bridge.getAutoAttach().equals(aaUuid)) { return bridge; } } } } catch (InterruptedException | ExecutionException e) { LOG.warn("Error reading from datastore",e); } return null; } }
public static void setPortBandwidthLimits(DataBroker db, OdlInterfaceRpcService odlInterfaceRpcService, Port port, BandwidthLimitRules bwLimit) { if (LOG.isTraceEnabled()) { LOG.trace("Setting bandwidth limits {} on Port {}", port, bwLimit); } BigInteger dpId = getDpnForInterface(odlInterfaceRpcService, port.getUuid().getValue()); if (dpId.equals(BigInteger.ZERO)) { LOG.info("DPN ID for interface {} not found", port.getUuid().getValue()); return; } OvsdbBridgeRef bridgeRefEntry = getBridgeRefEntryFromOperDS(dpId, db); Optional<Node> bridgeNode = MDSALUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntry.getValue().firstIdentifierOf(Node.class), db); TerminationPoint tp = getTerminationPoint(bridgeNode.get(), port.getUuid().getValue()); OvsdbTerminationPointAugmentation ovsdbTp = tp.getAugmentation(OvsdbTerminationPointAugmentation.class); OvsdbTerminationPointAugmentationBuilder tpAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder(); tpAugmentationBuilder.setName(ovsdbTp.getName()); tpAugmentationBuilder.setIngressPolicingRate(bwLimit.getMaxKbps().longValue()); tpAugmentationBuilder.setIngressPolicingBurst(bwLimit.getMaxBurstKbps().longValue()); TerminationPointBuilder tpBuilder = new TerminationPointBuilder(); tpBuilder.setKey(tp.getKey()); tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build()); MDSALUtil.syncUpdate(db, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier .create(NetworkTopology.class) .child(Topology.class, new TopologyKey(SouthboundUtils.OVSDB_TOPOLOGY_ID)) .child(Node.class, bridgeNode.get().getKey()) .child(TerminationPoint.class, new TerminationPointKey(tp.getKey())), tpBuilder.build()); }