diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-07-29 18:14:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-29 18:14:01 +0200 |
commit | 0d7ad932d2842edb8862c9f88454fa2e668871b6 (patch) | |
tree | b3a6506c22eeb1843be0068f5bb1bedaeeb87155 /src/op_mode/vrf.py | |
parent | fafd18c41e3333ef3d97dbf0b50e493f40aad688 (diff) | |
parent | 5e7120a00278671a73e9762a5da5e6f6961a387d (diff) | |
download | vyos-1x-0d7ad932d2842edb8862c9f88454fa2e668871b6.tar.gz vyos-1x-0d7ad932d2842edb8862c9f88454fa2e668871b6.zip |
Merge pull request #1443 from sever-sever/T4562
vrf: T4562: Rewrite show vrf name xxx delete old script op-mode
Diffstat (limited to 'src/op_mode/vrf.py')
-rwxr-xr-x | src/op_mode/vrf.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/op_mode/vrf.py b/src/op_mode/vrf.py index 63d9b5ee5..f86516786 100755 --- a/src/op_mode/vrf.py +++ b/src/op_mode/vrf.py @@ -16,6 +16,7 @@ import json import sys +import typing from tabulate import tabulate from vyos.util import cmd @@ -23,12 +24,23 @@ from vyos.util import cmd import vyos.opmode -def _get_raw_data(): +def _get_raw_data(name=None): """ - :return: list + If vrf name is not set - get all VRFs + If vrf name is set - get only this name data + If vrf name set and not found - return [] """ output = cmd('sudo ip --json --brief link show type vrf') data = json.loads(output) + if not data: + return [] + if name: + is_vrf_exists = True if [vrf for vrf in data if vrf.get('ifname') == name] else False + if is_vrf_exists: + output = cmd(f'sudo ip --json --brief link show dev {name}') + data = json.loads(output) + return data + return [] return data @@ -62,8 +74,8 @@ def _get_formatted_output(raw_data): return output -def show(raw: bool): - vrf_data = _get_raw_data() +def show(raw: bool, name: typing.Optional[str]): + vrf_data = _get_raw_data(name=name) if raw: return vrf_data else: |