From 6932ec3b3edd91ca94488e920cf37d3595235bae Mon Sep 17 00:00:00 2001 From: "Vachhani, Shweta (sv111y)" Date: Thu, 12 Aug 2021 09:43:59 -0400 Subject: [PATCH] Notification Stream selection update - Update NetConfTopologyListener to read notification streams supported by device. - Update the code to look for device support for OPENROADM Stream. - If OPENROADM stream is not supported by device, code will subscribe to NETCONF stream - Sample CONFIGs are updated to have NETCONF stream in device model JIRA: TRNSPRTPCE-493 Signed-off-by: Vachhani, Shweta (sv111y) Change-Id: Icb9b77c12597625b13b6b689d270813d601c3153 --- .../networkmodel/NetConfTopologyListener.java | 27 ++++++++++++++++++- .../openroadm/1.2.1/oper-ROADMA-full.xml | 2 +- .../openroadm/1.2.1/oper-ROADMC-full.xml | 2 +- .../openroadm/1.2.1/oper-XPDRA.xml | 2 +- .../openroadm/1.2.1/oper-XPDRC.xml | 2 +- .../openroadm/2.2.1/oper-ROADMA.xml | 2 +- .../openroadm/2.2.1/oper-ROADMB.xml | 2 +- .../openroadm/2.2.1/oper-ROADMC.xml | 2 +- .../openroadm/2.2.1/oper-ROADMD.xml | 2 +- .../openroadm/2.2.1/oper-SPDRA.xml | 2 +- .../openroadm/2.2.1/oper-SPDRC.xml | 2 +- .../openroadm/2.2.1/oper-XPDRA.xml | 2 +- .../openroadm/2.2.1/oper-XPDRC.xml | 2 +- .../openroadm/7.1/oper-ROADMA.xml | 2 +- .../openroadm/7.1/oper-ROADMB.xml | 2 +- .../openroadm/7.1/oper-ROADMC.xml | 2 +- .../openroadm/7.1/oper-SPDRA.xml | 2 +- .../openroadm/7.1/oper-SPDRC.xml | 2 +- .../openroadm/7.1/oper-XPDRA.xml | 2 +- .../openroadm/7.1/oper-XPDRA2.xml | 2 +- .../openroadm/7.1/oper-XPDRC.xml | 2 +- .../openroadm/7.1/oper-XPDRC2.xml | 2 +- 22 files changed, 47 insertions(+), 22 deletions(-) diff --git a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListener.java b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListener.java index 43e4c64e4..dfc90dd3d 100644 --- a/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListener.java +++ b/networkmodel/src/main/java/org/opendaylight/transportpce/networkmodel/NetConfTopologyListener.java @@ -22,7 +22,9 @@ import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.mdsal.binding.api.MountPoint; import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.api.RpcConsumerRegistry; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.transportpce.common.StringConstants; +import org.opendaylight.transportpce.common.Timeouts; import org.opendaylight.transportpce.common.device.DeviceTransactionManager; import org.opendaylight.transportpce.common.mapping.PortMapping; import org.opendaylight.transportpce.networkmodel.dto.NodeRegistration; @@ -31,10 +33,14 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionOutput; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.NotificationsService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.Streams; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -123,7 +129,8 @@ public class NetConfTopologyListener implements DataTreeChangeListener { notificationService.get(), this.dataBroker, this.portMapping); nodeRegistration.registerListeners(); registrations.put(nodeId, nodeRegistration); - String streamName = "NETCONF"; + String streamName = getSupportedStream(nodeId); + LOG.info("Device is supporting notification stream {}",streamName); subscribeStream(mountPoint, streamName, nodeId); } @@ -166,4 +173,22 @@ public class NetConfTopologyListener implements DataTreeChangeListener { this.portMapping = portMapping; this.registrations = registrations; } + + private String getSupportedStream(String nodeId) { + InstanceIdentifier streamsIID = InstanceIdentifier.create(Netconf.class).child(Streams.class); + Optional ordmInfoObject = + deviceTransactionManager.getDataFromDevice(nodeId, LogicalDatastoreType.OPERATIONAL, streamsIID, + Timeouts.DEVICE_READ_TIMEOUT, Timeouts.DEVICE_READ_TIMEOUT_UNIT); + if (ordmInfoObject == null || ordmInfoObject.isEmpty() || ordmInfoObject.get().getStream().isEmpty()) { + LOG.error("List of streams supports by device is not present"); + return "NETCONF"; + } + for (Stream strm : ordmInfoObject.get().getStream().values()) { + LOG.debug("Streams are {}", strm); + if ("OPENROADM".equalsIgnoreCase(strm.getName().getValue())) { + return strm.getName().getValue(); + } + } + return "NETCONF"; + } } diff --git a/tests/sample_configs/openroadm/1.2.1/oper-ROADMA-full.xml b/tests/sample_configs/openroadm/1.2.1/oper-ROADMA-full.xml index 2eaf8d84c..9e3646ada 100644 --- a/tests/sample_configs/openroadm/1.2.1/oper-ROADMA-full.xml +++ b/tests/sample_configs/openroadm/1.2.1/oper-ROADMA-full.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/1.2.1/oper-ROADMC-full.xml b/tests/sample_configs/openroadm/1.2.1/oper-ROADMC-full.xml index 662cc9d81..a958bef43 100644 --- a/tests/sample_configs/openroadm/1.2.1/oper-ROADMC-full.xml +++ b/tests/sample_configs/openroadm/1.2.1/oper-ROADMC-full.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/1.2.1/oper-XPDRA.xml b/tests/sample_configs/openroadm/1.2.1/oper-XPDRA.xml index 165d4d724..f04b252dc 100644 --- a/tests/sample_configs/openroadm/1.2.1/oper-XPDRA.xml +++ b/tests/sample_configs/openroadm/1.2.1/oper-XPDRA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/1.2.1/oper-XPDRC.xml b/tests/sample_configs/openroadm/1.2.1/oper-XPDRC.xml index 0a0cb5134..a32d7948f 100644 --- a/tests/sample_configs/openroadm/1.2.1/oper-XPDRC.xml +++ b/tests/sample_configs/openroadm/1.2.1/oper-XPDRC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-ROADMA.xml b/tests/sample_configs/openroadm/2.2.1/oper-ROADMA.xml index 0425debb9..b1d63133d 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-ROADMA.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-ROADMA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-ROADMB.xml b/tests/sample_configs/openroadm/2.2.1/oper-ROADMB.xml index 94162d572..65d9b627a 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-ROADMB.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-ROADMB.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-ROADMC.xml b/tests/sample_configs/openroadm/2.2.1/oper-ROADMC.xml index a020be60e..654e944a5 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-ROADMC.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-ROADMC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-ROADMD.xml b/tests/sample_configs/openroadm/2.2.1/oper-ROADMD.xml index 8a9be59f9..81a3d49d2 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-ROADMD.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-ROADMD.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-SPDRA.xml b/tests/sample_configs/openroadm/2.2.1/oper-SPDRA.xml index 42fed9130..0de25826a 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-SPDRA.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-SPDRA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-SPDRC.xml b/tests/sample_configs/openroadm/2.2.1/oper-SPDRC.xml index 27a1eea34..97925bc61 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-SPDRC.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-SPDRC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-XPDRA.xml b/tests/sample_configs/openroadm/2.2.1/oper-XPDRA.xml index c170e3618..73fa15a9f 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-XPDRA.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-XPDRA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/2.2.1/oper-XPDRC.xml b/tests/sample_configs/openroadm/2.2.1/oper-XPDRC.xml index e055b4f29..860c13f6e 100644 --- a/tests/sample_configs/openroadm/2.2.1/oper-XPDRC.xml +++ b/tests/sample_configs/openroadm/2.2.1/oper-XPDRC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-ROADMA.xml b/tests/sample_configs/openroadm/7.1/oper-ROADMA.xml index 33748b83e..2b99e3aef 100644 --- a/tests/sample_configs/openroadm/7.1/oper-ROADMA.xml +++ b/tests/sample_configs/openroadm/7.1/oper-ROADMA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-ROADMB.xml b/tests/sample_configs/openroadm/7.1/oper-ROADMB.xml index bd011e27b..d09d39067 100644 --- a/tests/sample_configs/openroadm/7.1/oper-ROADMB.xml +++ b/tests/sample_configs/openroadm/7.1/oper-ROADMB.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-ROADMC.xml b/tests/sample_configs/openroadm/7.1/oper-ROADMC.xml index 26ca91dfe..bbd709d52 100644 --- a/tests/sample_configs/openroadm/7.1/oper-ROADMC.xml +++ b/tests/sample_configs/openroadm/7.1/oper-ROADMC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-SPDRA.xml b/tests/sample_configs/openroadm/7.1/oper-SPDRA.xml index 402338e52..871c8af93 100644 --- a/tests/sample_configs/openroadm/7.1/oper-SPDRA.xml +++ b/tests/sample_configs/openroadm/7.1/oper-SPDRA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-SPDRC.xml b/tests/sample_configs/openroadm/7.1/oper-SPDRC.xml index f73ea5094..028b85cc7 100644 --- a/tests/sample_configs/openroadm/7.1/oper-SPDRC.xml +++ b/tests/sample_configs/openroadm/7.1/oper-SPDRC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-XPDRA.xml b/tests/sample_configs/openroadm/7.1/oper-XPDRA.xml index 132eeed35..71c6bc086 100644 --- a/tests/sample_configs/openroadm/7.1/oper-XPDRA.xml +++ b/tests/sample_configs/openroadm/7.1/oper-XPDRA.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-XPDRA2.xml b/tests/sample_configs/openroadm/7.1/oper-XPDRA2.xml index f9a55feeb..7a753f8e4 100644 --- a/tests/sample_configs/openroadm/7.1/oper-XPDRA2.xml +++ b/tests/sample_configs/openroadm/7.1/oper-XPDRA2.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-XPDRC.xml b/tests/sample_configs/openroadm/7.1/oper-XPDRC.xml index ae93ca30e..6e701127f 100644 --- a/tests/sample_configs/openroadm/7.1/oper-XPDRC.xml +++ b/tests/sample_configs/openroadm/7.1/oper-XPDRC.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF diff --git a/tests/sample_configs/openroadm/7.1/oper-XPDRC2.xml b/tests/sample_configs/openroadm/7.1/oper-XPDRC2.xml index 4fd42a4ca..88f383395 100644 --- a/tests/sample_configs/openroadm/7.1/oper-XPDRC2.xml +++ b/tests/sample_configs/openroadm/7.1/oper-XPDRC2.xml @@ -3,7 +3,7 @@ - OPENROADM + NETCONF -- 2.36.6