diff options
| author | jack9603301 <jack9603301@163.com> | 2022-09-10 21:32:49 +0800 | 
|---|---|---|
| committer | jack9603301 <jack9603301@163.com> | 2023-07-21 13:07:44 +0800 | 
| commit | a684ab26c5ebdefb13ca870c0bfd5ef60fb9c6fc (patch) | |
| tree | 5cfd5bf5a0f5caeb1ee5e95f22f9345acd95a58b /src | |
| parent | 6b46a746630288dc8d62af0a411e2079deef8a78 (diff) | |
| download | vyos-1x-a684ab26c5ebdefb13ca870c0bfd5ef60fb9c6fc.tar.gz vyos-1x-a684ab26c5ebdefb13ca870c0bfd5ef60fb9c6fc.zip | |
T4659: op-mode: Display bridge interface detail
Diffstat (limited to 'src')
| -rwxr-xr-x | src/op_mode/bridge.py | 32 | 
1 files changed, 31 insertions, 1 deletions
| diff --git a/src/op_mode/bridge.py b/src/op_mode/bridge.py index 5531c41d0..1834b9cc9 100755 --- a/src/op_mode/bridge.py +++ b/src/op_mode/bridge.py @@ -24,6 +24,7 @@ from tabulate import tabulate  from vyos.utils.process import cmd  from vyos.utils.process import rc_cmd +from vyos.utils.process	import call  from vyos.utils.dict import dict_search  import vyos.opmode @@ -129,7 +130,8 @@ def _get_formatted_output_vlan(data):              if vlan_entry.get('vlanEnd'):                  vlan_end = vlan_entry.get('vlanEnd')                  vlan = f'{vlan}-{vlan_end}' -            flags = ', '.join(vlan_entry.get('flags')).lower() +            flags_raw = vlan_entry.get('flags') +            flags = ', '.join(flags_raw if isinstance(flags_raw,list) else "").lower()              data_entries.append([interface, vlan, flags])      headers = ["Interface", "Vlan", "Flags"] @@ -164,6 +166,23 @@ def _get_formatted_output_mdb(data):      output = tabulate(data_entries, headers)      return output +def _get_bridge_detail(iface): +    """Get interface detail statistics""" +    return call(f'vtysh -c "show interface {iface}"') + +def _get_bridge_detail_nexthop_group(iface): +    """Get interface detail nexthop_group statistics""" +    return call(f'vtysh -c "show interface {iface} nexthop-group"') + +def _get_bridge_detail_nexthop_group_raw(iface): +    out = cmd(f'vtysh -c "show interface {iface} nexthop-group"') +    return out + +def _get_bridge_detail_raw(iface): +    """Get interface detail json statistics""" +    data =  cmd(f'vtysh -c "show interface {iface} json"') +    data_dict = json.loads(data) +    return data_dict  def show(raw: bool):      bridge_data = _get_raw_data_summary() @@ -196,6 +215,17 @@ def show_mdb(raw: bool, interface: str):      else:          return _get_formatted_output_mdb(mdb_data) +def show_detail(raw: bool, nexthop_group: typing.Optional[bool], interface: str): +    if raw: +        if nexthop_group: +            return _get_bridge_detail_nexthop_group_raw(interface) +        else: +            return _get_bridge_detail_raw(interface) +    else: +        if nexthop_group: +            return _get_bridge_detail_nexthop_group(interface) +        else: +            return _get_bridge_detail(interface)  if __name__ == '__main__':      try: | 
