Moving Power values to Double
Change-Id: I3529dffe017784487df31b56430e7b9fb9db0454
diff --git a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumPowerConfig.java b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumPowerConfig.java
index 7bc44c6..f495a21 100644
--- a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumPowerConfig.java
+++ b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumPowerConfig.java
@@ -46,13 +46,13 @@
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
return Optional.ofNullable(acquireTargetPower(port, component));
}
//Used by the ROADM app to set the "attenuation" parameter
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
if (component instanceof OchSignal) {
setConnectionTargetPower(port, (OchSignal) component, power);
} else {
@@ -61,12 +61,12 @@
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
+ public Optional<Double> currentPower(PortNumber port, T component) {
return Optional.ofNullable(acquireCurrentPower(port, component));
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber portNumber, T component) {
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber portNumber, T component) {
log.debug("Lumentum getTargetPowerRange {}", portNumber);
//TODO automatically read if a port is input or output
@@ -87,7 +87,7 @@
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber portNumber, T component) {
+ public Optional<Range<Double>> getInputPowerRange(PortNumber portNumber, T component) {
log.debug("Lumentum getInputPowerRange {}", portNumber);
//TODO automatically read if a port is input or output
@@ -110,7 +110,7 @@
//TODO implement actual get configuration from the device
//This is used by ROADM application to retrieve attenuation parameter, with T instanceof OchSignal
//The ROADM app expresses the attenuation in 0.01 dB units
- private Long acquireTargetPower(PortNumber port, T component) {
+ private Double acquireTargetPower(PortNumber port, T component) {
log.debug("Lumentum get port {} target power...", port);
if (component instanceof OchSignal) {
@@ -120,7 +120,7 @@
if (rules == null) {
log.error("Lumentum NETCONF fail to retrieve attenuation signal {} port {}", component, port);
- return 0L;
+ return 0.0;
} else {
rule = rules.stream()
.filter(c -> ((LumentumFlowRule) c).getOutputPort() == port)
@@ -131,20 +131,20 @@
if (rule == null) {
log.error("Lumentum NETCONF fail to retrieve attenuation signal {} port {}", component, port);
- return 0L;
+ return 0.0;
} else {
log.debug("Lumentum NETCONF on port {} attenuation {}", port,
(((LumentumFlowRule) rule).attenuation * 100));
- return ((long) (((LumentumFlowRule) rule).attenuation * 100));
+ return ((LumentumFlowRule) rule).attenuation * 100;
}
}
- return 0L;
+ return 0.0;
}
//TODO implement actual get configuration from the device
//This is used by ROADM application to retrieve power parameter, with T instanceof OchSignal
- private Long acquireCurrentPower(PortNumber port, T component) {
+ private Double acquireCurrentPower(PortNumber port, T component) {
log.debug("Lumentum get port {} current power...", port);
if (component instanceof OchSignal) {
@@ -154,7 +154,7 @@
if (rules == null) {
log.error("Lumentum NETCONF fail to retrieve power signal {} port {}", component, port);
- return 0L;
+ return 0.0;
} else {
rule = rules.stream()
.filter(c -> ((LumentumFlowRule) c).getInputPort() == port)
@@ -165,38 +165,38 @@
if (rule == null) {
log.error("Lumentum NETCONF fail to retrieve power signal {} port {}", component, port);
- return 0L;
+ return 0.0;
} else {
log.debug("Lumentum NETCONF on port {} power {}", port, (((LumentumFlowRule) rule).inputPower));
- return ((long) (((LumentumFlowRule) rule).inputPower * 100));
+ return ((double) (((LumentumFlowRule) rule).inputPower * 100));
}
}
- return 0L;
+ return 0.0;
}
//TODO implement actual get configuration from the device
//Return PowerRange -60 dBm to 60 dBm
- private Range<Long> getTxPowerRange(PortNumber port, T component) {
+ private Range<Double> getTxPowerRange(PortNumber port, T component) {
log.debug("Get port {} tx power range...", port);
- return Range.closed(-60L, 60L);
+ return Range.closed(-60.0, 60.0);
}
//TODO implement actual get configuration from the device
//Return PowerRange -60dBm to 60 dBm
- private Range<Long> getRxPowerRange(PortNumber port, T component) {
+ private Range<Double> getRxPowerRange(PortNumber port, T component) {
log.debug("Get port {} rx power range...", port);
- return Range.closed(-60L, 60L);
+ return Range.closed(-60.0, 60.0);
}
//TODO implement configuration on the device
//Nothing to do
- private void setPortTargetPower(PortNumber port, long power) {
+ private void setPortTargetPower(PortNumber port, double power) {
log.debug("Set port {} target power {}", port, power);
}
//Used by the ROADM app to set the "attenuation" parameter
- private void setConnectionTargetPower(PortNumber port, OchSignal signal, long power) {
+ private void setConnectionTargetPower(PortNumber port, OchSignal signal, double power) {
log.debug("Set connection target power {} ochsignal {} port {}", power, signal, port);
Set<FlowRule> rules = getConnectionCache().get(did());
@@ -231,7 +231,7 @@
//Following Lumentum documentation <edit-config> operation to edit connection parameter
//Currently only edit the "attenuation" parameter
- private boolean editConnection(int moduleId, int connectionId, long attenuation) {
+ private boolean editConnection(int moduleId, int connectionId, double attenuation) {
double attenuationDouble = ((double) attenuation);
diff --git a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfig.java b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfig.java
index 7b312bf..24251e6 100644
--- a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfig.java
+++ b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfig.java
@@ -58,8 +58,6 @@
private static final String RPC_CLOSE_TAG = "</rpc>";
- private static final long NO_POWER = -50;
-
private static final Logger log = getLogger(CassiniTerminalDevicePowerConfig.class);
private ComponentType state = ComponentType.DIRECTION;
@@ -122,37 +120,37 @@
* @return target power value
*/
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
checkState(component);
return state.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
checkState(component);
state.setTargetPower(port, component, power);
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
+ public Optional<Double> currentPower(PortNumber port, T component) {
checkState(component);
return state.currentPower(port, component);
}
@Override
- public Optional<Long> currentInputPower(PortNumber port, T component) {
+ public Optional<Double> currentInputPower(PortNumber port, T component) {
checkState(component);
return state.currentInputPower(port, component);
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
checkState(component);
return state.getTargetPowerRange(port, component);
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
checkState(component);
return state.getInputPowerRange(port, component);
}
@@ -195,12 +193,12 @@
*/
DIRECTION() {
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
return super.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
+ public void setTargetPower(PortNumber port, Object component, double power) {
super.setTargetPower(port, component, power);
}
},
@@ -210,12 +208,12 @@
*/
OCHSIGNAL() {
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
return super.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
+ public void setTargetPower(PortNumber port, Object component, double power) {
super.setTargetPower(port, component, power);
}
};
@@ -230,7 +228,7 @@
* @param component component
* @return target power
*/
- Optional<Long> getTargetPower(PortNumber port, Object component) {
+ Optional<Double> getTargetPower(PortNumber port, Object component) {
NetconfSession session = cassini.getNetconfSession(cassini.did());
checkNotNull(session);
String filter = parsePort(cassini, port, null, null);
@@ -253,7 +251,10 @@
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/config");
- long power = Float.valueOf(config.getString("target-output-power")).longValue();
+ if (config == null || config.getString("target-output-power") == null) {
+ return Optional.empty();
+ }
+ double power = Float.valueOf(config.getString("target-output-power")).doubleValue();
return Optional.of(power);
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -267,7 +268,7 @@
* @param component component
* @param power target value
*/
- void setTargetPower(PortNumber port, Object component, long power) {
+ void setTargetPower(PortNumber port, Object component, double power) {
NetconfSession session = cassini.getNetconfSession(cassini.did());
checkNotNull(session);
String editConfig = parsePort(cassini, port, null, power);
@@ -301,13 +302,16 @@
* @param component the component.
* @return current output power.
*/
- Optional<Long> currentPower(PortNumber port, Object component) {
+ Optional<Double> currentPower(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<output-power><instant/></output-power>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/output-power");
- long currentPower = Float.valueOf(config.getString("instant")).longValue();
+ if (config == null || config.getString("instant") == null) {
+ return Optional.empty();
+ }
+ double currentPower = Float.valueOf(config.getString("instant")).doubleValue();
return Optional.of(currentPower);
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -321,28 +325,31 @@
* @param component the component
* @return current input power
*/
- Optional<Long> currentInputPower(PortNumber port, Object component) {
+ Optional<Double> currentInputPower(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<input-power><instant/></input-power>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/input-power");
- long currentPower = Float.valueOf(config.getString("instant")).longValue();
+ if (config == null || config.getString("instant") == null) {
+ return Optional.empty();
+ }
+ double currentPower = Float.valueOf(config.getString("instant")).doubleValue();
return Optional.of(currentPower);
} catch (IllegalArgumentException e) {
return Optional.empty();
}
}
- Optional<Range<Long>> getTargetPowerRange(PortNumber port, Object component) {
- long targetMin = -30;
- long targetMax = 1;
+ Optional<Range<Double>> getTargetPowerRange(PortNumber port, Object component) {
+ double targetMin = -30;
+ double targetMax = 1;
return Optional.of(Range.open(targetMin, targetMax));
}
- Optional<Range<Long>> getInputPowerRange(PortNumber port, Object component) {
- long targetMin = -30;
- long targetMax = 1;
+ Optional<Range<Double>> getInputPowerRange(PortNumber port, Object component) {
+ double targetMin = -30;
+ double targetMax = 1;
return Optional.of(Range.open(targetMin, targetMax));
}
@@ -409,7 +416,7 @@
* @return filtering string in xml format
*/
private static String parsePort(CassiniTerminalDevicePowerConfig pc, PortNumber portNumber,
- Object component, Long power) {
+ Object component, Double power) {
if (component == null) {
String name = ocName(pc, portNumber);
StringBuilder sb = new StringBuilder("<components xmlns=\"http://openconfig.net/yang/platform\">");
diff --git a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfigExt.java b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfigExt.java
index 0029fff..b823e0c 100644
--- a/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfigExt.java
+++ b/drivers/odtn-driver/src/main/java/org/onosproject/drivers/odtn/CassiniTerminalDevicePowerConfigExt.java
@@ -56,7 +56,7 @@
private static final String RPC_CLOSE_TAG = "</rpc>";
- private static final long NO_POWER = -50;
+ private static final double NO_POWER = -50;
private static final Logger log = getLogger(CassiniTerminalDevicePowerConfigExt.class);
@@ -119,37 +119,37 @@
* @return target power value
*/
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
checkState(component);
return state.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
checkState(component);
state.setTargetPower(port, component, power);
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
+ public Optional<Double> currentPower(PortNumber port, T component) {
checkState(component);
return state.currentPower(port, component);
}
@Override
- public Optional<Long> currentInputPower(PortNumber port, T component) {
+ public Optional<Double> currentInputPower(PortNumber port, T component) {
checkState(component);
return state.currentInputPower(port, component);
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
checkState(component);
return state.getTargetPowerRange(port, component);
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
checkState(component);
return state.getInputPowerRange(port, component);
}
@@ -191,11 +191,11 @@
*/
DIRECTION() {
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
return super.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
+ public void setTargetPower(PortNumber port, Object component, double power) {
super.setTargetPower(port, component, power);
}
},
@@ -205,12 +205,12 @@
*/
OCHSIGNAL() {
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
return super.getTargetPower(port, component);
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
+ public void setTargetPower(PortNumber port, Object component, double power) {
super.setTargetPower(port, component, power);
}
};
@@ -225,7 +225,7 @@
* @param component component
* @return target power
*/
- Optional<Long> getTargetPower(PortNumber port, Object component) {
+ Optional<Double> getTargetPower(PortNumber port, Object component) {
NetconfSession session = cassini.getNetconfSession(cassini.did());
checkNotNull(session);
String filter = parsePort(cassini, port, null, null);
@@ -241,7 +241,7 @@
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/config");
- long power = Float.valueOf(config.getString("target-output-power")).longValue();
+ double power = Float.valueOf(config.getString("target-output-power")).doubleValue();
return Optional.of(power);
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -254,7 +254,7 @@
* @param component component
* @param power target value
*/
- void setTargetPower(PortNumber port, Object component, long power) {
+ void setTargetPower(PortNumber port, Object component, double power) {
NetconfSession session = cassini.getNetconfSession(cassini.did());
checkNotNull(session);
String editConfig = parsePort(cassini, port, null, power);
@@ -281,13 +281,13 @@
* @param component the component.
* @return current output power.
*/
- Optional<Long> currentPower(PortNumber port, Object component) {
+ Optional<Double> currentPower(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<output-power><instant/></output-power>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/output-power");
- long currentPower = Float.valueOf(config.getString("instant")).longValue();
+ double currentPower = Float.valueOf(config.getString("instant")).doubleValue();
return Optional.of(currentPower);
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -300,27 +300,27 @@
* @param component the component
* @return current input power
*/
- Optional<Long> currentInputPower(PortNumber port, Object component) {
+ Optional<Double> currentInputPower(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<input-power><instant/></input-power>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/input-power");
- long currentPower = Float.valueOf(config.getString("instant")).longValue();
+ double currentPower = Float.valueOf(config.getString("instant")).doubleValue();
return Optional.of(currentPower);
} catch (IllegalArgumentException e) {
return Optional.empty();
}
}
- Optional<Range<Long>> getTargetPowerRange(PortNumber port, Object component) {
+ Optional<Range<Double>> getTargetPowerRange(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<target-power-range/>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/target-power-range");
- long targetMin = Float.valueOf(config.getString("min")).longValue();
- long targetMax = Float.valueOf(config.getString("max")).longValue();
+ double targetMin = Float.valueOf(config.getString("min")).doubleValue();
+ double targetMax = Float.valueOf(config.getString("max")).doubleValue();
return Optional.of(Range.open(targetMin, targetMax));
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -328,14 +328,14 @@
}
- Optional<Range<Long>> getInputPowerRange(PortNumber port, Object component) {
+ Optional<Range<Double>> getInputPowerRange(PortNumber port, Object component) {
XMLConfiguration xconf = getOpticalChannelState(
cassini, port, "<input-power-range/>");
try {
HierarchicalConfiguration config =
xconf.configurationAt("data/components/component/optical-channel/state/input-power-range");
- long inputMin = Float.valueOf(config.getString("min")).longValue();
- long inputMax = Float.valueOf(config.getString("max")).longValue();
+ double inputMin = Float.valueOf(config.getString("min")).doubleValue();
+ double inputMax = Float.valueOf(config.getString("max")).doubleValue();
return Optional.of(Range.open(inputMin, inputMax));
} catch (IllegalArgumentException e) {
return Optional.empty();
@@ -395,7 +395,7 @@
* @return filtering string in xml format
*/
private static String parsePort(CassiniTerminalDevicePowerConfigExt pc, PortNumber portNumber,
- Object component, Long power) {
+ Object component, Double power) {
if (component == null) {
String name = ocName(pc, portNumber);
StringBuilder sb = new StringBuilder("<components xmlns=\"http://openconfig.net/yang/platform\">");
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
index 110096c..dba2f6f 100644
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
@@ -69,38 +69,54 @@
private static final Logger log = getLogger(OplinkOpticalPowerConfig.class);
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireTargetPower(port, component));
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
+ Long power = acquireTargetPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
if (component instanceof OchSignal) {
- setChannelTargetPower(port, (OchSignal) component, power);
+ setChannelTargetPower(port, (OchSignal) component, (long) power);
} else {
- setPortTargetPower(port, power);
+ setPortTargetPower(port, (long) power);
}
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, T component) {
+ Long power = acquireCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getTxPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
+ Range<Long> power = getTxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getRxPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
+ Range<Long> power = getRxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
private String getPortPowerFilter(PortNumber port, String selection) {
return new StringBuilder(xmlOpen(KEY_OPENOPTICALDEV_XMLNS))
.append(xmlOpen(KEY_PORTS))
- .append(xml(KEY_PORTID, Long.toString(port.toLong())))
+ .append(xml(KEY_PORTID, Double.toString(port.toLong())))
.append(xmlOpen(KEY_PORT))
.append(xmlEmpty(selection))
.append(xmlClose(KEY_PORT))
@@ -112,7 +128,7 @@
private String getChannelPowerFilter(PortNumber port, OchSignal channel) {
return new StringBuilder(xmlOpen(KEY_OPENOPTICALDEV_XMLNS))
.append(xmlOpen(KEY_OCMS))
- .append(xml(KEY_PORTID, Long.toString(port.toLong())))
+ .append(xml(KEY_PORTID, Double.toString(port.toLong())))
.append(xmlOpen(KEY_OCMSTATS))
.append(xml(KEY_CHNUM, Integer.toString(channel.spacingMultiplier())))
.append(xmlEmpty(KEY_CHSTATS))
@@ -135,7 +151,7 @@
private String getPowerRangeFilter(PortNumber port, String direction) {
return new StringBuilder(xmlOpen(KEY_OPENOPTICALDEV_XMLNS))
.append(xmlOpen(KEY_PORTS))
- .append(xml(KEY_PORTID, Long.toString(port.toLong())))
+ .append(xml(KEY_PORTID, Double.toString(port.toLong())))
.append(xmlOpen(KEY_PORT))
.append(xml(KEY_PORTDIRECT, direction))
.append(xmlEmpty(KEY_PORTPROPERTY))
@@ -194,9 +210,9 @@
log.debug("Set port{} target power...", port);
String cfg = new StringBuilder(xmlOpen(KEY_OPENOPTICALDEV_XMLNS))
.append(xmlOpen(KEY_PORTS))
- .append(xml(KEY_PORTID, Long.toString(port.toLong())))
+ .append(xml(KEY_PORTID, Double.toString(port.toLong())))
.append(xmlOpen(KEY_PORT))
- .append(xml(KEY_PORTTARPWR, Long.toString(power)))
+ .append(xml(KEY_PORTTARPWR, Double.toString(power)))
.append(xmlClose(KEY_PORT))
.append(xmlClose(KEY_PORTS))
.append(xmlClose(KEY_OPENOPTICALDEV))
@@ -209,7 +225,7 @@
FlowRuleService service = handler().get(FlowRuleService.class);
Iterable<FlowEntry> entries = service.getFlowEntries(data().deviceId());
for (FlowEntry entry : entries) {
- OplinkCrossConnect crossConnect = OplinkOpticalUtility.fromFlowRule(this, entry);
+ OplinkCrossConnect crossConnect = OplinkOpticalUtility.fromFlowRule(this, entry);
// The channel port might be input port or output port.
if ((port.equals(crossConnect.getInPort()) || port.equals(crossConnect.getOutPort())) &&
channel.spacingMultiplier() == crossConnect.getChannel()) {
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkEdfaPowerConfig.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkEdfaPowerConfig.java
index 6aabf17..762d1be 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkEdfaPowerConfig.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkEdfaPowerConfig.java
@@ -25,40 +25,55 @@
/**
* Port Power (Gain and attenuation) implementation for Oplink EDFA device.
- *
+ * <p>
* An Oplink EDFA port exposes Direction resources.
* Set gain(attenuation) at AGC mode or set output level at APC mode.
- *
*/
public class OplinkEdfaPowerConfig extends AbstractHandlerBehaviour
- implements PowerConfig<Object> {
+ implements PowerConfig<Object> {
// oplink power config utility
private OplinkPowerConfigUtil oplinkUtil = new OplinkPowerConfigUtil(this);
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getTargetPower(port, component));
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getTargetPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Long> currentPower(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
- oplinkUtil.setTargetPower(port, component, power);
+ public void setTargetPower(PortNumber port, Object component, double power) {
+ oplinkUtil.setTargetPower(port, component, (long) power);
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getTargetPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getTargetPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getInputPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getInputPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
}
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkRoadmPowerConfig.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkRoadmPowerConfig.java
index 157ec8a..b750bf1 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkRoadmPowerConfig.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkRoadmPowerConfig.java
@@ -25,40 +25,54 @@
/**
* Port Power (Gain and attenuation) implementation for Oplink 1-SLOT-8D ROADM.
- *
+ * <p>
* An Oplink ROADM port exposes OchSignal resources.
* Optical Power can be set at port level or channel/wavelength level (attenuation).
- *
*/
public class OplinkRoadmPowerConfig extends AbstractHandlerBehaviour
- implements PowerConfig<Object> {
+ implements PowerConfig<Object> {
- // oplink power config utility
private OplinkPowerConfigUtil oplinkUtil = new OplinkPowerConfigUtil(this);
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getTargetPower(port, component));
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getTargetPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Long> currentPower(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
- oplinkUtil.setTargetPower(port, component, power);
+ public void setTargetPower(PortNumber port, Object component, double power) {
+ oplinkUtil.setTargetPower(port, component, (long) power);
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getTargetPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getTargetPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getInputPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getInputPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
}
diff --git a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkSwitchPowerConfig.java b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkSwitchPowerConfig.java
index 2946fb1..ab7b8e5 100644
--- a/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkSwitchPowerConfig.java
+++ b/drivers/optical/src/main/java/org/onosproject/driver/optical/power/OplinkSwitchPowerConfig.java
@@ -25,50 +25,65 @@
/**
* Port Power implementation for Oplink protection switch device.
- *
+ * <p>
* Intruduction:
- * _____
- * _____________________ | | 0 VIRTUAL
- * | | | 1 |
- * CLIENT | |---|-----|--- PRIMARY
+ * _____
+ * _____________________ | | 0 VIRTUAL
+ * | | | 1 |
+ * CLIENT | |---|-----|--- PRIMARY
* -----------| OPS | | | NETWORK
- * 3 | |---|-----|--- SECONDARY
- * |_____________________| | 2 |
- * |_____|
+ * 3 | |---|-----|--- SECONDARY
+ * |_____________________| | 2 |
+ * |_____|
* Uses flow to set switch path.
* network port = 0, client port = 3, AUTO mode.
* network port = 1 or 2, client port = 3, MANUAL mode.
- *
*/
public class OplinkSwitchPowerConfig extends AbstractHandlerBehaviour
- implements PowerConfig<Object> {
+ implements PowerConfig<Object> {
// oplink power config utility
private OplinkPowerConfigUtil oplinkUtil = new OplinkPowerConfigUtil(this);
@Override
- public Optional<Long> getTargetPower(PortNumber port, Object component) {
- return Optional.ofNullable(null);
+ public Optional<Double> getTargetPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getTargetPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Long> currentPower(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, Object component) {
+ Long power = oplinkUtil.getCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, Object component, long power) {
- return;
+ public void setTargetPower(PortNumber port, Object component, double power) {
+ oplinkUtil.setTargetPower(port, component, (long) power);
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getTargetPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getTargetPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, Object component) {
- return Optional.ofNullable(oplinkUtil.getInputPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, Object component) {
+ Range<Long> power = oplinkUtil.getInputPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
}
diff --git a/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisPowerConfig.java b/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisPowerConfig.java
index 61a3727..05df59a 100644
--- a/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisPowerConfig.java
+++ b/drivers/polatis/netconf/src/main/java/org/onosproject/drivers/polatis/netconf/PolatisPowerConfig.java
@@ -58,7 +58,7 @@
* Set target port power or channel attenuation to an optical netconf device.
*/
public class PolatisPowerConfig<T> extends AbstractHandlerBehaviour
- implements PowerConfig<T> {
+ implements PowerConfig<T> {
private static final String KEY_POWER = "power";
private static final String KEY_ATTEN_LEVEL = "atten-level";
@@ -68,32 +68,48 @@
private static final Logger log = getLogger(PolatisPowerConfig.class);
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireTargetPower(port, component));
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
+ Long power = acquireCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
if (component instanceof OchSignal) {
log.warn("Channel power is not applicable.");
return;
}
- setPortTargetPower(port, power);
+ setPortTargetPower(port, (long) power);
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, T component) {
+ Long power = acquireCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getTxPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
+ Range<Long> power = getTxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getRxPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
+ Range<Long> power = getRxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
diff --git a/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/OpenFlowPowerConfig.java b/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/OpenFlowPowerConfig.java
index 2255ba0..9ac2504 100644
--- a/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/OpenFlowPowerConfig.java
+++ b/drivers/polatis/openflow/src/main/java/org/onosproject/drivers/polatis/openflow/OpenFlowPowerConfig.java
@@ -53,12 +53,12 @@
* Set target port power or channel attenuation to an openflow device.
*/
public class OpenFlowPowerConfig<T> extends AbstractHandlerBehaviour
- implements PowerConfig<T> {
+ implements PowerConfig<T> {
private static final Logger log = getLogger(OpenFlowPowerConfig.class);
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
// TODO: OpenFlow does not seem to have the concept of retrieving this
// information as only the current power is returned in the port stats
// reply. This can be different from the configured value. Perhaps, the
@@ -68,12 +68,12 @@
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
setPortTargetPower(port, power);
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
+ public Optional<Double> currentPower(PortNumber port, T component) {
// TODO: Ideally, this needs to read the port stats output for real-time
// data or as a short-term workaround, it could get the last read value
// from the port stats polling.
@@ -81,14 +81,14 @@
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
for (OFPortDesc pd : getPortDescs()) {
if (pd.getPortNo().getPortNumber() == port.toLong()) {
for (OFPortDescProp prop : pd.getProperties()) {
if (prop instanceof OFPortDescPropOptical) {
OFPortDescPropOptical oprop = (OFPortDescPropOptical) prop;
- long txMin = oprop.getTxPwrMin();
- long txMax = oprop.getTxPwrMax();
+ double txMin = oprop.getTxPwrMin();
+ double txMax = oprop.getTxPwrMax();
return Optional.of(Range.closed(txMin, txMax));
}
}
@@ -104,7 +104,7 @@
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
log.warn("Unsupported as OpenFlow does not seem to have the concept of input (presumably rx) power range.");
return Optional.empty();
}
@@ -129,7 +129,7 @@
}
private OFPortMod.Builder makePortMod(OpenFlowSwitch sw, PortNumber portNumber,
- boolean enable) {
+ boolean enable) {
OFPortMod.Builder pmb = sw.factory().buildPortMod();
OFPort port = OFPort.of((int) portNumber.toLong());
pmb.setPortNo(port);
@@ -151,7 +151,7 @@
return pmb;
}
- private boolean setPortTargetPower(PortNumber port, long power) {
+ private boolean setPortTargetPower(PortNumber port, double power) {
DeviceId deviceId = handler().data().deviceId();
final Dpid dpid = dpid(deviceId.uri());
OpenFlowSwitch sw = handler().get(OpenFlowController.class).getSwitch(dpid);
@@ -167,9 +167,9 @@
}
}
OFPortMod.Builder pmb = makePortMod(sw, port, enable);
- long configure = OFOpticalPortFeaturesSerializerVer14.TX_PWR_VAL;
+ double configure = OFOpticalPortFeaturesSerializerVer14.TX_PWR_VAL;
OFPortModPropOptical.Builder property = sw.factory().buildPortModPropOptical();
- property.setTxPwr(power);
+ property.setTxPwr((long) power);
List<OFPortModProp> properties = new ArrayList<>();
properties.add(property.build());
diff --git a/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisPowerConfig.java b/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisPowerConfig.java
index 4de4a88..4a3b749 100644
--- a/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisPowerConfig.java
+++ b/drivers/polatis/snmp/src/main/java/org/onosproject/drivers/polatis/snmp/PolatisPowerConfig.java
@@ -50,7 +50,7 @@
* Set target port power or channel attenuation to an optical snmp device.
*/
public class PolatisPowerConfig<T> extends AbstractHandlerBehaviour
- implements PowerConfig<T> {
+ implements PowerConfig<T> {
private static final int VOA_STATE_ABSOLUTE = 2;
@@ -64,32 +64,48 @@
private final Logger log = getLogger(getClass());
@Override
- public Optional<Long> getTargetPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireTargetPower(port, component));
+ public Optional<Double> getTargetPower(PortNumber port, T component) {
+ Long power = acquireCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public void setTargetPower(PortNumber port, T component, long power) {
+ public void setTargetPower(PortNumber port, T component, double power) {
if (component instanceof OchSignal) {
log.warn("Channel power is not applicable.");
return;
}
- setPortTargetPower(port, power);
+ setPortTargetPower(port, (long) power);
}
@Override
- public Optional<Long> currentPower(PortNumber port, T component) {
- return Optional.ofNullable(acquireCurrentPower(port, component));
+ public Optional<Double> currentPower(PortNumber port, T component) {
+ Long power = acquireCurrentPower(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(power.doubleValue());
}
@Override
- public Optional<Range<Long>> getTargetPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getTxPowerRange(port, component));
+ public Optional<Range<Double>> getTargetPowerRange(PortNumber port, T component) {
+ Range<Long> power = getTxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
- public Optional<Range<Long>> getInputPowerRange(PortNumber port, T component) {
- return Optional.ofNullable(getRxPowerRange(port, component));
+ public Optional<Range<Double>> getInputPowerRange(PortNumber port, T component) {
+ Range<Long> power = getRxPowerRange(port, component);
+ if (power == null) {
+ return Optional.empty();
+ }
+ return Optional.of(Range.closed((double) power.lowerEndpoint(), (double) power.upperEndpoint()));
}
@Override
@@ -158,7 +174,7 @@
DeviceId deviceId = handler().data().deviceId();
Long targetPower = 0L;
try {
- targetPower = Long.valueOf(get(handler(), VOA_LEVEL_OID + "." + port.toLong()).toInt());
+ targetPower = Long.valueOf(get(handler(), VOA_LEVEL_OID + "." + port.toLong()).toInt());
} catch (IOException e) {
log.error("Error reading target power for device {} exception {}", deviceId, e);
}
@@ -175,7 +191,7 @@
DeviceId deviceId = handler().data().deviceId();
Long power = 0L;
try {
- power = Long.valueOf(get(handler(), OPM_POWER_OID + "." + port.toLong()).toInt());
+ power = Long.valueOf(get(handler(), OPM_POWER_OID + "." + port.toLong()).toInt());
} catch (IOException e) {
log.error("Error reading current power for device {} exception {}", deviceId, e);
}