From 3da045dd40806c9129d1d84564e30c1d0a529a99 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 6 Feb 2024 20:18:25 +0100 Subject: [PATCH] test/infamy: handle empty NETCONF reply from remote This patch handles a corner case we for some reason have not run into yet. With the new container operational data it was triggered almost immediately, so let's add some basic guards around it and return None Signed-off-by: Joachim Wiberg --- test/infamy/netconf.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/test/infamy/netconf.py b/test/infamy/netconf.py index d3e62e7c..85d5ddf4 100644 --- a/test/infamy/netconf.py +++ b/test/infamy/netconf.py @@ -246,10 +246,13 @@ class Device(object): data = NccGetDataReply(raw, ele) if(as_xml): return data - else: - # pylint: disable=c-extension-no-member - cfg = lxml.etree.tostring(data.data_ele[0]) - return self.ly.parse_data_mem(cfg, "xml", parse_only=True) + + if len(data.data_ele) == 0: + return None + + # pylint: disable=c-extension-no-member + cfg = lxml.etree.tostring(data.data_ele[0]) + return self.ly.parse_data_mem(cfg, "xml", parse_only=True) def get(self, xpath, as_xml=False): """RPC (legacy NETCONF) fetches config:false data""" @@ -259,15 +262,23 @@ class Device(object): """Return Python dictionary of RPC data""" if(as_xml): return self.get(xpath, as_xml=True) - else: - return self.get(xpath).print_dict() + + data = self.get(xpath) + if not data: + return None + + return data.print_dict() def get_data(self, xpath=None, as_xml=False): """RPC to fetch operational data""" if(as_xml): return self._get_data(xpath,as_xml) - else: - return self._get_data(xpath).print_dict() + + data = self._get_data(xpath) + if not data: + return None + + return data.print_dict() def get_config(self, xpath): return self._get(xpath, self.ncc.get_config)