import java.util.Collection;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.mdsal.binding.api.MountPoint;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.transportpce.common.Timeouts;
import org.opendaylight.transportpce.common.device.DeviceTransactionManager;
import org.opendaylight.transportpce.common.network.NetworkTransactionService;
import org.opendaylight.transportpce.tapi.utils.TapiLink;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.Network;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.cp.to.degree.CpToDegree;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.Mapping;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.NodesKey;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev170929.Direction;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.Network;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.cp.to.degree.CpToDegree;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.mapping.Mapping;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.Nodes;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220316.network.NodesKey;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.OrgOpenroadmDeviceData;
import org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev170206.org.openroadm.device.container.OrgOpenroadmDevice;
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.lldp.rev161014.Protocols1;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.NbrList;
import org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev161014.lldp.container.lldp.nbr.list.IfName;
+import org.opendaylight.yang.gen.v1.http.org.transportpce.common.types.rev220926.Direction;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.network.rev180226.NodeId;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.LayerProtocolName;
import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev181210.Uuid;
switch (nodeVersion) {
case 1:
// 1.2.1
- InstanceIdentifier<Protocols> protocols121IID = InstanceIdentifier.create(OrgOpenroadmDevice.class)
- .child(Protocols.class);
+ InstanceIdentifier<Protocols> protocols121IID = InstanceIdentifier
+ .builderOfInherited(OrgOpenroadmDeviceData.class, OrgOpenroadmDevice.class)
+ .child(Protocols.class)
+ .build();
Optional<Protocols> protocol121Object = this.deviceTransactionManager.getDataFromDevice(
nodeId.getValue(), LogicalDatastoreType.OPERATIONAL, protocols121IID, Timeouts.DEVICE_READ_TIMEOUT,
Timeouts.DEVICE_READ_TIMEOUT_UNIT);
- if (!protocol121Object.isPresent()
- || (protocol121Object.get().augmentation(Protocols1.class) == null)) {
- LOG.warn("LLDP subtree is missing : isolated openroadm device");
+ if (hasNoNeighbor121(protocol121Object)) {
+ LOG.warn("LLDP subtree is missing or incomplete: isolated openroadm device");
return new HashMap<>();
}
// get neighbor list
case 2:
// 2.2.1
InstanceIdentifier<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device
- .container.org.openroadm.device.Protocols> protocols221IID =
- InstanceIdentifier.create(org.opendaylight.yang.gen.v1.http
- .org.openroadm.device.rev181019.org.openroadm.device.container.OrgOpenroadmDevice.class)
- .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019
- .org.openroadm.device.container.org.openroadm.device.Protocols.class);
- Optional<org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device
- .container.org.openroadm.device.Protocols> protocol221Object = this.deviceTransactionManager
+ .container.org.openroadm.device.Protocols> protocols221IID = InstanceIdentifier
+ .builderOfInherited(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.OrgOpenroadmDeviceData.class,
+ org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container
+ .OrgOpenroadmDevice.class)
+ .child(org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device
+ .container.org.openroadm.device.Protocols.class)
+ .build();
+ var protocol221Object = this.deviceTransactionManager
.getDataFromDevice(nodeId.getValue(), LogicalDatastoreType.OPERATIONAL, protocols221IID,
Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT);
- if (!protocol221Object.isPresent() || (protocol221Object.get().augmentation(
- org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1.class) == null)) {
- LOG.warn("LLDP subtree is missing : isolated openroadm device");
+ if (hasNoNeighbor221(protocol221Object)) {
+ LOG.warn("LLDP subtree is missing or incomplete: isolated openroadm device");
return new HashMap<>();
}
- org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.@Nullable NbrList
- nbr221List = protocol221Object.get().augmentation(org.opendaylight.yang.gen.v1.http
- .org.openroadm.lldp.rev181019.Protocols1.class).getLldp().getNbrList();
+ var nbr221List = protocol221Object.get().augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1.class)
+ .getLldp().getNbrList();
LOG.info("LLDP subtree is present. Device has {} neighbours", nbr221List.getIfName().size());
return rdm2rdmLinkCreatev221(nodeId, tapiTopoUuid, nbr221List);
case 3:
}
}
+ private boolean hasNoNeighbor121(Optional<Protocols> protocol121Object) {
+ return protocol121Object.isEmpty()
+ || protocol121Object.get().augmentation(Protocols1.class) == null
+ || protocol121Object.get().augmentation(Protocols1.class).getLldp() == null
+ || protocol121Object.get().augmentation(Protocols1.class).getLldp().getNbrList() == null;
+ }
+
+ private boolean hasNoNeighbor221(Optional<
+ org.opendaylight.yang.gen.v1.http.org.openroadm.device.rev181019.org.openroadm.device.container.org
+ .openroadm.device.Protocols> protocol221Object) {
+ return protocol221Object.isEmpty()
+ || protocol221Object.get().augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1.class) == null
+ || protocol221Object.get().augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1.class)
+ .getLldp() == null
+ || protocol221Object.get().augmentation(
+ org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.Protocols1.class)
+ .getLldp().getNbrList() == null;
+ }
+
private Map<LinkKey, Link> rdm2rdmLinkCreatev221(NodeId nodeId, Uuid tapiTopoUuid,
org.opendaylight.yang.gen.v1.http.org.openroadm.lldp.rev181019.lldp.container.lldp.NbrList nbrList) {
Map<LinkKey, Link> linkMap = new HashMap<>();
TapiStringConstants.PHTNC_MEDIA, TapiStringConstants.PHTNC_MEDIA,
this.tapiLink.getAdminState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
this.tapiLink.getOperState(nodeId.getValue(), destNodeId.getValue(), srcTpTx, destTpTx),
- List.of(LayerProtocolName.PHOTONICMEDIA), List.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
+ Set.of(LayerProtocolName.PHOTONICMEDIA), Set.of(LayerProtocolName.PHOTONICMEDIA.getName()), tapiTopoUuid);
LOG.info("Tapi R2R Link OMS link created = {}", omsLink);
return omsLink;
}
Stream<CpToDegree> cpToDegStream = cpToDeg.stream().filter(cp -> cp.getInterfaceName() != null)
.filter(cp -> cp.getInterfaceName().equals(interfaceName));
if (cpToDegStream != null) {
- @SuppressWarnings("unchecked") Optional<CpToDegree> firstCpToDegree = cpToDegStream.findFirst();
+ Optional<CpToDegree> firstCpToDegree = cpToDegStream.findFirst();
if (firstCpToDegree.isEmpty() || (firstCpToDegree == null)) {
LOG.debug("Not found so returning nothing");
return null;