- List<CpToDegree> cpToDegreeList = getCpToDegreeList(degrees, nodeId, interfaceList);
- LOG.info("Map looks like this {}", interfaceList);
-
- postPortMapping(deviceInfo, null, deviceInfo.getNodeType().getIntValue(), cpToDegreeList);
-
- // Getting circuit-pack-name/port-name corresponding to TTP's
- for (ConnectionPorts cp : degreeConPorts) {
- String circuitPackName = cp.getCircuitPackName();
- String portName = cp.getPortName().toString();
- InstanceIdentifier<Ports> portIID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(CircuitPacks.class, new CircuitPacksKey(circuitPackName))
- .child(Ports.class, new PortsKey(portName));
-
- LOG.info("Fetching logical Connection Point value for port {} at circuit pack {}", portName,
- circuitPackName);
- Optional<Ports> portObject = this.deviceTransactionManager.getDataFromDevice(nodeId,
- LogicalDatastoreType.OPERATIONAL, portIID, Timeouts.DEVICE_READ_TIMEOUT,
- Timeouts.DEVICE_READ_TIMEOUT_UNIT);
- if (portObject.isPresent()) {
- Ports port = portObject.get();
- if (port.getLogicalConnectionPoint() != null) {
- LOG.info("Logical Connection Point for {} {} is {}", circuitPackName, portName,
- port.getLogicalConnectionPoint());
- portMapList.add(createMappingObject(nodeId, port, circuitPackName,
- port.getLogicalConnectionPoint()));
- } else {
- LOG.warn("Logical Connection Point value is missing for {} {}", circuitPackName,
- port.getPortName());
- }
- } else {
- LOG.warn("Port {} is not present in node {} in circuit pack {}!", portName, nodeId, circuitPackName);
- continue; // TODO continue or return true?
+ List<CpToDegree> cpToDegreeList = getCpToDegreeList(degrees, interfaceList);
+ LOG.info("{} : Map looks like this {}", nodeId, interfaceList);
+ postPortMapping(nodeId, null, null, cpToDegreeList, null, null);
+
+ Map<Integer, List<ConnectionPorts>> connectionPortMap = getPerDegreePorts(nodeId, deviceInfo);
+ for (Entry<Integer, List<ConnectionPorts>> cpMapEntry : connectionPortMap.entrySet()) {
+ switch (connectionPortMap.get(cpMapEntry.getKey()).size()) {
+ case 1:
+ // port is bidirectional
+ InstanceIdentifier<Ports> portID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class,
+ new CircuitPacksKey(connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName()))
+ .child(Ports.class,
+ new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName().toString()));
+ LOG.debug("{} : Fetching connection-port {} at circuit pack {}",
+ nodeId,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName(),
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName());
+ Optional<Ports> portObject = this.deviceTransactionManager.getDataFromDevice(nodeId,
+ LogicalDatastoreType.OPERATIONAL, portID, Timeouts.DEVICE_READ_TIMEOUT,
+ Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ if (!portObject.isPresent()) {
+ LOG.error("{} : No port {} on circuit pack {}",
+ nodeId,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName(),
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName());
+ return false;
+ }
+ Ports port = portObject.get();
+ if (port.getPortQual() == null) {
+ continue;
+ }
+ if (PortQual.RoadmExternal.getIntValue() != port.getPortQual().getIntValue()
+ || Direction.Bidirectional.getIntValue() != port.getPortDirection().getIntValue()) {
+ LOG.error("{} : port {} on {} - Impossible to create logical connection point"
+ + " - Error in configuration with port-qual or port-direction",
+ nodeId, port.getPortName(),
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName());
+ continue;
+ }
+ String logicalConnectionPoint = new StringBuilder("DEG")
+ .append(cpMapEntry.getKey())
+ .append("-TTP-TXRX")
+ .toString();
+ LOG.info("{} : Logical Connection Point for {} on {} is {}",
+ nodeId,
+ port.getPortName(), connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+ logicalConnectionPoint);
+ portMapList.add(createMappingObject(nodeId, port,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+ logicalConnectionPoint));
+ break;
+ case 2:
+ // ports are unidirectionals
+ String cp1Name = connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName();
+ String cp2Name = connectionPortMap.get(cpMapEntry.getKey()).get(1).getCircuitPackName();
+ InstanceIdentifier<Ports> port1ID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(cp1Name))
+ .child(Ports.class,
+ new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName().toString()));
+ LOG.debug("{} : Fetching connection-port {} at circuit pack {}",
+ nodeId, connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName(), cp1Name);
+ Optional<Ports> port1Object = this.deviceTransactionManager.getDataFromDevice(nodeId,
+ LogicalDatastoreType.OPERATIONAL, port1ID, Timeouts.DEVICE_READ_TIMEOUT,
+ Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ InstanceIdentifier<Ports> port2ID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
+ .child(CircuitPacks.class, new CircuitPacksKey(cp2Name))
+ .child(Ports.class,
+ new PortsKey(connectionPortMap.get(cpMapEntry.getKey()).get(1).getPortName().toString()));
+ LOG.debug("{} : Fetching connection-port {} at circuit pack {}",
+ nodeId, connectionPortMap.get(cpMapEntry.getKey()).get(1).getPortName(), cp2Name);
+ Optional<Ports> port2Object = this.deviceTransactionManager.getDataFromDevice(nodeId,
+ LogicalDatastoreType.OPERATIONAL, port2ID, Timeouts.DEVICE_READ_TIMEOUT,
+ Timeouts.DEVICE_READ_TIMEOUT_UNIT);
+ if (!port1Object.isPresent() || !port2Object.isPresent()) {
+ LOG.error("{} : No port {} on circuit pack {}",
+ nodeId,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getPortName(),
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName());
+ return false;
+ }
+
+ Ports port1 = port1Object.get();
+ Ports port2 = port2Object.get();
+ if (port1.getPortQual() == null || port2.getPortQual() == null) {
+ continue;
+ }
+ if (PortQual.RoadmExternal.getIntValue() != port1.getPortQual().getIntValue()
+ || PortQual.RoadmExternal.getIntValue() != port2.getPortQual().getIntValue()) {
+ LOG.error("{} : Impossible to create logical connection point for port {} or port {}"
+ + " - Error in configuration with port-qual",
+ nodeId, port1.getPortName(), port2.getPortName());
+ continue;
+ }
+ if (!checkPartnerPort(cp1Name, port1, port2)) {
+ LOG.error("{} : port {} on {} is not a correct partner port of {} on {}",
+ nodeId, port2.getPortName(), cp2Name, port1.getPortName(), cp1Name);
+ continue;
+ }
+ // Directions checks are the same for cp1 and cp2, no need to check them twice.
+ if (!checkPartnerPortNoDir(cp2Name, port2, port1)) {
+ LOG.error("{} : port {} on {} is not a correct partner port of {} on {}",
+ nodeId, port1.getPortName(), cp1Name, port2.getPortName(), cp2Name);
+ continue;
+ }
+
+ String logicalConnectionPoint1 = new StringBuilder("DEG")
+ .append(cpMapEntry.getKey())
+ .append("-TTP-")
+ .append(port1.getPortDirection().getName().toUpperCase(Locale.getDefault()))
+ .toString();
+ LOG.info("{} : Logical Connection Point for {} {} is {}", nodeId,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+ port1.getPortName(), logicalConnectionPoint1);
+ portMapList.add(createMappingObject(nodeId, port1,
+ connectionPortMap.get(cpMapEntry.getKey()).get(0).getCircuitPackName(),
+ logicalConnectionPoint1));
+ String logicalConnectionPoint2 = new StringBuilder("DEG")
+ .append(cpMapEntry.getKey())
+ .append("-TTP-")
+ .append(port2.getPortDirection().getName().toUpperCase(Locale.getDefault()))
+ .toString();
+ LOG.info("{} : Logical Connection Point for {} {} is {}",
+ nodeId,
+ connectionPortMap.get(cpMapEntry.getKey()).get(1).getCircuitPackName(),
+ port2.getPortName(), logicalConnectionPoint2);
+ portMapList.add(createMappingObject(nodeId, port2,
+ connectionPortMap.get(cpMapEntry.getKey()).get(1).getCircuitPackName(),
+ logicalConnectionPoint2));
+ break;
+ default:
+ LOG.error("{} : Number of connection port for DEG{} is incorrect", nodeId, cpMapEntry.getKey());
+ continue;