import com.google.common.util.concurrent.FluentFuture;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaceException;
import org.opendaylight.transportpce.common.openroadminterfaces.OpenRoadmInterfaces;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.NetworkBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.NodesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.CpToDegreeBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.CpToDegreeKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.MappingBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.MappingKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.NodeInfo;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.NodeInfo.OpenroadmVersion;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev200128.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.NodeInfoBuilder;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.Direction;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev181019.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.Port;
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.org.openroadm.device.container.org.openroadm.device.Protocols;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroup;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.SharedRiskGroupKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.org.openroadm.device.connection.map.Destination;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.port.Interfaces;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.types.rev191129.NodeTypes;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.InterfaceType;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpenROADMOpticalMultiplex;
import org.opendaylight.yang.gen.v1.http.org.openroadm.interfaces.rev161014.OpticalTransport;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.Lldp;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.PortConfig;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Map<String, Mapping> mappingMap = new HashMap<>();
// com.google.common.collect.ImmutableList implementation of List
- List<CircuitPacks> circuitPackList = new ArrayList<>(deviceObject.get().getCircuitPacks());
+ List<CircuitPacks> circuitPackList = new ArrayList<>(deviceObject.get()
+ .nonnullCircuitPacks().values());
circuitPackList.sort(Comparator.comparing(CircuitPack::getCircuitPackName));
for (CircuitPacks cp : circuitPackList) {
}
// com.google.common.collect.ImmutableList implementation of List
- List<Ports> portList = new ArrayList<>(cp.getPorts());
+ List<Ports> portList = new ArrayList<>(cp.nonnullPorts().values());
portList.sort(Comparator.comparing(Ports::getPortName));
for (Ports port : portList) {
if (port.getPortQual() == null) {
Optional<CircuitPacks> cpOpt = circuitPackList.stream().filter(cP -> cP.getCircuitPackName()
.equals(port.getPartnerPort().getCircuitPackName())).findFirst();
if (cpOpt.isPresent()) {
- Optional<Ports> poOpt = cpOpt.get().getPorts().stream().filter(p -> p.getPortName().equals(port
+ Optional<Ports> poOpt = cpOpt.get().nonnullPorts()
+ .values().stream().filter(p -> p.getPortName().equals(port
.getPartnerPort().getPortName().toString())).findFirst();
if (poOpt.isPresent()) {
Ports port2 = poOpt.get();
}
}
}
- List<ConnectionMap> connectionMap = deviceObject.get().getConnectionMap();
+ Collection<ConnectionMap> connectionMap = deviceObject.get().nonnullConnectionMap().values();
String slcp = null;
String dlcp = null;
for (ConnectionMap cm : connectionMap) {
if (lcpMap.containsKey(skey)) {
slcp = lcpMap.get(skey);
}
- String dkey = cm.getDestination().get(0).getCircuitPackName() + "+"
- + cm.getDestination().get(0).getPortName();
+ Destination destination0 = cm.nonnullDestination().values().iterator().next();
+ String dkey = destination0.getCircuitPackName() + "+" + destination0.getPortName();
if (lcpMap.containsKey(dkey)) {
dlcp = lcpMap.get(dkey);
}
= new ArrayList<>();
LOG.info("Getting Circuitpacks for Srg Number {}", srgCounter);
InstanceIdentifier<SharedRiskGroup> srgIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(SharedRiskGroup.class, new SharedRiskGroupKey(srgCounter));
+ .child(SharedRiskGroup.class, new SharedRiskGroupKey(Uint16.valueOf(srgCounter)));
Optional<SharedRiskGroup> ordmSrgObject = this.deviceTransactionManager.getDataFromDevice(deviceId,
LogicalDatastoreType.OPERATIONAL, srgIID,
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
if (ordmSrgObject.isPresent()) {
- srgCps.addAll(ordmSrgObject.get().getCircuitPacks());
+ srgCps.addAll(ordmSrgObject.get().nonnullCircuitPacks().values());
cpPerSrg.put(ordmSrgObject.get().getSrgNumber().toJava(), srgCps);
}
}
}
// com.google.common.collect.ImmutableList implementation of List
@Nullable
- List<Ports> portList = new ArrayList<>(circuitPackObject.get().getPorts());
+ List<Ports> portList = new ArrayList<>(circuitPackObject.get().nonnullPorts().values());
Collections.sort(portList, new SortPort121ByName());
int portIndex = 1;
for (Ports port : portList) {
for (int degreeCounter = 1; degreeCounter <= maxDegree; degreeCounter++) {
LOG.info("Getting Connection ports for Degree Number {}", degreeCounter);
InstanceIdentifier<Degree> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(Degree.class, new DegreeKey(degreeCounter));
+ .child(Degree.class, new DegreeKey(Uint16.valueOf(degreeCounter)));
Optional<Degree> ordmDegreeObject = this.deviceTransactionManager.getDataFromDevice(deviceId,
LogicalDatastoreType.OPERATIONAL, deviceIID,
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
for (int degreeCounter = 1; degreeCounter <= maxDegree; degreeCounter++) {
LOG.info("Getting Connection ports for Degree Number {}", degreeCounter);
InstanceIdentifier<Degree> deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(Degree.class, new DegreeKey(degreeCounter));
+ .child(Degree.class, new DegreeKey(Uint16.valueOf(degreeCounter)));
Optional<Degree> ordmDegreeObject = this.deviceTransactionManager.getDataFromDevice(deviceId,
LogicalDatastoreType.OPERATIONAL, deviceIID,
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
if (ordmDegreeObject.isPresent()) {
- conPortMap.put(degreeCounter, ordmDegreeObject.get().getConnectionPorts());
+ conPortMap.put(degreeCounter, new ArrayList<>(ordmDegreeObject.get()
+ .nonnullConnectionPorts().values()));
}
}
LOG.info("Device {} has {} degree", deviceId, conPortMap.size());
Timeouts.DEVICE_READ_TIMEOUT_UNIT);
if (protocolObject.isPresent() && protocolObject.get().augmentation(Protocols1.class).getLldp() != null) {
Lldp lldp = protocolObject.get().augmentation(Protocols1.class).getLldp();
- for (PortConfig portConfig : lldp.getPortConfig()) {
+ for (PortConfig portConfig : lldp.nonnullPortConfig().values()) {
if (portConfig.getAdminStatus().equals(PortConfig.AdminStatus.Txandrx)) {
InstanceIdentifier<Interface> interfaceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
.child(Interface.class, new InterfaceKey(portConfig.getIfName()));
for (Degree degree : degrees) {
if (degree.getCircuitPacks() != null) {
LOG.info("Inside CP to degree list");
- cpToDegreeList.addAll(degree.getCircuitPacks().stream()
+ cpToDegreeList.addAll(degree.nonnullCircuitPacks().values().stream()
.map(cp -> createCpToDegreeObject(cp.getCircuitPackName(),
degree.getDegreeNumber().toString(), nodeId, interfaceList))
.collect(Collectors.toList()));
nodesBldr.setNodeInfo(nodeInfo);
}
if (portMapList != null) {
- nodesBldr.setMapping(portMapList);
+ Map<MappingKey, Mapping> mappingMap = new HashMap<>();
+ for (Mapping mapping: portMapList) {
+ if (mapping != null) {
+ mappingMap.put(mapping.key(), mapping);
+ }
+ }
+ nodesBldr.setMapping(mappingMap);
}
if (cp2DegreeList != null) {
- nodesBldr.setCpToDegree(cp2DegreeList);
+ Map<CpToDegreeKey, CpToDegree> cpToDegreeMap = new HashMap<>();
+ for (CpToDegree cp2Degree: cp2DegreeList) {
+ if (cp2Degree != null) {
+ cpToDegreeMap.put(cp2Degree.key(), cp2Degree);
+ }
+ }
+ nodesBldr.setCpToDegree(cpToDegreeMap);
}
- List<Nodes> nodesList = new ArrayList<>();
- nodesList.add(nodesBldr.build());
+ Map<NodesKey,Nodes> nodesList = new HashMap<>();
+ Nodes nodes = nodesBldr.build();
+ nodesList.put(nodes.key(),nodes);
NetworkBuilder nwBldr = new NetworkBuilder();
nwBldr.setNodes(nodesList);
interfaceName = interfaceList.get(circuitPackName);
}
return new CpToDegreeBuilder().withKey(new CpToDegreeKey(circuitPackName)).setCircuitPackName(circuitPackName)
- .setDegreeNumber(Long.valueOf(degreeNumber)).setInterfaceName(interfaceName).build();
+ .setDegreeNumber(Uint32.valueOf(degreeNumber)).setInterfaceName(interfaceName).build();
}
private Mapping createMappingObject(String nodeId, Ports port, String circuitPackName,
private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName,
String logicalConnectionPoint, String partnerLcp, Mapping mapping, String assoLcp) {
MappingBuilder mpBldr;
+
if (mapping != null && assoLcp != null) {
// update existing mapping
mpBldr = new MappingBuilder(mapping);
} else {
// create a new mapping
mpBldr = new MappingBuilder();
+ String nodeIdLcp = nodeId + "-" + logicalConnectionPoint;
mpBldr.withKey(new MappingKey(logicalConnectionPoint))
.setLogicalConnectionPoint(logicalConnectionPoint)
.setSupportingCircuitPackName(circuitPackName)
.setSupportingPort(port.getPortName())
- .setPortDirection(port.getPortDirection().getName());
+ .setPortDirection(port.getPortDirection().getName())
+ .setLcpHashVal(FnvUtils.fnv1_64(nodeIdLcp));
if (port.getPortQual() != null) {
mpBldr.setPortQual(port.getPortQual().getName());
}
}
return nodeInfoBldr.build();
}
-
}