Publish correct port active status:w
Change-Id: I65e0a804e54dad5d6ad4930ec31a73930b2454a4
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
index e8be836..538224d 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyPublisher.java
@@ -49,7 +49,9 @@
import net.onrc.onos.core.util.SwitchPort;
import org.apache.commons.lang3.concurrent.ConcurrentUtils;
+import org.projectfloodlight.openflow.protocol.OFPortConfig;
import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortState;
import org.projectfloodlight.openflow.util.HexString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -413,6 +415,14 @@
// TODO define attr name as constant somewhere.
// TODO populate appropriate attributes.
//portData.
+
+ if (isEnabled(port)) {
+ portData.createStringAttribute("state", "ACTIVE");
+ }
+ else {
+ portData.createStringAttribute("state", "INACTIVE");
+ }
+
portData.createStringAttribute("name", port.getName());
portData.createStringAttribute(TopologyElement.TYPE,
TopologyElement.TYPE_PACKET_LAYER);
@@ -427,6 +437,13 @@
publishAddSwitchEvent(switchData, portDataEntries);
}
+ private boolean isEnabled(OFPortDesc p) {
+ return (p != null &&
+ !p.getState().contains(OFPortState.LINK_DOWN) &&
+ !p.getState().contains(OFPortState.BLOCKED) && !p.getConfig().contains(
+ OFPortConfig.PORT_DOWN));
+ }
+
@Override
public void switchActivatedEqual(long swId) {
final Dpid dpid = new Dpid(swId);
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
index e47c652..5771c59 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortDataSerializer.java
@@ -42,7 +42,14 @@
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField(TopologyElement.TYPE, portData.getType());
- jsonGenerator.writeStringField("state", "ACTIVE");
+
+ if (portData.getStringAttribute("state") != null &&
+ portData.getStringAttribute("state").equals("ACTIVE")) {
+ jsonGenerator.writeStringField("state", "ACTIVE");
+ }
+ else {
+ jsonGenerator.writeStringField("state", "INACTIVE");
+ }
jsonGenerator.writeStringField("dpid", portData.getDpid().toString());
jsonGenerator.writeNumberField("portNumber",
portData.getPortNumber().value());
@@ -55,4 +62,9 @@
jsonGenerator.writeEndObject(); // stringAttributes
jsonGenerator.writeEndObject();
}
+
+ private boolean isEnabled(PortData p) {
+ return true;
+ }
+
}
diff --git a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
index 7c9b093..4d5f019 100644
--- a/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
+++ b/src/main/java/net/onrc/onos/core/topology/web/serializers/PortSerializer.java
@@ -43,7 +43,14 @@
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField(TopologyElement.TYPE, port.getType());
jsonGenerator.writeStringField(TopologyElement.ELEMENT_TYPE, port.getPortType().toString());
- jsonGenerator.writeStringField("state", "ACTIVE");
+ if (port.getStringAttribute("state") != null &&
+ port.getStringAttribute("state").equals("ACTIVE")) {
+ jsonGenerator.writeStringField("state", "ACTIVE");
+ }
+ else {
+ jsonGenerator.writeStringField("state", "INACTIVE");
+ }
+ //jsonGenerator.writeStringField("state", "ACTIVE");
jsonGenerator.writeStringField("dpid", port.getDpid().toString());
jsonGenerator.writeNumberField("portNumber",
port.getNumber().value());