@Override public List<String> getElanInterfaces(String elanInstanceName) { List<String> elanInterfaces = new ArrayList<>(); InstanceIdentifier<ElanInterfaces> elanInterfacesIdentifier = InstanceIdentifier.builder(ElanInterfaces.class) .build(); Optional<ElanInterfaces> elanInterfacesOptional = elanUtils.read(broker, LogicalDatastoreType.CONFIGURATION, elanInterfacesIdentifier); if (!elanInterfacesOptional.isPresent()) { return elanInterfaces; } List<ElanInterface> elanInterfaceList = elanInterfacesOptional.get().getElanInterface(); for (ElanInterface elanInterface : elanInterfaceList) { if (elanInterface.getElanInstanceName().equals(elanInstanceName)) { elanInterfaces.add(elanInterface.getName()); } } return elanInterfaces; }
public static Long getElanIdFromInterface(String elanInterfaceName,DataBroker broker) { ElanInterface elanInterface = getElanInterfaceByElanInterfaceName(elanInterfaceName, broker); if (null != elanInterface) { ElanInstance elanInfo = getElanInstanceByName(elanInterface.getElanInstanceName(), broker); return elanInfo.getElanTag(); } return null; }
@Override public List<ListenableFuture<Void>> call() throws Exception { List<ListenableFuture<Void>> futures = new ArrayList<>(); WriteTransaction deleteFlowTx = broker.newWriteOnlyTransaction(); WriteTransaction tx = broker.newWriteOnlyTransaction(); ElanInterface elanInterface = ElanUtils.getElanInterfaceByElanInterfaceName(broker, interfaceName); if (elanInterface == null) { LOG.debug("ElanInterface Not present for interfaceName {} for delete event", interfaceName); return futures; } elanUtils.deleteMacEntryFromDsAndRemoveFlows(interfaceManager, interfaceName, macAddress, elanInterface.getElanInstanceName(), tx, deleteFlowTx); futures.add(tx.submit()); futures.add(deleteFlowTx.submit()); return futures; } }
@Override public List<ListenableFuture<Void>> call() throws Exception { List<ListenableFuture<Void>> futures = new ArrayList<>(); WriteTransaction flowWritetx = broker.newWriteOnlyTransaction(); WriteTransaction tx = broker.newWriteOnlyTransaction(); ElanInterface elanInterface = ElanUtils.getElanInterfaceByElanInterfaceName(broker, interfaceName); if (elanInterface == null) { LOG.debug("ElanInterface Not present for interfaceName {} for add event", interfaceName); return futures; } elanUtils.addMacEntryToDsAndSetupFlows(interfaceManager, interfaceName, macAddress, elanInterface.getElanInstanceName(), tx, flowWritetx, ElanConstants.STATIC_MAC_TIMEOUT); futures.add(tx.submit()); futures.add(flowWritetx.submit()); return futures; } }
private void handleUpdatedInterfaces(DataTreeModification<ElanInterfaces> newDataObject) { ElanInterfaces instance = newDataObject.getRootNode().getDataAfter(); Optional<String> findFirst = instance.getElanInterface().stream().map(x -> x.getElanInstanceName()).findFirst(); if (!findFirst.isPresent()) { log.info("empty - exiting");
@Override protected void update(InstanceIdentifier<ElanInterface> identifier, ElanInterface original, ElanInterface update) { String elanName = update.getElanInstanceName(); String interfaceName = update.getName(); List<PhysAddress> existingPhysAddress = original.getStaticMacEntries();
@Override protected void add(InstanceIdentifier<ElanInterface> identifier, ElanInterface elanInterfaceAdded) { String elanInstanceName = elanInterfaceAdded.getElanInstanceName(); String interfaceName = elanInterfaceAdded.getName(); InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(interfaceName);
String elanInstanceName = elanInterface.getElanInstanceName();
@Override protected void remove(InstanceIdentifier<Interface> identifier, Interface delIf) { LOG.trace("Received interface {} Down event", delIf); String interfaceName = delIf.getName(); ElanInterface elanInterface = ElanUtils.getElanInterfaceByElanInterfaceName(broker, interfaceName); if (elanInterface == null) { LOG.debug("No Elan Interface is created for the interface:{} ", interfaceName); return; } NodeConnectorId nodeConnectorId = new NodeConnectorId(delIf.getLowerLayerIf().get(0)); BigInteger dpId = BigInteger.valueOf(MDSALUtil.getDpnIdFromPortName(nodeConnectorId)); InterfaceInfo interfaceInfo = new InterfaceInfo(dpId, nodeConnectorId.getValue()); interfaceInfo.setInterfaceName(interfaceName); interfaceInfo.setInterfaceType(InterfaceInfo.InterfaceType.VLAN_INTERFACE); interfaceInfo.setInterfaceTag(delIf.getIfIndex()); String elanInstanceName = elanInterface.getElanInstanceName(); ElanInstance elanInstance = ElanUtils.getElanInstanceByName(broker, elanInstanceName); DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); InterfaceRemoveWorkerOnElan removeWorker = new InterfaceRemoveWorkerOnElan(elanInstanceName, elanInstance, interfaceName, interfaceInfo, true, elanInterfaceManager); coordinator.enqueueJob(elanInstanceName, removeWorker, ElanConstants.JOB_MAX_RETRIES); }
@Override protected void remove(InstanceIdentifier<ElanInterface> identifier, ElanInterface del) { String interfaceName = del.getName(); ElanInstance elanInfo = ElanUtils.getElanInstanceByName(broker, del.getElanInstanceName()); /* * Handling in case the elan instance is deleted.If the Elan instance is * deleted, there is no need to explicitly delete the elan interfaces */ if (elanInfo == null) { return; } InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(interfaceName); String elanInstanceName = elanInfo.getElanInstanceName(); DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); InterfaceRemoveWorkerOnElan configWorker = new InterfaceRemoveWorkerOnElan(elanInstanceName, elanInfo, interfaceName, interfaceInfo, false, this); coordinator.enqueueJob(elanInstanceName, configWorker, ElanConstants.JOB_MAX_RETRIES); }
String.format("Interface %s is not a ELAN interface", interfaceName)); String elanInstanceName = elanInterface.getElanInstanceName(); ElanInstance elanInfo = ElanUtils.getElanInstanceByName(dataBroker, elanInstanceName); long elanTag = elanInfo.getElanTag();