diff options
author | Daniil Baturin <daniil@baturin.org> | 2023-01-12 13:12:25 +0000 |
---|---|---|
committer | Daniil Baturin <daniil@baturin.org> | 2023-01-12 20:03:45 +0000 |
commit | 65fa4e55074652ec65b21eff457faa8f4adc9a1a (patch) | |
tree | 596a6e449c2cab0cdda1882124181ebe35a16794 /src | |
parent | 0e5ea5a63ab9db9ae04ab09e3af42a6e8e1c4c55 (diff) | |
download | vyos-1x-65fa4e55074652ec65b21eff457faa8f4adc9a1a.tar.gz vyos-1x-65fa4e55074652ec65b21eff457faa8f4adc9a1a.zip |
opmode: T4837: add family and table arguments for ShowRoute
Diffstat (limited to 'src')
-rwxr-xr-x | src/op_mode/route.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/op_mode/route.py b/src/op_mode/route.py index d07a34180..6942fba89 100755 --- a/src/op_mode/route.py +++ b/src/op_mode/route.py @@ -54,16 +54,35 @@ frr_command_template = Template(""" {% endif %} """) -def show_summary(raw: bool): +def show_summary(raw: bool, family: str, table: typing.Optional[int]): from vyos.util import cmd + if family == 'inet': + family_cmd = 'ip' + elif family == 'inet6': + family_cmd = 'ipv6' + else: + raise ValueError(f"Usupported address family {family}") + + # Replace with Jinja if it ever starts growing + if table: + table_command = f"table {table}" + else: + table_command = "" + if raw: from json import loads - output = cmd(f"vtysh -c 'show ip route summary json'") - return loads(output) + output = cmd(f"vtysh -c 'show {family_cmd} route summary {table_command} json'").strip() + + # If there are no routes in a table, its "JSON" output is an empty string, + # as of FRR 8.4.1 + if output: + return loads(output) + else: + return {} else: - output = cmd(f"vtysh -c 'show ip route summary'") + output = cmd(f"vtysh -c 'show {family_cmd} route summary {table_command}'") return output def show(raw: bool, |