package org.opendaylight.transportpce.pce.networkanalyzer;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.BitSet;
import org.opendaylight.transportpce.common.StringConstants;
import org.opendaylight.yang.gen.v1.http.org.openroadm.common.state.types.rev191129.State;
import org.opendaylight.yang.gen.v1.http.org.openroadm.equipment.states.types.rev191129.AdminStates;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.OduSwitchingPools;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev201211.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmNodeType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.OpenroadmTpType;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev211210.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODTU4TsAllocated;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev200327.ODTUCnTs;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.Node1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.TerminationPoint1;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev211210.networks.network.node.termination.point.XpdrTpPortConnectionAttributes;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If100GEODU4;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If10GEODU2e;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.If1GEODU0;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.IfOCHOTU4ODU4;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.IfOtsiOtsigroup;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev201211.SupportedIfCapability;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev211210.xpdr.otn.tp.attributes.OdtuTpnPool;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.rev230526.networks.network.node.termination.point.XpdrNetworkAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.OduSwitchingPools;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.topology.types.rev230526.xpdr.odu.switching.pools.odu.switching.pools.NonBlockingList;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmNodeType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.OpenroadmTpType;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.network.types.rev230526.xpdr.tp.supported.interfaces.SupportedInterfaceCapability;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODTU4TsAllocated;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.common.types.rev210924.ODTUCnTs;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.Node1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.TerminationPoint1;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.otn.network.topology.rev230526.networks.network.node.termination.point.XpdrTpPortConnectionAttributes;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If100GEODU4;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If10GEODU2e;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.If1GEODU0;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.IfOCHOTU4ODU4;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.IfOtsiOtsigroup;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.port.types.rev230526.SupportedIfCapability;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.xponder.rev230526.xpdr.otn.tp.attributes.OdtuTpnPool;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.networks.network.Node;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.topology.rev180226.TpId;
OpenroadmNodeType.MUXPDR,
OpenroadmNodeType.SWITCH,
OpenroadmNodeType.TPDR);
- private static final Map<String, Class<? extends SupportedIfCapability>> SERVICE_TYPE_ETH_CLASS_MAP = Map.of(
- StringConstants.SERVICE_TYPE_1GE, If1GEODU0.class,
- StringConstants.SERVICE_TYPE_10GE, If10GEODU2e.class,
- StringConstants.SERVICE_TYPE_100GE_M, If100GEODU4.class,
- StringConstants.SERVICE_TYPE_100GE_S, If100GEODU4.class);
+ private static final Map<String, SupportedIfCapability> SERVICE_TYPE_ETH_CLASS_MAP = Map.of(
+ StringConstants.SERVICE_TYPE_1GE, If1GEODU0.VALUE,
+ StringConstants.SERVICE_TYPE_10GE, If10GEODU2e.VALUE,
+ StringConstants.SERVICE_TYPE_100GE_M, If100GEODU4.VALUE,
+ StringConstants.SERVICE_TYPE_100GE_S, If100GEODU4.VALUE);
private static final Map<String, Integer> SERVICE_TYPE_ETH_TS_NB_MAP = Map.of(
StringConstants.SERVICE_TYPE_1GE, 1,
StringConstants.SERVICE_TYPE_10GE, 10,
private Map<String, String> clientPerNwTp = new HashMap<>();
private String clientPort;
- public PceOtnNode(
- Node node,
- OpenroadmNodeType nodeType,
- NodeId nodeId,
- String pceNodeType,
- String serviceType,
- String clientPort) {
+ @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR",
+ justification = "need to initialise available tribport and tribslt")
+ public PceOtnNode(Node node, OpenroadmNodeType nodeType, NodeId nodeId, String pceNodeType, String serviceType,
+ String clientPort) {
this.node = node;
this.nodeId = nodeId;
this.nodeType = nodeType;
this.availableXpdrClientTps = new ArrayList<>();
this.usableXpdrClientTps = new ArrayList<>();
this.adminStates = node
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
.getAdministrativeState();
this.state = node
- .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210.Node1.class)
+ .augmentation(org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526.Node1.class)
.getOperationalState();
this.tpAvailableTribPort.clear();
checkAvailableTribPort();
}
public void initXndrTps(String mode) {
- LOG.info("PceOtnNode: initXndrTps for node {}", this.nodeId.getValue());
+ LOG.debug("PceOtnNode: initXndrTps for node {}", this.nodeId.getValue());
this.availableXponderTp.clear();
this.modeType = mode;
List<TerminationPoint> allTps =
return;
}
for (TerminationPoint tp : allTps) {
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
.TerminationPoint1 ocnTp1
= tp.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
.TerminationPoint1.class);
if (ocnTp1 == null) {
LOG.warn("null ocn TP {}", tp);
case XPONDERNETWORK:
String notCreatedServiceType = xpdrNetTpCreation(ontTp1);
if (notCreatedServiceType == null) {
- LOG.info("TP {} of XPONDER {} is validated",
+ LOG.debug("TP {} of XPONDER {} is validated",
tp.getTpId().getValue(),
node.getNodeId().getValue());
this.availableXpdrNWTps.add(tp.getTpId());
continue;
}
if (checkClientTp(ontTp1)) {
- LOG.info("TP {} of XPONDER {} is validated",
+ LOG.debug("TP {} of XPONDER {} is validated",
tp.getTpId(),
node.getNodeId().getValue());
this.availableXpdrClientTps.add(tp.getTpId());
}
List<NonBlockingList> nblList = new ArrayList<>(
node1.getSwitchingPools().nonnullOduSwitchingPools()
- .values().stream().findFirst().get()
+ .values().stream().findFirst().orElseThrow()
.getNonBlockingList().values());
- if (nblList == null) {
- return false;
- }
netwTps.sort(Comparator.comparing(TpId::getValue));
switch (modeType) {
private boolean checkTpForOdtuTermination(TerminationPoint1 ontTp1) {
for (SupportedInterfaceCapability sic :
ontTp1.getTpSupportedInterfaces().getSupportedInterfaceCapability().values()) {
- LOG.info("in checkTpForOduTermination - sic = {}", sic.getIfCapType());
- if ((sic.getIfCapType().equals(IfOCHOTU4ODU4.class)
- || sic.getIfCapType().equals(IfOtsiOtsigroup.class))
+ LOG.debug("in checkTpForOduTermination - sic = {}", sic.getIfCapType());
+ if ((sic.getIfCapType().equals(IfOCHOTU4ODU4.VALUE)
+ || sic.getIfCapType().equals(IfOtsiOtsigroup.VALUE))
&& (ontTp1.getXpdrTpPortConnectionAttributes() == null
|| ontTp1.getXpdrTpPortConnectionAttributes().getTsPool() == null)) {
return true;
|| portConAttr.getOdtuTpnPool() == null) {
return false;
}
- return checkFirstOdtuTpn(portConAttr.getOdtuTpnPool().values().stream().findFirst().get());
+ return checkFirstOdtuTpn(portConAttr.getOdtuTpnPool().values().stream().findFirst().orElseThrow());
}
private boolean checkFirstOdtuTpn(OdtuTpnPool otPool) {
- return (otPool.getOdtuType().getSimpleName().equals(ODTU4TsAllocated.class.getSimpleName())
- || otPool.getOdtuType().getSimpleName().equals(ODTUCnTs.class.getSimpleName()))
+ return (otPool.getOdtuType().equals(ODTU4TsAllocated.VALUE))
+ || otPool.getOdtuType().equals(ODTUCnTs.VALUE)
&& !otPool.getTpnPool().isEmpty();
}
ontTp1.getTpSupportedInterfaces().getSupportedInterfaceCapability().values()) {
LOG.debug("in checkTpForOduTermination - sic = {}", sic.getIfCapType());
// we could also check the administrative status of the tp
- if (SERVICE_TYPE_ETH_CLASS_MAP.get(otnServiceType).getSimpleName()
- .equals(sic.getIfCapType().getSimpleName())) {
+ if (SERVICE_TYPE_ETH_CLASS_MAP.get(otnServiceType).equals(sic.getIfCapType())) {
return true;
}
}
} else if (OpenroadmNodeType.SWITCH.equals(this.nodeType)) {
initXndrTps(INTERMEDIATE_MODETYPE);
} else {
- LOG.info("validateAZxponder: XPONDER is ignored == {}", nodeId.getValue());
+ LOG.warn("validateAZxponder: XPONDER is ignored == {}", nodeId.getValue());
valid = false;
}
}
// Validate switch for use as an intermediate XPONDER on the path
initXndrTps(INTERMEDIATE_MODETYPE);
if (this.valid) {
- LOG.info("validateIntermediateSwitch: Switch usable for transit == {}", nodeId.getValue());
+ LOG.debug("validateIntermediateSwitch: Switch usable for transit == {}", nodeId.getValue());
} else {
LOG.debug("validateIntermediateSwitch: Switch unusable for transit == {}", nodeId.getValue());
}
.getTerminationPoint().values().stream()
.filter(type -> type
.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
.TerminationPoint1.class)
.getTpType()
.equals(OpenroadmTpType.XPONDERNETWORK))
XpdrTpPortConnectionAttributes portConAttr =
tp.augmentation(TerminationPoint1.class).getXpdrTpPortConnectionAttributes();
if (portConAttr != null && portConAttr.getOdtuTpnPool() != null) {
- OdtuTpnPool otPool = portConAttr.getOdtuTpnPool().values().stream().findFirst().get();
+ OdtuTpnPool otPool = portConAttr.getOdtuTpnPool().values().stream().findFirst().orElseThrow();
if (checkFirstOdtuTpn(otPool)) {
- tpAvailableTribPort.put(tp.getTpId().getValue(), otPool.getTpnPool());
+ tpAvailableTribPort.put(tp.getTpId().getValue(), new ArrayList<>(otPool.getTpnPool()));
}
}
}
.getTerminationPoint().values().stream()
.filter(type -> type
.augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev211210
+ org.opendaylight.yang.gen.v1.http.org.openroadm.common.network.rev230526
.TerminationPoint1.class)
.getTpType().equals(OpenroadmTpType.XPONDERNETWORK))
.collect(Collectors.toList())
XpdrTpPortConnectionAttributes portConAttr =
tp.augmentation(TerminationPoint1.class).getXpdrTpPortConnectionAttributes();
if (portConAttr != null && portConAttr.getTsPool() != null) {
- tpAvailableTribSlot.put(tp.getTpId().getValue(), portConAttr.getTsPool());
+ tpAvailableTribSlot.put(tp.getTpId().getValue(), new ArrayList<>(portConAttr.getTsPool()));
}
}
}
return null;
}
+ @Override
+ public String getXponderOperationalMode(XpdrNetworkAttributes tp) {
+ return null;
+ }
+
+ @Override
+ public String getOperationalMode() {
+ return null;
+ }
+
+ @Override
+ public OpenroadmNodeType getORNodeType() {
+ return this.nodeType;
+ }
+
/*
* (non-Javadoc)
*