diff options
| author | Chirag Shah <chirag@nvidia.com> | 2021-03-04 21:21:13 -0800 |
|---|---|---|
| committer | Chirag Shah <chirag@nvidia.com> | 2021-03-08 12:02:08 -0800 |
| commit | 641b032e23e614cec8dcbeb993a61f2ff08dfde2 (patch) | |
| tree | 1de4369ececb1a6abdb2464ae486d94e6154369f /tools/frr-reload.py | |
| parent | f26070fc07a279d3a616e8f2d5d05069625f6de5 (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-x | tools/frr-reload.py | 10 |
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 |
