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.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.McCapabilities;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilitiesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.McCapabilitiesKey;
-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.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcp;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcpBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.SwitchingPoolLcpKey;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingListBuilder;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev201012.network.nodes.switching.pool.lcp.NonBlockingListKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.NodesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegreeBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.CpToDegreeKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.MappingKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilities;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilitiesBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.McCapabilitiesKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfo;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfo.OpenroadmVersion;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.NodeInfoBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcp;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcpBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.SwitchingPoolLcpKey;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingListBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev210310.network.nodes.switching.pool.lcp.NonBlockingListKey;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.alarm.pm.types.rev191129.Direction;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.optical.channel.types.rev200529.FrequencyGHz;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev200529.CircuitPack;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.Protocols1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.Lldp;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev200529.lldp.container.lldp.PortConfig;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.Ports1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapability;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.capability.rev200529.port.capability.grp.port.capabilities.SupportedInterfaceCapabilityKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.Uint16;
import org.opendaylight.yangtools.yang.common.Uint32;
// FIXME: many common pieces of code between PortMapping Versions 121 and 221 and 710
// some mutualization would be helpful
+@SuppressWarnings("CPD-START")
public class PortMappingVersion710 {
private static final Logger LOG = LoggerFactory.getLogger(PortMappingVersion710.class);
private static final Map<Direction, String> SUFFIX;
public boolean createMappingData(String nodeId) {
LOG.info("{} : OpenROADM version 7.1.0 node - Creating Mapping Data", nodeId);
List<Mapping> portMapList = new ArrayList<>();
- List<McCapabilities> mcCapabilitiesList = new ArrayList<>();
+ Map<McCapabilitiesKey, McCapabilities> mcCapabilities = new HashMap<>();
InstanceIdentifier<Info> infoIID = InstanceIdentifier.create(OrgOpenroadmDevice.class).child(Info.class);
Optional<Info> deviceInfoOptional = this.deviceTransactionManager.getDataFromDevice(
nodeId, LogicalDatastoreType.OPERATIONAL, infoIID,
return false;
}
// Get MC capabilities
- if (!createMcCapabilitiesList(nodeId, deviceInfo, mcCapabilitiesList)) {
+ if (!createMcCapabilitiesList(nodeId, deviceInfo, mcCapabilities)) {
// return false if MC capabilites failed
LOG.warn("{} : Unable to create MC capabilities", nodeId);
return false;
break;
}
- return postPortMapping(nodeId, nodeInfo, portMapList, null, null, mcCapabilitiesList);
+ return postPortMapping(nodeId, nodeInfo, portMapList, null, null, mcCapabilities);
}
public boolean updateMapping(String nodeId, Mapping oldMapping) {
List<Ports> portList = new ArrayList<>(cp.nonnullPorts().values());
portList.sort(Comparator.comparing(Ports::getPortName));
for (Ports port : portList) {
- if (port.getPortQual() == null) {
- LOG.warn("{} : port {} on {} - PortQual was not found",
- nodeId, port.getPortName(), circuitPackName);
- continue;
- }
-
- switch (port.getPortQual()) {
-
- case XpdrClient:
- case SwitchClient:
- String lcp0 = createXpdrLogicalConnectionPort(1, client, StringConstants.CLIENT_TOKEN);
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0);
- mappingMap.put(lcp0,
- createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null));
- client++;
- //continue;
- break;
-
- case XpdrNetwork:
- case SwitchNetwork:
- switch (port.getPortDirection()) {
-
- case Bidirectional:
- String lcp =
- createXpdrLogicalConnectionPort(1, line, StringConstants.NETWORK_TOKEN);
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
- mappingMap.put(lcp,
- createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null,
- null)
- );
- line++;
- break;
-
- case Rx:
- case Tx:
- StringBuilder circuitPackName2 = new StringBuilder();
- Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2,
- circuitPackList, lcpMap);
-
- if (port2 == null) {
- //key already present or an error occured and was logged
- continue;
- }
-
- putXpdrLcpsInMaps(line, nodeId, 1, null,
- circuitPackName, circuitPackName2.toString(), port, port2,
- lcpMap, mappingMap);
- line += 2;
- break;
-
- default:
- LOG.error("{} : port {} on {} - unsupported Direction {}",
- nodeId, port.getPortName(), circuitPackName, port.getPortDirection());
- }
- break;
-
- default:
- LOG.error("{} : port {} on {} - unsupported PortQual {}",
- nodeId, port.getPortName(), circuitPackName, port.getPortQual());
- }
+ int[] counters = fillXpdrLcpsMaps(line, client, nodeId,
+ 1, null, circuitPackName, port,
+ circuitPackList, lcpMap, mappingMap);
+ line = counters[0];
+ client = counters[1];
}
}
} else {
.findFirst().get().nonnullPorts().values().stream()
.filter(p -> p.getPortName().equals(portName))
.findFirst().get();
- if (port.getPortQual() == null) {
- LOG.warn("{} : port {} on {} - PortQual was not found",
- nodeId, port.getPortName(), circuitPackName);
- continue;
- }
-
- switch (port.getPortQual()) {
-
- case XpdrClient:
- case SwitchClient:
- String lcp0 =
- createXpdrLogicalConnectionPort(xponderNb , client, StringConstants.CLIENT_TOKEN);
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0);
- mappingMap.put(lcp0,
- createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null));
- client++;
- //continue;
- break;
-
- case XpdrNetwork:
- case SwitchNetwork:
- switch (port.getPortDirection()) {
-
- case Bidirectional:
- String lcp =
- createXpdrLogicalConnectionPort(xponderNb, line, StringConstants.NETWORK_TOKEN);
- lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
- mappingMap.put(lcp,
- createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null,
- xponderType));
- line++;
- break;
-
- case Rx:
- case Tx:
- StringBuilder circuitPackName2 = new StringBuilder();
- Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2,
- circuitPackList, lcpMap);
-
- if (port2 == null) {
- //key already present or an error occured and was logged
- continue;
- }
-
- putXpdrLcpsInMaps(line, nodeId, xponderNb, xponderType,
- circuitPackName, circuitPackName2.toString(), port, port2,
- lcpMap, mappingMap);
- line += 2;
- break;
-
- default:
- LOG.error("{} : port {} on {} - unsupported Direction {}",
- nodeId, port.getPortName(), circuitPackName, port.getPortDirection());
- }
- break;
-
- default:
- LOG.error("{} : port {} on {} - unsupported PortQual {}",
- nodeId, port.getPortName(), circuitPackName, port.getPortQual());
- }
+ int[] counters = fillXpdrLcpsMaps(line, client, nodeId,
+ xponderNb, xponderType, circuitPackName, port,
+ circuitPackList, lcpMap, mappingMap);
+ line = counters[0];
+ client = counters[1];
}
}
}
return cpToDegreeList;
}
- private List<McCapabilities> getMcCapabilitiesList(Map<Integer, Degree> degrees, List<SharedRiskGroup> srgs,
- Info deviceInfo, String nodeId) {
+ private Map<McCapabilitiesKey, McCapabilities> getMcCapabilities(Map<Integer, Degree> degrees,
+ List<SharedRiskGroup> srgs, Info deviceInfo, String nodeId) {
//TODO some divergences with 2.2.1 here
LOG.info("{} : Getting the MC capabilities for degrees", nodeId);
//Get all the mc-capability profiles from the device
Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfiles =
getMcCapabilityProfiles(nodeId, deviceInfo);
// Add the DEG mc-capabilities
- List<McCapabilities> mcCapabilitiesList = createMcCapDegreeObject(degrees, mcCapabilityProfiles, nodeId);
+ Map<McCapabilitiesKey, McCapabilities> mcCapabilities = createMcCapDegreeObject(degrees, mcCapabilityProfiles,
+ nodeId);
// Add the SRG mc-capabilities
LOG.info("{} : Getting the MC capabilities for SRGs", nodeId);
- mcCapabilitiesList.addAll(createMcCapSrgObject(srgs, mcCapabilityProfiles, nodeId));
- return mcCapabilitiesList;
+ mcCapabilities.putAll(createMcCapSrgObject(srgs, mcCapabilityProfiles, nodeId));
+ return mcCapabilities;
}
private boolean postPortMapping(String nodeId, NodeInfo nodeInfo, List<Mapping> portMapList,
- List<CpToDegree> cp2DegreeList, List<SwitchingPoolLcp> splList, List<McCapabilities> mcCapList) {
+ List<CpToDegree> cp2DegreeList, List<SwitchingPoolLcp> splList,
+ Map<McCapabilitiesKey, McCapabilities> mcCapMap) {
NodesBuilder nodesBldr = new NodesBuilder().withKey(new NodesKey(nodeId)).setNodeId(nodeId);
if (nodeInfo != null) {
nodesBldr.setNodeInfo(nodeInfo);
}
nodesBldr.setSwitchingPoolLcp(splMap);
}
- if (mcCapList != null) {
- nodesBldr.setMcCapabilities(mcCapList);
+ if (mcCapMap != null) {
+ nodesBldr.setMcCapabilities(mcCapMap);
}
Map<NodesKey,Nodes> nodesList = new HashMap<>();
Nodes nodes = nodesBldr.build();
.setInterfaceName(interfaceList.get(circuitPackName)).build();
}
- private List<McCapabilities> createMcCapDegreeObject(Map<Integer, Degree> degrees,
+ private Map<McCapabilitiesKey, McCapabilities> createMcCapDegreeObject(Map<Integer, Degree> degrees,
Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
//TODO some divergences here with 2.2.1
- List<McCapabilities> mcCapabilitiesList = new ArrayList<>();
+ Map<McCapabilitiesKey, McCapabilities> mcCapabilitiesMap = new HashMap<>();
for (Degree degree : degrees.values()) {
if ((degree.getMcCapabilityProfileName() == null) || (degree.getMcCapabilityProfileName().isEmpty())) {
mcCapabilitiesBuilder
.setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50"))
.setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50"));
- mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+ mcCapabilitiesMap.put(mcCapabilitiesBuilder.key(), mcCapabilitiesBuilder.build());
continue;
}
mcCapabilitiesBuilder
.setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
.setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
- mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+ mcCapabilitiesMap.put(mcCapabilitiesBuilder.key(), mcCapabilitiesBuilder.build());
}
}
- return mcCapabilitiesList;
+ return mcCapabilitiesMap;
}
- private List<McCapabilities> createMcCapSrgObject(List<SharedRiskGroup> srgs,
+ private Map<McCapabilitiesKey, McCapabilities> createMcCapSrgObject(List<SharedRiskGroup> srgs,
Map<McCapabilityProfileKey, McCapabilityProfile> mcCapabilityProfileMap, String nodeId) {
- List<McCapabilities> mcCapabilitiesList = new ArrayList<>();
+ Map<McCapabilitiesKey, McCapabilities> mcCapabilitiesMap = new HashMap<>();
for (SharedRiskGroup srg : srgs) {
if ((srg.getMcCapabilityProfileName() == null) || (srg.getMcCapabilityProfileName().isEmpty())) {
mcCapabilitiesBuilder
.setCenterFreqGranularity(FrequencyGHz.getDefaultInstance("50"))
.setSlotWidthGranularity(FrequencyGHz.getDefaultInstance("50"));
- mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+ mcCapabilitiesMap.put(mcCapabilitiesBuilder.key(), mcCapabilitiesBuilder.build());
continue;
}
mcCapabilitiesBuilder
.setCenterFreqGranularity(mcCapabilityProfile.getCenterFreqGranularity())
.setSlotWidthGranularity(mcCapabilityProfile.getSlotWidthGranularity());
- mcCapabilitiesList.add(mcCapabilitiesBuilder.build());
+ mcCapabilitiesMap.put(mcCapabilitiesBuilder.key(), mcCapabilitiesBuilder.build());
}
}
- return mcCapabilitiesList;
+ return mcCapabilitiesMap;
}
private Mapping createMappingObject(String nodeId, Ports port, String circuitPackName,
.setSupportingCircuitPackName(circuitPackName)
.setSupportingPort(port.getPortName())
.setPortDirection(port.getPortDirection().getName());
+ if (port.getAdministrativeState() != null) {
+ mpBldr.setPortAdminState(port.getAdministrativeState().name());
+ }
+ if (port.getOperationalState() != null) {
+ mpBldr.setPortOperState(port.getOperationalState().name());
+ }
if ((port.getInterfaces() == null)
|| (!logicalConnectionPoint.contains(StringConstants.TTP_TOKEN)
return mpBldr.build();
}
- private Mapping createXpdrMappingObject(String nodeId, Ports ports, String circuitPackName,
+ private Mapping createXpdrMappingObject(String nodeId, Ports port, String circuitPackName,
String logicalConnectionPoint, String partnerLcp, Mapping mapping, String connectionMapLcp,
XpdrNodeTypes xpdrNodeType) {
.withKey(new MappingKey(logicalConnectionPoint))
.setLogicalConnectionPoint(logicalConnectionPoint)
.setSupportingCircuitPackName(circuitPackName)
- .setSupportingPort(ports.getPortName())
- .setPortDirection(ports.getPortDirection().getName())
+ .setSupportingPort(port.getPortName())
+ .setPortDirection(port.getPortDirection().getName())
.setLcpHashVal(FnvUtils.fnv1_64(nodeIdLcp));
- if (ports.getPortQual() != null) {
- mpBldr.setPortQual(ports.getPortQual().getName());
+ if (port.getPortQual() != null) {
+ mpBldr.setPortQual(port.getPortQual().getName());
}
if (xpdrNodeType != null) {
mpBldr.setXponderType(xpdrNodeType);
if (partnerLcp != null) {
mpBldr.setPartnerLcp(partnerLcp);
}
+ if (port.augmentation(Ports1.class) != null && port.augmentation(Ports1.class).getPortCapabilities() != null) {
+ List<Class<? extends org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev200327
+ .SupportedIfCapability>> supportedIntf = new ArrayList<>();
+ Map<SupportedInterfaceCapabilityKey, SupportedInterfaceCapability> supIfCapMap = port
+ .augmentation(Ports1.class).getPortCapabilities().nonnullSupportedInterfaceCapability();
+ for (SupportedInterfaceCapability sic : supIfCapMap.values()) {
+ supportedIntf.add(sic.getIfCapType());
+ }
+ mpBldr.setSupportedInterfaceCapability(supportedIntf);
+ }
+ if (port.getAdministrativeState() != null) {
+ mpBldr.setPortAdminState(port.getAdministrativeState().name());
+ }
+ if (port.getOperationalState() != null) {
+ mpBldr.setPortOperState(port.getOperationalState().name());
+ }
return mpBldr.build();
}
return;
}
+ private int[] fillXpdrLcpsMaps(int line, int client, String nodeId,
+ Integer xponderNb, XpdrNodeTypes xponderType,
+ String circuitPackName, Ports port,
+ List<CircuitPacks> circuitPackList, Map<String, String> lcpMap, Map<String, Mapping> mappingMap) {
+
+ if (port.getPortQual() == null) {
+ LOG.warn("{} : port {} on {} - PortQual was not found",
+ nodeId, port.getPortName(), circuitPackName);
+ return new int[] {line, client};
+ }
+
+ switch (port.getPortQual()) {
+
+ case XpdrClient:
+ case SwitchClient:
+ String lcp0 = createXpdrLogicalConnectionPort(xponderNb, client, StringConstants.CLIENT_TOKEN);
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp0);
+ mappingMap.put(lcp0,
+ createXpdrMappingObject(nodeId, port, circuitPackName, lcp0, null, null, null, null));
+ client++;
+ break;
+
+ case XpdrNetwork:
+ case SwitchNetwork:
+ line = fillXpdrNetworkLcpsMaps(line, nodeId,
+ xponderNb, xponderType,
+ circuitPackName, port,
+ circuitPackList, lcpMap, mappingMap);
+ break;
+
+ default:
+ LOG.error("{} : port {} on {} - unsupported PortQual {}",
+ nodeId, port.getPortName(), circuitPackName, port.getPortQual());
+ }
+ return new int[] {line, client};
+ }
+
+ private int fillXpdrNetworkLcpsMaps(int line, String nodeId,
+ Integer xponderNb, XpdrNodeTypes xponderType,
+ String circuitPackName, Ports port,
+ List<CircuitPacks> circuitPackList, Map<String, String> lcpMap, Map<String, Mapping> mappingMap) {
+
+ switch (port.getPortDirection()) {
+
+ case Bidirectional:
+ String lcp = createXpdrLogicalConnectionPort(xponderNb, line, StringConstants.NETWORK_TOKEN);
+ lcpMap.put(circuitPackName + '+' + port.getPortName(), lcp);
+ mappingMap.put(lcp,
+ createXpdrMappingObject(nodeId, port, circuitPackName, lcp, null, null, null, xponderType));
+ line++;
+ break;
+
+ case Rx:
+ case Tx:
+ StringBuilder circuitPackName2 = new StringBuilder();
+ Ports port2 = getPort2(port, nodeId, circuitPackName, circuitPackName2,
+ circuitPackList, lcpMap);
+
+ if (port2 == null) {
+ //key already present or an error occured and was logged
+ return line;
+ }
+
+ putXpdrLcpsInMaps(line, nodeId, xponderNb, xponderType,
+ circuitPackName, circuitPackName2.toString(), port, port2,
+ lcpMap, mappingMap);
+ line += 2;
+ break;
+
+ default:
+ LOG.error("{} : port {} on {} - unsupported Direction {}",
+ nodeId, port.getPortName(), circuitPackName, port.getPortDirection());
+ }
+
+ return line;
+ }
- private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List<McCapabilities> mcCapabilitiesList) {
+ private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo,
+ Map<McCapabilitiesKey, McCapabilities> mcCapabilitiesMap) {
Map<Integer, Degree> degrees = getDegreesMap(nodeId, deviceInfo);
List<SharedRiskGroup> srgs = getSrgs(nodeId, deviceInfo);
- mcCapabilitiesList.addAll(getMcCapabilitiesList(degrees, srgs, deviceInfo, nodeId));
+ mcCapabilitiesMap.putAll(getMcCapabilities(degrees, srgs, deviceInfo, nodeId));
return true;
}