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;
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() {
}
*/
public static Map<String, Double> getXponderPowerRange(String circuitPackName, String portName, String deviceId,
DeviceTransactionManager deviceTransactionManager) {
- InstanceIdentifier<Ports> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName))
- .child(Ports.class, new PortsKey(portName));
+ InstanceIdentifier<Ports> portIID = InstanceIdentifier
+ .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName))
+ .child(Ports.class, new PortsKey(portName))
+ .build();
Map<String, Double> powerRangeMap = new HashMap<>();
LOG.debug("Fetching logical Connection Point value for port {} at circuit pack {}", portName, circuitPackName);
Optional<Ports> portObject =
Map<String, Double> powerRangeMap = new HashMap<>();
LOG.debug("Coming inside SRG power range");
LOG.debug("Mapping object exists.");
- InstanceIdentifier<Ports> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName))
- .child(Ports.class, new PortsKey(portName));
+ InstanceIdentifier<Ports> 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<Ports> portObject =
* OCH interface name carrying WL
* @param txPower
* Calculated transmit power
+ * @param interfaceObj
+ * Interface object
+ * @param deviceTransactionManager
+ * Device Transaction Manager
+ *
* @return true/false based on status of operation
*/
public static boolean setTransponderPower(String nodeId, String interfaceName, BigDecimal txPower,
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<Optional<DeviceTransaction>> deviceTxFuture = deviceTransactionManager.getDeviceTransaction(nodeId);
DeviceTransaction deviceTx;
try {
+ "setup!", nodeId, e);
return false;
}
- InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(Interface.class, new InterfaceKey(interfaceName));
- deviceTx.put(LogicalDatastoreType.CONFIGURATION, interfacesIID, ochInterfaceBuilder.build());
- ListenableFuture<Void> submit = deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT,
- Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
+ InstanceIdentifier<Interface> interfacesIID = InstanceIdentifier
+ .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class)
+ .child(Interface.class, new InterfaceKey(interfaceName))
+ .build();
+ deviceTx.merge(LogicalDatastoreType.CONFIGURATION, interfacesIID, ochInterfaceBuilder.build());
+ FluentFuture<? extends @NonNull CommitInfo> 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;
}
* Power value in DBm.
* @param connectionNumber
* Name of the cross connect.
+ * @param crossConnect
+ * cross connect.
+ * @param deviceTransactionManager
+ * Device Transaction Manager.
+ *
* @return true/false based on status of operation.
*/
public static boolean setPowerLevel(String deviceId, OpticalControlMode mode, BigDecimal powerValue,
String connectionNumber, CrossConnect crossConnect,
DeviceTransactionManager deviceTransactionManager) {
- Optional<RoadmConnections> rdmConnOpt = crossConnect.getCrossConnect(deviceId, connectionNumber);
+ @SuppressWarnings("unchecked") Optional<RoadmConnections> rdmConnOpt =
+ (Optional<RoadmConnections>) crossConnect.getCrossConnect(deviceId, connectionNumber);
if (rdmConnOpt.isPresent()) {
RoadmConnectionsBuilder rdmConnBldr = new RoadmConnectionsBuilder(rdmConnOpt.get());
rdmConnBldr.setOpticalControlMode(mode);
if (powerValue != null) {
- rdmConnBldr.setTargetOutputPower(new PowerDBm(powerValue));
+ rdmConnBldr.setTargetOutputPower(new PowerDBm(Decimal64.valueOf(powerValue)));
}
RoadmConnections newRdmConn = rdmConnBldr.build();
Future<Optional<DeviceTransaction>> deviceTxFuture =
return false;
}
// post the cross connect on the device
- InstanceIdentifier<RoadmConnections> roadmConnIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber));
- deviceTx.put(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn);
- ListenableFuture<Void> submit = deviceTx.submit(Timeouts.DEVICE_WRITE_TIMEOUT,
- Timeouts.DEVICE_WRITE_TIMEOUT_UNIT);
+ InstanceIdentifier<RoadmConnections> roadmConnIID = InstanceIdentifier
+ .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class)
+ .child(RoadmConnections.class, new RoadmConnectionsKey(connectionNumber))
+ .build();
+ deviceTx.merge(LogicalDatastoreType.CONFIGURATION, roadmConnIID, newRdmConn);
+ FluentFuture<? extends @NonNull CommitInfo> 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) {