diff options
Diffstat (limited to 'src/completion')
-rwxr-xr-x | src/completion/list_interfaces.py | 44 | ||||
-rwxr-xr-x | src/completion/list_openvpn_clients.py | 4 |
2 files changed, 16 insertions, 32 deletions
diff --git a/src/completion/list_interfaces.py b/src/completion/list_interfaces.py index 98b32797a..e27281433 100755 --- a/src/completion/list_interfaces.py +++ b/src/completion/list_interfaces.py @@ -2,7 +2,14 @@ import sys import argparse -from vyos.ifconfig import Interface +from vyos.ifconfig import Section + + +def matching(feature): + for section in Section.feature(feature): + for intf in Section.interfaces(section): + yield intf + parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() @@ -13,46 +20,23 @@ group.add_argument("-bo", "--bondable", action="store_true", help="List all bond args = parser.parse_args() -# XXX: Need to be rewritten using the data in the class definition -# XXX: It can be done once vti and input are moved into vyos -# XXX: We store for each class what type they are (broadcast, bridgeabe, ...) - if args.type: try: - interfaces = Interface.listing(args.type) - + interfaces = Section.interfaces(args.type) + print(" ".join(interfaces)) except ValueError as e: print(e, file=sys.stderr) print("") elif args.broadcast: - eth = Interface.listing("ethernet") - bridge = Interface.listing("bridge") - bond = Interface.listing("bonding") - interfaces = eth + bridge + bond + print(" ".join(matching("broadcast"))) elif args.bridgeable: - eth = Interface.listing("ethernet") - bond = Interface.listing("bonding") - l2tpv3 = Interface.listing("l2tpv3") - openvpn = Interface.listing("openvpn") - wireless = Interface.listing("wireless") - tunnel = Interface.listing("tunnel") - vxlan = Interface.listing("vxlan") - geneve = Interface.listing("geneve") - - interfaces = eth + bond + l2tpv3 + openvpn + vxlan + tunnel + wireless + geneve + print(" ".join(matching("bridgeable"))) elif args.bondable: - interfaces = [] - eth = Interface.listing("ethernet") - # we need to filter out VLAN interfaces identified by a dot (.) in their name - for intf in eth: - if not '.' in intf: - interfaces.append(intf) + print(" ".join([intf for intf in matching("bondable") if '.' not in intf])) else: - interfaces = Interface.listing() - -print(" ".join(interfaces)) + print(" ".join(Section.interfaces())) diff --git a/src/completion/list_openvpn_clients.py b/src/completion/list_openvpn_clients.py index 17b0c7008..177ac90c9 100755 --- a/src/completion/list_openvpn_clients.py +++ b/src/completion/list_openvpn_clients.py @@ -18,7 +18,7 @@ import os import sys import argparse -from vyos.ifconfig import Interface +from vyos.ifconfig import Section def get_client_from_interface(interface): clients = [] @@ -50,7 +50,7 @@ if __name__ == "__main__": if args.interface: clients = get_client_from_interface(args.interface) elif args.all: - for interface in Interface.listing("openvpn"): + for interface in Section.interfaces("openvpn"): clients += get_client_from_interface(interface) print(" ".join(clients)) |