summaryrefslogtreecommitdiff
path: root/tools/frr-reload.py
diff options
context:
space:
mode:
authorChirag Shah <chirag@nvidia.com>2021-03-04 21:21:13 -0800
committerChirag Shah <chirag@nvidia.com>2021-03-08 12:02:08 -0800
commit641b032e23e614cec8dcbeb993a61f2ff08dfde2 (patch)
tree1de4369ececb1a6abdb2464ae486d94e6154369f /tools/frr-reload.py
parentf26070fc07a279d3a616e8f2d5d05069625f6de5 (diff)
tools: frr-reload capture vtysh msg upon failure
Log vtysh message for a failed command. Ticket:2556706 Reviewed By: Testing Done: frr reload fails to delete default bgp instance in presence of bgp vrf instance(s), it captures vtysh message and logs in frr-reload.log logs backend 2021-03-05 05:16:45,623 INFO: Failed to execute no router bgp 5544 2021-03-05 05:16:45,735 INFO: Failed to execute no router bgp 2021-03-05 05:16:45,846 INFO: Failed to execute no router 2021-03-05 05:16:45,846 ERROR: "no router" we failed to remove this command 2021-03-05 05:16:45,847 ERROR: % Cannot delete default BGP instance. Dependent VRF instances exist Signed-off-by: Chirag Shah <chirag@nvidia.com>
Diffstat (limited to 'tools/frr-reload.py')
-rwxr-xr-xtools/frr-reload.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/frr-reload.py b/tools/frr-reload.py
index 60647a8833..1461e0f296 100755
--- a/tools/frr-reload.py
+++ b/tools/frr-reload.py
@@ -97,7 +97,7 @@ class Vtysh(object):
args = ["-c", command]
return self._call(args, stdin, stdout, stderr)
- def __call__(self, command):
+ def __call__(self, command, stdouts=None):
"""
Call a CLI command (e.g. "show running-config")
@@ -107,6 +107,8 @@ class Vtysh(object):
proc = self._call_cmd(command, stdout=subprocess.PIPE)
stdout, stderr = proc.communicate()
if proc.wait() != 0:
+ if stdouts is not None:
+ stdouts.append(stdout.decode('UTF-8'))
raise VtyshException(
'vtysh returned status %d for command "%s"' % (proc.returncode, command)
)
@@ -2006,9 +2008,10 @@ if __name__ == "__main__":
# frr(config-if)# no ip ospf authentication
# frr(config-if)#
+ stdouts = []
while True:
try:
- vtysh(["configure"] + cmd)
+ vtysh(["configure"] + cmd, stdouts)
except VtyshException:
@@ -2024,6 +2027,9 @@ if __name__ == "__main__":
'"%s" we failed to remove this command',
" -- ".join(original_cmd),
)
+ # Log first error msg for original_cmd
+ if stdouts:
+ log.error(stdouts[0])
reload_ok = False
break