X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=olm%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Ftransportpce%2Folm%2Fpower%2FPowerMgmtVersion121.java;h=315626b26a11c90301abd9ed0bcb3ddffccf02ea;hb=24d436f1b7a0909804660afcfc2758d8c5cadc6a;hp=df6dced557a1236a566c6f96c0d125de2b0d9a40;hpb=45d029a83d991fc604ec9cdb829180d16de0e89c;p=transportpce.git diff --git a/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtVersion121.java b/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtVersion121.java index df6dced55..315626b26 100644 --- a/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtVersion121.java +++ b/olm/src/main/java/org/opendaylight/transportpce/olm/power/PowerMgmtVersion121.java @@ -8,21 +8,23 @@ package org.opendaylight.transportpce.olm.power; -import com.google.common.util.concurrent.ListenableFuture; - +import com.google.common.util.concurrent.FluentFuture; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.crossconnect.CrossConnect; import org.opendaylight.transportpce.common.device.DeviceTransaction; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.OpticalControlMode; import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.PowerDBm; +import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.Ports; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.pack.PortsKey; import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.circuit.packs.CircuitPacks; @@ -37,12 +39,12 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.open import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.Interface1Builder; import org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014.och.container.OchBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Decimal64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public final class PowerMgmtVersion121 { private static final Logger LOG = LoggerFactory.getLogger(PowerMgmtVersion121.class); - private static final long DATA_STORE_READ_TIMEOUT = 120; private PowerMgmtVersion121() { } @@ -62,16 +64,18 @@ public final class PowerMgmtVersion121 { */ public static Map getXponderPowerRange(String circuitPackName, String portName, String deviceId, DeviceTransactionManager deviceTransactionManager) { - InstanceIdentifier portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName)) - .child(Ports.class, new PortsKey(portName)); + InstanceIdentifier portIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName)) + .child(Ports.class, new PortsKey(portName)) + .build(); Map powerRangeMap = new HashMap<>(); LOG.debug("Fetching logical Connection Point value for port {} at circuit pack {}", portName, circuitPackName); Optional portObject = deviceTransactionManager.getDataFromDevice(deviceId, LogicalDatastoreType.OPERATIONAL, portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (portObject.isPresent()) { - Ports port = portObject.get(); + Ports port = portObject.orElseThrow(); if (port.getTransponderPort().getPortPowerCapabilityMaxTx() != null) { powerRangeMap.put("MaxTx", port.getTransponderPort().getPortPowerCapabilityMaxTx().getValue() .doubleValue()); @@ -105,16 +109,18 @@ public final class PowerMgmtVersion121 { Map powerRangeMap = new HashMap<>(); LOG.debug("Coming inside SRG power range"); LOG.debug("Mapping object exists."); - InstanceIdentifier portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName)) - .child(Ports.class, new PortsKey(portName)); + InstanceIdentifier portIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName)) + .child(Ports.class, new PortsKey(portName)) + .build(); LOG.debug("Fetching logical Connection Point value for port {} at circuit pack {}{}", portName, circuitPackName, portIID); Optional portObject = deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, portIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (portObject.isPresent()) { - Ports port = portObject.get(); + Ports port = portObject.orElseThrow(); if (port.getRoadmPort() != null) { LOG.debug("Port found on the node ID"); powerRangeMap.put("MinRx", port.getRoadmPort() @@ -158,16 +164,14 @@ public final class PowerMgmtVersion121 { OchBuilder ochBuilder = new OchBuilder(ochInterfaceBuilder.augmentation( org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014 .Interface1.class).getOch()); - ochBuilder.setTransmitPower(new PowerDBm(txPower)); - ochInterfaceBuilder.addAugmentation( - org.opendaylight.yang.gen.v1.http.org.openroadm.optical.channel.interfaces.rev161014 - .Interface1.class, new Interface1Builder().setOch(ochBuilder.build()).build()); + ochBuilder.setTransmitPower(new PowerDBm(Decimal64.valueOf(txPower))); + ochInterfaceBuilder.addAugmentation(new Interface1Builder().setOch(ochBuilder.build()).build()); Future> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(nodeId); DeviceTransaction deviceTx; try { Optional deviceTxOpt = deviceTxFuture.get(); if (deviceTxOpt.isPresent()) { - deviceTx = deviceTxOpt.get(); + deviceTx = deviceTxOpt.orElseThrow(); } else { LOG.error("Transaction for device {} was not found during transponder" + " power setup for Node:", nodeId); @@ -178,17 +182,19 @@ public final class PowerMgmtVersion121 { + "setup!", nodeId, e); return false; } - InstanceIdentifier interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Interface.class, new InterfaceKey(interfaceName)); - deviceTx.put(LogicalDatastoreType.CONFIGURATION, interfacesIID, ochInterfaceBuilder.build()); - ListenableFuture submit = deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT, - Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); + InstanceIdentifier interfacesIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(Interface.class, new InterfaceKey(interfaceName)) + .build(); + deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ochInterfaceBuilder.build()); + FluentFuture commit = + deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); try { - submit.get(); - LOG.info("Transponder Power update is submitted"); + commit.get(); + LOG.info("Transponder Power update is committed"); return true; } catch (InterruptedException | ExecutionException e) { - LOG.error("Setting transponder power failed {}", e); + LOG.error("Setting transponder power failed: ", e); return false; } @@ -217,12 +223,13 @@ public final class PowerMgmtVersion121 { public static boolean setPowerLevel(String deviceId, OpticalControlMode mode, BigDecimal powerValue, String connectionNumber, CrossConnect crossConnect, DeviceTransactionManager deviceTransactionManager) { - Optional rdmConnOpt = crossConnect.getCrossConnect(deviceId, connectionNumber); + @SuppressWarnings("unchecked") Optional rdmConnOpt = + (Optional) crossConnect.getCrossConnect(deviceId, connectionNumber); if (rdmConnOpt.isPresent()) { - RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.get()); + RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.orElseThrow()); rdmConnBldr.setOpticalControlMode(mode); if (powerValue != null) { - rdmConnBldr.setTargetOutputPower(new PowerDBm(powerValue)); + rdmConnBldr.setTargetOutputPower(new PowerDBm(Decimal64.valueOf(powerValue))); } RoadmConnections newRdmConn = rdmConnBldr.build(); Future> deviceTxFuture = @@ -231,7 +238,7 @@ public final class PowerMgmtVersion121 { try { Optional deviceTxOpt = deviceTxFuture.get(); if (deviceTxOpt.isPresent()) { - deviceTx = deviceTxOpt.get(); + deviceTx = deviceTxOpt.orElseThrow(); } else { LOG.error("Transaction for device {} was not found!", deviceId); return false; @@ -241,13 +248,15 @@ public final class PowerMgmtVersion121 { return false; } // post the cross connect on the device - InstanceIdentifier roadmConnIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber)); - deviceTx.put(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn); - ListenableFuture submit = deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT, - Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); + InstanceIdentifier roadmConnIID = InstanceIdentifier + .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class) + .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber)) + .build(); + deviceTx.merge(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn); + FluentFuture commit = + deviceTx.commit(Timeouts.DEVICE_WRITE_TIMEOUT, Timeouts.DEVICE_WRITE_TIMEOUT_UNIT); try { - submit.get(); + commit.get(); LOG.info("Roadm connection power level successfully set "); return true; } catch (InterruptedException | ExecutionException ex) {