Adding Modulation to UI
Change-Id: I651dc44dd8f784962f4bc74bcbf246441a236707
diff --git a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
index dea83b0..f0d0183 100644
--- a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
+++ b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
@@ -25,12 +25,13 @@
import org.onosproject.net.AnnotationKeys;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.behaviour.protection.ProtectedTransportEndpointState;
-import org.onosproject.net.behaviour.protection.TransportEndpointState;
-import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.ModulationScheme;
import org.onosproject.net.OchSignal;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
+import org.onosproject.net.behaviour.protection.ProtectedTransportEndpointState;
+import org.onosproject.net.behaviour.protection.TransportEndpointState;
+import org.onosproject.net.device.DeviceService;
import org.onosproject.net.intent.OpticalPathIntent;
import org.onosproject.net.optical.OpticalAnnotations;
import org.onosproject.ui.RequestHandler;
@@ -64,6 +65,8 @@
private static final String ROADM_PORTS = "roadmPorts";
private static final String ROADM_SET_TARGET_POWER_REQ = "roadmSetTargetPowerRequest";
private static final String ROADM_SET_TARGET_POWER_RESP = "roadmSetTargetPowerResponse";
+ private static final String ROADM_SET_MODULATION_REQ = "roadmSetModulationRequest";
+ private static final String ROADM_SET_MODULATION_RESP = "roadmSetModulationResponse";
private static final String ROADM_SYNC_TARGET_POWER_REQ = "roadmSyncTargetPowerRequest";
private static final String ROADM_SYNC_TARGET_POWER_RESP = "roadmSyncTargetPowerResp";
private static final String ROADM_SHOW_ITEMS_REQ = "roadmShowPortItemsRequest";
@@ -82,12 +85,13 @@
private static final String POWER_RANGE = "powerRange";
private static final String CURRENT_POWER = "currentPower";
private static final String TARGET_POWER = "targetPower";
+ private static final String MODULATION = "modulation";
private static final String HAS_TARGET_POWER = "hasTargetPower";
private static final String SERVICE_STATE = "serviceState";
private static final String[] COLUMN_IDS = {
ID, REVERSE_PORT, TYPE, NAME, ENABLED, MIN_FREQ, MAX_FREQ, GRID, POWER_RANGE,
- CURRENT_POWER, SERVICE_STATE, TARGET_POWER, HAS_TARGET_POWER
+ CURRENT_POWER, SERVICE_STATE, TARGET_POWER, MODULATION, HAS_TARGET_POWER
};
private RoadmService roadmService;
@@ -108,8 +112,9 @@
new SetTargetPowerRequestHandler(),
new CreateShowItemsRequestHandler(),
new CreateOpsModeSetRequestHandler(),
- new SyncTargetPowerRequestHandler()
- );
+ new SyncTargetPowerRequestHandler(),
+ new SetModulationRequestHandler()
+ );
}
// Handler for sample table requests
@@ -155,6 +160,7 @@
.cell(POWER_RANGE, getPowerRange(deviceId, portNum))
.cell(CURRENT_POWER, getCurrentPower(deviceId, portNum))
.cell(SERVICE_STATE, getPortServiceState(deviceId, portNum))
+ .cell(MODULATION, getModulation(deviceId, portNum))
.cell(TARGET_POWER, getTargetPower(deviceId, portNum))
.cell(HAS_TARGET_POWER, roadmService.hasPortTargetPower(deviceId, portNum));
}
@@ -169,7 +175,7 @@
for (TransportEndpointState element : state.pathStates()) {
if (element.description().output().connectPoint().port().equals(portNumber)) {
return RoadmUtil.defaultString(element.attributes()
- .get(OpticalAnnotations.INPUT_PORT_STATUS), RoadmUtil.UNKNOWN);
+ .get(OpticalAnnotations.INPUT_PORT_STATUS), RoadmUtil.UNKNOWN);
}
}
}
@@ -177,6 +183,7 @@
}
private Frequency minFreq = null, maxFreq = null, channelSpacing = null;
+
// Gets min frequency, max frequency, channel spacing
private void getFrequencyLimit(DeviceId deviceId, PortNumber portNumber) {
Set<OchSignal> signals = roadmService.queryLambdas(deviceId, portNumber);
@@ -219,6 +226,17 @@
Long targetPower = roadmService.getTargetPortPower(deviceId, portNumber);
return RoadmUtil.objectToString(targetPower, RoadmUtil.UNKNOWN);
}
+
+ // Returns modulation as a string, Unknown if modulation is expected but
+ // cannot be found
+ private String getModulation(DeviceId deviceId, PortNumber portNumber) {
+ Port port = deviceService.getPort(deviceId, portNumber);
+ ModulationScheme modulation = null;
+ if (port.type().equals(Port.Type.OCH)) {
+ modulation = roadmService.getModulation(deviceId, portNumber);
+ }
+ return RoadmUtil.objectToString(modulation, RoadmUtil.UNKNOWN);
+ }
}
@@ -257,6 +275,7 @@
private final class SyncTargetPowerRequestHandler extends RequestHandler {
private static final String SYNCED_TARGET_POWER = "Synced target power is %s.";
+
private SyncTargetPowerRequestHandler() {
super(ROADM_SYNC_TARGET_POWER_REQ);
}
@@ -275,6 +294,29 @@
}
}
+ // Handler for setting port modulation
+ private final class SetModulationRequestHandler extends RequestHandler {
+
+ private static final String TARGET_MODULATION_MSG = "Target modulation is %s.";
+
+ private SetModulationRequestHandler() {
+ super(ROADM_SET_MODULATION_REQ);
+ }
+
+ @Override
+ public void process(ObjectNode payload) {
+ DeviceId deviceId = DeviceId.deviceId(string(payload, RoadmUtil.DEV_ID));
+ PortNumber portNumber = PortNumber.portNumber(payload.get(ID).asLong());
+ String modulation = payload.get(MODULATION).asText();
+ roadmService.setModulation(deviceId, portNumber, modulation);
+ ObjectNode rootNode = objectNode();
+ rootNode.put(ID, payload.get(ID).asText());
+ rootNode.put(RoadmUtil.VALID, modulation);
+ rootNode.put(RoadmUtil.MESSAGE, String.format(TARGET_MODULATION_MSG, modulation));
+ sendMessage(ROADM_SET_MODULATION_RESP, rootNode);
+ }
+ }
+
// Protection switch operation type and path index
private static final String OPS_ARRAY_INDEX = "index";
private static final String OPS_ARRAY_OPERATION = "operation";
@@ -322,18 +364,18 @@
String groupName = states.keySet().size() == 1 ? "" : String.format(OPS_GROUP_FMT, ++groupIndex);
// Add AUTOMATIC operation.
nodes.add(new ObjectNode(JsonNodeFactory.instance)
- .put(OPS_ARRAY_INDEX, ACTIVE_UNKNOWN)
- .put(OPS_ARRAY_OPERATION, OPS_OPT_AUTO)
- .put(OPS_ARRAY_NAME, String.format("%s%s", groupName, OPS_OPT_AUTO)));
+ .put(OPS_ARRAY_INDEX, ACTIVE_UNKNOWN)
+ .put(OPS_ARRAY_OPERATION, OPS_OPT_AUTO)
+ .put(OPS_ARRAY_NAME, String.format("%s%s", groupName, OPS_OPT_AUTO)));
// Add FORCE and MANUAL operations for every path.
for (String opt : OPS_NON_AUTO_OPTS) {
int pathIndex = 0;
for (TransportEndpointState state : states.get(identifier).pathStates()) {
nodes.add(new ObjectNode(JsonNodeFactory.instance)
- .put(OPS_ARRAY_INDEX, pathIndex++)
- .put(OPS_ARRAY_OPERATION, opt)
- .put(OPS_ARRAY_NAME,
- String.format("%s%s %s", groupName, opt, state.id().id().toUpperCase())));
+ .put(OPS_ARRAY_INDEX, pathIndex++)
+ .put(OPS_ARRAY_OPERATION, opt)
+ .put(OPS_ARRAY_NAME,
+ String.format("%s%s %s", groupName, opt, state.id().id().toUpperCase())));
}
}
}