Showing
28 changed files
with
328 additions
and
464 deletions
1 | package org.onlab.onos.ifwd; | 1 | package org.onlab.onos.ifwd; |
2 | 2 | ||
3 | -import static org.slf4j.LoggerFactory.getLogger; | ||
4 | - | ||
5 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
6 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
7 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
8 | import org.apache.felix.scr.annotations.Reference; | 6 | import org.apache.felix.scr.annotations.Reference; |
9 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 7 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
8 | +import org.onlab.onos.ApplicationId; | ||
9 | +import org.onlab.onos.CoreService; | ||
10 | import org.onlab.onos.net.Host; | 10 | import org.onlab.onos.net.Host; |
11 | import org.onlab.onos.net.HostId; | 11 | import org.onlab.onos.net.HostId; |
12 | import org.onlab.onos.net.PortNumber; | 12 | import org.onlab.onos.net.PortNumber; |
... | @@ -16,7 +16,6 @@ import org.onlab.onos.net.flow.TrafficSelector; | ... | @@ -16,7 +16,6 @@ import org.onlab.onos.net.flow.TrafficSelector; |
16 | import org.onlab.onos.net.flow.TrafficTreatment; | 16 | import org.onlab.onos.net.flow.TrafficTreatment; |
17 | import org.onlab.onos.net.host.HostService; | 17 | import org.onlab.onos.net.host.HostService; |
18 | import org.onlab.onos.net.intent.HostToHostIntent; | 18 | import org.onlab.onos.net.intent.HostToHostIntent; |
19 | -import org.onlab.onos.net.intent.IntentId; | ||
20 | import org.onlab.onos.net.intent.IntentService; | 19 | import org.onlab.onos.net.intent.IntentService; |
21 | import org.onlab.onos.net.packet.DefaultOutboundPacket; | 20 | import org.onlab.onos.net.packet.DefaultOutboundPacket; |
22 | import org.onlab.onos.net.packet.InboundPacket; | 21 | import org.onlab.onos.net.packet.InboundPacket; |
... | @@ -28,6 +27,8 @@ import org.onlab.onos.net.topology.TopologyService; | ... | @@ -28,6 +27,8 @@ import org.onlab.onos.net.topology.TopologyService; |
28 | import org.onlab.packet.Ethernet; | 27 | import org.onlab.packet.Ethernet; |
29 | import org.slf4j.Logger; | 28 | import org.slf4j.Logger; |
30 | 29 | ||
30 | +import static org.slf4j.LoggerFactory.getLogger; | ||
31 | + | ||
31 | /** | 32 | /** |
32 | * WORK-IN-PROGRESS: Sample reactive forwarding application using intent framework. | 33 | * WORK-IN-PROGRESS: Sample reactive forwarding application using intent framework. |
33 | */ | 34 | */ |
... | @@ -37,6 +38,9 @@ public class IntentReactiveForwarding { | ... | @@ -37,6 +38,9 @@ public class IntentReactiveForwarding { |
37 | private final Logger log = getLogger(getClass()); | 38 | private final Logger log = getLogger(getClass()); |
38 | 39 | ||
39 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 40 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
41 | + protected CoreService coreService; | ||
42 | + | ||
43 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
40 | protected TopologyService topologyService; | 44 | protected TopologyService topologyService; |
41 | 45 | ||
42 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 46 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -49,11 +53,11 @@ public class IntentReactiveForwarding { | ... | @@ -49,11 +53,11 @@ public class IntentReactiveForwarding { |
49 | protected HostService hostService; | 53 | protected HostService hostService; |
50 | 54 | ||
51 | private ReactivePacketProcessor processor = new ReactivePacketProcessor(); | 55 | private ReactivePacketProcessor processor = new ReactivePacketProcessor(); |
52 | - | 56 | + private ApplicationId appId; |
53 | - private static long intentId = 0x123000; | ||
54 | 57 | ||
55 | @Activate | 58 | @Activate |
56 | public void activate() { | 59 | public void activate() { |
60 | + appId = coreService.registerApplication("org.onlab.onos.ifwd"); | ||
57 | packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2); | 61 | packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2); |
58 | log.info("Started"); | 62 | log.info("Started"); |
59 | } | 63 | } |
... | @@ -126,8 +130,7 @@ public class IntentReactiveForwarding { | ... | @@ -126,8 +130,7 @@ public class IntentReactiveForwarding { |
126 | TrafficSelector selector = DefaultTrafficSelector.builder().build(); | 130 | TrafficSelector selector = DefaultTrafficSelector.builder().build(); |
127 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); | 131 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); |
128 | 132 | ||
129 | - HostToHostIntent intent = | 133 | + HostToHostIntent intent = new HostToHostIntent(appId, srcId, dstId, |
130 | - new HostToHostIntent(new IntentId(intentId++), srcId, dstId, | ||
131 | selector, treatment); | 134 | selector, treatment); |
132 | 135 | ||
133 | intentService.submit(intent); | 136 | intentService.submit(intent); | ... | ... |
1 | package org.onlab.onos.sdnip; | 1 | package org.onlab.onos.sdnip; |
2 | 2 | ||
3 | -import java.util.List; | 3 | +import org.onlab.onos.ApplicationId; |
4 | - | ||
5 | import org.onlab.onos.net.ConnectPoint; | 4 | import org.onlab.onos.net.ConnectPoint; |
6 | import org.onlab.onos.net.flow.DefaultTrafficSelector; | 5 | import org.onlab.onos.net.flow.DefaultTrafficSelector; |
7 | import org.onlab.onos.net.flow.DefaultTrafficTreatment; | 6 | import org.onlab.onos.net.flow.DefaultTrafficTreatment; |
8 | import org.onlab.onos.net.flow.TrafficSelector; | 7 | import org.onlab.onos.net.flow.TrafficSelector; |
9 | import org.onlab.onos.net.flow.TrafficTreatment; | 8 | import org.onlab.onos.net.flow.TrafficTreatment; |
10 | -import org.onlab.onos.net.intent.IntentId; | ||
11 | import org.onlab.onos.net.intent.IntentService; | 9 | import org.onlab.onos.net.intent.IntentService; |
12 | import org.onlab.onos.net.intent.PointToPointIntent; | 10 | import org.onlab.onos.net.intent.PointToPointIntent; |
13 | import org.onlab.onos.sdnip.config.BgpPeer; | 11 | import org.onlab.onos.sdnip.config.BgpPeer; |
... | @@ -22,6 +20,8 @@ import org.onlab.packet.IpPrefix; | ... | @@ -22,6 +20,8 @@ import org.onlab.packet.IpPrefix; |
22 | import org.slf4j.Logger; | 20 | import org.slf4j.Logger; |
23 | import org.slf4j.LoggerFactory; | 21 | import org.slf4j.LoggerFactory; |
24 | 22 | ||
23 | +import java.util.List; | ||
24 | + | ||
25 | /** | 25 | /** |
26 | * Manages the connectivity requirements between peers. | 26 | * Manages the connectivity requirements between peers. |
27 | */ | 27 | */ |
... | @@ -38,11 +38,13 @@ public class PeerConnectivityManager { | ... | @@ -38,11 +38,13 @@ public class PeerConnectivityManager { |
38 | private final InterfaceService interfaceService; | 38 | private final InterfaceService interfaceService; |
39 | private final IntentService intentService; | 39 | private final IntentService intentService; |
40 | 40 | ||
41 | - // TODO this sucks. | 41 | + private final ApplicationId appId; |
42 | - private int intentId = 0; | ||
43 | 42 | ||
44 | - public PeerConnectivityManager(SdnIpConfigService configInfoService, | 43 | + public PeerConnectivityManager(ApplicationId appId, |
45 | - InterfaceService interfaceService, IntentService intentService) { | 44 | + SdnIpConfigService configInfoService, |
45 | + InterfaceService interfaceService, | ||
46 | + IntentService intentService) { | ||
47 | + this.appId = appId; | ||
46 | this.configInfoService = configInfoService; | 48 | this.configInfoService = configInfoService; |
47 | this.interfaceService = interfaceService; | 49 | this.interfaceService = interfaceService; |
48 | this.intentService = intentService; | 50 | this.intentService = intentService; |
... | @@ -134,8 +136,8 @@ public class PeerConnectivityManager { | ... | @@ -134,8 +136,8 @@ public class PeerConnectivityManager { |
134 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() | 136 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() |
135 | .build(); | 137 | .build(); |
136 | 138 | ||
137 | - PointToPointIntent intentMatchDstTcpPort = new PointToPointIntent( | 139 | + PointToPointIntent intentMatchDstTcpPort = |
138 | - nextIntentId(), selector, treatment, | 140 | + new PointToPointIntent(appId, selector, treatment, |
139 | bgpdConnectPoint, bgpdPeerConnectPoint); | 141 | bgpdConnectPoint, bgpdPeerConnectPoint); |
140 | intentService.submit(intentMatchDstTcpPort); | 142 | intentService.submit(intentMatchDstTcpPort); |
141 | log.debug("Submitted BGP path intent matching dst TCP port 179 " | 143 | log.debug("Submitted BGP path intent matching dst TCP port 179 " |
... | @@ -152,8 +154,8 @@ public class PeerConnectivityManager { | ... | @@ -152,8 +154,8 @@ public class PeerConnectivityManager { |
152 | .matchTcpSrc(BGP_PORT) | 154 | .matchTcpSrc(BGP_PORT) |
153 | .build(); | 155 | .build(); |
154 | 156 | ||
155 | - PointToPointIntent intentMatchSrcTcpPort = new PointToPointIntent( | 157 | + PointToPointIntent intentMatchSrcTcpPort = |
156 | - nextIntentId(), selector, treatment, | 158 | + new PointToPointIntent(appId, selector, treatment, |
157 | bgpdConnectPoint, bgpdPeerConnectPoint); | 159 | bgpdConnectPoint, bgpdPeerConnectPoint); |
158 | intentService.submit(intentMatchSrcTcpPort); | 160 | intentService.submit(intentMatchSrcTcpPort); |
159 | log.debug("Submitted BGP path intent matching src TCP port 179" | 161 | log.debug("Submitted BGP path intent matching src TCP port 179" |
... | @@ -170,8 +172,8 @@ public class PeerConnectivityManager { | ... | @@ -170,8 +172,8 @@ public class PeerConnectivityManager { |
170 | .matchTcpDst(BGP_PORT) | 172 | .matchTcpDst(BGP_PORT) |
171 | .build(); | 173 | .build(); |
172 | 174 | ||
173 | - PointToPointIntent reversedIntentMatchDstTcpPort = new PointToPointIntent( | 175 | + PointToPointIntent reversedIntentMatchDstTcpPort = |
174 | - nextIntentId(), selector, treatment, | 176 | + new PointToPointIntent(appId, selector, treatment, |
175 | bgpdPeerConnectPoint, bgpdConnectPoint); | 177 | bgpdPeerConnectPoint, bgpdConnectPoint); |
176 | intentService.submit(reversedIntentMatchDstTcpPort); | 178 | intentService.submit(reversedIntentMatchDstTcpPort); |
177 | log.debug("Submitted BGP path intent matching dst TCP port 179" | 179 | log.debug("Submitted BGP path intent matching dst TCP port 179" |
... | @@ -188,8 +190,8 @@ public class PeerConnectivityManager { | ... | @@ -188,8 +190,8 @@ public class PeerConnectivityManager { |
188 | .matchTcpSrc(BGP_PORT) | 190 | .matchTcpSrc(BGP_PORT) |
189 | .build(); | 191 | .build(); |
190 | 192 | ||
191 | - PointToPointIntent reversedIntentMatchSrcTcpPort = new PointToPointIntent( | 193 | + PointToPointIntent reversedIntentMatchSrcTcpPort = |
192 | - nextIntentId(), selector, treatment, | 194 | + new PointToPointIntent(appId, selector, treatment, |
193 | bgpdPeerConnectPoint, bgpdConnectPoint); | 195 | bgpdPeerConnectPoint, bgpdConnectPoint); |
194 | intentService.submit(reversedIntentMatchSrcTcpPort); | 196 | intentService.submit(reversedIntentMatchSrcTcpPort); |
195 | log.debug("Submitted BGP path intent matching src TCP port 179" | 197 | log.debug("Submitted BGP path intent matching src TCP port 179" |
... | @@ -258,8 +260,8 @@ public class PeerConnectivityManager { | ... | @@ -258,8 +260,8 @@ public class PeerConnectivityManager { |
258 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() | 260 | TrafficTreatment treatment = DefaultTrafficTreatment.builder() |
259 | .build(); | 261 | .build(); |
260 | 262 | ||
261 | - PointToPointIntent intent = new PointToPointIntent( | 263 | + PointToPointIntent intent = |
262 | - nextIntentId(), selector, treatment, | 264 | + new PointToPointIntent(appId, selector, treatment, |
263 | bgpdConnectPoint, bgpdPeerConnectPoint); | 265 | bgpdConnectPoint, bgpdPeerConnectPoint); |
264 | intentService.submit(intent); | 266 | intentService.submit(intent); |
265 | log.debug("Submitted ICMP path intent from BGPd {} to peer {} :" | 267 | log.debug("Submitted ICMP path intent from BGPd {} to peer {} :" |
... | @@ -273,8 +275,8 @@ public class PeerConnectivityManager { | ... | @@ -273,8 +275,8 @@ public class PeerConnectivityManager { |
273 | .matchIPDst(IpPrefix.valueOf(bgpdAddress.toInt(), IPV4_BIT_LENGTH)) | 275 | .matchIPDst(IpPrefix.valueOf(bgpdAddress.toInt(), IPV4_BIT_LENGTH)) |
274 | .build(); | 276 | .build(); |
275 | 277 | ||
276 | - PointToPointIntent reversedIntent = new PointToPointIntent( | 278 | + PointToPointIntent reversedIntent = |
277 | - nextIntentId(), selector, treatment, | 279 | + new PointToPointIntent(appId, selector, treatment, |
278 | bgpdPeerConnectPoint, bgpdConnectPoint); | 280 | bgpdPeerConnectPoint, bgpdConnectPoint); |
279 | intentService.submit(reversedIntent); | 281 | intentService.submit(reversedIntent); |
280 | log.debug("Submitted ICMP path intent from BGP peer {} to BGPd" | 282 | log.debug("Submitted ICMP path intent from BGP peer {} to BGPd" |
... | @@ -284,7 +286,4 @@ public class PeerConnectivityManager { | ... | @@ -284,7 +286,4 @@ public class PeerConnectivityManager { |
284 | } | 286 | } |
285 | } | 287 | } |
286 | 288 | ||
287 | - private IntentId nextIntentId() { | ||
288 | - return new IntentId(intentId++); | ||
289 | - } | ||
290 | } | 289 | } | ... | ... |
1 | package org.onlab.onos.sdnip; | 1 | package org.onlab.onos.sdnip; |
2 | 2 | ||
3 | -import java.util.Collection; | 3 | +import com.google.common.base.Objects; |
4 | -import java.util.HashMap; | 4 | +import com.google.common.collect.HashMultimap; |
5 | -import java.util.HashSet; | 5 | +import com.google.common.collect.Multimaps; |
6 | -import java.util.Iterator; | 6 | +import com.google.common.collect.SetMultimap; |
7 | -import java.util.LinkedList; | 7 | +import com.google.common.util.concurrent.ThreadFactoryBuilder; |
8 | -import java.util.List; | 8 | +import com.googlecode.concurrenttrees.common.KeyValuePair; |
9 | -import java.util.Map; | 9 | +import com.googlecode.concurrenttrees.radix.node.concrete.DefaultByteArrayNodeFactory; |
10 | -import java.util.Set; | 10 | +import com.googlecode.concurrenttrees.radixinverted.ConcurrentInvertedRadixTree; |
11 | -import java.util.concurrent.BlockingQueue; | 11 | +import com.googlecode.concurrenttrees.radixinverted.InvertedRadixTree; |
12 | -import java.util.concurrent.ConcurrentHashMap; | ||
13 | -import java.util.concurrent.ExecutorService; | ||
14 | -import java.util.concurrent.Executors; | ||
15 | -import java.util.concurrent.LinkedBlockingQueue; | ||
16 | -import java.util.concurrent.Semaphore; | ||
17 | - | ||
18 | import org.apache.commons.lang3.tuple.Pair; | 12 | import org.apache.commons.lang3.tuple.Pair; |
13 | +import org.onlab.onos.ApplicationId; | ||
19 | import org.onlab.onos.net.ConnectPoint; | 14 | import org.onlab.onos.net.ConnectPoint; |
20 | import org.onlab.onos.net.Host; | 15 | import org.onlab.onos.net.Host; |
21 | import org.onlab.onos.net.flow.DefaultTrafficSelector; | 16 | import org.onlab.onos.net.flow.DefaultTrafficSelector; |
... | @@ -29,7 +24,6 @@ import org.onlab.onos.net.host.HostEvent; | ... | @@ -29,7 +24,6 @@ import org.onlab.onos.net.host.HostEvent; |
29 | import org.onlab.onos.net.host.HostListener; | 24 | import org.onlab.onos.net.host.HostListener; |
30 | import org.onlab.onos.net.host.HostService; | 25 | import org.onlab.onos.net.host.HostService; |
31 | import org.onlab.onos.net.intent.Intent; | 26 | import org.onlab.onos.net.intent.Intent; |
32 | -import org.onlab.onos.net.intent.IntentId; | ||
33 | import org.onlab.onos.net.intent.IntentService; | 27 | import org.onlab.onos.net.intent.IntentService; |
34 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; | 28 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; |
35 | import org.onlab.onos.sdnip.config.BgpPeer; | 29 | import org.onlab.onos.sdnip.config.BgpPeer; |
... | @@ -42,20 +36,25 @@ import org.onlab.packet.MacAddress; | ... | @@ -42,20 +36,25 @@ import org.onlab.packet.MacAddress; |
42 | import org.slf4j.Logger; | 36 | import org.slf4j.Logger; |
43 | import org.slf4j.LoggerFactory; | 37 | import org.slf4j.LoggerFactory; |
44 | 38 | ||
45 | -import com.google.common.base.Objects; | 39 | +import java.util.Collection; |
46 | -import com.google.common.collect.HashMultimap; | 40 | +import java.util.HashMap; |
47 | -import com.google.common.collect.Multimaps; | 41 | +import java.util.HashSet; |
48 | -import com.google.common.collect.SetMultimap; | 42 | +import java.util.Iterator; |
49 | -import com.google.common.util.concurrent.ThreadFactoryBuilder; | 43 | +import java.util.LinkedList; |
50 | -import com.googlecode.concurrenttrees.common.KeyValuePair; | 44 | +import java.util.List; |
51 | -import com.googlecode.concurrenttrees.radix.node.concrete.DefaultByteArrayNodeFactory; | 45 | +import java.util.Map; |
52 | -import com.googlecode.concurrenttrees.radixinverted.ConcurrentInvertedRadixTree; | 46 | +import java.util.Set; |
53 | -import com.googlecode.concurrenttrees.radixinverted.InvertedRadixTree; | 47 | +import java.util.concurrent.BlockingQueue; |
48 | +import java.util.concurrent.ConcurrentHashMap; | ||
49 | +import java.util.concurrent.ExecutorService; | ||
50 | +import java.util.concurrent.Executors; | ||
51 | +import java.util.concurrent.LinkedBlockingQueue; | ||
52 | +import java.util.concurrent.Semaphore; | ||
54 | 53 | ||
55 | /** | 54 | /** |
56 | * This class processes BGP route update, translates each update into a intent | 55 | * This class processes BGP route update, translates each update into a intent |
57 | * and submits the intent. | 56 | * and submits the intent. |
58 | - * | 57 | + * <p/> |
59 | * TODO: Make it thread-safe. | 58 | * TODO: Make it thread-safe. |
60 | */ | 59 | */ |
61 | public class Router implements RouteListener { | 60 | public class Router implements RouteListener { |
... | @@ -82,8 +81,7 @@ public class Router implements RouteListener { | ... | @@ -82,8 +81,7 @@ public class Router implements RouteListener { |
82 | private ExecutorService bgpUpdatesExecutor; | 81 | private ExecutorService bgpUpdatesExecutor; |
83 | private ExecutorService bgpIntentsSynchronizerExecutor; | 82 | private ExecutorService bgpIntentsSynchronizerExecutor; |
84 | 83 | ||
85 | - // TODO temporary | 84 | + private final ApplicationId appId; |
86 | - private int intentId = Integer.MAX_VALUE / 2; | ||
87 | 85 | ||
88 | // | 86 | // |
89 | // State to deal with SDN-IP Leader election and pushing Intents | 87 | // State to deal with SDN-IP Leader election and pushing Intents |
... | @@ -104,9 +102,10 @@ public class Router implements RouteListener { | ... | @@ -104,9 +102,10 @@ public class Router implements RouteListener { |
104 | * @param configInfoService the configuration service | 102 | * @param configInfoService the configuration service |
105 | * @param interfaceService the interface service | 103 | * @param interfaceService the interface service |
106 | */ | 104 | */ |
107 | - public Router(IntentService intentService, HostService hostService, | 105 | + public Router(ApplicationId appId, IntentService intentService, |
108 | - SdnIpConfigService configInfoService, InterfaceService interfaceService) { | 106 | + HostService hostService, SdnIpConfigService configInfoService, |
109 | - | 107 | + InterfaceService interfaceService) { |
108 | + this.appId = appId; | ||
110 | this.intentService = intentService; | 109 | this.intentService = intentService; |
111 | this.hostService = hostService; | 110 | this.hostService = hostService; |
112 | this.configInfoService = configInfoService; | 111 | this.configInfoService = configInfoService; |
... | @@ -609,8 +608,8 @@ public class Router implements RouteListener { | ... | @@ -609,8 +608,8 @@ public class Router implements RouteListener { |
609 | .build(); | 608 | .build(); |
610 | 609 | ||
611 | MultiPointToSinglePointIntent intent = | 610 | MultiPointToSinglePointIntent intent = |
612 | - new MultiPointToSinglePointIntent(nextIntentId(), | 611 | + new MultiPointToSinglePointIntent(appId, selector, treatment, |
613 | - selector, treatment, ingressPorts, egressPort); | 612 | + ingressPorts, egressPort); |
614 | 613 | ||
615 | if (isElectedLeader && isActivatedLeader) { | 614 | if (isElectedLeader && isActivatedLeader) { |
616 | log.debug("Intent installation: adding Intent for prefix: {}", | 615 | log.debug("Intent installation: adding Intent for prefix: {}", |
... | @@ -745,15 +744,6 @@ public class Router implements RouteListener { | ... | @@ -745,15 +744,6 @@ public class Router implements RouteListener { |
745 | } | 744 | } |
746 | 745 | ||
747 | /** | 746 | /** |
748 | - * Generates a new unique intent ID. | ||
749 | - * | ||
750 | - * @return the new intent ID. | ||
751 | - */ | ||
752 | - private IntentId nextIntentId() { | ||
753 | - return new IntentId(intentId++); | ||
754 | - } | ||
755 | - | ||
756 | - /** | ||
757 | * Listener for host events. | 747 | * Listener for host events. |
758 | */ | 748 | */ |
759 | class InternalHostListener implements HostListener { | 749 | class InternalHostListener implements HostListener { | ... | ... |
... | @@ -10,6 +10,8 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -10,6 +10,8 @@ import org.apache.felix.scr.annotations.Deactivate; |
10 | import org.apache.felix.scr.annotations.Reference; | 10 | import org.apache.felix.scr.annotations.Reference; |
11 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 11 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
12 | import org.apache.felix.scr.annotations.Service; | 12 | import org.apache.felix.scr.annotations.Service; |
13 | +import org.onlab.onos.ApplicationId; | ||
14 | +import org.onlab.onos.CoreService; | ||
13 | import org.onlab.onos.net.host.HostService; | 15 | import org.onlab.onos.net.host.HostService; |
14 | import org.onlab.onos.net.intent.IntentService; | 16 | import org.onlab.onos.net.intent.IntentService; |
15 | import org.onlab.onos.sdnip.bgp.BgpRouteEntry; | 17 | import org.onlab.onos.sdnip.bgp.BgpRouteEntry; |
... | @@ -24,9 +26,14 @@ import org.slf4j.Logger; | ... | @@ -24,9 +26,14 @@ import org.slf4j.Logger; |
24 | @Service | 26 | @Service |
25 | public class SdnIp implements SdnIpService { | 27 | public class SdnIp implements SdnIpService { |
26 | 28 | ||
29 | + private static final String SDN_ID_APP = "org.onlab.onos.sdnip"; | ||
30 | + | ||
27 | private final Logger log = getLogger(getClass()); | 31 | private final Logger log = getLogger(getClass()); |
28 | 32 | ||
29 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 33 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
34 | + protected CoreService coreService; | ||
35 | + | ||
36 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
30 | protected IntentService intentService; | 37 | protected IntentService intentService; |
31 | 38 | ||
32 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 39 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -46,10 +53,11 @@ public class SdnIp implements SdnIpService { | ... | @@ -46,10 +53,11 @@ public class SdnIp implements SdnIpService { |
46 | 53 | ||
47 | InterfaceService interfaceService = new HostToInterfaceAdaptor(hostService); | 54 | InterfaceService interfaceService = new HostToInterfaceAdaptor(hostService); |
48 | 55 | ||
49 | - peerConnectivity = new PeerConnectivityManager(config, interfaceService, intentService); | 56 | + ApplicationId appId = coreService.registerApplication(SDN_ID_APP); |
57 | + peerConnectivity = new PeerConnectivityManager(appId, config, interfaceService, intentService); | ||
50 | peerConnectivity.start(); | 58 | peerConnectivity.start(); |
51 | 59 | ||
52 | - router = new Router(intentService, hostService, config, interfaceService); | 60 | + router = new Router(appId, intentService, hostService, config, interfaceService); |
53 | router.start(); | 61 | router.start(); |
54 | 62 | ||
55 | bgpSessionManager = new BgpSessionManager(router); | 63 | bgpSessionManager = new BgpSessionManager(router); | ... | ... |
1 | package org.onlab.onos.sdnip; | 1 | package org.onlab.onos.sdnip; |
2 | 2 | ||
3 | -import static org.easymock.EasyMock.createMock; | 3 | +import com.google.common.collect.Sets; |
4 | -import static org.easymock.EasyMock.expect; | ||
5 | -import static org.easymock.EasyMock.replay; | ||
6 | -import static org.easymock.EasyMock.reportMatcher; | ||
7 | -import static org.easymock.EasyMock.reset; | ||
8 | -import static org.easymock.EasyMock.verify; | ||
9 | - | ||
10 | -import java.util.ArrayList; | ||
11 | -import java.util.Collections; | ||
12 | -import java.util.HashMap; | ||
13 | -import java.util.LinkedList; | ||
14 | -import java.util.List; | ||
15 | -import java.util.Map; | ||
16 | - | ||
17 | import org.easymock.IArgumentMatcher; | 4 | import org.easymock.IArgumentMatcher; |
18 | import org.junit.Before; | 5 | import org.junit.Before; |
19 | import org.junit.Ignore; | 6 | import org.junit.Ignore; |
20 | import org.junit.Test; | 7 | import org.junit.Test; |
8 | +import org.onlab.onos.ApplicationId; | ||
21 | import org.onlab.onos.net.ConnectPoint; | 9 | import org.onlab.onos.net.ConnectPoint; |
22 | import org.onlab.onos.net.DeviceId; | 10 | import org.onlab.onos.net.DeviceId; |
23 | import org.onlab.onos.net.PortNumber; | 11 | import org.onlab.onos.net.PortNumber; |
... | @@ -25,7 +13,6 @@ import org.onlab.onos.net.flow.DefaultTrafficSelector; | ... | @@ -25,7 +13,6 @@ import org.onlab.onos.net.flow.DefaultTrafficSelector; |
25 | import org.onlab.onos.net.flow.DefaultTrafficTreatment; | 13 | import org.onlab.onos.net.flow.DefaultTrafficTreatment; |
26 | import org.onlab.onos.net.flow.TrafficSelector; | 14 | import org.onlab.onos.net.flow.TrafficSelector; |
27 | import org.onlab.onos.net.flow.TrafficTreatment; | 15 | import org.onlab.onos.net.flow.TrafficTreatment; |
28 | -import org.onlab.onos.net.intent.IntentId; | ||
29 | import org.onlab.onos.net.intent.IntentService; | 16 | import org.onlab.onos.net.intent.IntentService; |
30 | import org.onlab.onos.net.intent.PointToPointIntent; | 17 | import org.onlab.onos.net.intent.PointToPointIntent; |
31 | import org.onlab.onos.sdnip.bgp.BgpConstants; | 18 | import org.onlab.onos.sdnip.bgp.BgpConstants; |
... | @@ -40,13 +27,32 @@ import org.onlab.packet.IpAddress; | ... | @@ -40,13 +27,32 @@ import org.onlab.packet.IpAddress; |
40 | import org.onlab.packet.IpPrefix; | 27 | import org.onlab.packet.IpPrefix; |
41 | import org.onlab.packet.MacAddress; | 28 | import org.onlab.packet.MacAddress; |
42 | 29 | ||
43 | -import com.google.common.collect.Sets; | 30 | +import java.util.ArrayList; |
31 | +import java.util.Collections; | ||
32 | +import java.util.HashMap; | ||
33 | +import java.util.LinkedList; | ||
34 | +import java.util.List; | ||
35 | +import java.util.Map; | ||
36 | + | ||
37 | +import static org.easymock.EasyMock.*; | ||
44 | 38 | ||
45 | /** | 39 | /** |
46 | * Unit tests for PeerConnectivityManager interface. | 40 | * Unit tests for PeerConnectivityManager interface. |
47 | */ | 41 | */ |
48 | public class PeerConnectivityManagerTest { | 42 | public class PeerConnectivityManagerTest { |
49 | 43 | ||
44 | + private static final ApplicationId APPID = new ApplicationId() { | ||
45 | + @Override | ||
46 | + public short id() { | ||
47 | + return 0; | ||
48 | + } | ||
49 | + | ||
50 | + @Override | ||
51 | + public String name() { | ||
52 | + return "foo"; | ||
53 | + } | ||
54 | + }; | ||
55 | + | ||
50 | private PeerConnectivityManager peerConnectivityManager; | 56 | private PeerConnectivityManager peerConnectivityManager; |
51 | private IntentService intentService; | 57 | private IntentService intentService; |
52 | private SdnIpConfigService configInfoService; | 58 | private SdnIpConfigService configInfoService; |
... | @@ -81,9 +87,6 @@ public class PeerConnectivityManagerTest { | ... | @@ -81,9 +87,6 @@ public class PeerConnectivityManagerTest { |
81 | private final ConnectPoint s2Eth1 = | 87 | private final ConnectPoint s2Eth1 = |
82 | new ConnectPoint(deviceId2, PortNumber.portNumber(1)); | 88 | new ConnectPoint(deviceId2, PortNumber.portNumber(1)); |
83 | 89 | ||
84 | - // We don't compare the intent ID so all expected intents can use the same ID | ||
85 | - private final IntentId testIntentId = new IntentId(0); | ||
86 | - | ||
87 | private final TrafficTreatment noTreatment = | 90 | private final TrafficTreatment noTreatment = |
88 | DefaultTrafficTreatment.builder().build(); | 91 | DefaultTrafficTreatment.builder().build(); |
89 | 92 | ||
... | @@ -257,7 +260,7 @@ public class PeerConnectivityManagerTest { | ... | @@ -257,7 +260,7 @@ public class PeerConnectivityManagerTest { |
257 | } | 260 | } |
258 | 261 | ||
259 | PointToPointIntent intent = new PointToPointIntent( | 262 | PointToPointIntent intent = new PointToPointIntent( |
260 | - testIntentId, builder.build(), noTreatment, | 263 | + APPID, builder.build(), noTreatment, |
261 | srcConnectPoint, dstConnectPoint); | 264 | srcConnectPoint, dstConnectPoint); |
262 | 265 | ||
263 | intentList.add(intent); | 266 | intentList.add(intent); |
... | @@ -429,7 +432,7 @@ public class PeerConnectivityManagerTest { | ... | @@ -429,7 +432,7 @@ public class PeerConnectivityManagerTest { |
429 | .build(); | 432 | .build(); |
430 | 433 | ||
431 | PointToPointIntent intent = new PointToPointIntent( | 434 | PointToPointIntent intent = new PointToPointIntent( |
432 | - testIntentId, selector, noTreatment, | 435 | + APPID, selector, noTreatment, |
433 | srcConnectPoint, dstConnectPoint); | 436 | srcConnectPoint, dstConnectPoint); |
434 | 437 | ||
435 | intentList.add(intent); | 438 | intentList.add(intent); |
... | @@ -511,7 +514,7 @@ public class PeerConnectivityManagerTest { | ... | @@ -511,7 +514,7 @@ public class PeerConnectivityManagerTest { |
511 | intentService = createMock(IntentService.class); | 514 | intentService = createMock(IntentService.class); |
512 | replay(intentService); | 515 | replay(intentService); |
513 | 516 | ||
514 | - peerConnectivityManager = new PeerConnectivityManager(configInfoService, | 517 | + peerConnectivityManager = new PeerConnectivityManager(APPID, configInfoService, |
515 | interfaceService, intentService); | 518 | interfaceService, intentService); |
516 | } | 519 | } |
517 | 520 | ||
... | @@ -557,7 +560,7 @@ public class PeerConnectivityManagerTest { | ... | @@ -557,7 +560,7 @@ public class PeerConnectivityManagerTest { |
557 | providedIntentString = providedIntent.toString(); | 560 | providedIntentString = providedIntent.toString(); |
558 | 561 | ||
559 | PointToPointIntent matchIntent = | 562 | PointToPointIntent matchIntent = |
560 | - new PointToPointIntent(providedIntent.id(), | 563 | + new PointToPointIntent(providedIntent.appId(), |
561 | intent.selector(), intent.treatment(), | 564 | intent.selector(), intent.treatment(), |
562 | intent.ingressPoint(), intent.egressPoint()); | 565 | intent.ingressPoint(), intent.egressPoint()); |
563 | 566 | ... | ... |
... | @@ -2,6 +2,8 @@ package org.onlab.onos.cli; | ... | @@ -2,6 +2,8 @@ package org.onlab.onos.cli; |
2 | 2 | ||
3 | import org.apache.karaf.shell.commands.Option; | 3 | import org.apache.karaf.shell.commands.Option; |
4 | import org.apache.karaf.shell.console.OsgiCommandSupport; | 4 | import org.apache.karaf.shell.console.OsgiCommandSupport; |
5 | +import org.onlab.onos.ApplicationId; | ||
6 | +import org.onlab.onos.CoreService; | ||
5 | import org.onlab.osgi.DefaultServiceDirectory; | 7 | import org.onlab.osgi.DefaultServiceDirectory; |
6 | import org.onlab.osgi.ServiceNotFoundException; | 8 | import org.onlab.osgi.ServiceNotFoundException; |
7 | 9 | ||
... | @@ -27,6 +29,15 @@ public abstract class AbstractShellCommand extends OsgiCommandSupport { | ... | @@ -27,6 +29,15 @@ public abstract class AbstractShellCommand extends OsgiCommandSupport { |
27 | } | 29 | } |
28 | 30 | ||
29 | /** | 31 | /** |
32 | + * Returns application ID for the CLI. | ||
33 | + * | ||
34 | + * @return command-line application identifier | ||
35 | + */ | ||
36 | + protected ApplicationId appId() { | ||
37 | + return get(CoreService.class).registerApplication("org.onlab.onos.cli"); | ||
38 | + } | ||
39 | + | ||
40 | + /** | ||
30 | * Prints the arguments using the specified format. | 41 | * Prints the arguments using the specified format. |
31 | * | 42 | * |
32 | * @param format format string; see {@link String#format} | 43 | * @param format format string; see {@link String#format} | ... | ... |
... | @@ -9,7 +9,6 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; | ... | @@ -9,7 +9,6 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; |
9 | import org.onlab.onos.net.flow.TrafficSelector; | 9 | import org.onlab.onos.net.flow.TrafficSelector; |
10 | import org.onlab.onos.net.flow.TrafficTreatment; | 10 | import org.onlab.onos.net.flow.TrafficTreatment; |
11 | import org.onlab.onos.net.intent.HostToHostIntent; | 11 | import org.onlab.onos.net.intent.HostToHostIntent; |
12 | -import org.onlab.onos.net.intent.IntentId; | ||
13 | import org.onlab.onos.net.intent.IntentService; | 12 | import org.onlab.onos.net.intent.IntentService; |
14 | 13 | ||
15 | /** | 14 | /** |
... | @@ -27,8 +26,6 @@ public class AddHostToHostIntentCommand extends AbstractShellCommand { | ... | @@ -27,8 +26,6 @@ public class AddHostToHostIntentCommand extends AbstractShellCommand { |
27 | required = true, multiValued = false) | 26 | required = true, multiValued = false) |
28 | String two = null; | 27 | String two = null; |
29 | 28 | ||
30 | - private static long id = 0x7870001; | ||
31 | - | ||
32 | @Override | 29 | @Override |
33 | protected void execute() { | 30 | protected void execute() { |
34 | IntentService service = get(IntentService.class); | 31 | IntentService service = get(IntentService.class); |
... | @@ -39,8 +36,7 @@ public class AddHostToHostIntentCommand extends AbstractShellCommand { | ... | @@ -39,8 +36,7 @@ public class AddHostToHostIntentCommand extends AbstractShellCommand { |
39 | TrafficSelector selector = DefaultTrafficSelector.builder().build(); | 36 | TrafficSelector selector = DefaultTrafficSelector.builder().build(); |
40 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); | 37 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); |
41 | 38 | ||
42 | - HostToHostIntent intent = | 39 | + HostToHostIntent intent = new HostToHostIntent(appId(), oneId, twoId, |
43 | - new HostToHostIntent(new IntentId(id++), oneId, twoId, | ||
44 | selector, treatment); | 40 | selector, treatment); |
45 | service.submit(intent); | 41 | service.submit(intent); |
46 | } | 42 | } | ... | ... |
1 | package org.onlab.onos.cli.net; | 1 | package org.onlab.onos.cli.net; |
2 | 2 | ||
3 | -import java.util.HashSet; | ||
4 | -import java.util.Set; | ||
5 | - | ||
6 | import org.apache.karaf.shell.commands.Argument; | 3 | import org.apache.karaf.shell.commands.Argument; |
7 | import org.apache.karaf.shell.commands.Command; | 4 | import org.apache.karaf.shell.commands.Command; |
8 | import org.onlab.onos.cli.AbstractShellCommand; | 5 | import org.onlab.onos.cli.AbstractShellCommand; |
... | @@ -14,11 +11,16 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; | ... | @@ -14,11 +11,16 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; |
14 | import org.onlab.onos.net.flow.TrafficSelector; | 11 | import org.onlab.onos.net.flow.TrafficSelector; |
15 | import org.onlab.onos.net.flow.TrafficTreatment; | 12 | import org.onlab.onos.net.flow.TrafficTreatment; |
16 | import org.onlab.onos.net.intent.Intent; | 13 | import org.onlab.onos.net.intent.Intent; |
17 | -import org.onlab.onos.net.intent.IntentId; | ||
18 | import org.onlab.onos.net.intent.IntentService; | 14 | import org.onlab.onos.net.intent.IntentService; |
19 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; | 15 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; |
20 | import org.onlab.packet.Ethernet; | 16 | import org.onlab.packet.Ethernet; |
21 | 17 | ||
18 | +import java.util.HashSet; | ||
19 | +import java.util.Set; | ||
20 | + | ||
21 | +import static org.onlab.onos.net.DeviceId.deviceId; | ||
22 | +import static org.onlab.onos.net.PortNumber.portNumber; | ||
23 | + | ||
22 | /** | 24 | /** |
23 | * Installs point-to-point connectivity intents. | 25 | * Installs point-to-point connectivity intents. |
24 | */ | 26 | */ |
... | @@ -31,8 +33,6 @@ public class AddMultiPointToSinglePointIntentCommand extends AbstractShellComman | ... | @@ -31,8 +33,6 @@ public class AddMultiPointToSinglePointIntentCommand extends AbstractShellComman |
31 | required = true, multiValued = true) | 33 | required = true, multiValued = true) |
32 | String[] deviceStrings = null; | 34 | String[] deviceStrings = null; |
33 | 35 | ||
34 | - private static long id = 0x7070001; | ||
35 | - | ||
36 | @Override | 36 | @Override |
37 | protected void execute() { | 37 | protected void execute() { |
38 | IntentService service = get(IntentService.class); | 38 | IntentService service = get(IntentService.class); |
... | @@ -42,33 +42,26 @@ public class AddMultiPointToSinglePointIntentCommand extends AbstractShellComman | ... | @@ -42,33 +42,26 @@ public class AddMultiPointToSinglePointIntentCommand extends AbstractShellComman |
42 | } | 42 | } |
43 | 43 | ||
44 | String egressDeviceString = deviceStrings[deviceStrings.length - 1]; | 44 | String egressDeviceString = deviceStrings[deviceStrings.length - 1]; |
45 | - DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString)); | 45 | + DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString)); |
46 | - PortNumber egressPortNumber = | 46 | + PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString)); |
47 | - PortNumber.portNumber(getPortNumber(egressDeviceString)); | ||
48 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); | 47 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); |
49 | Set<ConnectPoint> ingressPoints = new HashSet<>(); | 48 | Set<ConnectPoint> ingressPoints = new HashSet<>(); |
50 | 49 | ||
51 | for (int index = 0; index < deviceStrings.length - 1; index++) { | 50 | for (int index = 0; index < deviceStrings.length - 1; index++) { |
52 | String ingressDeviceString = deviceStrings[index]; | 51 | String ingressDeviceString = deviceStrings[index]; |
53 | - DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString)); | 52 | + DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString)); |
54 | - PortNumber ingressPortNumber = | 53 | + PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString)); |
55 | - PortNumber.portNumber(getPortNumber(ingressDeviceString)); | ||
56 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); | 54 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); |
57 | ingressPoints.add(ingress); | 55 | ingressPoints.add(ingress); |
58 | } | 56 | } |
59 | 57 | ||
60 | - | ||
61 | TrafficSelector selector = DefaultTrafficSelector.builder() | 58 | TrafficSelector selector = DefaultTrafficSelector.builder() |
62 | .matchEthType(Ethernet.TYPE_IPV4) | 59 | .matchEthType(Ethernet.TYPE_IPV4) |
63 | .build(); | 60 | .build(); |
64 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); | 61 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); |
65 | 62 | ||
66 | - Intent intent = | 63 | + Intent intent = new MultiPointToSinglePointIntent(appId(), selector, treatment, |
67 | - new MultiPointToSinglePointIntent(new IntentId(id++), | 64 | + ingressPoints, egress); |
68 | - selector, | ||
69 | - treatment, | ||
70 | - ingressPoints, | ||
71 | - egress); | ||
72 | service.submit(intent); | 65 | service.submit(intent); |
73 | } | 66 | } |
74 | 67 | ... | ... |
... | @@ -11,11 +11,13 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; | ... | @@ -11,11 +11,13 @@ import org.onlab.onos.net.flow.DefaultTrafficTreatment; |
11 | import org.onlab.onos.net.flow.TrafficSelector; | 11 | import org.onlab.onos.net.flow.TrafficSelector; |
12 | import org.onlab.onos.net.flow.TrafficTreatment; | 12 | import org.onlab.onos.net.flow.TrafficTreatment; |
13 | import org.onlab.onos.net.intent.Intent; | 13 | import org.onlab.onos.net.intent.Intent; |
14 | -import org.onlab.onos.net.intent.IntentId; | ||
15 | import org.onlab.onos.net.intent.IntentService; | 14 | import org.onlab.onos.net.intent.IntentService; |
16 | import org.onlab.onos.net.intent.PointToPointIntent; | 15 | import org.onlab.onos.net.intent.PointToPointIntent; |
17 | import org.onlab.packet.Ethernet; | 16 | import org.onlab.packet.Ethernet; |
18 | 17 | ||
18 | +import static org.onlab.onos.net.DeviceId.deviceId; | ||
19 | +import static org.onlab.onos.net.PortNumber.portNumber; | ||
20 | + | ||
19 | /** | 21 | /** |
20 | * Installs point-to-point connectivity intents. | 22 | * Installs point-to-point connectivity intents. |
21 | */ | 23 | */ |
... | @@ -33,20 +35,16 @@ public class AddPointToPointIntentCommand extends AbstractShellCommand { | ... | @@ -33,20 +35,16 @@ public class AddPointToPointIntentCommand extends AbstractShellCommand { |
33 | required = true, multiValued = false) | 35 | required = true, multiValued = false) |
34 | String egressDeviceString = null; | 36 | String egressDeviceString = null; |
35 | 37 | ||
36 | - private static long id = 0x7470001; | ||
37 | - | ||
38 | @Override | 38 | @Override |
39 | protected void execute() { | 39 | protected void execute() { |
40 | IntentService service = get(IntentService.class); | 40 | IntentService service = get(IntentService.class); |
41 | 41 | ||
42 | - DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString)); | 42 | + DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString)); |
43 | - PortNumber ingressPortNumber = | 43 | + PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString)); |
44 | - PortNumber.portNumber(getPortNumber(ingressDeviceString)); | ||
45 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); | 44 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); |
46 | 45 | ||
47 | - DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString)); | 46 | + DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString)); |
48 | - PortNumber egressPortNumber = | 47 | + PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString)); |
49 | - PortNumber.portNumber(getPortNumber(egressDeviceString)); | ||
50 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); | 48 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); |
51 | 49 | ||
52 | TrafficSelector selector = DefaultTrafficSelector.builder() | 50 | TrafficSelector selector = DefaultTrafficSelector.builder() |
... | @@ -54,12 +52,8 @@ public class AddPointToPointIntentCommand extends AbstractShellCommand { | ... | @@ -54,12 +52,8 @@ public class AddPointToPointIntentCommand extends AbstractShellCommand { |
54 | .build(); | 52 | .build(); |
55 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); | 53 | TrafficTreatment treatment = DefaultTrafficTreatment.builder().build(); |
56 | 54 | ||
57 | - Intent intent = | 55 | + Intent intent = new PointToPointIntent(appId(), selector, treatment, |
58 | - new PointToPointIntent(new IntentId(id++), | 56 | + ingress, egress); |
59 | - selector, | ||
60 | - treatment, | ||
61 | - ingress, | ||
62 | - egress); | ||
63 | service.submit(intent); | 57 | service.submit(intent); |
64 | } | 58 | } |
65 | 59 | ... | ... |
1 | package org.onlab.onos.cli.net; | 1 | package org.onlab.onos.cli.net; |
2 | 2 | ||
3 | -import java.util.concurrent.CountDownLatch; | ||
4 | -import java.util.concurrent.TimeUnit; | ||
5 | - | ||
6 | import org.apache.karaf.shell.commands.Argument; | 3 | import org.apache.karaf.shell.commands.Argument; |
7 | import org.apache.karaf.shell.commands.Command; | 4 | import org.apache.karaf.shell.commands.Command; |
8 | import org.onlab.onos.cli.AbstractShellCommand; | 5 | import org.onlab.onos.cli.AbstractShellCommand; |
... | @@ -16,13 +13,18 @@ import org.onlab.onos.net.flow.TrafficTreatment; | ... | @@ -16,13 +13,18 @@ import org.onlab.onos.net.flow.TrafficTreatment; |
16 | import org.onlab.onos.net.intent.Intent; | 13 | import org.onlab.onos.net.intent.Intent; |
17 | import org.onlab.onos.net.intent.IntentEvent; | 14 | import org.onlab.onos.net.intent.IntentEvent; |
18 | import org.onlab.onos.net.intent.IntentEvent.Type; | 15 | import org.onlab.onos.net.intent.IntentEvent.Type; |
19 | -import org.onlab.onos.net.intent.IntentId; | ||
20 | import org.onlab.onos.net.intent.IntentListener; | 16 | import org.onlab.onos.net.intent.IntentListener; |
21 | import org.onlab.onos.net.intent.IntentService; | 17 | import org.onlab.onos.net.intent.IntentService; |
22 | import org.onlab.onos.net.intent.PointToPointIntent; | 18 | import org.onlab.onos.net.intent.PointToPointIntent; |
23 | import org.onlab.packet.Ethernet; | 19 | import org.onlab.packet.Ethernet; |
24 | import org.onlab.packet.MacAddress; | 20 | import org.onlab.packet.MacAddress; |
25 | 21 | ||
22 | +import java.util.concurrent.CountDownLatch; | ||
23 | +import java.util.concurrent.TimeUnit; | ||
24 | + | ||
25 | +import static org.onlab.onos.net.DeviceId.deviceId; | ||
26 | +import static org.onlab.onos.net.PortNumber.portNumber; | ||
27 | + | ||
26 | /** | 28 | /** |
27 | * Installs point-to-point connectivity intents. | 29 | * Installs point-to-point connectivity intents. |
28 | */ | 30 | */ |
... | @@ -57,14 +59,12 @@ public class IntentPushTestCommand extends AbstractShellCommand | ... | @@ -57,14 +59,12 @@ public class IntentPushTestCommand extends AbstractShellCommand |
57 | protected void execute() { | 59 | protected void execute() { |
58 | service = get(IntentService.class); | 60 | service = get(IntentService.class); |
59 | 61 | ||
60 | - DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString)); | 62 | + DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString)); |
61 | - PortNumber ingressPortNumber = | 63 | + PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString)); |
62 | - PortNumber.portNumber(getPortNumber(ingressDeviceString)); | ||
63 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); | 64 | ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber); |
64 | 65 | ||
65 | - DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString)); | 66 | + DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString)); |
66 | - PortNumber egressPortNumber = | 67 | + PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString)); |
67 | - PortNumber.portNumber(getPortNumber(egressDeviceString)); | ||
68 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); | 68 | ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); |
69 | 69 | ||
70 | TrafficSelector.Builder selector = DefaultTrafficSelector.builder() | 70 | TrafficSelector.Builder selector = DefaultTrafficSelector.builder() |
... | @@ -81,12 +81,8 @@ public class IntentPushTestCommand extends AbstractShellCommand | ... | @@ -81,12 +81,8 @@ public class IntentPushTestCommand extends AbstractShellCommand |
81 | TrafficSelector s = selector | 81 | TrafficSelector s = selector |
82 | .matchEthSrc(MacAddress.valueOf(i)) | 82 | .matchEthSrc(MacAddress.valueOf(i)) |
83 | .build(); | 83 | .build(); |
84 | - Intent intent = | 84 | + Intent intent = new PointToPointIntent(appId(), s, treatment, |
85 | - new PointToPointIntent(new IntentId(id++), | 85 | + ingress, egress); |
86 | - s, | ||
87 | - treatment, | ||
88 | - ingress, | ||
89 | - egress); | ||
90 | service.submit(intent); | 86 | service.submit(intent); |
91 | } | 87 | } |
92 | try { | 88 | try { | ... | ... |
... | @@ -26,9 +26,8 @@ public class IntentRemoveCommand extends AbstractShellCommand { | ... | @@ -26,9 +26,8 @@ public class IntentRemoveCommand extends AbstractShellCommand { |
26 | if (radix == 16) { | 26 | if (radix == 16) { |
27 | id = id.replaceFirst("0x", ""); | 27 | id = id.replaceFirst("0x", ""); |
28 | } | 28 | } |
29 | - IntentId intentId = new IntentId(Long.parseLong(id, radix)); | ||
30 | - | ||
31 | 29 | ||
30 | + IntentId intentId = IntentId.valueOf(Long.parseLong(id, radix)); | ||
32 | Intent intent = service.getIntent(intentId); | 31 | Intent intent = service.getIntent(intentId); |
33 | if (intent != null) { | 32 | if (intent != null) { |
34 | service.withdraw(intent); | 33 | service.withdraw(intent); | ... | ... |
... | @@ -15,7 +15,7 @@ public final class IntentId implements BatchOperationTarget { | ... | @@ -15,7 +15,7 @@ public final class IntentId implements BatchOperationTarget { |
15 | * @param fingerprint long value | 15 | * @param fingerprint long value |
16 | * @return intent identifier | 16 | * @return intent identifier |
17 | */ | 17 | */ |
18 | - static IntentId valueOf(long fingerprint) { | 18 | + public static IntentId valueOf(long fingerprint) { |
19 | return new IntentId(fingerprint); | 19 | return new IntentId(fingerprint); |
20 | } | 20 | } |
21 | 21 | ... | ... |
... | @@ -27,6 +27,7 @@ public class CoreManager implements CoreService { | ... | @@ -27,6 +27,7 @@ public class CoreManager implements CoreService { |
27 | private static Version version = Version.version("1.0.0-SNAPSHOT"); | 27 | private static Version version = Version.version("1.0.0-SNAPSHOT"); |
28 | 28 | ||
29 | private final Map<Short, DefaultApplicationId> appIds = new ConcurrentHashMap<>(); | 29 | private final Map<Short, DefaultApplicationId> appIds = new ConcurrentHashMap<>(); |
30 | + private final Map<String, DefaultApplicationId> appIdsByName = new ConcurrentHashMap<>(); | ||
30 | 31 | ||
31 | // TODO: work in progress | 32 | // TODO: work in progress |
32 | 33 | ||
... | @@ -50,9 +51,13 @@ public class CoreManager implements CoreService { | ... | @@ -50,9 +51,13 @@ public class CoreManager implements CoreService { |
50 | 51 | ||
51 | @Override | 52 | @Override |
52 | public ApplicationId registerApplication(String name) { | 53 | public ApplicationId registerApplication(String name) { |
54 | + DefaultApplicationId appId = appIdsByName.get(name); | ||
55 | + if (appId == null) { | ||
53 | short id = (short) ID_DISPENSER.getAndIncrement(); | 56 | short id = (short) ID_DISPENSER.getAndIncrement(); |
54 | - DefaultApplicationId appId = new DefaultApplicationId(id, name); | 57 | + appId = new DefaultApplicationId(id, name); |
55 | appIds.put(id, appId); | 58 | appIds.put(id, appId); |
59 | + appIdsByName.put(name, appId); | ||
60 | + } | ||
56 | return appId; | 61 | return appId; |
57 | } | 62 | } |
58 | 63 | ... | ... |
... | @@ -11,11 +11,9 @@ import org.onlab.onos.net.Path; | ... | @@ -11,11 +11,9 @@ import org.onlab.onos.net.Path; |
11 | import org.onlab.onos.net.flow.TrafficSelector; | 11 | import org.onlab.onos.net.flow.TrafficSelector; |
12 | import org.onlab.onos.net.host.HostService; | 12 | import org.onlab.onos.net.host.HostService; |
13 | import org.onlab.onos.net.intent.HostToHostIntent; | 13 | import org.onlab.onos.net.intent.HostToHostIntent; |
14 | -import org.onlab.onos.net.intent.IdGenerator; | ||
15 | import org.onlab.onos.net.intent.Intent; | 14 | import org.onlab.onos.net.intent.Intent; |
16 | import org.onlab.onos.net.intent.IntentCompiler; | 15 | import org.onlab.onos.net.intent.IntentCompiler; |
17 | import org.onlab.onos.net.intent.IntentExtensionService; | 16 | import org.onlab.onos.net.intent.IntentExtensionService; |
18 | -import org.onlab.onos.net.intent.IntentId; | ||
19 | import org.onlab.onos.net.intent.PathIntent; | 17 | import org.onlab.onos.net.intent.PathIntent; |
20 | import org.onlab.onos.net.topology.PathService; | 18 | import org.onlab.onos.net.topology.PathService; |
21 | 19 | ||
... | @@ -41,12 +39,8 @@ public class HostToHostIntentCompiler | ... | @@ -41,12 +39,8 @@ public class HostToHostIntentCompiler |
41 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 39 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
42 | protected HostService hostService; | 40 | protected HostService hostService; |
43 | 41 | ||
44 | - protected IdGenerator<IntentId> intentIdGenerator; | ||
45 | - | ||
46 | @Activate | 42 | @Activate |
47 | public void activate() { | 43 | public void activate() { |
48 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
49 | - intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
50 | intentManager.registerCompiler(HostToHostIntent.class, this); | 44 | intentManager.registerCompiler(HostToHostIntent.class, this); |
51 | } | 45 | } |
52 | 46 | ||
... | @@ -70,13 +64,10 @@ public class HostToHostIntentCompiler | ... | @@ -70,13 +64,10 @@ public class HostToHostIntentCompiler |
70 | // Creates a path intent from the specified path and original connectivity intent. | 64 | // Creates a path intent from the specified path and original connectivity intent. |
71 | private Intent createPathIntent(Path path, Host src, Host dst, | 65 | private Intent createPathIntent(Path path, Host src, Host dst, |
72 | HostToHostIntent intent) { | 66 | HostToHostIntent intent) { |
73 | - | ||
74 | TrafficSelector selector = builder(intent.selector()) | 67 | TrafficSelector selector = builder(intent.selector()) |
75 | .matchEthSrc(src.mac()).matchEthDst(dst.mac()).build(); | 68 | .matchEthSrc(src.mac()).matchEthDst(dst.mac()).build(); |
76 | - | 69 | + return new PathIntent(intent.appId(), selector, intent.treatment(), |
77 | - return new PathIntent(intentIdGenerator.getNewId(), | 70 | + path); |
78 | - selector, intent.treatment(), | ||
79 | - path.src(), path.dst(), path); | ||
80 | } | 71 | } |
81 | 72 | ||
82 | private Path getPath(HostId one, HostId two) { | 73 | private Path getPath(HostId one, HostId two) { | ... | ... |
1 | -package org.onlab.onos.net.intent.impl; | ||
2 | - | ||
3 | -import org.onlab.onos.net.intent.IntentId; | ||
4 | - | ||
5 | -/** | ||
6 | - * An implementation of {@link org.onlab.onos.net.intent.IdGenerator} of intent ID, | ||
7 | - * which uses {@link IdBlockAllocator}. | ||
8 | - */ | ||
9 | -public class IdBlockAllocatorBasedIntentIdGenerator extends AbstractBlockAllocatorBasedIdGenerator<IntentId> { | ||
10 | - | ||
11 | - /** | ||
12 | - * Constructs an intent ID generator, which uses the specified ID block allocator | ||
13 | - * to generate a global unique intent ID. | ||
14 | - * | ||
15 | - * @param allocator the ID block allocator to use for generating intent IDs | ||
16 | - */ | ||
17 | - public IdBlockAllocatorBasedIntentIdGenerator(IdBlockAllocator allocator) { | ||
18 | - super(allocator); | ||
19 | - } | ||
20 | - | ||
21 | - @Override | ||
22 | - protected IntentId convertFrom(long value) { | ||
23 | - return new IntentId(value); | ||
24 | - } | ||
25 | -} |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import static com.google.common.base.Preconditions.checkNotNull; | 3 | +import com.google.common.collect.ImmutableList; |
4 | -import static java.util.concurrent.Executors.newSingleThreadExecutor; | 4 | +import com.google.common.collect.ImmutableMap; |
5 | -import static org.onlab.onos.net.intent.IntentState.COMPILING; | 5 | +import com.google.common.collect.Lists; |
6 | -import static org.onlab.onos.net.intent.IntentState.FAILED; | ||
7 | -import static org.onlab.onos.net.intent.IntentState.INSTALLED; | ||
8 | -import static org.onlab.onos.net.intent.IntentState.INSTALLING; | ||
9 | -import static org.onlab.onos.net.intent.IntentState.RECOMPILING; | ||
10 | -import static org.onlab.onos.net.intent.IntentState.WITHDRAWING; | ||
11 | -import static org.onlab.onos.net.intent.IntentState.WITHDRAWN; | ||
12 | -import static org.onlab.util.Tools.namedThreads; | ||
13 | -import static org.slf4j.LoggerFactory.getLogger; | ||
14 | - | ||
15 | -import java.util.ArrayList; | ||
16 | -import java.util.Iterator; | ||
17 | -import java.util.List; | ||
18 | -import java.util.Map; | ||
19 | -import java.util.Objects; | ||
20 | -import java.util.concurrent.ConcurrentHashMap; | ||
21 | -import java.util.concurrent.ConcurrentMap; | ||
22 | -import java.util.concurrent.ExecutionException; | ||
23 | -import java.util.concurrent.ExecutorService; | ||
24 | -import java.util.concurrent.Future; | ||
25 | -import java.util.concurrent.TimeUnit; | ||
26 | -import java.util.concurrent.TimeoutException; | ||
27 | - | ||
28 | import org.apache.felix.scr.annotations.Activate; | 6 | import org.apache.felix.scr.annotations.Activate; |
29 | import org.apache.felix.scr.annotations.Component; | 7 | import org.apache.felix.scr.annotations.Component; |
30 | import org.apache.felix.scr.annotations.Deactivate; | 8 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -36,7 +14,6 @@ import org.onlab.onos.event.EventDeliveryService; | ... | @@ -36,7 +14,6 @@ import org.onlab.onos.event.EventDeliveryService; |
36 | import org.onlab.onos.net.flow.CompletedBatchOperation; | 14 | import org.onlab.onos.net.flow.CompletedBatchOperation; |
37 | import org.onlab.onos.net.flow.FlowRuleBatchOperation; | 15 | import org.onlab.onos.net.flow.FlowRuleBatchOperation; |
38 | import org.onlab.onos.net.flow.FlowRuleService; | 16 | import org.onlab.onos.net.flow.FlowRuleService; |
39 | -import org.onlab.onos.net.intent.InstallableIntent; | ||
40 | import org.onlab.onos.net.intent.Intent; | 17 | import org.onlab.onos.net.intent.Intent; |
41 | import org.onlab.onos.net.intent.IntentCompiler; | 18 | import org.onlab.onos.net.intent.IntentCompiler; |
42 | import org.onlab.onos.net.intent.IntentEvent; | 19 | import org.onlab.onos.net.intent.IntentEvent; |
... | @@ -52,9 +29,24 @@ import org.onlab.onos.net.intent.IntentStore; | ... | @@ -52,9 +29,24 @@ import org.onlab.onos.net.intent.IntentStore; |
52 | import org.onlab.onos.net.intent.IntentStoreDelegate; | 29 | import org.onlab.onos.net.intent.IntentStoreDelegate; |
53 | import org.slf4j.Logger; | 30 | import org.slf4j.Logger; |
54 | 31 | ||
55 | -import com.google.common.collect.ImmutableList; | 32 | +import java.util.ArrayList; |
56 | -import com.google.common.collect.ImmutableMap; | 33 | +import java.util.Iterator; |
57 | -import com.google.common.collect.Lists; | 34 | +import java.util.List; |
35 | +import java.util.Map; | ||
36 | +import java.util.Objects; | ||
37 | +import java.util.concurrent.ConcurrentHashMap; | ||
38 | +import java.util.concurrent.ConcurrentMap; | ||
39 | +import java.util.concurrent.ExecutionException; | ||
40 | +import java.util.concurrent.ExecutorService; | ||
41 | +import java.util.concurrent.Future; | ||
42 | +import java.util.concurrent.TimeUnit; | ||
43 | +import java.util.concurrent.TimeoutException; | ||
44 | + | ||
45 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
46 | +import static java.util.concurrent.Executors.newSingleThreadExecutor; | ||
47 | +import static org.onlab.onos.net.intent.IntentState.*; | ||
48 | +import static org.onlab.util.Tools.namedThreads; | ||
49 | +import static org.slf4j.LoggerFactory.getLogger; | ||
58 | 50 | ||
59 | /** | 51 | /** |
60 | * An implementation of Intent Manager. | 52 | * An implementation of Intent Manager. |
... | @@ -71,8 +63,8 @@ public class IntentManager | ... | @@ -71,8 +63,8 @@ public class IntentManager |
71 | // Collections for compiler, installer, and listener are ONOS instance local | 63 | // Collections for compiler, installer, and listener are ONOS instance local |
72 | private final ConcurrentMap<Class<? extends Intent>, | 64 | private final ConcurrentMap<Class<? extends Intent>, |
73 | IntentCompiler<? extends Intent>> compilers = new ConcurrentHashMap<>(); | 65 | IntentCompiler<? extends Intent>> compilers = new ConcurrentHashMap<>(); |
74 | - private final ConcurrentMap<Class<? extends InstallableIntent>, | 66 | + private final ConcurrentMap<Class<? extends Intent>, |
75 | - IntentInstaller<? extends InstallableIntent>> installers = new ConcurrentHashMap<>(); | 67 | + IntentInstaller<? extends Intent>> installers = new ConcurrentHashMap<>(); |
76 | 68 | ||
77 | private final AbstractListenerRegistry<IntentEvent, IntentListener> | 69 | private final AbstractListenerRegistry<IntentEvent, IntentListener> |
78 | listenerRegistry = new AbstractListenerRegistry<>(); | 70 | listenerRegistry = new AbstractListenerRegistry<>(); |
... | @@ -186,17 +178,17 @@ public class IntentManager | ... | @@ -186,17 +178,17 @@ public class IntentManager |
186 | } | 178 | } |
187 | 179 | ||
188 | @Override | 180 | @Override |
189 | - public <T extends InstallableIntent> void registerInstaller(Class<T> cls, IntentInstaller<T> installer) { | 181 | + public <T extends Intent> void registerInstaller(Class<T> cls, IntentInstaller<T> installer) { |
190 | installers.put(cls, installer); | 182 | installers.put(cls, installer); |
191 | } | 183 | } |
192 | 184 | ||
193 | @Override | 185 | @Override |
194 | - public <T extends InstallableIntent> void unregisterInstaller(Class<T> cls) { | 186 | + public <T extends Intent> void unregisterInstaller(Class<T> cls) { |
195 | installers.remove(cls); | 187 | installers.remove(cls); |
196 | } | 188 | } |
197 | 189 | ||
198 | @Override | 190 | @Override |
199 | - public Map<Class<? extends InstallableIntent>, IntentInstaller<? extends InstallableIntent>> getInstallers() { | 191 | + public Map<Class<? extends Intent>, IntentInstaller<? extends Intent>> getInstallers() { |
200 | return ImmutableMap.copyOf(installers); | 192 | return ImmutableMap.copyOf(installers); |
201 | } | 193 | } |
202 | 194 | ||
... | @@ -223,7 +215,7 @@ public class IntentManager | ... | @@ -223,7 +215,7 @@ public class IntentManager |
223 | * @param <T> the type of installable intent | 215 | * @param <T> the type of installable intent |
224 | * @return intent installer corresponding to the specified installable intent | 216 | * @return intent installer corresponding to the specified installable intent |
225 | */ | 217 | */ |
226 | - private <T extends InstallableIntent> IntentInstaller<T> getInstaller(T intent) { | 218 | + private <T extends Intent> IntentInstaller<T> getInstaller(T intent) { |
227 | @SuppressWarnings("unchecked") | 219 | @SuppressWarnings("unchecked") |
228 | IntentInstaller<T> installer = (IntentInstaller<T>) installers.get(intent.getClass()); | 220 | IntentInstaller<T> installer = (IntentInstaller<T>) installers.get(intent.getClass()); |
229 | if (installer == null) { | 221 | if (installer == null) { |
... | @@ -243,7 +235,7 @@ public class IntentManager | ... | @@ -243,7 +235,7 @@ public class IntentManager |
243 | 235 | ||
244 | try { | 236 | try { |
245 | // Compile the intent into installable derivatives. | 237 | // Compile the intent into installable derivatives. |
246 | - List<InstallableIntent> installable = compileIntent(intent); | 238 | + List<Intent> installable = compileIntent(intent); |
247 | 239 | ||
248 | // If all went well, associate the resulting list of installable | 240 | // If all went well, associate the resulting list of installable |
249 | // intents with the top-level intent and proceed to install. | 241 | // intents with the top-level intent and proceed to install. |
... | @@ -264,12 +256,12 @@ public class IntentManager | ... | @@ -264,12 +256,12 @@ public class IntentManager |
264 | * @param intent intent | 256 | * @param intent intent |
265 | * @return result of compilation | 257 | * @return result of compilation |
266 | */ | 258 | */ |
267 | - private List<InstallableIntent> compileIntent(Intent intent) { | 259 | + private List<Intent> compileIntent(Intent intent) { |
268 | - if (intent instanceof InstallableIntent) { | 260 | + if (intent instanceof Intent) { |
269 | - return ImmutableList.of((InstallableIntent) intent); | 261 | + return ImmutableList.of((Intent) intent); |
270 | } | 262 | } |
271 | 263 | ||
272 | - List<InstallableIntent> installable = new ArrayList<>(); | 264 | + List<Intent> installable = new ArrayList<>(); |
273 | // TODO do we need to registerSubclassCompiler? | 265 | // TODO do we need to registerSubclassCompiler? |
274 | for (Intent compiled : getCompiler(intent).compile(intent)) { | 266 | for (Intent compiled : getCompiler(intent).compile(intent)) { |
275 | installable.addAll(compileIntent(compiled)); | 267 | installable.addAll(compileIntent(compiled)); |
... | @@ -290,12 +282,12 @@ public class IntentManager | ... | @@ -290,12 +282,12 @@ public class IntentManager |
290 | 282 | ||
291 | List<FlowRuleBatchOperation> installWork = Lists.newArrayList(); | 283 | List<FlowRuleBatchOperation> installWork = Lists.newArrayList(); |
292 | try { | 284 | try { |
293 | - List<InstallableIntent> installables = store.getInstallableIntents(intent.id()); | 285 | + List<Intent> installables = store.getInstallableIntents(intent.id()); |
294 | if (installables != null) { | 286 | if (installables != null) { |
295 | - for (InstallableIntent installable : installables) { | 287 | + for (Intent installable : installables) { |
296 | registerSubclassInstallerIfNeeded(installable); | 288 | registerSubclassInstallerIfNeeded(installable); |
297 | trackerService.addTrackedResources(intent.id(), | 289 | trackerService.addTrackedResources(intent.id(), |
298 | - installable.requiredLinks()); | 290 | + installable.resources()); |
299 | List<FlowRuleBatchOperation> batch = getInstaller(installable).install(installable); | 291 | List<FlowRuleBatchOperation> batch = getInstaller(installable).install(installable); |
300 | installWork.addAll(batch); | 292 | installWork.addAll(batch); |
301 | } | 293 | } |
... | @@ -324,14 +316,13 @@ public class IntentManager | ... | @@ -324,14 +316,13 @@ public class IntentManager |
324 | 316 | ||
325 | try { | 317 | try { |
326 | // Compile the intent into installable derivatives. | 318 | // Compile the intent into installable derivatives. |
327 | - List<InstallableIntent> installable = compileIntent(intent); | 319 | + List<Intent> installable = compileIntent(intent); |
328 | 320 | ||
329 | // If all went well, compare the existing list of installable | 321 | // If all went well, compare the existing list of installable |
330 | // intents with the newly compiled list. If they are the same, | 322 | // intents with the newly compiled list. If they are the same, |
331 | // bail, out since the previous approach was determined not to | 323 | // bail, out since the previous approach was determined not to |
332 | // be viable. | 324 | // be viable. |
333 | - List<InstallableIntent> originalInstallable = | 325 | + List<Intent> originalInstallable = store.getInstallableIntents(intent.id()); |
334 | - store.getInstallableIntents(intent.id()); | ||
335 | 326 | ||
336 | if (Objects.equals(originalInstallable, installable)) { | 327 | if (Objects.equals(originalInstallable, installable)) { |
337 | eventDispatcher.post(store.setState(intent, FAILED)); | 328 | eventDispatcher.post(store.setState(intent, FAILED)); |
... | @@ -376,9 +367,9 @@ public class IntentManager | ... | @@ -376,9 +367,9 @@ public class IntentManager |
376 | private void uninstallIntent(Intent intent, IntentState nextState) { | 367 | private void uninstallIntent(Intent intent, IntentState nextState) { |
377 | List<FlowRuleBatchOperation> uninstallWork = Lists.newArrayList(); | 368 | List<FlowRuleBatchOperation> uninstallWork = Lists.newArrayList(); |
378 | try { | 369 | try { |
379 | - List<InstallableIntent> installables = store.getInstallableIntents(intent.id()); | 370 | + List<Intent> installables = store.getInstallableIntents(intent.id()); |
380 | if (installables != null) { | 371 | if (installables != null) { |
381 | - for (InstallableIntent installable : installables) { | 372 | + for (Intent installable : installables) { |
382 | List<FlowRuleBatchOperation> batches = getInstaller(installable).uninstall(installable); | 373 | List<FlowRuleBatchOperation> batches = getInstaller(installable).uninstall(installable); |
383 | uninstallWork.addAll(batches); | 374 | uninstallWork.addAll(batches); |
384 | } | 375 | } |
... | @@ -422,12 +413,12 @@ public class IntentManager | ... | @@ -422,12 +413,12 @@ public class IntentManager |
422 | * | 413 | * |
423 | * @param intent intent | 414 | * @param intent intent |
424 | */ | 415 | */ |
425 | - private void registerSubclassInstallerIfNeeded(InstallableIntent intent) { | 416 | + private void registerSubclassInstallerIfNeeded(Intent intent) { |
426 | if (!installers.containsKey(intent.getClass())) { | 417 | if (!installers.containsKey(intent.getClass())) { |
427 | Class<?> cls = intent.getClass(); | 418 | Class<?> cls = intent.getClass(); |
428 | while (cls != Object.class) { | 419 | while (cls != Object.class) { |
429 | - // As long as we're within the InstallableIntent class descendants | 420 | + // As long as we're within the Intent class descendants |
430 | - if (InstallableIntent.class.isAssignableFrom(cls)) { | 421 | + if (Intent.class.isAssignableFrom(cls)) { |
431 | IntentInstaller<?> installer = installers.get(cls); | 422 | IntentInstaller<?> installer = installers.get(cls); |
432 | if (installer != null) { | 423 | if (installer != null) { |
433 | installers.put(intent.getClass(), installer); | 424 | installers.put(intent.getClass(), installer); |
... | @@ -531,9 +522,7 @@ public class IntentManager | ... | @@ -531,9 +522,7 @@ public class IntentManager |
531 | } | 522 | } |
532 | 523 | ||
533 | /** | 524 | /** |
534 | - * Apply a list of FlowRules. | 525 | + * Applies the next batch. |
535 | - * | ||
536 | - * @param rules rules to apply | ||
537 | */ | 526 | */ |
538 | private Future<CompletedBatchOperation> applyNextBatch() { | 527 | private Future<CompletedBatchOperation> applyNextBatch() { |
539 | if (work.isEmpty()) { | 528 | if (work.isEmpty()) { | ... | ... |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.Arrays; | ||
4 | -import java.util.HashSet; | ||
5 | -import java.util.List; | ||
6 | -import java.util.Set; | ||
7 | - | ||
8 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
9 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
10 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -13,16 +8,19 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -13,16 +8,19 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
13 | import org.onlab.onos.net.ConnectPoint; | 8 | import org.onlab.onos.net.ConnectPoint; |
14 | import org.onlab.onos.net.Link; | 9 | import org.onlab.onos.net.Link; |
15 | import org.onlab.onos.net.Path; | 10 | import org.onlab.onos.net.Path; |
16 | -import org.onlab.onos.net.intent.IdGenerator; | ||
17 | import org.onlab.onos.net.intent.Intent; | 11 | import org.onlab.onos.net.intent.Intent; |
18 | import org.onlab.onos.net.intent.IntentCompiler; | 12 | import org.onlab.onos.net.intent.IntentCompiler; |
19 | import org.onlab.onos.net.intent.IntentExtensionService; | 13 | import org.onlab.onos.net.intent.IntentExtensionService; |
20 | -import org.onlab.onos.net.intent.IntentId; | ||
21 | import org.onlab.onos.net.intent.LinkCollectionIntent; | 14 | import org.onlab.onos.net.intent.LinkCollectionIntent; |
22 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; | 15 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; |
23 | import org.onlab.onos.net.intent.PointToPointIntent; | 16 | import org.onlab.onos.net.intent.PointToPointIntent; |
24 | import org.onlab.onos.net.topology.PathService; | 17 | import org.onlab.onos.net.topology.PathService; |
25 | 18 | ||
19 | +import java.util.Arrays; | ||
20 | +import java.util.HashSet; | ||
21 | +import java.util.List; | ||
22 | +import java.util.Set; | ||
23 | + | ||
26 | /** | 24 | /** |
27 | * An intent compiler for | 25 | * An intent compiler for |
28 | * {@link org.onlab.onos.net.intent.MultiPointToSinglePointIntent}. | 26 | * {@link org.onlab.onos.net.intent.MultiPointToSinglePointIntent}. |
... | @@ -37,12 +35,8 @@ public class MultiPointToSinglePointIntentCompiler | ... | @@ -37,12 +35,8 @@ public class MultiPointToSinglePointIntentCompiler |
37 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 35 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
38 | protected PathService pathService; | 36 | protected PathService pathService; |
39 | 37 | ||
40 | - protected IdGenerator<IntentId> intentIdGenerator; | ||
41 | - | ||
42 | @Activate | 38 | @Activate |
43 | public void activate() { | 39 | public void activate() { |
44 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
45 | - intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
46 | intentManager.registerCompiler(MultiPointToSinglePointIntent.class, this); | 40 | intentManager.registerCompiler(MultiPointToSinglePointIntent.class, this); |
47 | } | 41 | } |
48 | 42 | ||
... | @@ -60,7 +54,7 @@ public class MultiPointToSinglePointIntentCompiler | ... | @@ -60,7 +54,7 @@ public class MultiPointToSinglePointIntentCompiler |
60 | links.addAll(path.links()); | 54 | links.addAll(path.links()); |
61 | } | 55 | } |
62 | 56 | ||
63 | - Intent result = new LinkCollectionIntent(intentIdGenerator.getNewId(), | 57 | + Intent result = new LinkCollectionIntent(intent.appId(), |
64 | intent.selector(), intent.treatment(), | 58 | intent.selector(), intent.treatment(), |
65 | links, intent.egressPoint()); | 59 | links, intent.egressPoint()); |
66 | return Arrays.asList(result); | 60 | return Arrays.asList(result); | ... | ... |
... | @@ -11,6 +11,7 @@ import org.apache.felix.scr.annotations.Service; | ... | @@ -11,6 +11,7 @@ import org.apache.felix.scr.annotations.Service; |
11 | import org.onlab.onos.event.Event; | 11 | import org.onlab.onos.event.Event; |
12 | import org.onlab.onos.net.Link; | 12 | import org.onlab.onos.net.Link; |
13 | import org.onlab.onos.net.LinkKey; | 13 | import org.onlab.onos.net.LinkKey; |
14 | +import org.onlab.onos.net.NetworkResource; | ||
14 | import org.onlab.onos.net.intent.IntentId; | 15 | import org.onlab.onos.net.intent.IntentId; |
15 | import org.onlab.onos.net.link.LinkEvent; | 16 | import org.onlab.onos.net.link.LinkEvent; |
16 | import org.onlab.onos.net.topology.TopologyEvent; | 17 | import org.onlab.onos.net.topology.TopologyEvent; |
... | @@ -27,8 +28,8 @@ import static com.google.common.base.Preconditions.checkArgument; | ... | @@ -27,8 +28,8 @@ import static com.google.common.base.Preconditions.checkArgument; |
27 | import static com.google.common.base.Preconditions.checkNotNull; | 28 | import static com.google.common.base.Preconditions.checkNotNull; |
28 | import static com.google.common.collect.Multimaps.synchronizedSetMultimap; | 29 | import static com.google.common.collect.Multimaps.synchronizedSetMultimap; |
29 | import static java.util.concurrent.Executors.newSingleThreadExecutor; | 30 | import static java.util.concurrent.Executors.newSingleThreadExecutor; |
30 | -import static org.onlab.onos.net.link.LinkEvent.Type.LINK_REMOVED; | ||
31 | import static org.onlab.onos.net.LinkKey.linkKey; | 31 | import static org.onlab.onos.net.LinkKey.linkKey; |
32 | +import static org.onlab.onos.net.link.LinkEvent.Type.LINK_REMOVED; | ||
32 | import static org.onlab.util.Tools.namedThreads; | 33 | import static org.onlab.util.Tools.namedThreads; |
33 | import static org.slf4j.LoggerFactory.getLogger; | 34 | import static org.slf4j.LoggerFactory.getLogger; |
34 | 35 | ||
... | @@ -81,16 +82,22 @@ public class ObjectiveTracker implements ObjectiveTrackerService { | ... | @@ -81,16 +82,22 @@ public class ObjectiveTracker implements ObjectiveTrackerService { |
81 | } | 82 | } |
82 | 83 | ||
83 | @Override | 84 | @Override |
84 | - public void addTrackedResources(IntentId intentId, Collection<Link> resources) { | 85 | + public void addTrackedResources(IntentId intentId, |
85 | - for (Link link : resources) { | 86 | + Collection<NetworkResource> resources) { |
86 | - intentsByLink.put(linkKey(link), intentId); | 87 | + for (NetworkResource resource : resources) { |
88 | + if (resource instanceof Link) { | ||
89 | + intentsByLink.put(linkKey((Link) resource), intentId); | ||
90 | + } | ||
87 | } | 91 | } |
88 | } | 92 | } |
89 | 93 | ||
90 | @Override | 94 | @Override |
91 | - public void removeTrackedResources(IntentId intentId, Collection<Link> resources) { | 95 | + public void removeTrackedResources(IntentId intentId, |
92 | - for (Link link : resources) { | 96 | + Collection<NetworkResource> resources) { |
93 | - intentsByLink.remove(linkKey(link), intentId); | 97 | + for (NetworkResource resource : resources) { |
98 | + if (resource instanceof Link) { | ||
99 | + intentsByLink.remove(linkKey((Link) resource), intentId); | ||
100 | + } | ||
94 | } | 101 | } |
95 | } | 102 | } |
96 | 103 | ... | ... |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import org.onlab.onos.net.Link; | 3 | +import org.onlab.onos.net.NetworkResource; |
4 | import org.onlab.onos.net.intent.IntentId; | 4 | import org.onlab.onos.net.intent.IntentId; |
5 | 5 | ||
6 | import java.util.Collection; | 6 | import java.util.Collection; |
... | @@ -31,7 +31,8 @@ public interface ObjectiveTrackerService { | ... | @@ -31,7 +31,8 @@ public interface ObjectiveTrackerService { |
31 | * @param intentId intent identity on whose behalf the path is being tracked | 31 | * @param intentId intent identity on whose behalf the path is being tracked |
32 | * @param resources resources to track | 32 | * @param resources resources to track |
33 | */ | 33 | */ |
34 | - public void addTrackedResources(IntentId intentId, Collection<Link> resources); | 34 | + public void addTrackedResources(IntentId intentId, |
35 | + Collection<NetworkResource> resources); | ||
35 | 36 | ||
36 | /** | 37 | /** |
37 | * Removes a path flow to be tracked. | 38 | * Removes a path flow to be tracked. |
... | @@ -39,6 +40,7 @@ public interface ObjectiveTrackerService { | ... | @@ -39,6 +40,7 @@ public interface ObjectiveTrackerService { |
39 | * @param intentId intent identity on whose behalf the path is being tracked | 40 | * @param intentId intent identity on whose behalf the path is being tracked |
40 | * @param resources resources to stop tracking | 41 | * @param resources resources to stop tracking |
41 | */ | 42 | */ |
42 | - public void removeTrackedResources(IntentId intentId, Collection<Link> resources); | 43 | + public void removeTrackedResources(IntentId intentId, |
44 | + Collection<NetworkResource> resources); | ||
43 | 45 | ||
44 | } | 46 | } | ... | ... |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.ArrayList; | ||
4 | -import java.util.Arrays; | ||
5 | -import java.util.List; | ||
6 | -import java.util.Set; | ||
7 | - | ||
8 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
9 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
10 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -16,16 +11,19 @@ import org.onlab.onos.net.DefaultPath; | ... | @@ -16,16 +11,19 @@ import org.onlab.onos.net.DefaultPath; |
16 | import org.onlab.onos.net.Link; | 11 | import org.onlab.onos.net.Link; |
17 | import org.onlab.onos.net.Path; | 12 | import org.onlab.onos.net.Path; |
18 | import org.onlab.onos.net.host.HostService; | 13 | import org.onlab.onos.net.host.HostService; |
19 | -import org.onlab.onos.net.intent.IdGenerator; | ||
20 | import org.onlab.onos.net.intent.Intent; | 14 | import org.onlab.onos.net.intent.Intent; |
21 | import org.onlab.onos.net.intent.IntentCompiler; | 15 | import org.onlab.onos.net.intent.IntentCompiler; |
22 | import org.onlab.onos.net.intent.IntentExtensionService; | 16 | import org.onlab.onos.net.intent.IntentExtensionService; |
23 | -import org.onlab.onos.net.intent.IntentId; | ||
24 | import org.onlab.onos.net.intent.PathIntent; | 17 | import org.onlab.onos.net.intent.PathIntent; |
25 | import org.onlab.onos.net.intent.PointToPointIntent; | 18 | import org.onlab.onos.net.intent.PointToPointIntent; |
26 | import org.onlab.onos.net.provider.ProviderId; | 19 | import org.onlab.onos.net.provider.ProviderId; |
27 | import org.onlab.onos.net.topology.PathService; | 20 | import org.onlab.onos.net.topology.PathService; |
28 | 21 | ||
22 | +import java.util.ArrayList; | ||
23 | +import java.util.Arrays; | ||
24 | +import java.util.List; | ||
25 | +import java.util.Set; | ||
26 | + | ||
29 | /** | 27 | /** |
30 | * A intent compiler for {@link org.onlab.onos.net.intent.HostToHostIntent}. | 28 | * A intent compiler for {@link org.onlab.onos.net.intent.HostToHostIntent}. |
31 | */ | 29 | */ |
... | @@ -43,12 +41,8 @@ public class PointToPointIntentCompiler | ... | @@ -43,12 +41,8 @@ public class PointToPointIntentCompiler |
43 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 41 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
44 | protected HostService hostService; | 42 | protected HostService hostService; |
45 | 43 | ||
46 | - protected IdGenerator<IntentId> intentIdGenerator; | ||
47 | - | ||
48 | @Activate | 44 | @Activate |
49 | public void activate() { | 45 | public void activate() { |
50 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
51 | - intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
52 | intentManager.registerCompiler(PointToPointIntent.class, this); | 46 | intentManager.registerCompiler(PointToPointIntent.class, this); |
53 | } | 47 | } |
54 | 48 | ||
... | @@ -80,10 +74,8 @@ public class PointToPointIntentCompiler | ... | @@ -80,10 +74,8 @@ public class PointToPointIntentCompiler |
80 | */ | 74 | */ |
81 | private Intent createPathIntent(Path path, | 75 | private Intent createPathIntent(Path path, |
82 | PointToPointIntent intent) { | 76 | PointToPointIntent intent) { |
83 | - | 77 | + return new PathIntent(intent.appId(), |
84 | - return new PathIntent(intentIdGenerator.getNewId(), | 78 | + intent.selector(), intent.treatment(), path); |
85 | - intent.selector(), intent.treatment(), | ||
86 | - path.src(), path.dst(), path); | ||
87 | } | 79 | } |
88 | 80 | ||
89 | /** | 81 | /** | ... | ... |
1 | package org.onlab.onos.net.intent; | 1 | package org.onlab.onos.net.intent; |
2 | 2 | ||
3 | import org.junit.Test; | 3 | import org.junit.Test; |
4 | +import org.onlab.onos.ApplicationId; | ||
5 | +import org.onlab.onos.TestApplicationId; | ||
4 | import org.onlab.onos.net.HostId; | 6 | import org.onlab.onos.net.HostId; |
5 | import org.onlab.onos.net.flow.TrafficSelector; | 7 | import org.onlab.onos.net.flow.TrafficSelector; |
6 | import org.onlab.onos.net.flow.TrafficTreatment; | 8 | import org.onlab.onos.net.flow.TrafficTreatment; |
... | @@ -16,15 +18,13 @@ import static org.onlab.onos.net.NetTestTools.hid; | ... | @@ -16,15 +18,13 @@ import static org.onlab.onos.net.NetTestTools.hid; |
16 | */ | 18 | */ |
17 | public class TestHostToHostIntent { | 19 | public class TestHostToHostIntent { |
18 | 20 | ||
21 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
22 | + | ||
19 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 23 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
20 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 24 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
21 | 25 | ||
22 | - private HostToHostIntent makeHostToHost(long id, HostId one, HostId two) { | 26 | + private HostToHostIntent makeHostToHost(HostId one, HostId two) { |
23 | - return new HostToHostIntent(new IntentId(id), | 27 | + return new HostToHostIntent(APPID, one, two, selector, treatment); |
24 | - one, | ||
25 | - two, | ||
26 | - selector, | ||
27 | - treatment); | ||
28 | } | 28 | } |
29 | 29 | ||
30 | /** | 30 | /** |
... | @@ -36,8 +36,8 @@ public class TestHostToHostIntent { | ... | @@ -36,8 +36,8 @@ public class TestHostToHostIntent { |
36 | 36 | ||
37 | HostId one = hid("00:00:00:00:00:01/-1"); | 37 | HostId one = hid("00:00:00:00:00:01/-1"); |
38 | HostId two = hid("00:00:00:00:00:02/-1"); | 38 | HostId two = hid("00:00:00:00:00:02/-1"); |
39 | - HostToHostIntent i1 = makeHostToHost(12, one, two); | 39 | + HostToHostIntent i1 = makeHostToHost(one, two); |
40 | - HostToHostIntent i2 = makeHostToHost(12, one, two); | 40 | + HostToHostIntent i2 = makeHostToHost(one, two); |
41 | 41 | ||
42 | assertThat(i1, is(equalTo(i2))); | 42 | assertThat(i1, is(equalTo(i2))); |
43 | } | 43 | } |
... | @@ -51,23 +51,8 @@ public class TestHostToHostIntent { | ... | @@ -51,23 +51,8 @@ public class TestHostToHostIntent { |
51 | 51 | ||
52 | HostId one = hid("00:00:00:00:00:01/-1"); | 52 | HostId one = hid("00:00:00:00:00:01/-1"); |
53 | HostId two = hid("00:00:00:00:00:02/-1"); | 53 | HostId two = hid("00:00:00:00:00:02/-1"); |
54 | - HostToHostIntent i1 = makeHostToHost(12, one, two); | 54 | + HostToHostIntent i1 = makeHostToHost(one, two); |
55 | - HostToHostIntent i2 = makeHostToHost(12, two, one); | 55 | + HostToHostIntent i2 = makeHostToHost(two, one); |
56 | - | ||
57 | - assertThat(i1, is(not(equalTo(i2)))); | ||
58 | - } | ||
59 | - | ||
60 | - /** | ||
61 | - * Tests the equals() method where two HostToHostIntents have different | ||
62 | - * ids. These should compare not equal. | ||
63 | - */ | ||
64 | - | ||
65 | - @Test | ||
66 | - public void testBaseDifferentEquals() { | ||
67 | - HostId one = hid("00:00:00:00:00:01/-1"); | ||
68 | - HostId two = hid("00:00:00:00:00:02/-1"); | ||
69 | - HostToHostIntent i1 = makeHostToHost(12, one, two); | ||
70 | - HostToHostIntent i2 = makeHostToHost(11, one, two); | ||
71 | 56 | ||
72 | assertThat(i1, is(not(equalTo(i2)))); | 57 | assertThat(i1, is(not(equalTo(i2)))); |
73 | } | 58 | } |
... | @@ -76,13 +61,12 @@ public class TestHostToHostIntent { | ... | @@ -76,13 +61,12 @@ public class TestHostToHostIntent { |
76 | * Tests that the hashCode() values for two equivalent HostToHostIntent | 61 | * Tests that the hashCode() values for two equivalent HostToHostIntent |
77 | * objects are the same. | 62 | * objects are the same. |
78 | */ | 63 | */ |
79 | - | ||
80 | @Test | 64 | @Test |
81 | public void testHashCodeEquals() { | 65 | public void testHashCodeEquals() { |
82 | HostId one = hid("00:00:00:00:00:01/-1"); | 66 | HostId one = hid("00:00:00:00:00:01/-1"); |
83 | HostId two = hid("00:00:00:00:00:02/-1"); | 67 | HostId two = hid("00:00:00:00:00:02/-1"); |
84 | - HostToHostIntent i1 = makeHostToHost(12, one, two); | 68 | + HostToHostIntent i1 = makeHostToHost(one, two); |
85 | - HostToHostIntent i2 = makeHostToHost(12, one, two); | 69 | + HostToHostIntent i2 = makeHostToHost(one, two); |
86 | 70 | ||
87 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); | 71 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); |
88 | } | 72 | } |
... | @@ -91,13 +75,12 @@ public class TestHostToHostIntent { | ... | @@ -91,13 +75,12 @@ public class TestHostToHostIntent { |
91 | * Tests that the hashCode() values for two distinct LinkCollectionIntent | 75 | * Tests that the hashCode() values for two distinct LinkCollectionIntent |
92 | * objects are different. | 76 | * objects are different. |
93 | */ | 77 | */ |
94 | - | ||
95 | @Test | 78 | @Test |
96 | public void testHashCodeDifferent() { | 79 | public void testHashCodeDifferent() { |
97 | HostId one = hid("00:00:00:00:00:01/-1"); | 80 | HostId one = hid("00:00:00:00:00:01/-1"); |
98 | HostId two = hid("00:00:00:00:00:02/-1"); | 81 | HostId two = hid("00:00:00:00:00:02/-1"); |
99 | - HostToHostIntent i1 = makeHostToHost(12, one, two); | 82 | + HostToHostIntent i1 = makeHostToHost(one, two); |
100 | - HostToHostIntent i2 = makeHostToHost(112, one, two); | 83 | + HostToHostIntent i2 = makeHostToHost(two, one); |
101 | 84 | ||
102 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); | 85 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); |
103 | } | 86 | } | ... | ... |
... | @@ -11,6 +11,8 @@ import java.util.Set; | ... | @@ -11,6 +11,8 @@ import java.util.Set; |
11 | 11 | ||
12 | import org.junit.Before; | 12 | import org.junit.Before; |
13 | import org.junit.Test; | 13 | import org.junit.Test; |
14 | +import org.onlab.onos.ApplicationId; | ||
15 | +import org.onlab.onos.TestApplicationId; | ||
14 | import org.onlab.onos.net.ConnectPoint; | 16 | import org.onlab.onos.net.ConnectPoint; |
15 | import org.onlab.onos.net.DeviceId; | 17 | import org.onlab.onos.net.DeviceId; |
16 | import org.onlab.onos.net.Link; | 18 | import org.onlab.onos.net.Link; |
... | @@ -23,6 +25,8 @@ import org.onlab.onos.net.flow.TrafficTreatment; | ... | @@ -23,6 +25,8 @@ import org.onlab.onos.net.flow.TrafficTreatment; |
23 | */ | 25 | */ |
24 | public class TestLinkCollectionIntent { | 26 | public class TestLinkCollectionIntent { |
25 | 27 | ||
28 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
29 | + | ||
26 | private Link link1 = link("dev1", 1, "dev2", 2); | 30 | private Link link1 = link("dev1", 1, "dev2", 2); |
27 | private Link link2 = link("dev1", 1, "dev3", 2); | 31 | private Link link2 = link("dev1", 1, "dev3", 2); |
28 | private Link link3 = link("dev2", 1, "dev3", 2); | 32 | private Link link3 = link("dev2", 1, "dev3", 2); |
... | @@ -38,10 +42,9 @@ public class TestLinkCollectionIntent { | ... | @@ -38,10 +42,9 @@ public class TestLinkCollectionIntent { |
38 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 42 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
39 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 43 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
40 | 44 | ||
41 | - private LinkCollectionIntent makeLinkCollection(long id, Set<Link> links, | 45 | + private LinkCollectionIntent makeLinkCollection(Set<Link> links, |
42 | ConnectPoint egress) { | 46 | ConnectPoint egress) { |
43 | - return new LinkCollectionIntent(new IntentId(id), | 47 | + return new LinkCollectionIntent(APPID, selector, treatment, links, egress); |
44 | - selector, treatment, links, egress); | ||
45 | } | 48 | } |
46 | 49 | ||
47 | @Before | 50 | @Before |
... | @@ -64,8 +67,8 @@ public class TestLinkCollectionIntent { | ... | @@ -64,8 +67,8 @@ public class TestLinkCollectionIntent { |
64 | links2.add(link2); | 67 | links2.add(link2); |
65 | links2.add(link1); | 68 | links2.add(link1); |
66 | 69 | ||
67 | - LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1); | 70 | + LinkCollectionIntent i1 = makeLinkCollection(links1, egress1); |
68 | - LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress1); | 71 | + LinkCollectionIntent i2 = makeLinkCollection(links2, egress1); |
69 | 72 | ||
70 | assertThat(i1, is(equalTo(i2))); | 73 | assertThat(i1, is(equalTo(i2))); |
71 | } | 74 | } |
... | @@ -82,8 +85,8 @@ public class TestLinkCollectionIntent { | ... | @@ -82,8 +85,8 @@ public class TestLinkCollectionIntent { |
82 | links2.add(link3); | 85 | links2.add(link3); |
83 | links2.add(link1); | 86 | links2.add(link1); |
84 | 87 | ||
85 | - LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1); | 88 | + LinkCollectionIntent i1 = makeLinkCollection(links1, egress1); |
86 | - LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress1); | 89 | + LinkCollectionIntent i2 = makeLinkCollection(links2, egress1); |
87 | 90 | ||
88 | assertThat(i1, is(not(equalTo(i2)))); | 91 | assertThat(i1, is(not(equalTo(i2)))); |
89 | } | 92 | } |
... | @@ -102,26 +105,8 @@ public class TestLinkCollectionIntent { | ... | @@ -102,26 +105,8 @@ public class TestLinkCollectionIntent { |
102 | links2.add(link2); | 105 | links2.add(link2); |
103 | links2.add(link1); | 106 | links2.add(link1); |
104 | 107 | ||
105 | - LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1); | 108 | + LinkCollectionIntent i1 = makeLinkCollection(links1, egress1); |
106 | - LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress2); | 109 | + LinkCollectionIntent i2 = makeLinkCollection(links2, egress2); |
107 | - | ||
108 | - assertThat(i1, is(not(equalTo(i2)))); | ||
109 | - } | ||
110 | - | ||
111 | - /** | ||
112 | - * Tests the equals() method where two LinkCollectionIntents have different | ||
113 | - * ids. These should compare not equal. | ||
114 | - */ | ||
115 | - @Test | ||
116 | - public void testBaseDifferentEquals() { | ||
117 | - links1.add(link1); | ||
118 | - links1.add(link2); | ||
119 | - | ||
120 | - links2.add(link2); | ||
121 | - links2.add(link1); | ||
122 | - | ||
123 | - LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1); | ||
124 | - LinkCollectionIntent i2 = makeLinkCollection(2, links2, egress1); | ||
125 | 110 | ||
126 | assertThat(i1, is(not(equalTo(i2)))); | 111 | assertThat(i1, is(not(equalTo(i2)))); |
127 | } | 112 | } |
... | @@ -140,8 +125,8 @@ public class TestLinkCollectionIntent { | ... | @@ -140,8 +125,8 @@ public class TestLinkCollectionIntent { |
140 | links2.add(link2); | 125 | links2.add(link2); |
141 | links2.add(link1); | 126 | links2.add(link1); |
142 | 127 | ||
143 | - LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1); | 128 | + LinkCollectionIntent i1 = makeLinkCollection(links1, egress1); |
144 | - LinkCollectionIntent i2 = makeLinkCollection(1, links2, egress1); | 129 | + LinkCollectionIntent i2 = makeLinkCollection(links2, egress1); |
145 | 130 | ||
146 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); | 131 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); |
147 | } | 132 | } |
... | @@ -158,8 +143,8 @@ public class TestLinkCollectionIntent { | ... | @@ -158,8 +143,8 @@ public class TestLinkCollectionIntent { |
158 | links2.add(link1); | 143 | links2.add(link1); |
159 | links2.add(link3); | 144 | links2.add(link3); |
160 | 145 | ||
161 | - LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1); | 146 | + LinkCollectionIntent i1 = makeLinkCollection(links1, egress1); |
162 | - LinkCollectionIntent i2 = makeLinkCollection(1, links2, egress2); | 147 | + LinkCollectionIntent i2 = makeLinkCollection(links2, egress2); |
163 | 148 | ||
164 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); | 149 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); |
165 | } | 150 | } | ... | ... |
1 | package org.onlab.onos.net.intent; | 1 | package org.onlab.onos.net.intent; |
2 | 2 | ||
3 | -import java.util.HashSet; | ||
4 | -import java.util.Set; | ||
5 | - | ||
6 | import org.junit.Before; | 3 | import org.junit.Before; |
7 | import org.junit.Test; | 4 | import org.junit.Test; |
5 | +import org.onlab.onos.ApplicationId; | ||
6 | +import org.onlab.onos.TestApplicationId; | ||
8 | import org.onlab.onos.net.ConnectPoint; | 7 | import org.onlab.onos.net.ConnectPoint; |
9 | import org.onlab.onos.net.flow.TrafficSelector; | 8 | import org.onlab.onos.net.flow.TrafficSelector; |
10 | import org.onlab.onos.net.flow.TrafficTreatment; | 9 | import org.onlab.onos.net.flow.TrafficTreatment; |
11 | 10 | ||
11 | +import java.util.HashSet; | ||
12 | +import java.util.Set; | ||
13 | + | ||
12 | import static org.hamcrest.CoreMatchers.not; | 14 | import static org.hamcrest.CoreMatchers.not; |
13 | import static org.hamcrest.MatcherAssert.assertThat; | 15 | import static org.hamcrest.MatcherAssert.assertThat; |
14 | import static org.hamcrest.Matchers.equalTo; | 16 | import static org.hamcrest.Matchers.equalTo; |
... | @@ -20,6 +22,8 @@ import static org.onlab.onos.net.NetTestTools.connectPoint; | ... | @@ -20,6 +22,8 @@ import static org.onlab.onos.net.NetTestTools.connectPoint; |
20 | */ | 22 | */ |
21 | public class TestMultiPointToSinglePointIntent { | 23 | public class TestMultiPointToSinglePointIntent { |
22 | 24 | ||
25 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
26 | + | ||
23 | private ConnectPoint point1 = connectPoint("dev1", 1); | 27 | private ConnectPoint point1 = connectPoint("dev1", 1); |
24 | private ConnectPoint point2 = connectPoint("dev2", 1); | 28 | private ConnectPoint point2 = connectPoint("dev2", 1); |
25 | private ConnectPoint point3 = connectPoint("dev3", 1); | 29 | private ConnectPoint point3 = connectPoint("dev3", 1); |
... | @@ -33,19 +37,14 @@ public class TestMultiPointToSinglePointIntent { | ... | @@ -33,19 +37,14 @@ public class TestMultiPointToSinglePointIntent { |
33 | /** | 37 | /** |
34 | * Creates a MultiPointToSinglePointIntent object. | 38 | * Creates a MultiPointToSinglePointIntent object. |
35 | * | 39 | * |
36 | - * @param id identifier to use for the new intent | ||
37 | * @param ingress set of ingress points | 40 | * @param ingress set of ingress points |
38 | * @param egress egress point | 41 | * @param egress egress point |
39 | * @return MultiPointToSinglePoint intent | 42 | * @return MultiPointToSinglePoint intent |
40 | */ | 43 | */ |
41 | - private MultiPointToSinglePointIntent makeIntent(long id, | 44 | + private MultiPointToSinglePointIntent makeIntent(Set<ConnectPoint> ingress, |
42 | - Set<ConnectPoint> ingress, | ||
43 | ConnectPoint egress) { | 45 | ConnectPoint egress) { |
44 | - return new MultiPointToSinglePointIntent(new IntentId(id), | 46 | + return new MultiPointToSinglePointIntent(APPID, selector, treatment, |
45 | - selector, | 47 | + ingress, egress); |
46 | - treatment, | ||
47 | - ingress, | ||
48 | - egress); | ||
49 | } | 48 | } |
50 | 49 | ||
51 | /** | 50 | /** |
... | @@ -72,8 +71,8 @@ public class TestMultiPointToSinglePointIntent { | ... | @@ -72,8 +71,8 @@ public class TestMultiPointToSinglePointIntent { |
72 | ingress2.add(point3); | 71 | ingress2.add(point3); |
73 | ingress2.add(point2); | 72 | ingress2.add(point2); |
74 | 73 | ||
75 | - Intent i1 = makeIntent(12, ingress1, point1); | 74 | + Intent i1 = makeIntent(ingress1, point1); |
76 | - Intent i2 = makeIntent(12, ingress2, point1); | 75 | + Intent i2 = makeIntent(ingress2, point1); |
77 | 76 | ||
78 | assertThat(i1, is(equalTo(i2))); | 77 | assertThat(i1, is(equalTo(i2))); |
79 | } | 78 | } |
... | @@ -89,23 +88,8 @@ public class TestMultiPointToSinglePointIntent { | ... | @@ -89,23 +88,8 @@ public class TestMultiPointToSinglePointIntent { |
89 | ingress2.add(point3); | 88 | ingress2.add(point3); |
90 | ingress2.add(point2); | 89 | ingress2.add(point2); |
91 | 90 | ||
92 | - Intent i1 = makeIntent(12, ingress1, point1); | 91 | + Intent i1 = makeIntent(ingress1, point1); |
93 | - Intent i2 = makeIntent(12, ingress2, point1); | 92 | + Intent i2 = makeIntent(ingress2, point1); |
94 | - | ||
95 | - assertThat(i1, is(not(equalTo(i2)))); | ||
96 | - } | ||
97 | - | ||
98 | - /** | ||
99 | - * Tests the equals() method where two MultiPointToSinglePoint have different | ||
100 | - * ids. These should compare not equal. | ||
101 | - */ | ||
102 | - @Test | ||
103 | - public void testBaseDifferentEquals() { | ||
104 | - ingress1.add(point3); | ||
105 | - ingress2.add(point3); | ||
106 | - | ||
107 | - Intent i1 = makeIntent(12, ingress1, point1); | ||
108 | - Intent i2 = makeIntent(11, ingress2, point1); | ||
109 | 93 | ||
110 | assertThat(i1, is(not(equalTo(i2)))); | 94 | assertThat(i1, is(not(equalTo(i2)))); |
111 | } | 95 | } |
... | @@ -122,8 +106,8 @@ public class TestMultiPointToSinglePointIntent { | ... | @@ -122,8 +106,8 @@ public class TestMultiPointToSinglePointIntent { |
122 | ingress2.add(point3); | 106 | ingress2.add(point3); |
123 | ingress2.add(point2); | 107 | ingress2.add(point2); |
124 | 108 | ||
125 | - Intent i1 = makeIntent(12, ingress1, point1); | 109 | + Intent i1 = makeIntent(ingress1, point1); |
126 | - Intent i2 = makeIntent(12, ingress2, point1); | 110 | + Intent i2 = makeIntent(ingress2, point1); |
127 | 111 | ||
128 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); | 112 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); |
129 | } | 113 | } |
... | @@ -139,8 +123,8 @@ public class TestMultiPointToSinglePointIntent { | ... | @@ -139,8 +123,8 @@ public class TestMultiPointToSinglePointIntent { |
139 | ingress2.add(point3); | 123 | ingress2.add(point3); |
140 | ingress2.add(point2); | 124 | ingress2.add(point2); |
141 | 125 | ||
142 | - Intent i1 = makeIntent(12, ingress1, point1); | 126 | + Intent i1 = makeIntent(ingress1, point1); |
143 | - Intent i2 = makeIntent(12, ingress2, point1); | 127 | + Intent i2 = makeIntent(ingress2, point1); |
144 | 128 | ||
145 | 129 | ||
146 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); | 130 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); | ... | ... |
1 | package org.onlab.onos.net.intent; | 1 | package org.onlab.onos.net.intent; |
2 | 2 | ||
3 | import org.junit.Test; | 3 | import org.junit.Test; |
4 | +import org.onlab.onos.ApplicationId; | ||
5 | +import org.onlab.onos.TestApplicationId; | ||
4 | import org.onlab.onos.net.ConnectPoint; | 6 | import org.onlab.onos.net.ConnectPoint; |
5 | import org.onlab.onos.net.flow.TrafficSelector; | 7 | import org.onlab.onos.net.flow.TrafficSelector; |
6 | import org.onlab.onos.net.flow.TrafficTreatment; | 8 | import org.onlab.onos.net.flow.TrafficTreatment; |
7 | 9 | ||
8 | import static org.hamcrest.MatcherAssert.assertThat; | 10 | import static org.hamcrest.MatcherAssert.assertThat; |
9 | -import static org.hamcrest.Matchers.equalTo; | 11 | +import static org.hamcrest.Matchers.*; |
10 | -import static org.hamcrest.Matchers.is; | ||
11 | -import static org.hamcrest.Matchers.not; | ||
12 | import static org.onlab.onos.net.NetTestTools.connectPoint; | 12 | import static org.onlab.onos.net.NetTestTools.connectPoint; |
13 | 13 | ||
14 | /** | 14 | /** |
... | @@ -16,20 +16,17 @@ import static org.onlab.onos.net.NetTestTools.connectPoint; | ... | @@ -16,20 +16,17 @@ import static org.onlab.onos.net.NetTestTools.connectPoint; |
16 | */ | 16 | */ |
17 | public class TestPointToPointIntent { | 17 | public class TestPointToPointIntent { |
18 | 18 | ||
19 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
20 | + | ||
19 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 21 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
20 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 22 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
21 | 23 | ||
22 | private ConnectPoint point1 = connectPoint("dev1", 1); | 24 | private ConnectPoint point1 = connectPoint("dev1", 1); |
23 | private ConnectPoint point2 = connectPoint("dev2", 1); | 25 | private ConnectPoint point2 = connectPoint("dev2", 1); |
24 | 26 | ||
25 | - private PointToPointIntent makePointToPoint(long id, | 27 | + private PointToPointIntent makePointToPoint(ConnectPoint ingress, |
26 | - ConnectPoint ingress, | ||
27 | ConnectPoint egress) { | 28 | ConnectPoint egress) { |
28 | - return new PointToPointIntent(new IntentId(id), | 29 | + return new PointToPointIntent(APPID, selector, treatment, ingress, egress); |
29 | - selector, | ||
30 | - treatment, | ||
31 | - ingress, | ||
32 | - egress); | ||
33 | } | 30 | } |
34 | 31 | ||
35 | /** | 32 | /** |
... | @@ -38,8 +35,8 @@ public class TestPointToPointIntent { | ... | @@ -38,8 +35,8 @@ public class TestPointToPointIntent { |
38 | */ | 35 | */ |
39 | @Test | 36 | @Test |
40 | public void testSameEquals() { | 37 | public void testSameEquals() { |
41 | - PointToPointIntent i1 = makePointToPoint(12, point1, point2); | 38 | + PointToPointIntent i1 = makePointToPoint(point1, point2); |
42 | - PointToPointIntent i2 = makePointToPoint(12, point1, point2); | 39 | + PointToPointIntent i2 = makePointToPoint(point1, point2); |
43 | 40 | ||
44 | assertThat(i1, is(equalTo(i2))); | 41 | assertThat(i1, is(equalTo(i2))); |
45 | } | 42 | } |
... | @@ -50,22 +47,8 @@ public class TestPointToPointIntent { | ... | @@ -50,22 +47,8 @@ public class TestPointToPointIntent { |
50 | */ | 47 | */ |
51 | @Test | 48 | @Test |
52 | public void testLinksDifferentEquals() { | 49 | public void testLinksDifferentEquals() { |
53 | - | 50 | + PointToPointIntent i1 = makePointToPoint(point1, point2); |
54 | - PointToPointIntent i1 = makePointToPoint(12, point1, point2); | 51 | + PointToPointIntent i2 = makePointToPoint(point2, point1); |
55 | - PointToPointIntent i2 = makePointToPoint(12, point2, point1); | ||
56 | - | ||
57 | - assertThat(i1, is(not(equalTo(i2)))); | ||
58 | - } | ||
59 | - | ||
60 | - /** | ||
61 | - * Tests the equals() method where two HostToHostIntents have different | ||
62 | - * ids. These should compare not equal. | ||
63 | - */ | ||
64 | - @Test | ||
65 | - public void testBaseDifferentEquals() { | ||
66 | - PointToPointIntent i1 = makePointToPoint(12, point1, point2); | ||
67 | - PointToPointIntent i2 = makePointToPoint(11, point1, point2); | ||
68 | - | ||
69 | 52 | ||
70 | assertThat(i1, is(not(equalTo(i2)))); | 53 | assertThat(i1, is(not(equalTo(i2)))); |
71 | } | 54 | } |
... | @@ -76,8 +59,8 @@ public class TestPointToPointIntent { | ... | @@ -76,8 +59,8 @@ public class TestPointToPointIntent { |
76 | */ | 59 | */ |
77 | @Test | 60 | @Test |
78 | public void testHashCodeEquals() { | 61 | public void testHashCodeEquals() { |
79 | - PointToPointIntent i1 = makePointToPoint(12, point1, point2); | 62 | + PointToPointIntent i1 = makePointToPoint(point1, point2); |
80 | - PointToPointIntent i2 = makePointToPoint(12, point1, point2); | 63 | + PointToPointIntent i2 = makePointToPoint(point1, point2); |
81 | 64 | ||
82 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); | 65 | assertThat(i1.hashCode(), is(equalTo(i2.hashCode()))); |
83 | } | 66 | } |
... | @@ -88,8 +71,8 @@ public class TestPointToPointIntent { | ... | @@ -88,8 +71,8 @@ public class TestPointToPointIntent { |
88 | */ | 71 | */ |
89 | @Test | 72 | @Test |
90 | public void testHashCodeDifferent() { | 73 | public void testHashCodeDifferent() { |
91 | - PointToPointIntent i1 = makePointToPoint(12, point1, point2); | 74 | + PointToPointIntent i1 = makePointToPoint(point1, point2); |
92 | - PointToPointIntent i2 = makePointToPoint(22, point1, point2); | 75 | + PointToPointIntent i2 = makePointToPoint(point2, point1); |
93 | 76 | ||
94 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); | 77 | assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode())))); |
95 | } | 78 | } | ... | ... |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.List; | ||
4 | - | ||
5 | import org.hamcrest.Matchers; | 3 | import org.hamcrest.Matchers; |
6 | import org.junit.Before; | 4 | import org.junit.Before; |
7 | import org.junit.Test; | 5 | import org.junit.Test; |
6 | +import org.onlab.onos.ApplicationId; | ||
7 | +import org.onlab.onos.TestApplicationId; | ||
8 | import org.onlab.onos.net.Host; | 8 | import org.onlab.onos.net.Host; |
9 | import org.onlab.onos.net.HostId; | 9 | import org.onlab.onos.net.HostId; |
10 | import org.onlab.onos.net.flow.TrafficSelector; | 10 | import org.onlab.onos.net.flow.TrafficSelector; |
... | @@ -12,16 +12,14 @@ import org.onlab.onos.net.flow.TrafficTreatment; | ... | @@ -12,16 +12,14 @@ import org.onlab.onos.net.flow.TrafficTreatment; |
12 | import org.onlab.onos.net.host.HostService; | 12 | import org.onlab.onos.net.host.HostService; |
13 | import org.onlab.onos.net.intent.HostToHostIntent; | 13 | import org.onlab.onos.net.intent.HostToHostIntent; |
14 | import org.onlab.onos.net.intent.Intent; | 14 | import org.onlab.onos.net.intent.Intent; |
15 | -import org.onlab.onos.net.intent.IntentId; | ||
16 | import org.onlab.onos.net.intent.IntentTestsMocks; | 15 | import org.onlab.onos.net.intent.IntentTestsMocks; |
17 | import org.onlab.onos.net.intent.PathIntent; | 16 | import org.onlab.onos.net.intent.PathIntent; |
18 | import org.onlab.packet.MacAddress; | 17 | import org.onlab.packet.MacAddress; |
19 | import org.onlab.packet.VlanId; | 18 | import org.onlab.packet.VlanId; |
20 | 19 | ||
21 | -import static org.easymock.EasyMock.createMock; | 20 | +import java.util.List; |
22 | -import static org.easymock.EasyMock.eq; | 21 | + |
23 | -import static org.easymock.EasyMock.expect; | 22 | +import static org.easymock.EasyMock.*; |
24 | -import static org.easymock.EasyMock.replay; | ||
25 | import static org.hamcrest.CoreMatchers.notNullValue; | 23 | import static org.hamcrest.CoreMatchers.notNullValue; |
26 | import static org.hamcrest.MatcherAssert.assertThat; | 24 | import static org.hamcrest.MatcherAssert.assertThat; |
27 | import static org.hamcrest.Matchers.hasSize; | 25 | import static org.hamcrest.Matchers.hasSize; |
... | @@ -40,6 +38,8 @@ public class TestHostToHostIntentCompiler { | ... | @@ -40,6 +38,8 @@ public class TestHostToHostIntentCompiler { |
40 | private static final String HOST_ONE = HOST_ONE_MAC + "/" + HOST_ONE_VLAN; | 38 | private static final String HOST_ONE = HOST_ONE_MAC + "/" + HOST_ONE_VLAN; |
41 | private static final String HOST_TWO = HOST_TWO_MAC + "/" + HOST_TWO_VLAN; | 39 | private static final String HOST_TWO = HOST_TWO_MAC + "/" + HOST_TWO_VLAN; |
42 | 40 | ||
41 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
42 | + | ||
43 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 43 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
44 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 44 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
45 | 45 | ||
... | @@ -73,11 +73,8 @@ public class TestHostToHostIntentCompiler { | ... | @@ -73,11 +73,8 @@ public class TestHostToHostIntentCompiler { |
73 | * @return HostToHostIntent for the two hosts | 73 | * @return HostToHostIntent for the two hosts |
74 | */ | 74 | */ |
75 | private HostToHostIntent makeIntent(String oneIdString, String twoIdString) { | 75 | private HostToHostIntent makeIntent(String oneIdString, String twoIdString) { |
76 | - return new HostToHostIntent(new IntentId(12), | 76 | + return new HostToHostIntent(APPID, hid(oneIdString), hid(twoIdString), |
77 | - hid(oneIdString), | 77 | + selector, treatment); |
78 | - hid(twoIdString), | ||
79 | - selector, | ||
80 | - treatment); | ||
81 | } | 78 | } |
82 | 79 | ||
83 | /** | 80 | /** |
... | @@ -91,9 +88,6 @@ public class TestHostToHostIntentCompiler { | ... | @@ -91,9 +88,6 @@ public class TestHostToHostIntentCompiler { |
91 | new HostToHostIntentCompiler(); | 88 | new HostToHostIntentCompiler(); |
92 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); | 89 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); |
93 | compiler.hostService = mockHostService; | 90 | compiler.hostService = mockHostService; |
94 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
95 | - compiler.intentIdGenerator = | ||
96 | - new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
97 | return compiler; | 91 | return compiler; |
98 | } | 92 | } |
99 | 93 | ... | ... |
core/net/src/test/java/org/onlab/onos/net/intent/impl/TestMultiPointToSinglePointIntentCompiler.java
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.HashSet; | ||
4 | -import java.util.List; | ||
5 | -import java.util.Set; | ||
6 | - | ||
7 | import org.hamcrest.Matchers; | 3 | import org.hamcrest.Matchers; |
8 | import org.junit.Test; | 4 | import org.junit.Test; |
5 | +import org.onlab.onos.ApplicationId; | ||
6 | +import org.onlab.onos.TestApplicationId; | ||
9 | import org.onlab.onos.net.ConnectPoint; | 7 | import org.onlab.onos.net.ConnectPoint; |
10 | import org.onlab.onos.net.ElementId; | 8 | import org.onlab.onos.net.ElementId; |
11 | import org.onlab.onos.net.Path; | 9 | import org.onlab.onos.net.Path; |
12 | import org.onlab.onos.net.flow.TrafficSelector; | 10 | import org.onlab.onos.net.flow.TrafficSelector; |
13 | import org.onlab.onos.net.flow.TrafficTreatment; | 11 | import org.onlab.onos.net.flow.TrafficTreatment; |
14 | import org.onlab.onos.net.intent.Intent; | 12 | import org.onlab.onos.net.intent.Intent; |
15 | -import org.onlab.onos.net.intent.IntentId; | ||
16 | import org.onlab.onos.net.intent.IntentTestsMocks; | 13 | import org.onlab.onos.net.intent.IntentTestsMocks; |
17 | import org.onlab.onos.net.intent.LinkCollectionIntent; | 14 | import org.onlab.onos.net.intent.LinkCollectionIntent; |
18 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; | 15 | import org.onlab.onos.net.intent.MultiPointToSinglePointIntent; |
19 | import org.onlab.onos.net.topology.LinkWeight; | 16 | import org.onlab.onos.net.topology.LinkWeight; |
20 | import org.onlab.onos.net.topology.PathService; | 17 | import org.onlab.onos.net.topology.PathService; |
21 | 18 | ||
19 | +import java.util.HashSet; | ||
20 | +import java.util.List; | ||
21 | +import java.util.Set; | ||
22 | + | ||
22 | import static org.hamcrest.CoreMatchers.notNullValue; | 23 | import static org.hamcrest.CoreMatchers.notNullValue; |
23 | import static org.hamcrest.MatcherAssert.assertThat; | 24 | import static org.hamcrest.MatcherAssert.assertThat; |
24 | import static org.hamcrest.Matchers.hasSize; | 25 | import static org.hamcrest.Matchers.hasSize; |
... | @@ -32,6 +33,8 @@ import static org.onlab.onos.net.intent.LinksHaveEntryWithSourceDestinationPairM | ... | @@ -32,6 +33,8 @@ import static org.onlab.onos.net.intent.LinksHaveEntryWithSourceDestinationPairM |
32 | */ | 33 | */ |
33 | public class TestMultiPointToSinglePointIntentCompiler { | 34 | public class TestMultiPointToSinglePointIntentCompiler { |
34 | 35 | ||
36 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
37 | + | ||
35 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 38 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
36 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 39 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
37 | 40 | ||
... | @@ -85,12 +88,8 @@ public class TestMultiPointToSinglePointIntentCompiler { | ... | @@ -85,12 +88,8 @@ public class TestMultiPointToSinglePointIntentCompiler { |
85 | ingressPoints.add(connectPoint(ingressId, 1)); | 88 | ingressPoints.add(connectPoint(ingressId, 1)); |
86 | } | 89 | } |
87 | 90 | ||
88 | - return new MultiPointToSinglePointIntent( | 91 | + return new MultiPointToSinglePointIntent(APPID, selector, treatment, |
89 | - new IntentId(12), | 92 | + ingressPoints, egressPoint); |
90 | - selector, | ||
91 | - treatment, | ||
92 | - ingressPoints, | ||
93 | - egressPoint); | ||
94 | } | 93 | } |
95 | 94 | ||
96 | /** | 95 | /** |
... | @@ -103,9 +102,6 @@ public class TestMultiPointToSinglePointIntentCompiler { | ... | @@ -103,9 +102,6 @@ public class TestMultiPointToSinglePointIntentCompiler { |
103 | MultiPointToSinglePointIntentCompiler compiler = | 102 | MultiPointToSinglePointIntentCompiler compiler = |
104 | new MultiPointToSinglePointIntentCompiler(); | 103 | new MultiPointToSinglePointIntentCompiler(); |
105 | compiler.pathService = new MockPathService(hops); | 104 | compiler.pathService = new MockPathService(hops); |
106 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
107 | - compiler.intentIdGenerator = | ||
108 | - new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
109 | return compiler; | 105 | return compiler; |
110 | } | 106 | } |
111 | 107 | ... | ... |
1 | package org.onlab.onos.net.intent.impl; | 1 | package org.onlab.onos.net.intent.impl; |
2 | 2 | ||
3 | -import java.util.List; | ||
4 | - | ||
5 | import org.hamcrest.Matchers; | 3 | import org.hamcrest.Matchers; |
6 | import org.junit.Test; | 4 | import org.junit.Test; |
5 | +import org.onlab.onos.ApplicationId; | ||
6 | +import org.onlab.onos.TestApplicationId; | ||
7 | import org.onlab.onos.net.flow.TrafficSelector; | 7 | import org.onlab.onos.net.flow.TrafficSelector; |
8 | import org.onlab.onos.net.flow.TrafficTreatment; | 8 | import org.onlab.onos.net.flow.TrafficTreatment; |
9 | import org.onlab.onos.net.intent.Intent; | 9 | import org.onlab.onos.net.intent.Intent; |
10 | -import org.onlab.onos.net.intent.IntentId; | ||
11 | import org.onlab.onos.net.intent.IntentTestsMocks; | 10 | import org.onlab.onos.net.intent.IntentTestsMocks; |
12 | import org.onlab.onos.net.intent.PathIntent; | 11 | import org.onlab.onos.net.intent.PathIntent; |
13 | import org.onlab.onos.net.intent.PointToPointIntent; | 12 | import org.onlab.onos.net.intent.PointToPointIntent; |
14 | 13 | ||
14 | +import java.util.List; | ||
15 | + | ||
15 | import static org.hamcrest.CoreMatchers.notNullValue; | 16 | import static org.hamcrest.CoreMatchers.notNullValue; |
16 | import static org.hamcrest.MatcherAssert.assertThat; | 17 | import static org.hamcrest.MatcherAssert.assertThat; |
17 | import static org.hamcrest.Matchers.hasSize; | 18 | import static org.hamcrest.Matchers.hasSize; |
... | @@ -24,6 +25,8 @@ import static org.onlab.onos.net.intent.LinksHaveEntryWithSourceDestinationPairM | ... | @@ -24,6 +25,8 @@ import static org.onlab.onos.net.intent.LinksHaveEntryWithSourceDestinationPairM |
24 | */ | 25 | */ |
25 | public class TestPointToPointIntentCompiler { | 26 | public class TestPointToPointIntentCompiler { |
26 | 27 | ||
28 | + private static final ApplicationId APPID = new TestApplicationId("foo"); | ||
29 | + | ||
27 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); | 30 | private TrafficSelector selector = new IntentTestsMocks.MockSelector(); |
28 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); | 31 | private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment(); |
29 | 32 | ||
... | @@ -36,9 +39,7 @@ public class TestPointToPointIntentCompiler { | ... | @@ -36,9 +39,7 @@ public class TestPointToPointIntentCompiler { |
36 | */ | 39 | */ |
37 | private PointToPointIntent makeIntent(String ingressIdString, | 40 | private PointToPointIntent makeIntent(String ingressIdString, |
38 | String egressIdString) { | 41 | String egressIdString) { |
39 | - return new PointToPointIntent(new IntentId(12), | 42 | + return new PointToPointIntent(APPID, selector, treatment, |
40 | - selector, | ||
41 | - treatment, | ||
42 | connectPoint(ingressIdString, 1), | 43 | connectPoint(ingressIdString, 1), |
43 | connectPoint(egressIdString, 1)); | 44 | connectPoint(egressIdString, 1)); |
44 | } | 45 | } |
... | @@ -53,9 +54,6 @@ public class TestPointToPointIntentCompiler { | ... | @@ -53,9 +54,6 @@ public class TestPointToPointIntentCompiler { |
53 | PointToPointIntentCompiler compiler = | 54 | PointToPointIntentCompiler compiler = |
54 | new PointToPointIntentCompiler(); | 55 | new PointToPointIntentCompiler(); |
55 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); | 56 | compiler.pathService = new IntentTestsMocks.MockPathService(hops); |
56 | - IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator(); | ||
57 | - compiler.intentIdGenerator = | ||
58 | - new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator); | ||
59 | return compiler; | 57 | return compiler; |
60 | } | 58 | } |
61 | 59 | ... | ... |
1 | package org.onlab.onos.store.intent.impl; | 1 | package org.onlab.onos.store.intent.impl; |
2 | 2 | ||
3 | -import static org.onlab.onos.net.intent.IntentState.FAILED; | 3 | +import com.google.common.collect.ImmutableSet; |
4 | -import static org.onlab.onos.net.intent.IntentState.INSTALLED; | ||
5 | -import static org.onlab.onos.net.intent.IntentState.SUBMITTED; | ||
6 | -import static org.onlab.onos.net.intent.IntentState.WITHDRAWN; | ||
7 | -import static org.slf4j.LoggerFactory.getLogger; | ||
8 | - | ||
9 | -import java.util.List; | ||
10 | -import java.util.Map; | ||
11 | -import java.util.concurrent.ConcurrentHashMap; | ||
12 | - | ||
13 | import org.apache.felix.scr.annotations.Activate; | 4 | import org.apache.felix.scr.annotations.Activate; |
14 | import org.apache.felix.scr.annotations.Component; | 5 | import org.apache.felix.scr.annotations.Component; |
15 | import org.apache.felix.scr.annotations.Deactivate; | 6 | import org.apache.felix.scr.annotations.Deactivate; |
16 | import org.apache.felix.scr.annotations.Service; | 7 | import org.apache.felix.scr.annotations.Service; |
17 | -import org.onlab.onos.net.intent.InstallableIntent; | ||
18 | import org.onlab.onos.net.intent.Intent; | 8 | import org.onlab.onos.net.intent.Intent; |
19 | import org.onlab.onos.net.intent.IntentEvent; | 9 | import org.onlab.onos.net.intent.IntentEvent; |
20 | import org.onlab.onos.net.intent.IntentId; | 10 | import org.onlab.onos.net.intent.IntentId; |
... | @@ -24,7 +14,12 @@ import org.onlab.onos.net.intent.IntentStoreDelegate; | ... | @@ -24,7 +14,12 @@ import org.onlab.onos.net.intent.IntentStoreDelegate; |
24 | import org.onlab.onos.store.AbstractStore; | 14 | import org.onlab.onos.store.AbstractStore; |
25 | import org.slf4j.Logger; | 15 | import org.slf4j.Logger; |
26 | 16 | ||
27 | -import com.google.common.collect.ImmutableSet; | 17 | +import java.util.List; |
18 | +import java.util.Map; | ||
19 | +import java.util.concurrent.ConcurrentHashMap; | ||
20 | + | ||
21 | +import static org.onlab.onos.net.intent.IntentState.*; | ||
22 | +import static org.slf4j.LoggerFactory.getLogger; | ||
28 | 23 | ||
29 | //FIXME: I LIE I AM NOT DISTRIBUTED | 24 | //FIXME: I LIE I AM NOT DISTRIBUTED |
30 | @Component(immediate = true) | 25 | @Component(immediate = true) |
... | @@ -36,8 +31,7 @@ public class DistributedIntentStore | ... | @@ -36,8 +31,7 @@ public class DistributedIntentStore |
36 | private final Logger log = getLogger(getClass()); | 31 | private final Logger log = getLogger(getClass()); |
37 | private final Map<IntentId, Intent> intents = new ConcurrentHashMap<>(); | 32 | private final Map<IntentId, Intent> intents = new ConcurrentHashMap<>(); |
38 | private final Map<IntentId, IntentState> states = new ConcurrentHashMap<>(); | 33 | private final Map<IntentId, IntentState> states = new ConcurrentHashMap<>(); |
39 | - private final Map<IntentId, List<InstallableIntent>> installable = | 34 | + private final Map<IntentId, List<Intent>> installable = new ConcurrentHashMap<>(); |
40 | - new ConcurrentHashMap<>(); | ||
41 | 35 | ||
42 | @Activate | 36 | @Activate |
43 | public void activate() { | 37 | public void activate() { |
... | @@ -97,12 +91,12 @@ public class DistributedIntentStore | ... | @@ -97,12 +91,12 @@ public class DistributedIntentStore |
97 | } | 91 | } |
98 | 92 | ||
99 | @Override | 93 | @Override |
100 | - public void addInstallableIntents(IntentId intentId, List<InstallableIntent> result) { | 94 | + public void addInstallableIntents(IntentId intentId, List<Intent> result) { |
101 | installable.put(intentId, result); | 95 | installable.put(intentId, result); |
102 | } | 96 | } |
103 | 97 | ||
104 | @Override | 98 | @Override |
105 | - public List<InstallableIntent> getInstallableIntents(IntentId intentId) { | 99 | + public List<Intent> getInstallableIntents(IntentId intentId) { |
106 | return installable.get(intentId); | 100 | return installable.get(intentId); |
107 | } | 101 | } |
108 | 102 | ... | ... |
-
Please register or login to post a comment