Skip to content

Commit 9054bac

Browse files
Add autocompletion support to specific CLI commands
Signed-off-by: Emanuele Lanuti <[email protected]>
1 parent 358b0ef commit 9054bac

File tree

13 files changed

+84
-53
lines changed

13 files changed

+84
-53
lines changed

suzieq/cli/sqcmds/AddressCmd.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
from suzieq.cli.sqcmds.command import SqTableCommand
55
from suzieq.sqobjects.address import AddressObj
6+
import suzieq.cli.sqcmds.sq_completions as completitions
67

78

89
@argument("vrf",
9-
description="VRF(s), space separated")
10+
description="VRF(s), space separated",
11+
choices=completitions.vrf_completer)
1012
@argument("type", description="Interface type(s), space separated")
1113
@argument("ifname", description="Interface name(s), space separated")
1214
@argument("ipvers",

suzieq/cli/sqcmds/BgpCmd.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import time
22
from datetime import timedelta
3-
from nubia import command
43

54
import pandas as pd
5+
from nubia import command
66

7+
import suzieq.cli.sqcmds.sq_completions as completitions
78
from suzieq.cli.nubia_patch import argument
89
from suzieq.cli.sqcmds.command import SqTableCommand
910
from suzieq.sqobjects.bgp import BgpObj
1011

1112

1213
@command("bgp", help="Act on BGP data")
13-
@argument("vrf", description="VRF(s), space separated")
14+
@argument("vrf", description="VRF(s), space separated",
15+
choices=completitions.vrf_completer)
1416
@argument("state", description="status of the session to match",
1517
choices=["Established", "NotEstd", "dynamic"])
1618
@argument("peer",

suzieq/cli/sqcmds/EvpnVniCmd.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import time
2+
23
from nubia import command
3-
from suzieq.cli.nubia_patch import argument
44

5+
import suzieq.cli.sqcmds.sq_completions as completitions
6+
from suzieq.cli.nubia_patch import argument
57
from suzieq.cli.sqcmds.command import SqTableCommand
68
from suzieq.sqobjects.evpnVni import EvpnvniObj
79

810

911
@command("evpnVni", help="Act on EVPN VNI data")
10-
@argument("vni", description="VNI ID(s), space separated")
12+
@argument("vni", description="VNI ID(s), space separated",
13+
choices=completitions.vni_completer)
1114
@argument("priVtepIp", description="Primary VTEP IP(s), space separated")
1215
class EvpnVniCmd(SqTableCommand):
1316
"""EVPN information such as VNI/VLAN mapping, VTEP IPs etc."""

suzieq/cli/sqcmds/InterfaceCmd.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import time
22

3-
from nubia import command
43
import pandas as pd
4+
from nubia import command
55

6+
import suzieq.cli.sqcmds.sq_completions as completitions
67
from suzieq.cli.nubia_patch import argument
7-
from suzieq.sqobjects import get_sqobject
88
from suzieq.cli.sqcmds.command import SqTableCommand
9+
from suzieq.sqobjects import get_sqobject
910

1011

1112
@command("interface", help="Act on Interface data")
@@ -14,7 +15,8 @@
1415
@argument("vrf", description="VRF(s), space separated")
1516
@argument("portmode", description="Portmode(s), space separated")
1617
@argument("vlan", description="Vlan(s), space separated")
17-
@argument("vrf", description="VRF(s), space separated")
18+
@argument("vrf", description="VRF(s), space separated",
19+
choices=completitions.vrf_completer)
1820
@argument("state", description="interface state to qualify show",
1921
choices=["up", "down", "notConnected", "!up", "!down",
2022
"!notConnected"])
@@ -77,7 +79,8 @@ def __init__(
7779
@argument(
7880
"what",
7981
description="What do you want to assert",
80-
choices=["mtu-value"],
82+
# choices=["mtu-value"],
83+
choices=completitions.column_name_completer
8184
)
8285
@argument("value", description="Value to match against")
8386
@argument("result", description="Show only assert that matches this value",

suzieq/cli/sqcmds/InventoryCmd.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
import re
2+
23
from nubia import command
3-
from suzieq.cli.nubia_patch import argument
44

5+
import suzieq.cli.sqcmds.sq_completions as completitions
6+
from suzieq.cli.nubia_patch import argument
57
from suzieq.cli.sqcmds.command import SqTableCommand
68
from suzieq.sqobjects.inventory import InventoryObj
79

810

911
@command("inventory", help="Act on inventory data")
1012
@argument("type", description="Filter by type",
11-
choices=["fan", "power", "xcvr", "supervisor", "port-adapter",
12-
"linecard", "fabric", "midplane", "mx-cb"])
13+
# choices=["fan", "power", "xcvr", "supervisor", "port-adapter",
14+
# "linecard", "fabric", "midplane", "mx-cb"]
15+
choices=completitions.inv_type_completer)
1316
@argument("status", description="Filter by status",
1417
choices=['present', 'absent'])
1518
@argument("model", description="Filter by model")

suzieq/cli/sqcmds/MacCmd.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
from suzieq.cli.sqcmds.command import SqTableCommand
55
from suzieq.sqobjects.macs import MacsObj
6+
import suzieq.cli.sqcmds.sq_completions as completitions
67

78

89
@command("mac", help="Act on MAC Table data")
9-
@argument("vlan", description="VLAN(s). space separated")
10+
@argument("vlan", description="VLAN(s). space separated",
11+
choices=completitions.vlan_completer)
1012
@argument("macaddr",
1113
description="MAC address(es), in quotes, space separated")
1214
@argument("remoteVtepIp",

suzieq/cli/sqcmds/OspfCmd.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import time
22

3-
from nubia import command
43
import pandas as pd
4+
from nubia import command
55

6+
import suzieq.cli.sqcmds.sq_completions as completitions
67
from suzieq.cli.nubia_patch import argument
78
from suzieq.cli.sqcmds.command import SqTableCommand
89
from suzieq.sqobjects.ospf import OspfObj
@@ -13,7 +14,8 @@
1314
"ifname",
1415
description="Interface name(s), space separated"
1516
)
16-
@argument("vrf", description="VRF(s), space separated")
17+
@argument("vrf", description="VRF(s), space separated",
18+
choices=completitions.vrf_completer)
1719
@argument("area", description="Area(s), space separated")
1820
@argument("state", description="Select view based on OSPF state",
1921
choices=["full", "other", "passive", "!full", "!passive",

suzieq/cli/sqcmds/PathCmd.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
from nubia import command
2-
from suzieq.cli.nubia_patch import argument
32

3+
import suzieq.cli.sqcmds.sq_completions as completitions
4+
from suzieq.cli.nubia_patch import argument
45
from suzieq.cli.sqcmds.command import SqTableCommand
56
from suzieq.sqobjects.path import PathObj
67

78

89
@command("path", help="build and act on path data")
910
@argument("src", description="Source IP address, in quotes")
1011
@argument("dest", description="Destination IP address, in quotes")
11-
@argument("vrf", description="VRF to trace path in")
12+
@argument("vrf", description="VRF to trace path in",
13+
choices=completitions.vrf_completer)
1214
class PathCmd(SqTableCommand):
1315
"""Path trace information including overlay and underlay"""
1416

suzieq/cli/sqcmds/RouteCmd.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
import time
21
import ipaddress
3-
import pandas as pd
2+
import time
43

4+
import pandas as pd
55
from nubia import command
6-
from suzieq.cli.nubia_patch import argument
76

7+
import suzieq.cli.sqcmds.sq_completions as completitions
8+
from suzieq.cli.nubia_patch import argument
89
from suzieq.cli.sqcmds.command import SqTableCommand
910
from suzieq.sqobjects.routes import RoutesObj
1011

1112

1213
@command("route", help="Act on Routes")
13-
@argument("vrf", description="VRF(s), space separated")
14-
@argument("protocol", description="Routing protocol(s), space separated")
14+
@argument("vrf", description="VRF(s), space separated",
15+
choices=completitions.vrf_completer)
16+
@argument("protocol", description="Routing protocol(s), space separated",
17+
choices=completitions.route_proto_completer)
1518
@argument("prefix", description="Prefix(es), in quotes, space separated")
1619
@argument("prefixlen", description="must be of the form "
1720
"[<|<=|>=|>|!] length")

suzieq/cli/sqcmds/SqPollerCmd.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
from nubia import command
2-
from suzieq.cli.nubia_patch import argument
32

3+
import suzieq.cli.sqcmds.sq_completions as completitions
4+
from suzieq.cli.nubia_patch import argument
45
from suzieq.cli.sqcmds.command import SqTableCommand
56
from suzieq.sqobjects.sqPoller import SqPollerObj
67

78

89
@command("sqPoller", help="Act on SqPoller data")
9-
@argument("service", description="Service(s), space separated")
10+
@argument("service", description="Service(s), space separated",
11+
choices=completitions.service_completer)
1012
@argument("status", description="status of service to match",
1113
choices=["all", "pass", "fail"])
1214
@argument('poll_period_exceeded',

0 commit comments

Comments
 (0)