Refactoring intent API.
diff --git a/apps/ifwd/src/main/java/org/onlab/onos/ifwd/IntentReactiveForwarding.java b/apps/ifwd/src/main/java/org/onlab/onos/ifwd/IntentReactiveForwarding.java
index fded98f..defdf08 100644
--- a/apps/ifwd/src/main/java/org/onlab/onos/ifwd/IntentReactiveForwarding.java
+++ b/apps/ifwd/src/main/java/org/onlab/onos/ifwd/IntentReactiveForwarding.java
@@ -1,12 +1,12 @@
package org.onlab.onos.ifwd;
-import static org.slf4j.LoggerFactory.getLogger;
-
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.CoreService;
import org.onlab.onos.net.Host;
import org.onlab.onos.net.HostId;
import org.onlab.onos.net.PortNumber;
@@ -16,7 +16,6 @@
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.host.HostService;
import org.onlab.onos.net.intent.HostToHostIntent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.packet.DefaultOutboundPacket;
import org.onlab.onos.net.packet.InboundPacket;
@@ -28,6 +27,8 @@
import org.onlab.packet.Ethernet;
import org.slf4j.Logger;
+import static org.slf4j.LoggerFactory.getLogger;
+
/**
* WORK-IN-PROGRESS: Sample reactive forwarding application using intent framework.
*/
@@ -37,6 +38,9 @@
private final Logger log = getLogger(getClass());
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected CoreService coreService;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected TopologyService topologyService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -49,11 +53,11 @@
protected HostService hostService;
private ReactivePacketProcessor processor = new ReactivePacketProcessor();
-
- private static long intentId = 0x123000;
+ private ApplicationId appId;
@Activate
public void activate() {
+ appId = coreService.registerApplication("org.onlab.onos.ifwd");
packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2);
log.info("Started");
}
@@ -126,9 +130,8 @@
TrafficSelector selector = DefaultTrafficSelector.builder().build();
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
- HostToHostIntent intent =
- new HostToHostIntent(new IntentId(intentId++), srcId, dstId,
- selector, treatment);
+ HostToHostIntent intent = new HostToHostIntent(appId, srcId, dstId,
+ selector, treatment);
intentService.submit(intent);
}
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/PeerConnectivityManager.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/PeerConnectivityManager.java
index 3917f5a..400dba0 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/PeerConnectivityManager.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/PeerConnectivityManager.java
@@ -1,13 +1,11 @@
package org.onlab.onos.sdnip;
-import java.util.List;
-
+import org.onlab.onos.ApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.flow.DefaultTrafficSelector;
import org.onlab.onos.net.flow.DefaultTrafficTreatment;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.onos.sdnip.config.BgpPeer;
@@ -22,6 +20,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.List;
+
/**
* Manages the connectivity requirements between peers.
*/
@@ -38,11 +38,13 @@
private final InterfaceService interfaceService;
private final IntentService intentService;
- // TODO this sucks.
- private int intentId = 0;
+ private final ApplicationId appId;
- public PeerConnectivityManager(SdnIpConfigService configInfoService,
- InterfaceService interfaceService, IntentService intentService) {
+ public PeerConnectivityManager(ApplicationId appId,
+ SdnIpConfigService configInfoService,
+ InterfaceService interfaceService,
+ IntentService intentService) {
+ this.appId = appId;
this.configInfoService = configInfoService;
this.interfaceService = interfaceService;
this.intentService = intentService;
@@ -53,15 +55,15 @@
if (interfaceService.getInterfaces().isEmpty()) {
log.warn("The interface in configuration file is empty. "
- + "Thus, the SDN-IP application can not be started.");
+ + "Thus, the SDN-IP application can not be started.");
} else if (configInfoService.getBgpPeers().isEmpty()) {
log.warn("The BGP peer in configuration file is empty."
- + "Thus, the SDN-IP application can not be started.");
+ + "Thus, the SDN-IP application can not be started.");
} else if (configInfoService.getBgpSpeakers() == null) {
log.error("The BGP speaker in configuration file is empty. "
- + "Thus, the SDN-IP application can not be started.");
+ + "Thus, the SDN-IP application can not be started.");
return;
}
@@ -80,7 +82,7 @@
for (BgpSpeaker bgpSpeaker : configInfoService.getBgpSpeakers()
.values()) {
log.debug("Start to set up BGP paths for BGP speaker: {}",
- bgpSpeaker);
+ bgpSpeaker);
ConnectPoint bgpdConnectPoint = bgpSpeaker.connectPoint();
List<InterfaceAddress> interfaceAddresses =
@@ -89,14 +91,14 @@
for (BgpPeer bgpPeer : configInfoService.getBgpPeers().values()) {
log.debug("Start to set up BGP paths between BGP speaker: {} "
- + "to BGP peer: {}", bgpSpeaker, bgpPeer);
+ + "to BGP peer: {}", bgpSpeaker, bgpPeer);
Interface peerInterface = interfaceService.getInterface(
bgpPeer.connectPoint());
if (peerInterface == null) {
log.error("Can not find the corresponding Interface from "
- + "configuration for BGP peer {}",
- bgpPeer.ipAddress());
+ + "configuration for BGP peer {}",
+ bgpPeer.ipAddress());
continue;
}
@@ -110,7 +112,7 @@
}
if (bgpdAddress == null) {
log.debug("There is no interface IP address for bgpPeer: {}"
- + " on interface {}", bgpPeer, bgpPeer.connectPoint());
+ + " on interface {}", bgpPeer, bgpPeer.connectPoint());
return;
}
@@ -123,7 +125,7 @@
// TODO: The usage of PacketMatchBuilder will be improved, then we
// only need to new the PacketMatchBuilder once.
// By then, the code here will be improved accordingly.
- TrafficSelector selector = DefaultTrafficSelector.builder()
+ TrafficSelector selector = DefaultTrafficSelector.builder()
.matchEthType(Ethernet.TYPE_IPV4)
.matchIPProtocol(IPv4.PROTOCOL_TCP)
.matchIPSrc(IpPrefix.valueOf(bgpdAddress.toInt(), IPV4_BIT_LENGTH))
@@ -134,13 +136,13 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder()
.build();
- PointToPointIntent intentMatchDstTcpPort = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdConnectPoint, bgpdPeerConnectPoint);
+ PointToPointIntent intentMatchDstTcpPort =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdConnectPoint, bgpdPeerConnectPoint);
intentService.submit(intentMatchDstTcpPort);
log.debug("Submitted BGP path intent matching dst TCP port 179 "
- + "from BGPd {} to peer {}: {}",
- bgpdAddress, bgpdPeerAddress, intentMatchDstTcpPort);
+ + "from BGPd {} to peer {}: {}",
+ bgpdAddress, bgpdPeerAddress, intentMatchDstTcpPort);
// install intent for BGP path from BGPd to BGP peer matching
// source TCP port 179
@@ -152,13 +154,13 @@
.matchTcpSrc(BGP_PORT)
.build();
- PointToPointIntent intentMatchSrcTcpPort = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdConnectPoint, bgpdPeerConnectPoint);
+ PointToPointIntent intentMatchSrcTcpPort =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdConnectPoint, bgpdPeerConnectPoint);
intentService.submit(intentMatchSrcTcpPort);
log.debug("Submitted BGP path intent matching src TCP port 179"
- + "from BGPd {} to peer {}: {}",
- bgpdAddress, bgpdPeerAddress, intentMatchSrcTcpPort);
+ + "from BGPd {} to peer {}: {}",
+ bgpdAddress, bgpdPeerAddress, intentMatchSrcTcpPort);
// install intent for reversed BGP path from BGP peer to BGPd
// matching destination TCP port 179
@@ -170,13 +172,13 @@
.matchTcpDst(BGP_PORT)
.build();
- PointToPointIntent reversedIntentMatchDstTcpPort = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdPeerConnectPoint, bgpdConnectPoint);
+ PointToPointIntent reversedIntentMatchDstTcpPort =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdPeerConnectPoint, bgpdConnectPoint);
intentService.submit(reversedIntentMatchDstTcpPort);
log.debug("Submitted BGP path intent matching dst TCP port 179"
- + "from BGP peer {} to BGPd {} : {}",
- bgpdPeerAddress, bgpdAddress, reversedIntentMatchDstTcpPort);
+ + "from BGP peer {} to BGPd {} : {}",
+ bgpdPeerAddress, bgpdAddress, reversedIntentMatchDstTcpPort);
// install intent for reversed BGP path from BGP peer to BGPd
// matching source TCP port 179
@@ -188,13 +190,13 @@
.matchTcpSrc(BGP_PORT)
.build();
- PointToPointIntent reversedIntentMatchSrcTcpPort = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdPeerConnectPoint, bgpdConnectPoint);
+ PointToPointIntent reversedIntentMatchSrcTcpPort =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdPeerConnectPoint, bgpdConnectPoint);
intentService.submit(reversedIntentMatchSrcTcpPort);
log.debug("Submitted BGP path intent matching src TCP port 179"
- + "from BGP peer {} to BGPd {} : {}",
- bgpdPeerAddress, bgpdAddress, reversedIntentMatchSrcTcpPort);
+ + "from BGP peer {} to BGPd {} : {}",
+ bgpdPeerAddress, bgpdAddress, reversedIntentMatchSrcTcpPort);
}
}
@@ -212,7 +214,7 @@
for (BgpSpeaker bgpSpeaker : configInfoService.getBgpSpeakers()
.values()) {
log.debug("Start to set up ICMP paths for BGP speaker: {}",
- bgpSpeaker);
+ bgpSpeaker);
ConnectPoint bgpdConnectPoint = bgpSpeaker.connectPoint();
List<InterfaceAddress> interfaceAddresses = bgpSpeaker
.interfaceAddresses();
@@ -224,8 +226,8 @@
if (peerInterface == null) {
log.error("Can not find the corresponding Interface from "
- + "configuration for BGP peer {}",
- bgpPeer.ipAddress());
+ + "configuration for BGP peer {}",
+ bgpPeer.ipAddress());
continue;
}
IpAddress bgpdAddress = null;
@@ -239,8 +241,8 @@
}
if (bgpdAddress == null) {
log.debug("There is no IP address for bgpPeer: {} on "
- + "interface port: {}", bgpPeer,
- bgpPeer.connectPoint());
+ + "interface port: {}", bgpPeer,
+ bgpPeer.connectPoint());
return;
}
@@ -258,12 +260,12 @@
TrafficTreatment treatment = DefaultTrafficTreatment.builder()
.build();
- PointToPointIntent intent = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdConnectPoint, bgpdPeerConnectPoint);
+ PointToPointIntent intent =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdConnectPoint, bgpdPeerConnectPoint);
intentService.submit(intent);
log.debug("Submitted ICMP path intent from BGPd {} to peer {} :"
- + " {}", bgpdAddress, bgpdPeerAddress, intent);
+ + " {}", bgpdAddress, bgpdPeerAddress, intent);
// install intent for reversed ICMP path from BGP peer to BGPd
selector = DefaultTrafficSelector.builder()
@@ -273,18 +275,15 @@
.matchIPDst(IpPrefix.valueOf(bgpdAddress.toInt(), IPV4_BIT_LENGTH))
.build();
- PointToPointIntent reversedIntent = new PointToPointIntent(
- nextIntentId(), selector, treatment,
- bgpdPeerConnectPoint, bgpdConnectPoint);
+ PointToPointIntent reversedIntent =
+ new PointToPointIntent(appId, selector, treatment,
+ bgpdPeerConnectPoint, bgpdConnectPoint);
intentService.submit(reversedIntent);
log.debug("Submitted ICMP path intent from BGP peer {} to BGPd"
- + " {} : {}",
- bgpdPeerAddress, bgpdAddress, reversedIntent);
+ + " {} : {}",
+ bgpdPeerAddress, bgpdAddress, reversedIntent);
}
}
}
- private IntentId nextIntentId() {
- return new IntentId(intentId++);
- }
}
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index d610361..ca25a76 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -1,5 +1,41 @@
package org.onlab.onos.sdnip;
+import com.google.common.base.Objects;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimaps;
+import com.google.common.collect.SetMultimap;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import com.googlecode.concurrenttrees.common.KeyValuePair;
+import com.googlecode.concurrenttrees.radix.node.concrete.DefaultByteArrayNodeFactory;
+import com.googlecode.concurrenttrees.radixinverted.ConcurrentInvertedRadixTree;
+import com.googlecode.concurrenttrees.radixinverted.InvertedRadixTree;
+import org.apache.commons.lang3.tuple.Pair;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.Host;
+import org.onlab.onos.net.flow.DefaultTrafficSelector;
+import org.onlab.onos.net.flow.DefaultTrafficTreatment;
+import org.onlab.onos.net.flow.TrafficSelector;
+import org.onlab.onos.net.flow.TrafficTreatment;
+import org.onlab.onos.net.flow.criteria.Criteria.IPCriterion;
+import org.onlab.onos.net.flow.criteria.Criterion;
+import org.onlab.onos.net.flow.criteria.Criterion.Type;
+import org.onlab.onos.net.host.HostEvent;
+import org.onlab.onos.net.host.HostListener;
+import org.onlab.onos.net.host.HostService;
+import org.onlab.onos.net.intent.Intent;
+import org.onlab.onos.net.intent.IntentService;
+import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
+import org.onlab.onos.sdnip.config.BgpPeer;
+import org.onlab.onos.sdnip.config.Interface;
+import org.onlab.onos.sdnip.config.SdnIpConfigService;
+import org.onlab.packet.Ethernet;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -15,47 +51,10 @@
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.Semaphore;
-import org.apache.commons.lang3.tuple.Pair;
-import org.onlab.onos.net.ConnectPoint;
-import org.onlab.onos.net.Host;
-import org.onlab.onos.net.flow.DefaultTrafficSelector;
-import org.onlab.onos.net.flow.DefaultTrafficTreatment;
-import org.onlab.onos.net.flow.TrafficSelector;
-import org.onlab.onos.net.flow.TrafficTreatment;
-import org.onlab.onos.net.flow.criteria.Criteria.IPCriterion;
-import org.onlab.onos.net.flow.criteria.Criterion;
-import org.onlab.onos.net.flow.criteria.Criterion.Type;
-import org.onlab.onos.net.host.HostEvent;
-import org.onlab.onos.net.host.HostListener;
-import org.onlab.onos.net.host.HostService;
-import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
-import org.onlab.onos.net.intent.IntentService;
-import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
-import org.onlab.onos.sdnip.config.BgpPeer;
-import org.onlab.onos.sdnip.config.Interface;
-import org.onlab.onos.sdnip.config.SdnIpConfigService;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.MacAddress;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Objects;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimaps;
-import com.google.common.collect.SetMultimap;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.googlecode.concurrenttrees.common.KeyValuePair;
-import com.googlecode.concurrenttrees.radix.node.concrete.DefaultByteArrayNodeFactory;
-import com.googlecode.concurrenttrees.radixinverted.ConcurrentInvertedRadixTree;
-import com.googlecode.concurrenttrees.radixinverted.InvertedRadixTree;
-
/**
* This class processes BGP route update, translates each update into a intent
* and submits the intent.
- *
+ * <p/>
* TODO: Make it thread-safe.
*/
public class Router implements RouteListener {
@@ -82,8 +81,7 @@
private ExecutorService bgpUpdatesExecutor;
private ExecutorService bgpIntentsSynchronizerExecutor;
- // TODO temporary
- private int intentId = Integer.MAX_VALUE / 2;
+ private final ApplicationId appId;
//
// State to deal with SDN-IP Leader election and pushing Intents
@@ -99,14 +97,15 @@
/**
* Class constructor.
*
- * @param intentService the intent service
- * @param hostService the host service
+ * @param intentService the intent service
+ * @param hostService the host service
* @param configInfoService the configuration service
- * @param interfaceService the interface service
+ * @param interfaceService the interface service
*/
- public Router(IntentService intentService, HostService hostService,
- SdnIpConfigService configInfoService, InterfaceService interfaceService) {
-
+ public Router(ApplicationId appId, IntentService intentService,
+ HostService hostService, SdnIpConfigService configInfoService,
+ InterfaceService interfaceService) {
+ this.appId = appId;
this.intentService = intentService;
this.hostService = hostService;
this.configInfoService = configInfoService;
@@ -123,7 +122,7 @@
new ThreadFactoryBuilder().setNameFormat("bgp-updates-%d").build());
bgpIntentsSynchronizerExecutor = Executors.newSingleThreadExecutor(
new ThreadFactoryBuilder()
- .setNameFormat("bgp-intents-synchronizer-%d").build());
+ .setNameFormat("bgp-intents-synchronizer-%d").build());
this.hostService.addListener(new InternalHostListener());
}
@@ -198,7 +197,7 @@
intentsSynchronizerSemaphore.drainPermits();
} catch (InterruptedException e) {
log.debug("Interrupted while waiting to become " +
- "Intent Synchronization leader");
+ "Intent Synchronization leader");
interrupted = true;
break;
}
@@ -221,15 +220,15 @@
try {
RouteUpdate update = routeUpdates.take();
switch (update.type()) {
- case UPDATE:
- processRouteAdd(update.routeEntry());
- break;
- case DELETE:
- processRouteDelete(update.routeEntry());
- break;
- default:
- log.error("Unknown update Type: {}", update.type());
- break;
+ case UPDATE:
+ processRouteAdd(update.routeEntry());
+ break;
+ case DELETE:
+ processRouteDelete(update.routeEntry());
+ break;
+ default:
+ log.error("Unknown update Type: {}", update.type());
+ break;
}
} catch (InterruptedException e) {
log.debug("Interrupted while taking from updates queue", e);
@@ -257,7 +256,7 @@
log.debug("Syncing SDN-IP Route Intents...");
Map<IpPrefix, MultiPointToSinglePointIntent> fetchedIntents =
- new HashMap<>();
+ new HashMap<>();
//
// Fetch all intents, and classify the Multi-Point-to-Point Intents
@@ -272,7 +271,7 @@
continue;
}
MultiPointToSinglePointIntent mp2pIntent =
- (MultiPointToSinglePointIntent) intent;
+ (MultiPointToSinglePointIntent) intent;
/*Match match = mp2pIntent.getMatch();
if (!(match instanceof PacketMatch)) {
continue;
@@ -309,18 +308,18 @@
// Intent.
//
Collection<Pair<IpPrefix, MultiPointToSinglePointIntent>>
- storeInMemoryIntents = new LinkedList<>();
+ storeInMemoryIntents = new LinkedList<>();
Collection<Pair<IpPrefix, MultiPointToSinglePointIntent>>
- addIntents = new LinkedList<>();
+ addIntents = new LinkedList<>();
Collection<Pair<IpPrefix, MultiPointToSinglePointIntent>>
- deleteIntents = new LinkedList<>();
+ deleteIntents = new LinkedList<>();
for (Map.Entry<IpPrefix, MultiPointToSinglePointIntent> entry :
- pushedRouteIntents.entrySet()) {
+ pushedRouteIntents.entrySet()) {
IpPrefix prefix = entry.getKey();
MultiPointToSinglePointIntent inMemoryIntent =
- entry.getValue();
+ entry.getValue();
MultiPointToSinglePointIntent fetchedIntent =
- fetchedIntents.get(prefix);
+ fetchedIntents.get(prefix);
if (fetchedIntent == null) {
//
@@ -354,7 +353,7 @@
// Any remaining FETCHED Intents have to be deleted/withdrawn
//
for (Map.Entry<IpPrefix, MultiPointToSinglePointIntent> entry :
- fetchedIntents.entrySet()) {
+ fetchedIntents.entrySet()) {
IpPrefix prefix = entry.getKey();
MultiPointToSinglePointIntent fetchedIntent = entry.getValue();
deleteIntents.add(Pair.of(prefix, fetchedIntent));
@@ -368,17 +367,17 @@
// 3. Add intents: check if the leader before each operation
//
for (Pair<IpPrefix, MultiPointToSinglePointIntent> pair :
- storeInMemoryIntents) {
+ storeInMemoryIntents) {
IpPrefix prefix = pair.getLeft();
MultiPointToSinglePointIntent intent = pair.getRight();
log.debug("Intent synchronization: updating in-memory " +
- "Intent for prefix: {}", prefix);
+ "Intent for prefix: {}", prefix);
pushedRouteIntents.put(prefix, intent);
}
//
isActivatedLeader = true; // Allow push of Intents
for (Pair<IpPrefix, MultiPointToSinglePointIntent> pair :
- deleteIntents) {
+ deleteIntents) {
IpPrefix prefix = pair.getLeft();
MultiPointToSinglePointIntent intent = pair.getRight();
if (!isElectedLeader) {
@@ -386,12 +385,12 @@
return;
}
log.debug("Intent synchronization: deleting Intent for " +
- "prefix: {}", prefix);
+ "prefix: {}", prefix);
intentService.withdraw(intent);
}
//
for (Pair<IpPrefix, MultiPointToSinglePointIntent> pair :
- addIntents) {
+ addIntents) {
IpPrefix prefix = pair.getLeft();
MultiPointToSinglePointIntent intent = pair.getRight();
if (!isElectedLeader) {
@@ -399,7 +398,7 @@
return;
}
log.debug("Intent synchronization: adding Intent for " +
- "prefix: {}", prefix);
+ "prefix: {}", prefix);
intentService.submit(intent);
}
if (!isElectedLeader) {
@@ -419,8 +418,8 @@
* false
*/
private boolean compareMultiPointToSinglePointIntents(
- MultiPointToSinglePointIntent intent1,
- MultiPointToSinglePointIntent intent2) {
+ MultiPointToSinglePointIntent intent1,
+ MultiPointToSinglePointIntent intent2) {
/*Match match1 = intent1.getMatch();
Match match2 = intent2.getMatch();
Action action1 = intent1.getAction();
@@ -457,8 +456,8 @@
IpPrefix prefix = routeEntry.prefix();
IpAddress nextHop = null;
RouteEntry foundRouteEntry =
- bgpRoutes.put(RouteEntry.createBinaryString(prefix),
- routeEntry);
+ bgpRoutes.put(RouteEntry.createBinaryString(prefix),
+ routeEntry);
if (foundRouteEntry != null) {
nextHop = foundRouteEntry.nextHop();
}
@@ -500,7 +499,7 @@
// See if we know the MAC address of the next hop
//MacAddress nextHopMacAddress =
- //proxyArp.getMacAddress(routeEntry.getNextHop());
+ //proxyArp.getMacAddress(routeEntry.getNextHop());
MacAddress nextHopMacAddress = null;
Set<Host> hosts = hostService.getHostsByIp(
routeEntry.nextHop().toPrefix());
@@ -526,8 +525,8 @@
* Adds a route intent given a prefix and a next hop IP address. This
* method will find the egress interface for the intent.
*
- * @param prefix IP prefix of the route to add
- * @param nextHopIpAddress IP address of the next hop
+ * @param prefix IP prefix of the route to add
+ * @param nextHopIpAddress IP address of the next hop
* @param nextHopMacAddress MAC address of the next hop
*/
private void addRouteIntentToNextHop(IpPrefix prefix,
@@ -540,14 +539,14 @@
// Route to a peer
log.debug("Route to peer {}", nextHopIpAddress);
BgpPeer peer =
- configInfoService.getBgpPeers().get(nextHopIpAddress);
+ configInfoService.getBgpPeers().get(nextHopIpAddress);
egressInterface =
- interfaceService.getInterface(peer.connectPoint());
+ interfaceService.getInterface(peer.connectPoint());
} else {
// Route to non-peer
log.debug("Route to non-peer {}", nextHopIpAddress);
egressInterface =
- interfaceService.getMatchingInterface(nextHopIpAddress);
+ interfaceService.getMatchingInterface(nextHopIpAddress);
if (egressInterface == null) {
log.warn("No outgoing interface found for {}",
nextHopIpAddress);
@@ -564,17 +563,17 @@
* Intent will match dst IP prefix and rewrite dst MAC address at all other
* border switches, then forward packets according to dst MAC address.
*
- * @param prefix IP prefix from route
- * @param egressInterface egress Interface connected to next hop router
+ * @param prefix IP prefix from route
+ * @param egressInterface egress Interface connected to next hop router
* @param nextHopMacAddress MAC address of next hop router
*/
private void doAddRouteIntent(IpPrefix prefix, Interface egressInterface,
- MacAddress nextHopMacAddress) {
+ MacAddress nextHopMacAddress) {
log.debug("Adding intent for prefix {}, next hop mac {}",
prefix, nextHopMacAddress);
MultiPointToSinglePointIntent pushedIntent =
- pushedRouteIntents.get(prefix);
+ pushedRouteIntents.get(prefix);
// Just for testing.
if (pushedIntent != null) {
@@ -603,14 +602,14 @@
// Rewrite the destination MAC address
//ModifyDstMacAction modifyDstMacAction =
- //new ModifyDstMacAction(nextHopMacAddress);
+ //new ModifyDstMacAction(nextHopMacAddress);
TrafficTreatment treatment = DefaultTrafficTreatment.builder()
.setEthDst(nextHopMacAddress)
.build();
MultiPointToSinglePointIntent intent =
- new MultiPointToSinglePointIntent(nextIntentId(),
- selector, treatment, ingressPorts, egressPort);
+ new MultiPointToSinglePointIntent(appId, selector, treatment,
+ ingressPorts, egressPort);
if (isElectedLeader && isActivatedLeader) {
log.debug("Intent installation: adding Intent for prefix: {}",
@@ -665,11 +664,11 @@
IpPrefix prefix = routeEntry.prefix();
MultiPointToSinglePointIntent intent =
- pushedRouteIntents.remove(prefix);
+ pushedRouteIntents.remove(prefix);
if (intent == null) {
log.debug("There is no intent in pushedRouteIntents to delete " +
- "for prefix: {}", prefix);
+ "for prefix: {}", prefix);
} else {
if (isElectedLeader && isActivatedLeader) {
log.debug("Intent installation: deleting Intent for prefix: {}",
@@ -683,8 +682,8 @@
* This method handles the prefixes which are waiting for ARP replies for
* MAC addresses of next hops.
*
- * @param ipAddress next hop router IP address, for which we sent ARP
- * request out
+ * @param ipAddress next hop router IP address, for which we sent ARP
+ * request out
* @param macAddress MAC address which is relative to the ipAddress
*/
//@Override
@@ -692,22 +691,22 @@
public void arpResponse(IpAddress ipAddress, MacAddress macAddress) {
log.debug("Received ARP response: {} => {}", ipAddress, macAddress);
- // We synchronize on this to prevent changes to the radix tree
- // while we're pushing intents. If the tree changes, the
- // tree and intents could get out of sync.
+ // We synchronize on this to prevent changes to the radix tree
+ // while we're pushing intents. If the tree changes, the
+ // tree and intents could get out of sync.
synchronized (this) {
Set<RouteEntry> routesToPush =
- routesWaitingOnArp.removeAll(ipAddress);
+ routesWaitingOnArp.removeAll(ipAddress);
for (RouteEntry routeEntry : routesToPush) {
// These will always be adds
IpPrefix prefix = routeEntry.prefix();
String binaryString = RouteEntry.createBinaryString(prefix);
RouteEntry foundRouteEntry =
- bgpRoutes.getValueForExactKey(binaryString);
+ bgpRoutes.getValueForExactKey(binaryString);
if (foundRouteEntry != null &&
- foundRouteEntry.nextHop().equals(routeEntry.nextHop())) {
+ foundRouteEntry.nextHop().equals(routeEntry.nextHop())) {
log.debug("Pushing prefix {} next hop {}",
routeEntry.prefix(), routeEntry.nextHop());
// We only push prefix flows if the prefix is still in the
@@ -718,8 +717,8 @@
addRouteIntentToNextHop(prefix, ipAddress, macAddress);
} else {
log.debug("Received ARP response, but {}/{} is no longer in"
- + " the radix tree", routeEntry.prefix(),
- routeEntry.nextHop());
+ + " the radix tree", routeEntry.prefix(),
+ routeEntry.nextHop());
}
}
}
@@ -745,15 +744,6 @@
}
/**
- * Generates a new unique intent ID.
- *
- * @return the new intent ID.
- */
- private IntentId nextIntentId() {
- return new IntentId(intentId++);
- }
-
- /**
* Listener for host events.
*/
class InternalHostListener implements HostListener {
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
index 529e60a..54aa9e5 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/SdnIp.java
@@ -10,6 +10,8 @@
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.CoreService;
import org.onlab.onos.net.host.HostService;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.sdnip.bgp.BgpRouteEntry;
@@ -24,9 +26,14 @@
@Service
public class SdnIp implements SdnIpService {
+ private static final String SDN_ID_APP = "org.onlab.onos.sdnip";
+
private final Logger log = getLogger(getClass());
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected CoreService coreService;
+
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected IntentService intentService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
@@ -46,10 +53,11 @@
InterfaceService interfaceService = new HostToInterfaceAdaptor(hostService);
- peerConnectivity = new PeerConnectivityManager(config, interfaceService, intentService);
+ ApplicationId appId = coreService.registerApplication(SDN_ID_APP);
+ peerConnectivity = new PeerConnectivityManager(appId, config, interfaceService, intentService);
peerConnectivity.start();
- router = new Router(intentService, hostService, config, interfaceService);
+ router = new Router(appId, intentService, hostService, config, interfaceService);
router.start();
bgpSessionManager = new BgpSessionManager(router);
diff --git a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/PeerConnectivityManagerTest.java b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/PeerConnectivityManagerTest.java
index 0ecea00..962a6ec 100644
--- a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/PeerConnectivityManagerTest.java
+++ b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/PeerConnectivityManagerTest.java
@@ -1,23 +1,11 @@
package org.onlab.onos.sdnip;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.reportMatcher;
-import static org.easymock.EasyMock.reset;
-import static org.easymock.EasyMock.verify;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
+import com.google.common.collect.Sets;
import org.easymock.IArgumentMatcher;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.PortNumber;
@@ -25,7 +13,6 @@
import org.onlab.onos.net.flow.DefaultTrafficTreatment;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.onos.sdnip.bgp.BgpConstants;
@@ -40,13 +27,32 @@
import org.onlab.packet.IpPrefix;
import org.onlab.packet.MacAddress;
-import com.google.common.collect.Sets;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import static org.easymock.EasyMock.*;
/**
* Unit tests for PeerConnectivityManager interface.
*/
public class PeerConnectivityManagerTest {
+ private static final ApplicationId APPID = new ApplicationId() {
+ @Override
+ public short id() {
+ return 0;
+ }
+
+ @Override
+ public String name() {
+ return "foo";
+ }
+ };
+
private PeerConnectivityManager peerConnectivityManager;
private IntentService intentService;
private SdnIpConfigService configInfoService;
@@ -81,9 +87,6 @@
private final ConnectPoint s2Eth1 =
new ConnectPoint(deviceId2, PortNumber.portNumber(1));
- // We don't compare the intent ID so all expected intents can use the same ID
- private final IntentId testIntentId = new IntentId(0);
-
private final TrafficTreatment noTreatment =
DefaultTrafficTreatment.builder().build();
@@ -257,7 +260,7 @@
}
PointToPointIntent intent = new PointToPointIntent(
- testIntentId, builder.build(), noTreatment,
+ APPID, builder.build(), noTreatment,
srcConnectPoint, dstConnectPoint);
intentList.add(intent);
@@ -429,7 +432,7 @@
.build();
PointToPointIntent intent = new PointToPointIntent(
- testIntentId, selector, noTreatment,
+ APPID, selector, noTreatment,
srcConnectPoint, dstConnectPoint);
intentList.add(intent);
@@ -511,7 +514,7 @@
intentService = createMock(IntentService.class);
replay(intentService);
- peerConnectivityManager = new PeerConnectivityManager(configInfoService,
+ peerConnectivityManager = new PeerConnectivityManager(APPID, configInfoService,
interfaceService, intentService);
}
@@ -557,7 +560,7 @@
providedIntentString = providedIntent.toString();
PointToPointIntent matchIntent =
- new PointToPointIntent(providedIntent.id(),
+ new PointToPointIntent(providedIntent.appId(),
intent.selector(), intent.treatment(),
intent.ingressPoint(), intent.egressPoint());
diff --git a/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java b/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java
index 839d2841..5c68a22 100644
--- a/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java
@@ -2,6 +2,8 @@
import org.apache.karaf.shell.commands.Option;
import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.CoreService;
import org.onlab.osgi.DefaultServiceDirectory;
import org.onlab.osgi.ServiceNotFoundException;
@@ -27,6 +29,15 @@
}
/**
+ * Returns application ID for the CLI.
+ *
+ * @return command-line application identifier
+ */
+ protected ApplicationId appId() {
+ return get(CoreService.class).registerApplication("org.onlab.onos.cli");
+ }
+
+ /**
* Prints the arguments using the specified format.
*
* @param format format string; see {@link String#format}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/AddHostToHostIntentCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/AddHostToHostIntentCommand.java
index 837a0a7..5a75a17 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/AddHostToHostIntentCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/AddHostToHostIntentCommand.java
@@ -9,7 +9,6 @@
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.intent.HostToHostIntent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
/**
@@ -27,8 +26,6 @@
required = true, multiValued = false)
String two = null;
- private static long id = 0x7870001;
-
@Override
protected void execute() {
IntentService service = get(IntentService.class);
@@ -39,9 +36,8 @@
TrafficSelector selector = DefaultTrafficSelector.builder().build();
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
- HostToHostIntent intent =
- new HostToHostIntent(new IntentId(id++), oneId, twoId,
- selector, treatment);
+ HostToHostIntent intent = new HostToHostIntent(appId(), oneId, twoId,
+ selector, treatment);
service.submit(intent);
}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/AddMultiPointToSinglePointIntentCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/AddMultiPointToSinglePointIntentCommand.java
index cdae8a6..56bbdaf 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/AddMultiPointToSinglePointIntentCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/AddMultiPointToSinglePointIntentCommand.java
@@ -1,8 +1,5 @@
package org.onlab.onos.cli.net;
-import java.util.HashSet;
-import java.util.Set;
-
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onlab.onos.cli.AbstractShellCommand;
@@ -14,11 +11,16 @@
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
import org.onlab.packet.Ethernet;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.onlab.onos.net.DeviceId.deviceId;
+import static org.onlab.onos.net.PortNumber.portNumber;
+
/**
* Installs point-to-point connectivity intents.
*/
@@ -31,8 +33,6 @@
required = true, multiValued = true)
String[] deviceStrings = null;
- private static long id = 0x7070001;
-
@Override
protected void execute() {
IntentService service = get(IntentService.class);
@@ -42,33 +42,26 @@
}
String egressDeviceString = deviceStrings[deviceStrings.length - 1];
- DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString));
- PortNumber egressPortNumber =
- PortNumber.portNumber(getPortNumber(egressDeviceString));
+ DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString));
+ PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
Set<ConnectPoint> ingressPoints = new HashSet<>();
for (int index = 0; index < deviceStrings.length - 1; index++) {
String ingressDeviceString = deviceStrings[index];
- DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString));
- PortNumber ingressPortNumber =
- PortNumber.portNumber(getPortNumber(ingressDeviceString));
+ DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString));
+ PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString));
ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber);
ingressPoints.add(ingress);
}
-
TrafficSelector selector = DefaultTrafficSelector.builder()
.matchEthType(Ethernet.TYPE_IPV4)
.build();
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
- Intent intent =
- new MultiPointToSinglePointIntent(new IntentId(id++),
- selector,
- treatment,
- ingressPoints,
- egress);
+ Intent intent = new MultiPointToSinglePointIntent(appId(), selector, treatment,
+ ingressPoints, egress);
service.submit(intent);
}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
index 89ec7f6..bd24366 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/AddPointToPointIntentCommand.java
@@ -11,11 +11,13 @@
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.packet.Ethernet;
+import static org.onlab.onos.net.DeviceId.deviceId;
+import static org.onlab.onos.net.PortNumber.portNumber;
+
/**
* Installs point-to-point connectivity intents.
*/
@@ -33,20 +35,16 @@
required = true, multiValued = false)
String egressDeviceString = null;
- private static long id = 0x7470001;
-
@Override
protected void execute() {
IntentService service = get(IntentService.class);
- DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString));
- PortNumber ingressPortNumber =
- PortNumber.portNumber(getPortNumber(ingressDeviceString));
+ DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString));
+ PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString));
ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber);
- DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString));
- PortNumber egressPortNumber =
- PortNumber.portNumber(getPortNumber(egressDeviceString));
+ DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString));
+ PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
TrafficSelector selector = DefaultTrafficSelector.builder()
@@ -54,12 +52,8 @@
.build();
TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
- Intent intent =
- new PointToPointIntent(new IntentId(id++),
- selector,
- treatment,
- ingress,
- egress);
+ Intent intent = new PointToPointIntent(appId(), selector, treatment,
+ ingress, egress);
service.submit(intent);
}
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/IntentPushTestCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/IntentPushTestCommand.java
index 4c3ed8e..bd010ae 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/IntentPushTestCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/IntentPushTestCommand.java
@@ -1,8 +1,5 @@
package org.onlab.onos.cli.net;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onlab.onos.cli.AbstractShellCommand;
@@ -16,20 +13,25 @@
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentEvent;
import org.onlab.onos.net.intent.IntentEvent.Type;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentListener;
import org.onlab.onos.net.intent.IntentService;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.packet.Ethernet;
import org.onlab.packet.MacAddress;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import static org.onlab.onos.net.DeviceId.deviceId;
+import static org.onlab.onos.net.PortNumber.portNumber;
+
/**
* Installs point-to-point connectivity intents.
*/
@Command(scope = "onos", name = "push-test-intents",
description = "Installs random intents to test throughput")
public class IntentPushTestCommand extends AbstractShellCommand
- implements IntentListener {
+ implements IntentListener {
@Argument(index = 0, name = "ingressDevice",
description = "Ingress Device/Port Description",
@@ -42,8 +44,8 @@
String egressDeviceString = null;
@Argument(index = 2, name = "count",
- description = "Number of intents to push",
- required = true, multiValued = false)
+ description = "Number of intents to push",
+ required = true, multiValued = false)
String countString = null;
@@ -57,14 +59,12 @@
protected void execute() {
service = get(IntentService.class);
- DeviceId ingressDeviceId = DeviceId.deviceId(getDeviceId(ingressDeviceString));
- PortNumber ingressPortNumber =
- PortNumber.portNumber(getPortNumber(ingressDeviceString));
+ DeviceId ingressDeviceId = deviceId(getDeviceId(ingressDeviceString));
+ PortNumber ingressPortNumber = portNumber(getPortNumber(ingressDeviceString));
ConnectPoint ingress = new ConnectPoint(ingressDeviceId, ingressPortNumber);
- DeviceId egressDeviceId = DeviceId.deviceId(getDeviceId(egressDeviceString));
- PortNumber egressPortNumber =
- PortNumber.portNumber(getPortNumber(egressDeviceString));
+ DeviceId egressDeviceId = deviceId(getDeviceId(egressDeviceString));
+ PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
TrafficSelector.Builder selector = DefaultTrafficSelector.builder()
@@ -79,14 +79,10 @@
start = System.currentTimeMillis();
for (int i = 0; i < count; i++) {
TrafficSelector s = selector
- .matchEthSrc(MacAddress.valueOf(i))
- .build();
- Intent intent =
- new PointToPointIntent(new IntentId(id++),
- s,
- treatment,
- ingress,
- egress);
+ .matchEthSrc(MacAddress.valueOf(i))
+ .build();
+ Intent intent = new PointToPointIntent(appId(), s, treatment,
+ ingress, egress);
service.submit(intent);
}
try {
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/IntentRemoveCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/IntentRemoveCommand.java
index 7684da4..b2cef88 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/IntentRemoveCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/IntentRemoveCommand.java
@@ -26,9 +26,8 @@
if (radix == 16) {
id = id.replaceFirst("0x", "");
}
- IntentId intentId = new IntentId(Long.parseLong(id, radix));
-
+ IntentId intentId = IntentId.valueOf(Long.parseLong(id, radix));
Intent intent = service.getIntent(intentId);
if (intent != null) {
service.withdraw(intent);
diff --git a/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java b/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
index 8285070..08ab7fa 100644
--- a/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
+++ b/core/api/src/main/java/org/onlab/onos/net/intent/IntentId.java
@@ -15,7 +15,7 @@
* @param fingerprint long value
* @return intent identifier
*/
- static IntentId valueOf(long fingerprint) {
+ public static IntentId valueOf(long fingerprint) {
return new IntentId(fingerprint);
}
diff --git a/core/net/src/main/java/org/onlab/onos/impl/CoreManager.java b/core/net/src/main/java/org/onlab/onos/impl/CoreManager.java
index edfc080..da1f8c9 100644
--- a/core/net/src/main/java/org/onlab/onos/impl/CoreManager.java
+++ b/core/net/src/main/java/org/onlab/onos/impl/CoreManager.java
@@ -27,6 +27,7 @@
private static Version version = Version.version("1.0.0-SNAPSHOT");
private final Map<Short, DefaultApplicationId> appIds = new ConcurrentHashMap<>();
+ private final Map<String, DefaultApplicationId> appIdsByName = new ConcurrentHashMap<>();
// TODO: work in progress
@@ -50,9 +51,13 @@
@Override
public ApplicationId registerApplication(String name) {
- short id = (short) ID_DISPENSER.getAndIncrement();
- DefaultApplicationId appId = new DefaultApplicationId(id, name);
- appIds.put(id, appId);
+ DefaultApplicationId appId = appIdsByName.get(name);
+ if (appId == null) {
+ short id = (short) ID_DISPENSER.getAndIncrement();
+ appId = new DefaultApplicationId(id, name);
+ appIds.put(id, appId);
+ appIdsByName.put(name, appId);
+ }
return appId;
}
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/HostToHostIntentCompiler.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/HostToHostIntentCompiler.java
index 50faf38..e769982 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/HostToHostIntentCompiler.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/HostToHostIntentCompiler.java
@@ -11,11 +11,9 @@
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.host.HostService;
import org.onlab.onos.net.intent.HostToHostIntent;
-import org.onlab.onos.net.intent.IdGenerator;
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentCompiler;
import org.onlab.onos.net.intent.IntentExtensionService;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.PathIntent;
import org.onlab.onos.net.topology.PathService;
@@ -41,12 +39,8 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected HostService hostService;
- protected IdGenerator<IntentId> intentIdGenerator;
-
@Activate
public void activate() {
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
intentManager.registerCompiler(HostToHostIntent.class, this);
}
@@ -70,13 +64,10 @@
// Creates a path intent from the specified path and original connectivity intent.
private Intent createPathIntent(Path path, Host src, Host dst,
HostToHostIntent intent) {
-
TrafficSelector selector = builder(intent.selector())
.matchEthSrc(src.mac()).matchEthDst(dst.mac()).build();
-
- return new PathIntent(intentIdGenerator.getNewId(),
- selector, intent.treatment(),
- path.src(), path.dst(), path);
+ return new PathIntent(intent.appId(), selector, intent.treatment(),
+ path);
}
private Path getPath(HostId one, HostId two) {
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IdBlockAllocatorBasedIntentIdGenerator.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/IdBlockAllocatorBasedIntentIdGenerator.java
deleted file mode 100644
index 9620e59..0000000
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IdBlockAllocatorBasedIntentIdGenerator.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.onlab.onos.net.intent.impl;
-
-import org.onlab.onos.net.intent.IntentId;
-
-/**
- * An implementation of {@link org.onlab.onos.net.intent.IdGenerator} of intent ID,
- * which uses {@link IdBlockAllocator}.
- */
-public class IdBlockAllocatorBasedIntentIdGenerator extends AbstractBlockAllocatorBasedIdGenerator<IntentId> {
-
- /**
- * Constructs an intent ID generator, which uses the specified ID block allocator
- * to generate a global unique intent ID.
- *
- * @param allocator the ID block allocator to use for generating intent IDs
- */
- public IdBlockAllocatorBasedIntentIdGenerator(IdBlockAllocator allocator) {
- super(allocator);
- }
-
- @Override
- protected IntentId convertFrom(long value) {
- return new IntentId(value);
- }
-}
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
index ff1e948..1838814 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/IntentManager.java
@@ -1,30 +1,8 @@
package org.onlab.onos.net.intent.impl;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.concurrent.Executors.newSingleThreadExecutor;
-import static org.onlab.onos.net.intent.IntentState.COMPILING;
-import static org.onlab.onos.net.intent.IntentState.FAILED;
-import static org.onlab.onos.net.intent.IntentState.INSTALLED;
-import static org.onlab.onos.net.intent.IntentState.INSTALLING;
-import static org.onlab.onos.net.intent.IntentState.RECOMPILING;
-import static org.onlab.onos.net.intent.IntentState.WITHDRAWING;
-import static org.onlab.onos.net.intent.IntentState.WITHDRAWN;
-import static org.onlab.util.Tools.namedThreads;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -36,7 +14,6 @@
import org.onlab.onos.net.flow.CompletedBatchOperation;
import org.onlab.onos.net.flow.FlowRuleBatchOperation;
import org.onlab.onos.net.flow.FlowRuleService;
-import org.onlab.onos.net.intent.InstallableIntent;
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentCompiler;
import org.onlab.onos.net.intent.IntentEvent;
@@ -52,9 +29,24 @@
import org.onlab.onos.net.intent.IntentStoreDelegate;
import org.slf4j.Logger;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static java.util.concurrent.Executors.newSingleThreadExecutor;
+import static org.onlab.onos.net.intent.IntentState.*;
+import static org.onlab.util.Tools.namedThreads;
+import static org.slf4j.LoggerFactory.getLogger;
/**
* An implementation of Intent Manager.
@@ -71,8 +63,8 @@
// Collections for compiler, installer, and listener are ONOS instance local
private final ConcurrentMap<Class<? extends Intent>,
IntentCompiler<? extends Intent>> compilers = new ConcurrentHashMap<>();
- private final ConcurrentMap<Class<? extends InstallableIntent>,
- IntentInstaller<? extends InstallableIntent>> installers = new ConcurrentHashMap<>();
+ private final ConcurrentMap<Class<? extends Intent>,
+ IntentInstaller<? extends Intent>> installers = new ConcurrentHashMap<>();
private final AbstractListenerRegistry<IntentEvent, IntentListener>
listenerRegistry = new AbstractListenerRegistry<>();
@@ -186,17 +178,17 @@
}
@Override
- public <T extends InstallableIntent> void registerInstaller(Class<T> cls, IntentInstaller<T> installer) {
+ public <T extends Intent> void registerInstaller(Class<T> cls, IntentInstaller<T> installer) {
installers.put(cls, installer);
}
@Override
- public <T extends InstallableIntent> void unregisterInstaller(Class<T> cls) {
+ public <T extends Intent> void unregisterInstaller(Class<T> cls) {
installers.remove(cls);
}
@Override
- public Map<Class<? extends InstallableIntent>, IntentInstaller<? extends InstallableIntent>> getInstallers() {
+ public Map<Class<? extends Intent>, IntentInstaller<? extends Intent>> getInstallers() {
return ImmutableMap.copyOf(installers);
}
@@ -223,7 +215,7 @@
* @param <T> the type of installable intent
* @return intent installer corresponding to the specified installable intent
*/
- private <T extends InstallableIntent> IntentInstaller<T> getInstaller(T intent) {
+ private <T extends Intent> IntentInstaller<T> getInstaller(T intent) {
@SuppressWarnings("unchecked")
IntentInstaller<T> installer = (IntentInstaller<T>) installers.get(intent.getClass());
if (installer == null) {
@@ -243,7 +235,7 @@
try {
// Compile the intent into installable derivatives.
- List<InstallableIntent> installable = compileIntent(intent);
+ List<Intent> installable = compileIntent(intent);
// If all went well, associate the resulting list of installable
// intents with the top-level intent and proceed to install.
@@ -264,12 +256,12 @@
* @param intent intent
* @return result of compilation
*/
- private List<InstallableIntent> compileIntent(Intent intent) {
- if (intent instanceof InstallableIntent) {
- return ImmutableList.of((InstallableIntent) intent);
+ private List<Intent> compileIntent(Intent intent) {
+ if (intent instanceof Intent) {
+ return ImmutableList.of((Intent) intent);
}
- List<InstallableIntent> installable = new ArrayList<>();
+ List<Intent> installable = new ArrayList<>();
// TODO do we need to registerSubclassCompiler?
for (Intent compiled : getCompiler(intent).compile(intent)) {
installable.addAll(compileIntent(compiled));
@@ -290,12 +282,12 @@
List<FlowRuleBatchOperation> installWork = Lists.newArrayList();
try {
- List<InstallableIntent> installables = store.getInstallableIntents(intent.id());
+ List<Intent> installables = store.getInstallableIntents(intent.id());
if (installables != null) {
- for (InstallableIntent installable : installables) {
+ for (Intent installable : installables) {
registerSubclassInstallerIfNeeded(installable);
trackerService.addTrackedResources(intent.id(),
- installable.requiredLinks());
+ installable.resources());
List<FlowRuleBatchOperation> batch = getInstaller(installable).install(installable);
installWork.addAll(batch);
}
@@ -324,14 +316,13 @@
try {
// Compile the intent into installable derivatives.
- List<InstallableIntent> installable = compileIntent(intent);
+ List<Intent> installable = compileIntent(intent);
// If all went well, compare the existing list of installable
// intents with the newly compiled list. If they are the same,
// bail, out since the previous approach was determined not to
// be viable.
- List<InstallableIntent> originalInstallable =
- store.getInstallableIntents(intent.id());
+ List<Intent> originalInstallable = store.getInstallableIntents(intent.id());
if (Objects.equals(originalInstallable, installable)) {
eventDispatcher.post(store.setState(intent, FAILED));
@@ -376,9 +367,9 @@
private void uninstallIntent(Intent intent, IntentState nextState) {
List<FlowRuleBatchOperation> uninstallWork = Lists.newArrayList();
try {
- List<InstallableIntent> installables = store.getInstallableIntents(intent.id());
+ List<Intent> installables = store.getInstallableIntents(intent.id());
if (installables != null) {
- for (InstallableIntent installable : installables) {
+ for (Intent installable : installables) {
List<FlowRuleBatchOperation> batches = getInstaller(installable).uninstall(installable);
uninstallWork.addAll(batches);
}
@@ -422,12 +413,12 @@
*
* @param intent intent
*/
- private void registerSubclassInstallerIfNeeded(InstallableIntent intent) {
+ private void registerSubclassInstallerIfNeeded(Intent intent) {
if (!installers.containsKey(intent.getClass())) {
Class<?> cls = intent.getClass();
while (cls != Object.class) {
- // As long as we're within the InstallableIntent class descendants
- if (InstallableIntent.class.isAssignableFrom(cls)) {
+ // As long as we're within the Intent class descendants
+ if (Intent.class.isAssignableFrom(cls)) {
IntentInstaller<?> installer = installers.get(cls);
if (installer != null) {
installers.put(intent.getClass(), installer);
@@ -505,8 +496,8 @@
private final IntentState nextState;
public IntentInstallMonitor(Intent intent,
- List<FlowRuleBatchOperation> work,
- IntentState nextState) {
+ List<FlowRuleBatchOperation> work,
+ IntentState nextState) {
this.intent = intent;
this.work = work;
// TODO how many Futures can be outstanding? one?
@@ -531,9 +522,7 @@
}
/**
- * Apply a list of FlowRules.
- *
- * @param rules rules to apply
+ * Applies the next batch.
*/
private Future<CompletedBatchOperation> applyNextBatch() {
if (work.isEmpty()) {
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/MultiPointToSinglePointIntentCompiler.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/MultiPointToSinglePointIntentCompiler.java
index 6ce12d6..cfc8d73 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/MultiPointToSinglePointIntentCompiler.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/MultiPointToSinglePointIntentCompiler.java
@@ -1,10 +1,5 @@
package org.onlab.onos.net.intent.impl;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -13,16 +8,19 @@
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.Link;
import org.onlab.onos.net.Path;
-import org.onlab.onos.net.intent.IdGenerator;
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentCompiler;
import org.onlab.onos.net.intent.IntentExtensionService;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.LinkCollectionIntent;
import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.onos.net.topology.PathService;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
/**
* An intent compiler for
* {@link org.onlab.onos.net.intent.MultiPointToSinglePointIntent}.
@@ -37,12 +35,8 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected PathService pathService;
- protected IdGenerator<IntentId> intentIdGenerator;
-
@Activate
public void activate() {
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
intentManager.registerCompiler(MultiPointToSinglePointIntent.class, this);
}
@@ -60,9 +54,9 @@
links.addAll(path.links());
}
- Intent result = new LinkCollectionIntent(intentIdGenerator.getNewId(),
- intent.selector(), intent.treatment(),
- links, intent.egressPoint());
+ Intent result = new LinkCollectionIntent(intent.appId(),
+ intent.selector(), intent.treatment(),
+ links, intent.egressPoint());
return Arrays.asList(result);
}
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
index 7ba4e26..90e878e 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTracker.java
@@ -11,6 +11,7 @@
import org.onlab.onos.event.Event;
import org.onlab.onos.net.Link;
import org.onlab.onos.net.LinkKey;
+import org.onlab.onos.net.NetworkResource;
import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.link.LinkEvent;
import org.onlab.onos.net.topology.TopologyEvent;
@@ -27,8 +28,8 @@
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.collect.Multimaps.synchronizedSetMultimap;
import static java.util.concurrent.Executors.newSingleThreadExecutor;
-import static org.onlab.onos.net.link.LinkEvent.Type.LINK_REMOVED;
import static org.onlab.onos.net.LinkKey.linkKey;
+import static org.onlab.onos.net.link.LinkEvent.Type.LINK_REMOVED;
import static org.onlab.util.Tools.namedThreads;
import static org.slf4j.LoggerFactory.getLogger;
@@ -81,16 +82,22 @@
}
@Override
- public void addTrackedResources(IntentId intentId, Collection<Link> resources) {
- for (Link link : resources) {
- intentsByLink.put(linkKey(link), intentId);
+ public void addTrackedResources(IntentId intentId,
+ Collection<NetworkResource> resources) {
+ for (NetworkResource resource : resources) {
+ if (resource instanceof Link) {
+ intentsByLink.put(linkKey((Link) resource), intentId);
+ }
}
}
@Override
- public void removeTrackedResources(IntentId intentId, Collection<Link> resources) {
- for (Link link : resources) {
- intentsByLink.remove(linkKey(link), intentId);
+ public void removeTrackedResources(IntentId intentId,
+ Collection<NetworkResource> resources) {
+ for (NetworkResource resource : resources) {
+ if (resource instanceof Link) {
+ intentsByLink.remove(linkKey((Link) resource), intentId);
+ }
}
}
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTrackerService.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTrackerService.java
index 15496ff..9acd215 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTrackerService.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/ObjectiveTrackerService.java
@@ -1,6 +1,6 @@
package org.onlab.onos.net.intent.impl;
-import org.onlab.onos.net.Link;
+import org.onlab.onos.net.NetworkResource;
import org.onlab.onos.net.intent.IntentId;
import java.util.Collection;
@@ -28,17 +28,19 @@
/**
* Adds a path flow to be tracked.
*
- * @param intentId intent identity on whose behalf the path is being tracked
+ * @param intentId intent identity on whose behalf the path is being tracked
* @param resources resources to track
*/
- public void addTrackedResources(IntentId intentId, Collection<Link> resources);
+ public void addTrackedResources(IntentId intentId,
+ Collection<NetworkResource> resources);
/**
* Removes a path flow to be tracked.
*
- * @param intentId intent identity on whose behalf the path is being tracked
+ * @param intentId intent identity on whose behalf the path is being tracked
* @param resources resources to stop tracking
*/
- public void removeTrackedResources(IntentId intentId, Collection<Link> resources);
+ public void removeTrackedResources(IntentId intentId,
+ Collection<NetworkResource> resources);
}
diff --git a/core/net/src/main/java/org/onlab/onos/net/intent/impl/PointToPointIntentCompiler.java b/core/net/src/main/java/org/onlab/onos/net/intent/impl/PointToPointIntentCompiler.java
index 0556df0..25d50cc 100644
--- a/core/net/src/main/java/org/onlab/onos/net/intent/impl/PointToPointIntentCompiler.java
+++ b/core/net/src/main/java/org/onlab/onos/net/intent/impl/PointToPointIntentCompiler.java
@@ -1,10 +1,5 @@
package org.onlab.onos.net.intent.impl;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
@@ -16,16 +11,19 @@
import org.onlab.onos.net.Link;
import org.onlab.onos.net.Path;
import org.onlab.onos.net.host.HostService;
-import org.onlab.onos.net.intent.IdGenerator;
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentCompiler;
import org.onlab.onos.net.intent.IntentExtensionService;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.PathIntent;
import org.onlab.onos.net.intent.PointToPointIntent;
import org.onlab.onos.net.provider.ProviderId;
import org.onlab.onos.net.topology.PathService;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
/**
* A intent compiler for {@link org.onlab.onos.net.intent.HostToHostIntent}.
*/
@@ -43,12 +41,8 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected HostService hostService;
- protected IdGenerator<IntentId> intentIdGenerator;
-
@Activate
public void activate() {
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- intentIdGenerator = new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
intentManager.registerCompiler(PointToPointIntent.class, this);
}
@@ -67,23 +61,21 @@
links.add(DefaultEdgeLink.createEdgeLink(intent.egressPoint(), false));
return Arrays.asList(createPathIntent(new DefaultPath(PID, links, path.cost() + 2,
- path.annotations()),
- intent));
+ path.annotations()),
+ intent));
}
/**
* Creates a path intent from the specified path and original
* connectivity intent.
*
- * @param path path to create an intent for
+ * @param path path to create an intent for
* @param intent original intent
*/
private Intent createPathIntent(Path path,
PointToPointIntent intent) {
-
- return new PathIntent(intentIdGenerator.getNewId(),
- intent.selector(), intent.treatment(),
- path.src(), path.dst(), path);
+ return new PathIntent(intent.appId(),
+ intent.selector(), intent.treatment(), path);
}
/**
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
index f5e2551..9ec37e1 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestHostToHostIntent.java
@@ -1,6 +1,8 @@
package org.onlab.onos.net.intent;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.HostId;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
@@ -16,15 +18,13 @@
*/
public class TestHostToHostIntent {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
- private HostToHostIntent makeHostToHost(long id, HostId one, HostId two) {
- return new HostToHostIntent(new IntentId(id),
- one,
- two,
- selector,
- treatment);
+ private HostToHostIntent makeHostToHost(HostId one, HostId two) {
+ return new HostToHostIntent(APPID, one, two, selector, treatment);
}
/**
@@ -36,8 +36,8 @@
HostId one = hid("00:00:00:00:00:01/-1");
HostId two = hid("00:00:00:00:00:02/-1");
- HostToHostIntent i1 = makeHostToHost(12, one, two);
- HostToHostIntent i2 = makeHostToHost(12, one, two);
+ HostToHostIntent i1 = makeHostToHost(one, two);
+ HostToHostIntent i2 = makeHostToHost(one, two);
assertThat(i1, is(equalTo(i2)));
}
@@ -51,23 +51,8 @@
HostId one = hid("00:00:00:00:00:01/-1");
HostId two = hid("00:00:00:00:00:02/-1");
- HostToHostIntent i1 = makeHostToHost(12, one, two);
- HostToHostIntent i2 = makeHostToHost(12, two, one);
-
- assertThat(i1, is(not(equalTo(i2))));
- }
-
- /**
- * Tests the equals() method where two HostToHostIntents have different
- * ids. These should compare not equal.
- */
-
- @Test
- public void testBaseDifferentEquals() {
- HostId one = hid("00:00:00:00:00:01/-1");
- HostId two = hid("00:00:00:00:00:02/-1");
- HostToHostIntent i1 = makeHostToHost(12, one, two);
- HostToHostIntent i2 = makeHostToHost(11, one, two);
+ HostToHostIntent i1 = makeHostToHost(one, two);
+ HostToHostIntent i2 = makeHostToHost(two, one);
assertThat(i1, is(not(equalTo(i2))));
}
@@ -76,13 +61,12 @@
* Tests that the hashCode() values for two equivalent HostToHostIntent
* objects are the same.
*/
-
@Test
public void testHashCodeEquals() {
HostId one = hid("00:00:00:00:00:01/-1");
HostId two = hid("00:00:00:00:00:02/-1");
- HostToHostIntent i1 = makeHostToHost(12, one, two);
- HostToHostIntent i2 = makeHostToHost(12, one, two);
+ HostToHostIntent i1 = makeHostToHost(one, two);
+ HostToHostIntent i2 = makeHostToHost(one, two);
assertThat(i1.hashCode(), is(equalTo(i2.hashCode())));
}
@@ -91,13 +75,12 @@
* Tests that the hashCode() values for two distinct LinkCollectionIntent
* objects are different.
*/
-
@Test
public void testHashCodeDifferent() {
HostId one = hid("00:00:00:00:00:01/-1");
HostId two = hid("00:00:00:00:00:02/-1");
- HostToHostIntent i1 = makeHostToHost(12, one, two);
- HostToHostIntent i2 = makeHostToHost(112, one, two);
+ HostToHostIntent i1 = makeHostToHost(one, two);
+ HostToHostIntent i2 = makeHostToHost(two, one);
assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode()))));
}
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
index a7082b4..65aa71f 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestLinkCollectionIntent.java
@@ -11,6 +11,8 @@
import org.junit.Before;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.DeviceId;
import org.onlab.onos.net.Link;
@@ -23,6 +25,8 @@
*/
public class TestLinkCollectionIntent {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private Link link1 = link("dev1", 1, "dev2", 2);
private Link link2 = link("dev1", 1, "dev3", 2);
private Link link3 = link("dev2", 1, "dev3", 2);
@@ -38,10 +42,9 @@
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
- private LinkCollectionIntent makeLinkCollection(long id, Set<Link> links,
+ private LinkCollectionIntent makeLinkCollection(Set<Link> links,
ConnectPoint egress) {
- return new LinkCollectionIntent(new IntentId(id),
- selector, treatment, links, egress);
+ return new LinkCollectionIntent(APPID, selector, treatment, links, egress);
}
@Before
@@ -64,8 +67,8 @@
links2.add(link2);
links2.add(link1);
- LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress1);
+ LinkCollectionIntent i1 = makeLinkCollection(links1, egress1);
+ LinkCollectionIntent i2 = makeLinkCollection(links2, egress1);
assertThat(i1, is(equalTo(i2)));
}
@@ -82,8 +85,8 @@
links2.add(link3);
links2.add(link1);
- LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress1);
+ LinkCollectionIntent i1 = makeLinkCollection(links1, egress1);
+ LinkCollectionIntent i2 = makeLinkCollection(links2, egress1);
assertThat(i1, is(not(equalTo(i2))));
}
@@ -102,26 +105,8 @@
links2.add(link2);
links2.add(link1);
- LinkCollectionIntent i1 = makeLinkCollection(12, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(12, links2, egress2);
-
- assertThat(i1, is(not(equalTo(i2))));
- }
-
- /**
- * Tests the equals() method where two LinkCollectionIntents have different
- * ids. These should compare not equal.
- */
- @Test
- public void testBaseDifferentEquals() {
- links1.add(link1);
- links1.add(link2);
-
- links2.add(link2);
- links2.add(link1);
-
- LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(2, links2, egress1);
+ LinkCollectionIntent i1 = makeLinkCollection(links1, egress1);
+ LinkCollectionIntent i2 = makeLinkCollection(links2, egress2);
assertThat(i1, is(not(equalTo(i2))));
}
@@ -140,8 +125,8 @@
links2.add(link2);
links2.add(link1);
- LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(1, links2, egress1);
+ LinkCollectionIntent i1 = makeLinkCollection(links1, egress1);
+ LinkCollectionIntent i2 = makeLinkCollection(links2, egress1);
assertThat(i1.hashCode(), is(equalTo(i2.hashCode())));
}
@@ -158,8 +143,8 @@
links2.add(link1);
links2.add(link3);
- LinkCollectionIntent i1 = makeLinkCollection(1, links1, egress1);
- LinkCollectionIntent i2 = makeLinkCollection(1, links2, egress2);
+ LinkCollectionIntent i1 = makeLinkCollection(links1, egress1);
+ LinkCollectionIntent i2 = makeLinkCollection(links2, egress2);
assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode()))));
}
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
index e921907..09dfcb2 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestMultiPointToSinglePointIntent.java
@@ -1,14 +1,16 @@
package org.onlab.onos.net.intent;
-import java.util.HashSet;
-import java.util.Set;
-
import org.junit.Before;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
+import java.util.HashSet;
+import java.util.Set;
+
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
@@ -20,6 +22,8 @@
*/
public class TestMultiPointToSinglePointIntent {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private ConnectPoint point1 = connectPoint("dev1", 1);
private ConnectPoint point2 = connectPoint("dev2", 1);
private ConnectPoint point3 = connectPoint("dev3", 1);
@@ -33,19 +37,14 @@
/**
* Creates a MultiPointToSinglePointIntent object.
*
- * @param id identifier to use for the new intent
* @param ingress set of ingress points
- * @param egress egress point
+ * @param egress egress point
* @return MultiPointToSinglePoint intent
*/
- private MultiPointToSinglePointIntent makeIntent(long id,
- Set<ConnectPoint> ingress,
- ConnectPoint egress) {
- return new MultiPointToSinglePointIntent(new IntentId(id),
- selector,
- treatment,
- ingress,
- egress);
+ private MultiPointToSinglePointIntent makeIntent(Set<ConnectPoint> ingress,
+ ConnectPoint egress) {
+ return new MultiPointToSinglePointIntent(APPID, selector, treatment,
+ ingress, egress);
}
/**
@@ -72,8 +71,8 @@
ingress2.add(point3);
ingress2.add(point2);
- Intent i1 = makeIntent(12, ingress1, point1);
- Intent i2 = makeIntent(12, ingress2, point1);
+ Intent i1 = makeIntent(ingress1, point1);
+ Intent i2 = makeIntent(ingress2, point1);
assertThat(i1, is(equalTo(i2)));
}
@@ -89,23 +88,8 @@
ingress2.add(point3);
ingress2.add(point2);
- Intent i1 = makeIntent(12, ingress1, point1);
- Intent i2 = makeIntent(12, ingress2, point1);
-
- assertThat(i1, is(not(equalTo(i2))));
- }
-
- /**
- * Tests the equals() method where two MultiPointToSinglePoint have different
- * ids. These should compare not equal.
- */
- @Test
- public void testBaseDifferentEquals() {
- ingress1.add(point3);
- ingress2.add(point3);
-
- Intent i1 = makeIntent(12, ingress1, point1);
- Intent i2 = makeIntent(11, ingress2, point1);
+ Intent i1 = makeIntent(ingress1, point1);
+ Intent i2 = makeIntent(ingress2, point1);
assertThat(i1, is(not(equalTo(i2))));
}
@@ -122,8 +106,8 @@
ingress2.add(point3);
ingress2.add(point2);
- Intent i1 = makeIntent(12, ingress1, point1);
- Intent i2 = makeIntent(12, ingress2, point1);
+ Intent i1 = makeIntent(ingress1, point1);
+ Intent i2 = makeIntent(ingress2, point1);
assertThat(i1.hashCode(), is(equalTo(i2.hashCode())));
}
@@ -139,8 +123,8 @@
ingress2.add(point3);
ingress2.add(point2);
- Intent i1 = makeIntent(12, ingress1, point1);
- Intent i2 = makeIntent(12, ingress2, point1);
+ Intent i1 = makeIntent(ingress1, point1);
+ Intent i2 = makeIntent(ingress2, point1);
assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode()))));
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/TestPointToPointIntent.java b/core/net/src/test/java/org/onlab/onos/net/intent/TestPointToPointIntent.java
index 41769c6..e34d7ce 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/TestPointToPointIntent.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/TestPointToPointIntent.java
@@ -1,14 +1,14 @@
package org.onlab.onos.net.intent;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.not;
+import static org.hamcrest.Matchers.*;
import static org.onlab.onos.net.NetTestTools.connectPoint;
/**
@@ -16,20 +16,17 @@
*/
public class TestPointToPointIntent {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
private ConnectPoint point1 = connectPoint("dev1", 1);
private ConnectPoint point2 = connectPoint("dev2", 1);
- private PointToPointIntent makePointToPoint(long id,
- ConnectPoint ingress,
+ private PointToPointIntent makePointToPoint(ConnectPoint ingress,
ConnectPoint egress) {
- return new PointToPointIntent(new IntentId(id),
- selector,
- treatment,
- ingress,
- egress);
+ return new PointToPointIntent(APPID, selector, treatment, ingress, egress);
}
/**
@@ -38,8 +35,8 @@
*/
@Test
public void testSameEquals() {
- PointToPointIntent i1 = makePointToPoint(12, point1, point2);
- PointToPointIntent i2 = makePointToPoint(12, point1, point2);
+ PointToPointIntent i1 = makePointToPoint(point1, point2);
+ PointToPointIntent i2 = makePointToPoint(point1, point2);
assertThat(i1, is(equalTo(i2)));
}
@@ -50,22 +47,8 @@
*/
@Test
public void testLinksDifferentEquals() {
-
- PointToPointIntent i1 = makePointToPoint(12, point1, point2);
- PointToPointIntent i2 = makePointToPoint(12, point2, point1);
-
- assertThat(i1, is(not(equalTo(i2))));
- }
-
- /**
- * Tests the equals() method where two HostToHostIntents have different
- * ids. These should compare not equal.
- */
- @Test
- public void testBaseDifferentEquals() {
- PointToPointIntent i1 = makePointToPoint(12, point1, point2);
- PointToPointIntent i2 = makePointToPoint(11, point1, point2);
-
+ PointToPointIntent i1 = makePointToPoint(point1, point2);
+ PointToPointIntent i2 = makePointToPoint(point2, point1);
assertThat(i1, is(not(equalTo(i2))));
}
@@ -76,8 +59,8 @@
*/
@Test
public void testHashCodeEquals() {
- PointToPointIntent i1 = makePointToPoint(12, point1, point2);
- PointToPointIntent i2 = makePointToPoint(12, point1, point2);
+ PointToPointIntent i1 = makePointToPoint(point1, point2);
+ PointToPointIntent i2 = makePointToPoint(point1, point2);
assertThat(i1.hashCode(), is(equalTo(i2.hashCode())));
}
@@ -88,8 +71,8 @@
*/
@Test
public void testHashCodeDifferent() {
- PointToPointIntent i1 = makePointToPoint(12, point1, point2);
- PointToPointIntent i2 = makePointToPoint(22, point1, point2);
+ PointToPointIntent i1 = makePointToPoint(point1, point2);
+ PointToPointIntent i2 = makePointToPoint(point2, point1);
assertThat(i1.hashCode(), is(not(equalTo(i2.hashCode()))));
}
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestHostToHostIntentCompiler.java b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestHostToHostIntentCompiler.java
index bd61b7a..e853a29 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestHostToHostIntentCompiler.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestHostToHostIntentCompiler.java
@@ -1,10 +1,10 @@
package org.onlab.onos.net.intent.impl;
-import java.util.List;
-
import org.hamcrest.Matchers;
import org.junit.Before;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.Host;
import org.onlab.onos.net.HostId;
import org.onlab.onos.net.flow.TrafficSelector;
@@ -12,16 +12,14 @@
import org.onlab.onos.net.host.HostService;
import org.onlab.onos.net.intent.HostToHostIntent;
import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentTestsMocks;
import org.onlab.onos.net.intent.PathIntent;
import org.onlab.packet.MacAddress;
import org.onlab.packet.VlanId;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
+import java.util.List;
+
+import static org.easymock.EasyMock.*;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
@@ -40,6 +38,8 @@
private static final String HOST_ONE = HOST_ONE_MAC + "/" + HOST_ONE_VLAN;
private static final String HOST_TWO = HOST_TWO_MAC + "/" + HOST_TWO_VLAN;
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
@@ -73,11 +73,8 @@
* @return HostToHostIntent for the two hosts
*/
private HostToHostIntent makeIntent(String oneIdString, String twoIdString) {
- return new HostToHostIntent(new IntentId(12),
- hid(oneIdString),
- hid(twoIdString),
- selector,
- treatment);
+ return new HostToHostIntent(APPID, hid(oneIdString), hid(twoIdString),
+ selector, treatment);
}
/**
@@ -91,9 +88,6 @@
new HostToHostIntentCompiler();
compiler.pathService = new IntentTestsMocks.MockPathService(hops);
compiler.hostService = mockHostService;
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- compiler.intentIdGenerator =
- new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
return compiler;
}
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestMultiPointToSinglePointIntentCompiler.java b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestMultiPointToSinglePointIntentCompiler.java
index 8d286cf..1c78e26 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestMultiPointToSinglePointIntentCompiler.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestMultiPointToSinglePointIntentCompiler.java
@@ -1,24 +1,25 @@
package org.onlab.onos.net.intent.impl;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import org.hamcrest.Matchers;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.ConnectPoint;
import org.onlab.onos.net.ElementId;
import org.onlab.onos.net.Path;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentTestsMocks;
import org.onlab.onos.net.intent.LinkCollectionIntent;
import org.onlab.onos.net.intent.MultiPointToSinglePointIntent;
import org.onlab.onos.net.topology.LinkWeight;
import org.onlab.onos.net.topology.PathService;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
@@ -32,6 +33,8 @@
*/
public class TestMultiPointToSinglePointIntentCompiler {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
@@ -74,7 +77,7 @@
* and an egress point.
*
* @param ingressIds array of ingress device ids
- * @param egressId device id of the egress point
+ * @param egressId device id of the egress point
* @return MultiPointToSinglePoint intent
*/
private MultiPointToSinglePointIntent makeIntent(String[] ingressIds, String egressId) {
@@ -82,15 +85,11 @@
ConnectPoint egressPoint = connectPoint(egressId, 1);
for (String ingressId : ingressIds) {
- ingressPoints.add(connectPoint(ingressId, 1));
+ ingressPoints.add(connectPoint(ingressId, 1));
}
- return new MultiPointToSinglePointIntent(
- new IntentId(12),
- selector,
- treatment,
- ingressPoints,
- egressPoint);
+ return new MultiPointToSinglePointIntent(APPID, selector, treatment,
+ ingressPoints, egressPoint);
}
/**
@@ -103,9 +102,6 @@
MultiPointToSinglePointIntentCompiler compiler =
new MultiPointToSinglePointIntentCompiler();
compiler.pathService = new MockPathService(hops);
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- compiler.intentIdGenerator =
- new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
return compiler;
}
@@ -122,7 +118,7 @@
assertThat(intent, is(notNullValue()));
String[] hops = {"h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8",
- egress};
+ egress};
MultiPointToSinglePointIntentCompiler compiler = makeCompiler(hops);
assertThat(compiler, is(notNullValue()));
@@ -184,7 +180,7 @@
@Test
public void testMultiIngressCompilation() {
String[] ingress = {"i1", "i2", "i3", "i4", "i5",
- "i6", "i7", "i8", "i9", "i10"};
+ "i6", "i7", "i8", "i9", "i10"};
String egress = "e";
MultiPointToSinglePointIntent intent = makeIntent(ingress, egress);
diff --git a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestPointToPointIntentCompiler.java b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestPointToPointIntentCompiler.java
index e282347..5b50a22 100644
--- a/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestPointToPointIntentCompiler.java
+++ b/core/net/src/test/java/org/onlab/onos/net/intent/impl/TestPointToPointIntentCompiler.java
@@ -1,17 +1,18 @@
package org.onlab.onos.net.intent.impl;
-import java.util.List;
-
import org.hamcrest.Matchers;
import org.junit.Test;
+import org.onlab.onos.ApplicationId;
+import org.onlab.onos.TestApplicationId;
import org.onlab.onos.net.flow.TrafficSelector;
import org.onlab.onos.net.flow.TrafficTreatment;
import org.onlab.onos.net.intent.Intent;
-import org.onlab.onos.net.intent.IntentId;
import org.onlab.onos.net.intent.IntentTestsMocks;
import org.onlab.onos.net.intent.PathIntent;
import org.onlab.onos.net.intent.PointToPointIntent;
+import java.util.List;
+
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.hasSize;
@@ -24,6 +25,8 @@
*/
public class TestPointToPointIntentCompiler {
+ private static final ApplicationId APPID = new TestApplicationId("foo");
+
private TrafficSelector selector = new IntentTestsMocks.MockSelector();
private TrafficTreatment treatment = new IntentTestsMocks.MockTreatment();
@@ -31,14 +34,12 @@
* Creates a PointToPoint intent based on ingress and egress device Ids.
*
* @param ingressIdString string for id of ingress device
- * @param egressIdString string for id of egress device
+ * @param egressIdString string for id of egress device
* @return PointToPointIntent for the two devices
*/
private PointToPointIntent makeIntent(String ingressIdString,
String egressIdString) {
- return new PointToPointIntent(new IntentId(12),
- selector,
- treatment,
+ return new PointToPointIntent(APPID, selector, treatment,
connectPoint(ingressIdString, 1),
connectPoint(egressIdString, 1));
}
@@ -53,9 +54,6 @@
PointToPointIntentCompiler compiler =
new PointToPointIntentCompiler();
compiler.pathService = new IntentTestsMocks.MockPathService(hops);
- IdBlockAllocator idBlockAllocator = new DummyIdBlockAllocator();
- compiler.intentIdGenerator =
- new IdBlockAllocatorBasedIntentIdGenerator(idBlockAllocator);
return compiler;
}
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
index eaba057..0deccfb 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
@@ -1,20 +1,10 @@
package org.onlab.onos.store.intent.impl;
-import static org.onlab.onos.net.intent.IntentState.FAILED;
-import static org.onlab.onos.net.intent.IntentState.INSTALLED;
-import static org.onlab.onos.net.intent.IntentState.SUBMITTED;
-import static org.onlab.onos.net.intent.IntentState.WITHDRAWN;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
+import com.google.common.collect.ImmutableSet;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Service;
-import org.onlab.onos.net.intent.InstallableIntent;
import org.onlab.onos.net.intent.Intent;
import org.onlab.onos.net.intent.IntentEvent;
import org.onlab.onos.net.intent.IntentId;
@@ -24,7 +14,12 @@
import org.onlab.onos.store.AbstractStore;
import org.slf4j.Logger;
-import com.google.common.collect.ImmutableSet;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import static org.onlab.onos.net.intent.IntentState.*;
+import static org.slf4j.LoggerFactory.getLogger;
//FIXME: I LIE I AM NOT DISTRIBUTED
@Component(immediate = true)
@@ -36,8 +31,7 @@
private final Logger log = getLogger(getClass());
private final Map<IntentId, Intent> intents = new ConcurrentHashMap<>();
private final Map<IntentId, IntentState> states = new ConcurrentHashMap<>();
- private final Map<IntentId, List<InstallableIntent>> installable =
- new ConcurrentHashMap<>();
+ private final Map<IntentId, List<Intent>> installable = new ConcurrentHashMap<>();
@Activate
public void activate() {
@@ -97,12 +91,12 @@
}
@Override
- public void addInstallableIntents(IntentId intentId, List<InstallableIntent> result) {
+ public void addInstallableIntents(IntentId intentId, List<Intent> result) {
installable.put(intentId, result);
}
@Override
- public List<InstallableIntent> getInstallableIntents(IntentId intentId) {
+ public List<Intent> getInstallableIntents(IntentId intentId) {
return installable.get(intentId);
}