Search in sources :

Example 6 with CompletedBatchOperation

use of org.onosproject.net.flow.CompletedBatchOperation in project onos by opennetworkinglab.

the class OpenFlowRuleProvider method executeBatch.

@Override
public void executeBatch(FlowRuleBatchOperation batch) {
    checkNotNull(batch);
    Dpid dpid = Dpid.dpid(batch.deviceId().uri());
    OpenFlowSwitch sw = controller.getSwitch(dpid);
    // If switch no longer exists, simply return.
    if (sw == null) {
        Set<FlowRule> failures = ImmutableSet.copyOf(Lists.transform(batch.getOperations(), e -> e.target()));
        providerService.batchOperationCompleted(batch.id(), new CompletedBatchOperation(false, failures, batch.deviceId()));
        return;
    }
    pendingBatches.put(batch.id(), new InternalCacheEntry(batch));
    // Build a batch of flow mods - to reduce the number i/o asked to the SO
    Set<OFFlowMod> mods = Sets.newHashSet();
    OFFlowMod mod;
    for (FlowRuleBatchEntry fbe : batch.getOperations()) {
        FlowModBuilder builder = FlowModBuilder.builder(fbe.target(), sw.factory(), Optional.of(batch.id()), Optional.of(driverService));
        switch(fbe.operator()) {
            case ADD:
                mod = builder.buildFlowAdd();
                break;
            case REMOVE:
                mod = builder.buildFlowDel();
                break;
            case MODIFY:
                mod = builder.buildFlowMod();
                break;
            default:
                log.error("Unsupported batch operation {}; skipping flowmod {}", fbe.operator(), fbe);
                continue;
        }
        mods.add(mod);
    }
    // Build a list to mantain the order
    List<OFMessage> modsTosend = Lists.newArrayList(mods);
    OFBarrierRequest.Builder builder = sw.factory().buildBarrierRequest().setXid(batch.id());
    // Adds finally the barrier request
    modsTosend.add(builder.build());
    sw.sendMsg(modsTosend);
    // Take into account also the barrier request
    recordEvents(dpid, (batch.getOperations().size() + 1));
}
Also used : FlowRuleBatchOperation(org.onosproject.net.flow.oldbatch.FlowRuleBatchOperation) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) U64(org.projectfloodlight.openflow.types.U64) OFStatsReply(org.projectfloodlight.openflow.protocol.OFStatsReply) DefaultTableStatisticsEntry(org.onosproject.net.flow.DefaultTableStatisticsEntry) Tools.groupedThreads(org.onlab.util.Tools.groupedThreads) FlowEntry(org.onosproject.net.flow.FlowEntry) DefaultLoad(org.onosproject.net.statistic.DefaultLoad) TableStatisticsEntry(org.onosproject.net.flow.TableStatisticsEntry) DefaultDriverData(org.onosproject.net.driver.DefaultDriverData) DriverService(org.onosproject.net.driver.DriverService) POLL_FREQUENCY_DEFAULT(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.POLL_FREQUENCY_DEFAULT) Unpooled(io.netty.buffer.Unpooled) FlowRuleProviderRegistry(org.onosproject.net.flow.FlowRuleProviderRegistry) Executors.newScheduledThreadPool(java.util.concurrent.Executors.newScheduledThreadPool) DefaultDriverHandler(org.onosproject.net.driver.DefaultDriverHandler) Map(java.util.Map) OFMessage(org.projectfloodlight.openflow.protocol.OFMessage) POLL_FREQUENCY(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.POLL_FREQUENCY) Driver(org.onosproject.net.driver.Driver) Dpid(org.onosproject.openflow.controller.Dpid) ADAPTIVE_FLOW_SAMPLING_DEFAULT(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.ADAPTIVE_FLOW_SAMPLING_DEFAULT) Tools.get(org.onlab.util.Tools.get) ImmutableSet(com.google.common.collect.ImmutableSet) IndexTableId(org.onosproject.net.flow.IndexTableId) Deactivate(org.osgi.service.component.annotations.Deactivate) Set(java.util.Set) ScheduledThreadPoolExecutor(java.util.concurrent.ScheduledThreadPoolExecutor) OFBadRequestCode(org.projectfloodlight.openflow.protocol.OFBadRequestCode) FlowEntryBuilder(org.onosproject.provider.of.flow.util.FlowEntryBuilder) OFBadMatchErrorMsg(org.projectfloodlight.openflow.protocol.errormsg.OFBadMatchErrorMsg) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) OpenFlowEventListener(org.onosproject.openflow.controller.OpenFlowEventListener) OFBadRequestErrorMsg(org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg) OFFlowModFailedErrorMsg(org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg) FlowRuleBatchEntry(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry) ADAPTIVE_FLOW_SAMPLING(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.ADAPTIVE_FLOW_SAMPLING) Objects(java.util.Objects) List(java.util.List) FlowRuleProvider(org.onosproject.net.flow.FlowRuleProvider) FlowRule(org.onosproject.net.flow.FlowRule) Optional(java.util.Optional) CacheBuilder(com.google.common.cache.CacheBuilder) DeviceId(org.onosproject.net.DeviceId) OFType(org.projectfloodlight.openflow.protocol.OFType) Dictionary(java.util.Dictionary) OFVersion(org.projectfloodlight.openflow.protocol.OFVersion) OFPortStatus(org.projectfloodlight.openflow.protocol.OFPortStatus) OpenFlowSwitchListener(org.onosproject.openflow.controller.OpenFlowSwitchListener) ComponentContext(org.osgi.service.component.ComponentContext) Strings.isNullOrEmpty(com.google.common.base.Strings.isNullOrEmpty) OFFlowLightweightStatsReply(org.projectfloodlight.openflow.protocol.OFFlowLightweightStatsReply) POLL_STATS_PERIODICALLY_DEFAULT(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.POLL_STATS_PERIODICALLY_DEFAULT) Component(org.osgi.service.component.annotations.Component) Lists(com.google.common.collect.Lists) ByteBuf(io.netty.buffer.ByteBuf) OFFlowRemoved(org.projectfloodlight.openflow.protocol.OFFlowRemoved) OFCapabilities(org.projectfloodlight.openflow.protocol.OFCapabilities) OFTableStatsReply(org.projectfloodlight.openflow.protocol.OFTableStatsReply) OFFlowStatsReply(org.projectfloodlight.openflow.protocol.OFFlowStatsReply) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) Activate(org.osgi.service.component.annotations.Activate) OFErrorMsg(org.projectfloodlight.openflow.protocol.OFErrorMsg) OFBarrierRequest(org.projectfloodlight.openflow.protocol.OFBarrierRequest) OFBadActionErrorMsg(org.projectfloodlight.openflow.protocol.errormsg.OFBadActionErrorMsg) OFBadInstructionErrorMsg(org.projectfloodlight.openflow.protocol.errormsg.OFBadInstructionErrorMsg) ComponentConfigService(org.onosproject.cfg.ComponentConfigService) AbstractProvider(org.onosproject.net.provider.AbstractProvider) RemovalNotification(com.google.common.cache.RemovalNotification) Logger(org.slf4j.Logger) OFStatsType(org.projectfloodlight.openflow.protocol.OFStatsType) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) RoleState(org.onosproject.openflow.controller.RoleState) ProviderId(org.onosproject.net.provider.ProviderId) Maps(com.google.common.collect.Maps) OpenFlowController(org.onosproject.openflow.controller.OpenFlowController) OpenFlowSwitch(org.onosproject.openflow.controller.OpenFlowSwitch) ReferenceCardinality(org.osgi.service.component.annotations.ReferenceCardinality) TimeUnit(java.util.concurrent.TimeUnit) DriverHandler(org.onosproject.net.driver.DriverHandler) POLL_STATS_PERIODICALLY(org.onosproject.provider.of.flow.impl.OsgiPropertyConstants.POLL_STATS_PERIODICALLY) RemovalCause(com.google.common.cache.RemovalCause) OFFlowMod(org.projectfloodlight.openflow.protocol.OFFlowMod) Modified(org.osgi.service.component.annotations.Modified) LoggerFactory.getLogger(org.slf4j.LoggerFactory.getLogger) OFTableStatsEntry(org.projectfloodlight.openflow.protocol.OFTableStatsEntry) FlowRuleProviderService(org.onosproject.net.flow.FlowRuleProviderService) U16(org.projectfloodlight.openflow.types.U16) Cache(com.google.common.cache.Cache) Reference(org.osgi.service.component.annotations.Reference) Collections(java.util.Collections) OFMessage(org.projectfloodlight.openflow.protocol.OFMessage) Dpid(org.onosproject.openflow.controller.Dpid) FlowRuleBatchEntry(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) OpenFlowSwitch(org.onosproject.openflow.controller.OpenFlowSwitch) OFBarrierRequest(org.projectfloodlight.openflow.protocol.OFBarrierRequest) FlowRule(org.onosproject.net.flow.FlowRule) OFFlowMod(org.projectfloodlight.openflow.protocol.OFFlowMod)

Example 7 with CompletedBatchOperation

use of org.onosproject.net.flow.CompletedBatchOperation in project onos by opennetworkinglab.

the class ECFlowRuleStore method storeBatch.

@Override
public void storeBatch(FlowRuleBatchOperation operation) {
    if (operation.getOperations().isEmpty()) {
        notifyDelegate(FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(true, Collections.emptySet(), operation.deviceId())));
        return;
    }
    DeviceId deviceId = operation.deviceId();
    NodeId master = mastershipService.getMasterFor(deviceId);
    if (master == null) {
        log.warn("Failed to storeBatch: No master for {}", deviceId);
        Set<FlowRule> allFailures = operation.getOperations().stream().map(op -> op.target()).collect(Collectors.toSet());
        notifyDelegate(FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(false, allFailures, deviceId)));
        return;
    }
    if (Objects.equals(local, master)) {
        storeBatchInternal(operation);
        return;
    }
    log.trace("Forwarding storeBatch to {}, which is the primary (master) for device {}", master, deviceId);
    clusterCommunicator.unicast(operation, APPLY_BATCH_FLOWS, serializer::encode, master).whenComplete((result, error) -> {
        if (error != null) {
            log.warn("Failed to storeBatch: {} to {}", operation, master, error);
            Set<FlowRule> allFailures = operation.getOperations().stream().map(op -> op.target()).collect(Collectors.toSet());
            notifyDelegate(FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(false, allFailures, deviceId)));
        }
    });
}
Also used : FlowRuleBatchOperation(org.onosproject.net.flow.oldbatch.FlowRuleBatchOperation) FlowEntryState(org.onosproject.net.flow.FlowEntry.FlowEntryState) DefaultFlowRule(org.onosproject.net.flow.DefaultFlowRule) REMOVE_FLOW_ENTRY(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.REMOVE_FLOW_ENTRY) DeviceService(org.onosproject.net.device.DeviceService) FlowEntry(org.onosproject.net.flow.FlowEntry) FlowRuleService(org.onosproject.net.flow.FlowRuleService) StorageService(org.onosproject.store.service.StorageService) Pair(org.apache.commons.lang3.tuple.Pair) Map(java.util.Map) ApplicationId(org.onosproject.core.ApplicationId) KryoNamespaces(org.onosproject.store.serializers.KryoNamespaces) MastershipService(org.onosproject.mastership.MastershipService) EventuallyConsistentMapEvent(org.onosproject.store.service.EventuallyConsistentMapEvent) Deactivate(org.osgi.service.component.annotations.Deactivate) Set(java.util.Set) WallClockTimestamp(org.onosproject.store.service.WallClockTimestamp) Executors(java.util.concurrent.Executors) RULE_REMOVED(org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVED) FlowRuleBatchEntry(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry) FlowRuleOperation(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry.FlowRuleOperation) OrderedExecutor(org.onlab.util.OrderedExecutor) DeviceEvent(org.onosproject.net.device.DeviceEvent) DeviceId(org.onosproject.net.DeviceId) REMOTE_APPLY_COMPLETED(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.REMOTE_APPLY_COMPLETED) Dictionary(java.util.Dictionary) Tools(org.onlab.util.Tools) FlowRuleEvent(org.onosproject.net.flow.FlowRuleEvent) ComponentContext(org.osgi.service.component.ComponentContext) Strings.isNullOrEmpty(com.google.common.base.Strings.isNullOrEmpty) KryoNamespace(org.onlab.util.KryoNamespace) MapEventListener(org.onosproject.store.service.MapEventListener) Component(org.osgi.service.component.annotations.Component) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) StreamSupport(java.util.stream.StreamSupport) FlowRuleStore(org.onosproject.net.flow.FlowRuleStore) GET_FLOW_ENTRY(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.GET_FLOW_ENTRY) ComponentConfigService(org.onosproject.cfg.ComponentConfigService) DeviceListener(org.onosproject.net.device.DeviceListener) FLOW_TABLE_BACKUP(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.FLOW_TABLE_BACKUP) OsgiPropertyConstants(org.onosproject.store.OsgiPropertyConstants) APPLY_BATCH_FLOWS(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.APPLY_BATCH_FLOWS) ExecutionException(java.util.concurrent.ExecutionException) MapEvent(org.onosproject.store.service.MapEvent) AbstractStore(org.onosproject.store.AbstractStore) FlowRuleBatchEvent(org.onosproject.net.flow.oldbatch.FlowRuleBatchEvent) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) PersistenceService(org.onosproject.persistence.PersistenceService) CoreService(org.onosproject.core.CoreService) Tools.groupedThreads(org.onlab.util.Tools.groupedThreads) TimeoutException(java.util.concurrent.TimeoutException) TableStatisticsEntry(org.onosproject.net.flow.TableStatisticsEntry) Type(org.onosproject.net.flow.FlowRuleEvent.Type) PURGE_FLOW_RULES(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.PURGE_FLOW_RULES) GET_DEVICE_FLOW_COUNT(org.onosproject.store.flow.impl.ECFlowRuleStoreMessageSubjects.GET_DEVICE_FLOW_COUNT) FlowRuleBatchRequest(org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest) AsyncConsistentMap(org.onosproject.store.service.AsyncConsistentMap) NodeId(org.onosproject.cluster.NodeId) Serializer(org.onosproject.store.service.Serializer) FlowRuleStoreDelegate(org.onosproject.net.flow.FlowRuleStoreDelegate) Tools.get(org.onlab.util.Tools.get) AbstractListenerManager(org.onosproject.event.AbstractListenerManager) ReplicaInfoService(org.onosproject.store.flow.ReplicaInfoService) IdGenerator(org.onosproject.core.IdGenerator) Math.min(java.lang.Math.min) Streams(com.google.common.collect.Streams) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) FlowRule(org.onosproject.net.flow.FlowRule) ClusterCommunicationService(org.onosproject.store.cluster.messaging.ClusterCommunicationService) Math.max(java.lang.Math.max) ClusterService(org.onosproject.cluster.ClusterService) StoredFlowEntry(org.onosproject.net.flow.StoredFlowEntry) ReplicaInfoEventListener(org.onosproject.store.flow.ReplicaInfoEventListener) Function(java.util.function.Function) HashSet(java.util.HashSet) ImmutableList(com.google.common.collect.ImmutableList) Activate(org.osgi.service.component.annotations.Activate) EventuallyConsistentMap(org.onosproject.store.service.EventuallyConsistentMap) EventuallyConsistentMapListener(org.onosproject.store.service.EventuallyConsistentMapListener) ExecutorService(java.util.concurrent.ExecutorService) DefaultFlowEntry(org.onosproject.net.flow.DefaultFlowEntry) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) ReplicaInfo(org.onosproject.store.flow.ReplicaInfo) ClusterMessageHandler(org.onosproject.store.cluster.messaging.ClusterMessageHandler) MastershipBasedTimestamp(org.onosproject.store.impl.MastershipBasedTimestamp) ReplicaInfoEvent(org.onosproject.store.flow.ReplicaInfoEvent) Maps(com.google.common.collect.Maps) FlowRuleStoreException(org.onosproject.net.flow.FlowRuleStoreException) ImmutablePair(org.apache.commons.lang3.tuple.ImmutablePair) ClusterMessage(org.onosproject.store.cluster.messaging.ClusterMessage) TimeUnit(java.util.concurrent.TimeUnit) ReferenceCardinality(org.osgi.service.component.annotations.ReferenceCardinality) Modified(org.osgi.service.component.annotations.Modified) LoggerFactory.getLogger(org.slf4j.LoggerFactory.getLogger) Reference(org.osgi.service.component.annotations.Reference) Collections(java.util.Collections) DeviceId(org.onosproject.net.DeviceId) NodeId(org.onosproject.cluster.NodeId) DefaultFlowRule(org.onosproject.net.flow.DefaultFlowRule) FlowRule(org.onosproject.net.flow.FlowRule) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) FlowRuleBatchRequest(org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest)

Example 8 with CompletedBatchOperation

use of org.onosproject.net.flow.CompletedBatchOperation in project onos by opennetworkinglab.

the class ECFlowRuleStore method storeBatchInternal.

private void storeBatchInternal(FlowRuleBatchOperation operation) {
    final DeviceId did = operation.deviceId();
    // final Collection<FlowEntry> ft = flowTable.getFlowEntries(did);
    Set<FlowRuleBatchEntry> currentOps = updateStoreInternal(operation);
    if (currentOps.isEmpty()) {
        batchOperationComplete(FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(true, Collections.emptySet(), did)));
        return;
    }
    notifyDelegate(FlowRuleBatchEvent.requested(new FlowRuleBatchRequest(operation.id(), currentOps), operation.deviceId()));
}
Also used : DeviceId(org.onosproject.net.DeviceId) FlowRuleBatchEntry(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) FlowRuleBatchRequest(org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest)

Example 9 with CompletedBatchOperation

use of org.onosproject.net.flow.CompletedBatchOperation in project onos by opennetworkinglab.

the class NullFlowRuleProvider method executeBatch.

@Override
public void executeBatch(FlowRuleBatchOperation batch) {
    // TODO: consider checking mastership
    Set<FlowEntry> entries = flowTable.getOrDefault(batch.deviceId(), Sets.newConcurrentHashSet());
    for (FlowRuleBatchEntry fbe : batch.getOperations()) {
        switch(fbe.operator()) {
            case ADD:
                entries.add(new DefaultFlowEntry(fbe.target()));
                break;
            case REMOVE:
                entries.remove(new DefaultFlowEntry(fbe.target()));
                break;
            case MODIFY:
                FlowEntry entry = new DefaultFlowEntry(fbe.target());
                entries.remove(entry);
                entries.add(entry);
                break;
            default:
                log.error("Unknown flow operation: {}", fbe);
        }
    }
    flowTable.put(batch.deviceId(), entries);
    CompletedBatchOperation op = new CompletedBatchOperation(true, Collections.emptySet(), batch.deviceId());
    providerService.batchOperationCompleted(batch.id(), op);
}
Also used : DefaultFlowEntry(org.onosproject.net.flow.DefaultFlowEntry) FlowRuleBatchEntry(org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry) DefaultFlowEntry(org.onosproject.net.flow.DefaultFlowEntry) FlowEntry(org.onosproject.net.flow.FlowEntry) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation)

Example 10 with CompletedBatchOperation

use of org.onosproject.net.flow.CompletedBatchOperation in project onos by opennetworkinglab.

the class DistributedVirtualFlowRuleStore method storeBatch.

@Override
public void storeBatch(NetworkId networkId, FlowRuleBatchOperation operation) {
    if (operation.getOperations().isEmpty()) {
        notifyDelegate(networkId, FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(true, Collections.emptySet(), operation.deviceId())));
        return;
    }
    DeviceId deviceId = operation.deviceId();
    MastershipService mastershipService = vnaService.get(networkId, MastershipService.class);
    NodeId master = mastershipService.getMasterFor(deviceId);
    if (master == null) {
        log.warn("No master for {}, vnet {} : flows will be marked for removal", deviceId, networkId);
        updateStoreInternal(networkId, operation);
        notifyDelegate(networkId, FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(true, Collections.emptySet(), operation.deviceId())));
        return;
    }
    if (Objects.equals(local, master)) {
        storeBatchInternal(networkId, operation);
        return;
    }
    log.trace("Forwarding storeBatch to {}, which is the primary (master) for device {}, vent {}", master, deviceId, networkId);
    clusterCommunicator.unicast(new VirtualFlowRuleBatchOperation(networkId, operation), APPLY_BATCH_FLOWS, serializer::encode, master).whenComplete((result, error) -> {
        if (error != null) {
            log.warn("Failed to storeBatch: {} to {}", operation, master, error);
            Set<FlowRule> allFailures = operation.getOperations().stream().map(BatchOperationEntry::target).collect(Collectors.toSet());
            notifyDelegate(networkId, FlowRuleBatchEvent.completed(new FlowRuleBatchRequest(operation.id(), Collections.emptySet()), new CompletedBatchOperation(false, allFailures, deviceId)));
        }
    });
}
Also used : VirtualFlowRuleBatchOperation(org.onosproject.incubator.net.virtual.store.impl.primitives.VirtualFlowRuleBatchOperation) VirtualDeviceId(org.onosproject.incubator.net.virtual.store.impl.primitives.VirtualDeviceId) DeviceId(org.onosproject.net.DeviceId) NodeId(org.onosproject.cluster.NodeId) MastershipService(org.onosproject.mastership.MastershipService) FlowRule(org.onosproject.net.flow.FlowRule) VirtualFlowRule(org.onosproject.incubator.net.virtual.store.impl.primitives.VirtualFlowRule) CompletedBatchOperation(org.onosproject.net.flow.CompletedBatchOperation) FlowRuleBatchRequest(org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest)

Aggregations

CompletedBatchOperation (org.onosproject.net.flow.CompletedBatchOperation)11 FlowRuleBatchEntry (org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry)9 FlowRule (org.onosproject.net.flow.FlowRule)7 FlowRuleBatchRequest (org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest)6 DeviceId (org.onosproject.net.DeviceId)5 FlowEntry (org.onosproject.net.flow.FlowEntry)3 Strings.isNullOrEmpty (com.google.common.base.Strings.isNullOrEmpty)2 ImmutableList (com.google.common.collect.ImmutableList)2 Maps (com.google.common.collect.Maps)2 Collections (java.util.Collections)2 Dictionary (java.util.Dictionary)2 List (java.util.List)2 Map (java.util.Map)2 Objects (java.util.Objects)2 Set (java.util.Set)2 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)2 TimeUnit (java.util.concurrent.TimeUnit)2 Collectors (java.util.stream.Collectors)2 Tools.get (org.onlab.util.Tools.get)2 Tools.groupedThreads (org.onlab.util.Tools.groupedThreads)2