trigger 2.2.4__tar.gz → 2.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trigger-2.2.4/trigger.egg-info → trigger-2.2.5}/PKG-INFO +1 -1
- {trigger-2.2.4 → trigger-2.2.5}/pyproject.toml +1 -1
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/acl.py +26 -2
- {trigger-2.2.4 → trigger-2.2.5/trigger.egg-info}/PKG-INFO +1 -1
- {trigger-2.2.4 → trigger-2.2.5}/AUTHORS.md +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/LICENSE.md +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/README.md +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/setup.cfg +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_acl.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_acl_db.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_acl_queue.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_changemgmt.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_except.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_netdevices.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_scripts.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_tacacsrc.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_templates.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_twister.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_twister2.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/tests/test_utils.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/autoacl.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/db.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/dicts.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/grammar.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/ios.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/junos.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/models.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/parser.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/queue.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/support.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/acl/tools.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/acl_script.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/aclconv.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/check_access.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/check_syntax.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/fe.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/find_access.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/gnng.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/gong.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/load_acl.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/load_config.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/netdev.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/optimizer.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/bin/run_cmds.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/changemgmt/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/changemgmt/bounce.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/cmds.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/conf/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/conf/global_settings.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/contrib/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/exceptions.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/gorc.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/netdevices/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/netdevices/loader.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/netscreen.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/packages/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/packages/peewee.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/rancid.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/tacacsrc.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/twister.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/twister2.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/__init__.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/cli.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/importlib.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/network.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/rcs.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/templates.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/url.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger/utils/xmltodict.py +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger.egg-info/SOURCES.txt +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger.egg-info/dependency_links.txt +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger.egg-info/entry_points.txt +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger.egg-info/requires.txt +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/trigger.egg-info/top_level.txt +0 -0
- {trigger-2.2.4 → trigger-2.2.5}/twisted/plugins/trigger_xmlrpc.py +0 -0
|
@@ -10,6 +10,7 @@ and to manage the ACL task queue.
|
|
|
10
10
|
import optparse
|
|
11
11
|
import sys
|
|
12
12
|
from collections import defaultdict
|
|
13
|
+
from pathlib import Path
|
|
13
14
|
from textwrap import wrap
|
|
14
15
|
|
|
15
16
|
from trigger import __version__, exceptions
|
|
@@ -24,7 +25,8 @@ def parse_args(argv, optp): # noqa: D103
|
|
|
24
25
|
%prog --display [--exact | --device-name-only] (<acl_name> | <device>)
|
|
25
26
|
%prog (--add | --remove) <acl_name> [<device> [<device> ...]]
|
|
26
27
|
%prog (--clear | --inject) [--quiet] [<acl_name> [<acl_name> ...]]
|
|
27
|
-
%prog (--list | --listmanual)
|
|
28
|
+
%prog (--list | --listmanual)
|
|
29
|
+
%prog --staged"""
|
|
28
30
|
|
|
29
31
|
# Parse arguments.
|
|
30
32
|
optp.usage = usage
|
|
@@ -46,6 +48,14 @@ def parse_args(argv, optp): # noqa: D103
|
|
|
46
48
|
const="listmanual",
|
|
47
49
|
dest="mode",
|
|
48
50
|
)
|
|
51
|
+
optp.add_option(
|
|
52
|
+
"-s",
|
|
53
|
+
"--staged",
|
|
54
|
+
help="list currently staged ACLs",
|
|
55
|
+
action="store_const",
|
|
56
|
+
const="staged",
|
|
57
|
+
dest="mode",
|
|
58
|
+
)
|
|
49
59
|
optp.add_option(
|
|
50
60
|
"-i",
|
|
51
61
|
"--inject",
|
|
@@ -128,7 +138,7 @@ def main(): # noqa: PLR0912, PLR0915
|
|
|
128
138
|
# Setup
|
|
129
139
|
aclsdb = AclsDB()
|
|
130
140
|
term_width = get_terminal_width() # How wide is your term!
|
|
131
|
-
valid_modes = ["list", "listmanual"] # Valid listing modes
|
|
141
|
+
valid_modes = ["list", "listmanual", "staged"] # Valid listing modes
|
|
132
142
|
|
|
133
143
|
optp = optparse.OptionParser()
|
|
134
144
|
opts, args = parse_args(sys.argv, optp)
|
|
@@ -167,6 +177,20 @@ def main(): # noqa: PLR0912, PLR0915
|
|
|
167
177
|
if not queue.list(queue="manual"):
|
|
168
178
|
print("Nothing in the manual queue.")
|
|
169
179
|
|
|
180
|
+
elif opts.mode == "staged":
|
|
181
|
+
tftproot = settings.TFTPROOT_DIR
|
|
182
|
+
tftp_path = Path(tftproot)
|
|
183
|
+
if not tftp_path.is_dir():
|
|
184
|
+
print(f"TFTPROOT_DIR directory not found: {tftproot}")
|
|
185
|
+
sys.exit(1)
|
|
186
|
+
staged_files = sorted(p.name for p in tftp_path.iterdir() if p.is_file())
|
|
187
|
+
if staged_files:
|
|
188
|
+
print(f"Access-lists currently staged in {tftproot}:")
|
|
189
|
+
for filename in staged_files:
|
|
190
|
+
print(f" {filename}")
|
|
191
|
+
else:
|
|
192
|
+
print(f"No ACLs currently staged in {tftproot}.")
|
|
193
|
+
|
|
170
194
|
elif opts.mode == "inject":
|
|
171
195
|
for arg in args:
|
|
172
196
|
devs = [dev[0] for dev in get_matching_acls([arg])]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|