summaryrefslogtreecommitdiff
path: root/src/completion
diff options
context:
space:
mode:
Diffstat (limited to 'src/completion')
-rwxr-xr-xsrc/completion/list_interfaces.py44
-rwxr-xr-xsrc/completion/list_openvpn_clients.py4
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))