summaryrefslogtreecommitdiffstats
path: root/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
diff options
context:
space:
mode:
authorCNlucius <lukai1@huawei.com>2016-09-13 11:40:12 +0800
committerCNlucius <lukai1@huawei.com>2016-09-13 11:41:53 +0800
commitb731e2f1dd0972409b136aebc7b463dd72c9cfad (patch)
tree5107d7d80c19ad8076c2c97c2b5ef8d1cf3ab903 /framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
parentee93993458266114c29271a481ef9ce7ce621b2a (diff)
ONOSFW-171
O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius <lukai1@huawei.com>
Diffstat (limited to 'framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java')
-rw-r--r--framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java116
1 files changed, 0 insertions, 116 deletions
diff --git a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java b/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
deleted file mode 100644
index 7add2173..00000000
--- a/framework/src/onos/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/PathIntentCompiler.java
+++ /dev/null
@@ -1,116 +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.net.intent.impl.compiler;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Link;
-import org.onosproject.net.flow.DefaultFlowRule;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.intent.FlowRuleIntent;
-import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentCompiler;
-import org.onosproject.net.intent.IntentExtensionService;
-import org.onosproject.net.intent.PathIntent;
-import org.onosproject.net.resource.link.LinkResourceAllocations;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-@Component(immediate = true)
-public class PathIntentCompiler implements IntentCompiler<PathIntent> {
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected CoreService coreService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected IntentExtensionService intentManager;
-
- private ApplicationId appId;
-
- @Activate
- public void activate() {
- appId = coreService.registerApplication("org.onosproject.net.intent");
- intentManager.registerCompiler(PathIntent.class, this);
- }
-
- @Deactivate
- public void deactivate() {
- intentManager.unregisterCompiler(PathIntent.class);
- }
-
- @Override
- public List<Intent> compile(PathIntent intent, List<Intent> installable,
- Set<LinkResourceAllocations> resources) {
- // Note: right now recompile is not considered
- // TODO: implement recompile behavior
-
- List<Link> links = intent.path().links();
- List<FlowRule> rules = new ArrayList<>(links.size() - 1);
-
- for (int i = 0; i < links.size() - 1; i++) {
- ConnectPoint ingress = links.get(i).dst();
- ConnectPoint egress = links.get(i + 1).src();
- FlowRule rule = createFlowRule(intent.selector(), intent.treatment(),
- ingress, egress, intent.priority(),
- isLast(links, i));
- rules.add(rule);
- }
-
- return Collections.singletonList(new FlowRuleIntent(appId, null, rules, intent.resources()));
- }
-
- private FlowRule createFlowRule(TrafficSelector originalSelector, TrafficTreatment originalTreatment,
- ConnectPoint ingress, ConnectPoint egress,
- int priority, boolean last) {
- TrafficSelector selector = DefaultTrafficSelector.builder(originalSelector)
- .matchInPort(ingress.port())
- .build();
-
- TrafficTreatment.Builder treatmentBuilder;
- if (last) {
- treatmentBuilder = DefaultTrafficTreatment.builder(originalTreatment);
- } else {
- treatmentBuilder = DefaultTrafficTreatment.builder();
- }
- TrafficTreatment treatment = treatmentBuilder.setOutput(egress.port()).build();
-
- return DefaultFlowRule.builder()
- .forDevice(ingress.deviceId())
- .withSelector(selector)
- .withTreatment(treatment)
- .withPriority(priority)
- .fromApp(appId)
- .makePermanent()
- .build();
- }
-
- private boolean isLast(List<Link> links, int i) {
- return i == links.size() - 2;
- }
-}