Add Oplink attenuation extension and channel power drivers.
Change-Id: I2558595b03cbb6cc58237dc48b8a03e83357fe1f
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/handshaker/OplinkRoadm.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/handshaker/OplinkRoadm.java
index 4ea954c..bcbabcc 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/handshaker/OplinkRoadm.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/handshaker/OplinkRoadm.java
@@ -41,6 +41,7 @@
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.device.PortDescription;
import org.onosproject.net.link.DefaultLinkDescription;
+import org.onosproject.net.link.LinkService;
import org.onosproject.net.optical.OpticalAnnotations;
import org.onosproject.openflow.controller.Dpid;
import org.onosproject.openflow.controller.OpenFlowOpticalSwitch;
@@ -190,17 +191,19 @@
public final void sendMsg(OFMessage m) {
List<OFMessage> messages = new ArrayList<>();
messages.add(m);
+
if (m.getType() == OFType.STATS_REQUEST) {
OFStatsRequest sr = (OFStatsRequest) m;
log.debug("OPLK ROADM rebuilding stats request type {}", sr.getStatsType());
switch (sr.getStatsType()) {
case PORT:
- //replace with Oplink experiment stats message to get the port current power
+ //add Oplink experiment stats message to get the port's current power
OFOplinkPortPowerRequest powerRequest = this.factory().buildOplinkPortPowerRequest()
.setXid(sr.getXid())
.setFlags(sr.getFlags())
.build();
messages.add(powerRequest);
+ // add experiment message to get adjacent ports
OFExpPortAdjacencyRequest adjacencyRequest = this.factory().buildExpPortAdjacencyRequest()
.setXid(sr.getXid())
.setFlags(sr.getFlags())
@@ -335,7 +338,7 @@
private void addLink(PortNumber portNumber, OplinkPortAdjacency neighbor) {
ConnectPoint dst = new ConnectPoint(handler().data().deviceId(), portNumber);
- ConnectPoint src = new ConnectPoint(neighbor.getDeviceId(), neighbor.portNumber);
+ ConnectPoint src = new ConnectPoint(neighbor.getDeviceId(), neighbor.getPort());
OpticalAdjacencyLinkService adService =
this.handler().get(OpticalAdjacencyLinkService.class);
adService.linkDetected(new DefaultLinkDescription(src, dst, Link.Type.OPTICAL));
@@ -344,9 +347,13 @@
// Remove incoming link with port if there are any.
private void removeLink(PortNumber portNumber) {
ConnectPoint dst = new ConnectPoint(handler().data().deviceId(), portNumber);
- OpticalAdjacencyLinkService adService =
- this.handler().get(OpticalAdjacencyLinkService.class);
- adService.linksVanished(dst);
+ // Check so only incoming links are removed
+ Set<Link> links = this.handler().get(LinkService.class).getIngressLinks(dst);
+ if (!links.isEmpty()) {
+ OpticalAdjacencyLinkService adService =
+ this.handler().get(OpticalAdjacencyLinkService.class);
+ adService.linksVanished(dst);
+ }
}
private class OplinkPortAdjacency {