From 5560bd76a985f174b8ddcb620cd2b375949916db Mon Sep 17 00:00:00 2001 From: "guillaume.lambert" Date: Tue, 2 Feb 2021 21:02:33 +0100 Subject: [PATCH] Add a portmapping method to map degrees that can be easily reused in the other methods - use getDegreesMap() to retrieve the list of Degrees - getPerDegreePorts() to generate a map of ports per degree - remove unused argument from some methods JIRA: TRNSPRTPCE-354 Signed-off-by: guillaume.lambert Change-Id: I21faea97f7f599a2dc1dc11b9c94823369f435cb --- .../common/mapping/PortMappingVersion121.java | 39 ++++--------- .../common/mapping/PortMappingVersion221.java | 57 +++++++------------ .../common/mapping/PortMappingVersion710.java | 57 +++++++------------ 3 files changed, 51 insertions(+), 102 deletions(-) diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java index 36e2dc376..1aa58c60c 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion121.java @@ -515,8 +515,8 @@ public class PortMappingVersion121 { return lcp; } - private List getDegrees(String deviceId, Info ordmInfo) { - List degrees = new ArrayList<>(); + private Map getDegreesMap(String deviceId, Info ordmInfo) { + Map degrees = new HashMap<>(); // Get value for max degree from info subtree, required for iteration // if not present assume to be 20 (temporary) @@ -530,7 +530,7 @@ public class PortMappingVersion121 { LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (ordmDegreeObject.isPresent()) { - degrees.add(ordmDegreeObject.get()); + degrees.put(degreeCounter, ordmDegreeObject.get()); } } LOG.info("Device {} has {} degree", deviceId, degrees.size()); @@ -539,21 +539,8 @@ public class PortMappingVersion121 { private Map> getPerDegreePorts(String deviceId, Info ordmInfo) { Map> conPortMap = new HashMap<>(); - Integer maxDegree = ordmInfo.getMaxDegrees() == null ? 20 : ordmInfo.getMaxDegrees().toJava(); - - for (int degreeCounter = 1; degreeCounter <= maxDegree; degreeCounter++) { - LOG.info("Getting Connection ports for Degree Number {}", degreeCounter); - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Degree.class, new DegreeKey(Uint16.valueOf(degreeCounter))); - Optional ordmDegreeObject = this.deviceTransactionManager.getDataFromDevice(deviceId, - LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (ordmDegreeObject.isPresent()) { - conPortMap.put(degreeCounter, new ArrayList<>(ordmDegreeObject.get() - .nonnullConnectionPorts().values())); - } - } - LOG.info("Device {} has {} degree", deviceId, conPortMap.size()); + getDegreesMap(deviceId, ordmInfo).forEach( + (index, degree) -> conPortMap.put(index, new ArrayList<>(degree.nonnullConnectionPorts().values()))); return conPortMap; } @@ -601,17 +588,13 @@ public class PortMappingVersion121 { return cpToInterfaceMap; } - private List getCpToDegreeList(List degrees, String nodeId, - Map interfaceList) { + private List getCpToDegreeList(Map degrees, Map interfaceList) { List cpToDegreeList = new ArrayList<>(); - for (Degree degree : degrees) { - if (degree.getCircuitPacks() == null) { - continue; - } + for (Degree degree : degrees.values()) { LOG.info("Inside CP to degree list"); cpToDegreeList.addAll(degree.nonnullCircuitPacks().values().stream() .map(cp -> createCpToDegreeObject(cp.getCircuitPackName(), - degree.getDegreeNumber().toString(), nodeId, interfaceList)) + degree.getDegreeNumber().toString(), interfaceList)) .collect(Collectors.toList())); } return cpToDegreeList; @@ -659,7 +642,7 @@ public class PortMappingVersion121 { } } - private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, String nodeId, + private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, Map interfaceList) { return new CpToDegreeBuilder() .withKey(new CpToDegreeKey(circuitPackName)) @@ -736,9 +719,9 @@ public class PortMappingVersion121 { private boolean createTtpPortMapping(String nodeId, Info deviceInfo, List portMapList) { // Creating mapping data for degree TTP's - List degrees = getDegrees(nodeId, deviceInfo); + Map degrees = getDegreesMap(nodeId, deviceInfo); Map interfaceList = getEthInterfaceList(nodeId); - List cpToDegreeList = getCpToDegreeList(degrees, nodeId, interfaceList); + List cpToDegreeList = getCpToDegreeList(degrees, interfaceList); LOG.info("Map looks like this {}", interfaceList); postPortMapping(nodeId, null, null, cpToDegreeList); diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java index e6380d09e..a31ddc827 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion221.java @@ -712,8 +712,8 @@ public class PortMappingVersion221 { return lcp; } - private List getDegrees(String deviceId, Info ordmInfo) { - List degrees = new ArrayList<>(); + private Map getDegreesMap(String deviceId, Info ordmInfo) { + Map degrees = new HashMap<>(); // Get value for max degree from info subtree, required for iteration // if not present assume to be 20 (temporary) @@ -727,13 +727,20 @@ public class PortMappingVersion221 { LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (ordmDegreeObject.isPresent()) { - degrees.add(ordmDegreeObject.get()); + degrees.put(degreeCounter, ordmDegreeObject.get()); } } LOG.info("Device {} has {} degree", deviceId, degrees.size()); return degrees; } + private Map> getPerDegreePorts(String deviceId, Info ordmInfo) { + Map> conPortMap = new HashMap<>(); + getDegreesMap(deviceId, ordmInfo).forEach( + (index, degree) -> conPortMap.put(index, new ArrayList<>(degree.nonnullConnectionPorts().values()))); + return conPortMap; + } + private List getSrgs(String deviceId, Info ordmInfo) { List srgs = new ArrayList<>(); @@ -754,26 +761,6 @@ public class PortMappingVersion221 { return srgs; } - private Map> getPerDegreePorts(String deviceId, Info ordmInfo) { - Map> conPortMap = new HashMap<>(); - Integer maxDegree = ordmInfo.getMaxDegrees() == null ? 20 : ordmInfo.getMaxDegrees().toJava(); - - for (int degreeCounter = 1; degreeCounter <= maxDegree; degreeCounter++) { - LOG.info("Getting Connection ports for Degree Number {}", degreeCounter); - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Degree.class, new DegreeKey(Uint16.valueOf(degreeCounter))); - Optional ordmDegreeObject = this.deviceTransactionManager.getDataFromDevice(deviceId, - LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (ordmDegreeObject.isPresent()) { - conPortMap.put(degreeCounter, new ArrayList<>(ordmDegreeObject.get() - .nonnullConnectionPorts().values())); - } - } - LOG.info("Device {} has {} degree", deviceId, conPortMap.size()); - return conPortMap; - } - private Map getEthInterfaceList(String nodeId) { LOG.info("It is calling get ethernet interface"); InstanceIdentifier protocoliid = InstanceIdentifier.create(OrgOpenroadmDevice.class) @@ -817,26 +804,22 @@ public class PortMappingVersion221 { return cpToInterfaceMap; } - private List getCpToDegreeList(List degrees, String nodeId, - Map interfaceList) { + private List getCpToDegreeList(Map degrees, Map interfaceList) { List cpToDegreeList = new ArrayList<>(); - for (Degree degree : degrees) { - if (degree.getCircuitPacks() == null) { - continue; - } + for (Degree degree : degrees.values()) { LOG.info("Inside CP to degree list"); cpToDegreeList.addAll(degree.nonnullCircuitPacks().values().stream() .map(cp -> createCpToDegreeObject(cp.getCircuitPackName(), - degree.getDegreeNumber().toString(), nodeId, interfaceList)) + degree.getDegreeNumber().toString(), interfaceList)) .collect(Collectors.toList())); } return cpToDegreeList; } - private List getMcCapabilitiesList(List degrees, List srgs, - String nodeId) { + private List getMcCapabilitiesList(Map degrees, List srgs, + String nodeId) { LOG.info("Getting the MC capabilities for degrees of node {}", nodeId); - List mcCapabilitiesList = degrees.stream() + List mcCapabilitiesList = degrees.values().stream() .map(degree -> createMcCapDegreeObject(degree, nodeId)).collect(Collectors.toList()); // Add the SRG mc-capabilities LOG.info("Getting the MC capabilities for SRGs of node {}", nodeId); @@ -898,7 +881,7 @@ public class PortMappingVersion221 { } } - private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, String nodeId, + private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, Map interfaceList) { return new CpToDegreeBuilder() .withKey(new CpToDegreeKey(circuitPackName)) @@ -1039,7 +1022,7 @@ public class PortMappingVersion221 { } private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List mcCapabilitiesList) { - List degrees = getDegrees(nodeId, deviceInfo); + Map degrees = getDegreesMap(nodeId, deviceInfo); List srgs = getSrgs(nodeId, deviceInfo); mcCapabilitiesList.addAll(getMcCapabilitiesList(degrees, srgs, nodeId)); return true; @@ -1047,9 +1030,9 @@ public class PortMappingVersion221 { private boolean createTtpPortMapping(String nodeId, Info deviceInfo, List portMapList) { // Creating mapping data for degree TTP's - List degrees = getDegrees(nodeId, deviceInfo); + Map degrees = getDegreesMap(nodeId, deviceInfo); Map interfaceList = getEthInterfaceList(nodeId); - List cpToDegreeList = getCpToDegreeList(degrees, nodeId, interfaceList); + List cpToDegreeList = getCpToDegreeList(degrees, interfaceList); LOG.info("Map looks like this {}", interfaceList); postPortMapping(nodeId, null, null, cpToDegreeList, null, null); diff --git a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java index ff115bfd2..98d5fdafa 100644 --- a/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java +++ b/common/src/main/java/org/opendaylight/transportpce/common/mapping/PortMappingVersion710.java @@ -729,8 +729,8 @@ public class PortMappingVersion710 { return mcCapabilityProfiles; } - private List getDegrees(String deviceId, Info ordmInfo) { - List degrees = new ArrayList<>(); + private Map getDegreesMap(String deviceId, Info ordmInfo) { + Map degrees = new HashMap<>(); // Get value for max degree from info subtree, required for iteration // if not present assume to be 20 (temporary) @@ -744,13 +744,20 @@ public class PortMappingVersion710 { LogicalDatastoreType.OPERATIONAL, deviceIID, Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); if (ordmDegreeObject.isPresent()) { - degrees.add(ordmDegreeObject.get()); + degrees.put(degreeCounter, ordmDegreeObject.get()); } } LOG.info("Device {} has {} degree", deviceId, degrees.size()); return degrees; } + private Map> getPerDegreePorts(String deviceId, Info ordmInfo) { + Map> conPortMap = new HashMap<>(); + getDegreesMap(deviceId, ordmInfo).forEach( + (index, degree) -> conPortMap.put(index, new ArrayList<>(degree.nonnullConnectionPorts().values()))); + return conPortMap; + } + private List getSrgs(String deviceId, Info ordmInfo) { List srgs = new ArrayList<>(); @@ -771,26 +778,6 @@ public class PortMappingVersion710 { return srgs; } - private Map> getPerDegreePorts(String deviceId, Info ordmInfo) { - Map> conPortMap = new HashMap<>(); - Integer maxDegree = ordmInfo.getMaxDegrees() == null ? 20 : ordmInfo.getMaxDegrees().toJava(); - - for (int degreeCounter = 1; degreeCounter <= maxDegree; degreeCounter++) { - LOG.info("Getting Connection ports for Degree Number {}", degreeCounter); - InstanceIdentifier deviceIID = InstanceIdentifier.create(OrgOpenroadmDevice.class) - .child(Degree.class, new DegreeKey(Uint16.valueOf(degreeCounter))); - Optional ordmDegreeObject = this.deviceTransactionManager.getDataFromDevice(deviceId, - LogicalDatastoreType.OPERATIONAL, deviceIID, - Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); - if (ordmDegreeObject.isPresent()) { - conPortMap.put(degreeCounter, new ArrayList<>(ordmDegreeObject.get() - .nonnullConnectionPorts().values())); - } - } - LOG.info("Device {} has {} degree", deviceId, conPortMap.size()); - return conPortMap; - } - private Map getEthInterfaceList(String nodeId) { LOG.info("It is calling get ethernet interface"); InstanceIdentifier protocoliid = InstanceIdentifier.create(OrgOpenroadmDevice.class) @@ -834,23 +821,19 @@ public class PortMappingVersion710 { return cpToInterfaceMap; } - private List getCpToDegreeList(List degrees, String nodeId, - Map interfaceList) { + private List getCpToDegreeList(Map degrees, Map interfaceList) { List cpToDegreeList = new ArrayList<>(); - for (Degree degree : degrees) { - if (degree.getCircuitPacks() == null) { - continue; - } + for (Degree degree : degrees.values()) { LOG.info("Inside CP to degree list"); cpToDegreeList.addAll(degree.nonnullCircuitPacks().values().stream() .map(cp -> createCpToDegreeObject(cp.getCircuitPackName(), - degree.getDegreeNumber().toString(), nodeId, interfaceList)) + degree.getDegreeNumber().toString(), interfaceList)) .collect(Collectors.toList())); } return cpToDegreeList; } - private List getMcCapabilitiesList(List degrees, List srgs, + private List getMcCapabilitiesList(Map degrees, List srgs, Info deviceInfo, String nodeId) { //TODO some divergences with 2.2.1 here LOG.info("Getting the MC capabilities for degrees of node {}", nodeId); @@ -919,7 +902,7 @@ public class PortMappingVersion710 { } } - private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, String nodeId, + private CpToDegree createCpToDegreeObject(String circuitPackName, String degreeNumber, Map interfaceList) { return new CpToDegreeBuilder() .withKey(new CpToDegreeKey(circuitPackName)) @@ -928,11 +911,11 @@ public class PortMappingVersion710 { .setInterfaceName(interfaceList.get(circuitPackName)).build(); } - private List createMcCapDegreeObject(List degrees, + private List createMcCapDegreeObject(Map degrees, Map mcCapabilityProfileMap, String nodeId) { //TODO some divergences here with 2.2.1 List mcCapabilitiesList = new ArrayList<>(); - for (Degree degree : degrees) { + for (Degree degree : degrees.values()) { if ((degree.getMcCapabilityProfileName() == null) || (degree.getMcCapabilityProfileName().isEmpty())) { LOG.warn("No MC profiles are found for node {} on degree {}", nodeId, degree.getDegreeNumber()); @@ -1080,7 +1063,7 @@ public class PortMappingVersion710 { } private boolean createMcCapabilitiesList(String nodeId, Info deviceInfo, List mcCapabilitiesList) { - List degrees = getDegrees(nodeId, deviceInfo); + Map degrees = getDegreesMap(nodeId, deviceInfo); List srgs = getSrgs(nodeId, deviceInfo); mcCapabilitiesList.addAll(getMcCapabilitiesList(degrees, srgs, deviceInfo, nodeId)); return true; @@ -1088,9 +1071,9 @@ public class PortMappingVersion710 { private boolean createTtpPortMapping(String nodeId, Info deviceInfo, List portMapList) { // Creating mapping data for degree TTP's - List degrees = getDegrees(nodeId, deviceInfo); + Map degrees = getDegreesMap(nodeId, deviceInfo); Map interfaceList = getEthInterfaceList(nodeId); - List cpToDegreeList = getCpToDegreeList(degrees, nodeId, interfaceList); + List cpToDegreeList = getCpToDegreeList(degrees, interfaceList); LOG.info("Map looks like this {}", interfaceList); postPortMapping(nodeId, null, null, cpToDegreeList, null, null); -- 2.36.6