From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- .../provider/nil/NullFlowRuleProvider.java | 132 --------------------- 1 file changed, 132 deletions(-) delete mode 100644 framework/src/onos/providers/null/src/main/java/org/onosproject/provider/nil/NullFlowRuleProvider.java (limited to 'framework/src/onos/providers/null/src/main/java/org/onosproject/provider/nil/NullFlowRuleProvider.java') diff --git a/framework/src/onos/providers/null/src/main/java/org/onosproject/provider/nil/NullFlowRuleProvider.java b/framework/src/onos/providers/null/src/main/java/org/onosproject/provider/nil/NullFlowRuleProvider.java deleted file mode 100644 index 9b01d12a..00000000 --- a/framework/src/onos/providers/null/src/main/java/org/onosproject/provider/nil/NullFlowRuleProvider.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright 2015 Open Networking Laboratory - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.onosproject.provider.nil; - -import com.google.common.collect.Sets; -import org.jboss.netty.util.HashedWheelTimer; -import org.jboss.netty.util.Timeout; -import org.jboss.netty.util.TimerTask; -import org.onlab.util.Timer; -import org.onosproject.core.ApplicationId; -import org.onosproject.net.DeviceId; -import org.onosproject.net.flow.CompletedBatchOperation; -import org.onosproject.net.flow.DefaultFlowEntry; -import org.onosproject.net.flow.FlowEntry; -import org.onosproject.net.flow.FlowRule; -import org.onosproject.net.flow.FlowRuleBatchEntry; -import org.onosproject.net.flow.FlowRuleBatchOperation; -import org.onosproject.net.flow.FlowRuleProvider; -import org.onosproject.net.flow.FlowRuleProviderService; -import org.slf4j.Logger; - -import java.util.Collections; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; -import java.util.concurrent.TimeUnit; - -import static org.slf4j.LoggerFactory.getLogger; - -/** - * Null provider to accept any flow and report them. - */ -class NullFlowRuleProvider extends NullProviders.AbstractNullProvider - implements FlowRuleProvider { - - private final Logger log = getLogger(getClass()); - - private ConcurrentMap> flowTable = new ConcurrentHashMap<>(); - - private FlowRuleProviderService providerService; - - private HashedWheelTimer timer = Timer.getTimer(); - private Timeout timeout; - - /** - * Starts the flow rule provider simulation. - * - * @param providerService flow rule provider service - */ - void start(FlowRuleProviderService providerService) { - this.providerService = providerService; - timeout = timer.newTimeout(new StatisticTask(), 5, TimeUnit.SECONDS); - } - - /** - * Stops the flow rule provider simulation. - */ - void stop() { - timeout.cancel(); - } - - @Override - public void applyFlowRule(FlowRule... flowRules) { - // FIXME: invoke executeBatch - } - - @Override - public void removeFlowRule(FlowRule... flowRules) { - // FIXME: invoke executeBatch - } - - @Override - public void removeRulesById(ApplicationId id, FlowRule... flowRules) { - throw new UnsupportedOperationException("Cannot remove by appId from null provider"); - } - - @Override - public void executeBatch(FlowRuleBatchOperation batch) { - // TODO: consider checking mastership - Set 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); - } - - // Periodically reports flow rule statistics. - private class StatisticTask implements TimerTask { - @Override - public void run(Timeout to) throws Exception { - for (DeviceId devId : flowTable.keySet()) { - Set entries = - flowTable.getOrDefault(devId, Collections.emptySet()); - providerService.pushFlowMetrics(devId, entries); - } - timeout = timer.newTimeout(to.getTask(), 5, TimeUnit.SECONDS); - } - } -} -- cgit 1.2.3-korg