Sketching out what link-state addition would look like; quite easy until we get to the distributed store.
Added unit tests to provide durable-nondurable transitions.
FIxed issue where link could be accidentally activated.
Renamed parameter.
Change-Id: I8aa19a6583ec50dbf28769995f0a8ea9be9a4daa
diff --git a/core/net/src/main/java/org/onlab/onos/net/link/impl/LinkManager.java b/core/net/src/main/java/org/onlab/onos/net/link/impl/LinkManager.java
index 23c7362..15fc4a1 100644
--- a/core/net/src/main/java/org/onlab/onos/net/link/impl/LinkManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/link/impl/LinkManager.java
@@ -158,7 +158,7 @@
if (deviceService.getRole(connectPoint.deviceId()) != MastershipRole.MASTER) {
return;
}
- removeLinks(getLinks(connectPoint));
+ removeLinks(getLinks(connectPoint), false);
}
@Override
@@ -166,7 +166,7 @@
if (deviceService.getRole(deviceId) != MastershipRole.MASTER) {
return;
}
- removeLinks(getDeviceLinks(deviceId));
+ removeLinks(getDeviceLinks(deviceId), false);
}
@Override
@@ -228,7 +228,7 @@
ConnectPoint src = linkDescription.src();
ConnectPoint dst = linkDescription.dst();
- LinkEvent event = store.removeLink(src, dst);
+ LinkEvent event = store.removeOrDownLink(src, dst);
if (event != null) {
log.info("Link {} vanished", linkDescription);
post(event);
@@ -242,7 +242,7 @@
log.info("Links for connection point {} vanished", connectPoint);
// FIXME: This will remove links registered by other providers
- removeLinks(getLinks(connectPoint));
+ removeLinks(getLinks(connectPoint), true);
}
@Override
@@ -251,14 +251,16 @@
checkValidity();
log.info("Links for device {} vanished", deviceId);
- removeLinks(getDeviceLinks(deviceId));
+ removeLinks(getDeviceLinks(deviceId), true);
}
}
// Removes all links in the specified set and emits appropriate events.
- private void removeLinks(Set<Link> links) {
+ private void removeLinks(Set<Link> links, boolean isSoftRemove) {
for (Link link : links) {
- LinkEvent event = store.removeLink(link.src(), link.dst());
+ LinkEvent event = isSoftRemove ?
+ store.removeOrDownLink(link.src(), link.dst()) :
+ store.removeLink(link.src(), link.dst());
post(event);
}
}