trigger 1.6rc8__tar.gz → 2.0.0__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.0.0/AUTHORS.md +20 -0
- trigger-1.6rc8/LICENSE.rst → trigger-2.0.0/LICENSE.md +1 -3
- trigger-2.0.0/PKG-INFO +146 -0
- trigger-1.6rc8/README.rst → trigger-2.0.0/README.md +46 -34
- trigger-2.0.0/pyproject.toml +156 -0
- trigger-2.0.0/setup.cfg +4 -0
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_acl.py +252 -197
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_acl_db.py +19 -13
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_acl_queue.py +29 -24
- trigger-2.0.0/tests/test_changemgmt.py +107 -0
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_except.py +9 -8
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_netdevices.py +41 -41
- trigger-2.0.0/tests/test_scripts.py +52 -0
- trigger-2.0.0/tests/test_tacacsrc.py +147 -0
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_templates.py +25 -19
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_twister.py +9 -13
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_twister2.py +4 -7
- {trigger-1.6rc8 → trigger-2.0.0}/tests/test_utils.py +5 -3
- trigger-2.0.0/trigger/__init__.py +7 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/__init__.py +11 -10
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/autoacl.py +14 -13
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/db.py +63 -49
- trigger-2.0.0/trigger/acl/dicts.py +357 -0
- trigger-2.0.0/trigger/acl/grammar.py +112 -0
- trigger-2.0.0/trigger/acl/ios.py +222 -0
- trigger-2.0.0/trigger/acl/junos.py +422 -0
- trigger-2.0.0/trigger/acl/models.py +118 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/parser.py +63 -53
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/queue.py +83 -63
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/support.py +506 -324
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/acl/tools.py +255 -201
- trigger-2.0.0/trigger/bin/acl.py +233 -0
- trigger-1.6rc8/bin/acl_script → trigger-2.0.0/trigger/bin/acl_script.py +229 -140
- trigger-2.0.0/trigger/bin/aclconv.py +82 -0
- trigger-2.0.0/trigger/bin/check_access.py +93 -0
- trigger-2.0.0/trigger/bin/check_syntax.py +66 -0
- trigger-2.0.0/trigger/bin/fe.py +197 -0
- trigger-1.6rc8/bin/find_access → trigger-2.0.0/trigger/bin/find_access.py +90 -69
- trigger-1.6rc8/bin/gnng → trigger-2.0.0/trigger/bin/gnng.py +148 -101
- trigger-1.6rc8/bin/gong → trigger-2.0.0/trigger/bin/gong.py +28 -22
- trigger-1.6rc8/bin/load_acl → trigger-2.0.0/trigger/bin/load_acl.py +253 -198
- trigger-2.0.0/trigger/bin/load_config.py +18 -0
- trigger-2.0.0/trigger/bin/netdev.py +317 -0
- trigger-1.6rc8/bin/optimizer → trigger-2.0.0/trigger/bin/optimizer.py +231 -211
- trigger-2.0.0/trigger/bin/run_cmds.py +18 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/changemgmt/__init__.py +78 -44
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/changemgmt/bounce.py +13 -13
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/cmds.py +265 -201
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/conf/__init__.py +24 -15
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/conf/global_settings.py +223 -215
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/exceptions.py +14 -13
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/gorc.py +27 -23
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/netdevices/__init__.py +237 -181
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/netdevices/loader.py +25 -19
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/netscreen.py +421 -302
- trigger-2.0.0/trigger/packages/peewee.py +8084 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/rancid.py +103 -74
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/tacacsrc.py +209 -136
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/twister.py +628 -433
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/twister2.py +225 -152
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/__init__.py +24 -14
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/cli.py +69 -45
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/importlib.py +11 -13
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/network.py +32 -23
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/rcs.py +22 -23
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/templates.py +18 -13
- trigger-2.0.0/trigger/utils/url.py +78 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/utils/xmltodict.py +71 -49
- trigger-2.0.0/trigger.egg-info/PKG-INFO +146 -0
- trigger-2.0.0/trigger.egg-info/SOURCES.txt +76 -0
- trigger-2.0.0/trigger.egg-info/entry_points.txt +15 -0
- trigger-2.0.0/trigger.egg-info/requires.txt +21 -0
- trigger-2.0.0/twisted/plugins/trigger_xmlrpc.py +124 -0
- trigger-1.6rc8/AUTHORS.rst +0 -21
- trigger-1.6rc8/CHANGELOG +0 -1
- trigger-1.6rc8/MANIFEST.in +0 -6
- trigger-1.6rc8/PKG-INFO +0 -44
- trigger-1.6rc8/SANDIA.rst +0 -3
- trigger-1.6rc8/TODO.rst +0 -43
- trigger-1.6rc8/bin/acl +0 -176
- trigger-1.6rc8/bin/aclconv +0 -73
- trigger-1.6rc8/bin/check_access +0 -87
- trigger-1.6rc8/bin/check_syntax +0 -62
- trigger-1.6rc8/bin/fe +0 -195
- trigger-1.6rc8/bin/netdev +0 -228
- trigger-1.6rc8/bin/run_cmds +0 -10
- trigger-1.6rc8/docs/.DS_Store +0 -0
- trigger-1.6rc8/docs/Makefile +0 -89
- trigger-1.6rc8/docs/_build/.DS_Store +0 -0
- trigger-1.6rc8/docs/_ext/triggerdocs.py +0 -10
- trigger-1.6rc8/docs/_static/rtd.css +0 -791
- trigger-1.6rc8/docs/_templates/page.html +0 -10
- trigger-1.6rc8/docs/api/acl.rst +0 -41
- trigger-1.6rc8/docs/api/changemgmt.rst +0 -5
- trigger-1.6rc8/docs/api/cmds.rst +0 -5
- trigger-1.6rc8/docs/api/conf.rst +0 -5
- trigger-1.6rc8/docs/api/contrib.rst +0 -17
- trigger-1.6rc8/docs/api/exceptions.rst +0 -5
- trigger-1.6rc8/docs/api/gorc.rst +0 -6
- trigger-1.6rc8/docs/api/index.rst +0 -9
- trigger-1.6rc8/docs/api/netdevices.rst +0 -8
- trigger-1.6rc8/docs/api/netscreen.rst +0 -5
- trigger-1.6rc8/docs/api/rancid.rst +0 -5
- trigger-1.6rc8/docs/api/tacacsrc.rst +0 -5
- trigger-1.6rc8/docs/api/twister.rst +0 -5
- trigger-1.6rc8/docs/api/utils.rst +0 -48
- trigger-1.6rc8/docs/changelog.rst +0 -1606
- trigger-1.6rc8/docs/conf.py +0 -268
- trigger-1.6rc8/docs/configuration.rst +0 -1279
- trigger-1.6rc8/docs/development.rst +0 -146
- trigger-1.6rc8/docs/examples.rst +0 -473
- trigger-1.6rc8/docs/experimental.rst +0 -135
- trigger-1.6rc8/docs/index.rst +0 -80
- trigger-1.6rc8/docs/installation.rst +0 -419
- trigger-1.6rc8/docs/interactive_mode.rst +0 -17
- trigger-1.6rc8/docs/license.rst +0 -58
- trigger-1.6rc8/docs/make.bat +0 -113
- trigger-1.6rc8/docs/new_vendors.rst +0 -60
- trigger-1.6rc8/docs/overview.rst +0 -112
- trigger-1.6rc8/docs/platforms.rst +0 -67
- trigger-1.6rc8/docs/support.rst +0 -68
- trigger-1.6rc8/docs/usage/cli.rst +0 -13
- trigger-1.6rc8/docs/usage/gorc.rst +0 -7
- trigger-1.6rc8/docs/usage/index.rst +0 -14
- trigger-1.6rc8/docs/usage/netdevices.rst +0 -671
- trigger-1.6rc8/docs/usage/plugins.rst +0 -131
- trigger-1.6rc8/docs/usage/scripts/acl.rst +0 -138
- trigger-1.6rc8/docs/usage/scripts/acl_script.rst +0 -223
- trigger-1.6rc8/docs/usage/scripts/aclconv.rst +0 -58
- trigger-1.6rc8/docs/usage/scripts/check_access.rst +0 -69
- trigger-1.6rc8/docs/usage/scripts/gnng.rst +0 -70
- trigger-1.6rc8/docs/usage/scripts/gong.rst +0 -238
- trigger-1.6rc8/docs/usage/scripts/netdev.rst +0 -127
- trigger-1.6rc8/docs/usage/tacacsrc.rst +0 -233
- trigger-1.6rc8/examples/commando_reactorless.py +0 -53
- trigger-1.6rc8/examples/normalizer/Normalize.py +0 -191
- trigger-1.6rc8/examples/normalizer/README.rst +0 -58
- trigger-1.6rc8/examples/normalizer/Report.py +0 -141
- trigger-1.6rc8/examples/normalizer/Router.py +0 -69
- trigger-1.6rc8/examples/normalizer/test-units.csv +0 -3
- trigger-1.6rc8/examples/sshendpoint_updatecmdb.py +0 -71
- trigger-1.6rc8/examples/xmlrpc_server/README.rst +0 -40
- trigger-1.6rc8/examples/xmlrpc_server/cacert.pem +0 -15
- trigger-1.6rc8/examples/xmlrpc_server/server.key +0 -15
- trigger-1.6rc8/examples/xmlrpc_server/start_xmlrpc.sh +0 -15
- trigger-1.6rc8/examples/xmlrpc_server/trigger-xmlrpc.init +0 -57
- trigger-1.6rc8/examples/xmlrpc_server/trigger-xmlrpc.log +0 -5357
- trigger-1.6rc8/examples/xmlrpc_server/twistd.log +0 -11
- trigger-1.6rc8/examples/xmlrpc_server/twistd.pid +0 -1
- trigger-1.6rc8/examples/xmlrpc_server/users.txt +0 -1
- trigger-1.6rc8/pycon2015.rst +0 -149
- trigger-1.6rc8/setup.cfg +0 -8
- trigger-1.6rc8/setup.py +0 -183
- trigger-1.6rc8/tests/acceptance/data/.tackf +0 -1
- trigger-1.6rc8/tests/acceptance/data/netdevices.xml +0 -146
- trigger-1.6rc8/tests/acceptance/data/settings.py +0 -424
- trigger-1.6rc8/tests/acceptance/trigger_acceptance_tests.py +0 -45
- trigger-1.6rc8/tests/data/acl.test +0 -104
- trigger-1.6rc8/tests/data/autoacl.py +0 -21
- trigger-1.6rc8/tests/data/bounce.py +0 -90
- trigger-1.6rc8/tests/data/brokenpw_tacacsrc +0 -7
- trigger-1.6rc8/tests/data/emptypw_tacacsrc +0 -4
- trigger-1.6rc8/tests/data/junos-examples.txt +0 -449
- trigger-1.6rc8/tests/data/longpw_tacacsrc +0 -4
- trigger-1.6rc8/tests/data/medium_tacacsrc +0 -4
- trigger-1.6rc8/tests/data/netdevices.xml +0 -77
- trigger-1.6rc8/tests/data/settings.py +0 -33
- trigger-1.6rc8/tests/data/tacacsrc +0 -8
- trigger-1.6rc8/tests/data/tackf +0 -1
- trigger-1.6rc8/tests/data/vendor/ntc_templates/cisco_ios_show_clock.template +0 -10
- trigger-1.6rc8/tests/data/vendor/ntc_templates/cisco_ios_show_version.template +0 -15
- trigger-1.6rc8/tests/setup_env.sh +0 -7
- trigger-1.6rc8/tests/test_changemgmt.py +0 -103
- trigger-1.6rc8/tests/test_scripts.py +0 -44
- trigger-1.6rc8/tests/test_tacacsrc.py +0 -125
- trigger-1.6rc8/tests/utils/__init__.py +0 -37
- trigger-1.6rc8/tests/utils/misc.py +0 -36
- trigger-1.6rc8/tests/utils/mock_redis.py +0 -178
- trigger-1.6rc8/tools/convert_tacacsrc.py +0 -9
- trigger-1.6rc8/tools/gen_tacacsrc.py +0 -19
- trigger-1.6rc8/tools/init_task_db +0 -39
- trigger-1.6rc8/tools/prepend_acl_dot +0 -84
- trigger-1.6rc8/tools/tacacsrc2gpg.py +0 -41
- trigger-1.6rc8/trigger/__init__.py +0 -6
- trigger-1.6rc8/trigger/acl/dicts.py +0 -346
- trigger-1.6rc8/trigger/acl/grammar.py +0 -106
- trigger-1.6rc8/trigger/acl/ios.py +0 -193
- trigger-1.6rc8/trigger/acl/junos.py +0 -366
- trigger-1.6rc8/trigger/acl/models.py +0 -105
- trigger-1.6rc8/trigger/contrib/commando/__init__.py +0 -208
- trigger-1.6rc8/trigger/contrib/commando/plugins/__init__.py +0 -7
- trigger-1.6rc8/trigger/contrib/commando/plugins/config_device.py +0 -149
- trigger-1.6rc8/trigger/contrib/commando/plugins/gather_info.py +0 -145
- trigger-1.6rc8/trigger/contrib/commando/plugins/show_clock.py +0 -115
- trigger-1.6rc8/trigger/contrib/commando/plugins/show_version.py +0 -17
- trigger-1.6rc8/trigger/contrib/docommand/__init__.py +0 -370
- trigger-1.6rc8/trigger/contrib/docommand/core.py +0 -484
- trigger-1.6rc8/trigger/contrib/xmlrpc/__init__.py +0 -6
- trigger-1.6rc8/trigger/contrib/xmlrpc/server.py +0 -215
- trigger-1.6rc8/trigger/netdevices/loaders/__init__.py +0 -6
- trigger-1.6rc8/trigger/netdevices/loaders/filesystem.py +0 -160
- trigger-1.6rc8/trigger/netdevices/loaders/mongodb.py +0 -36
- trigger-1.6rc8/trigger/packages/peewee.py +0 -2584
- trigger-1.6rc8/trigger/packages/tftpy/TftpClient.py +0 -102
- trigger-1.6rc8/trigger/packages/tftpy/TftpContexts.py +0 -385
- trigger-1.6rc8/trigger/packages/tftpy/TftpPacketFactory.py +0 -41
- trigger-1.6rc8/trigger/packages/tftpy/TftpPacketTypes.py +0 -446
- trigger-1.6rc8/trigger/packages/tftpy/TftpServer.py +0 -184
- trigger-1.6rc8/trigger/packages/tftpy/TftpShared.py +0 -59
- trigger-1.6rc8/trigger/packages/tftpy/TftpStates.py +0 -524
- trigger-1.6rc8/trigger/packages/tftpy/__init__.py +0 -24
- trigger-1.6rc8/trigger/utils/notifications/__init__.py +0 -27
- trigger-1.6rc8/trigger/utils/notifications/core.py +0 -58
- trigger-1.6rc8/trigger/utils/notifications/events.py +0 -141
- trigger-1.6rc8/trigger/utils/notifications/handlers.py +0 -120
- trigger-1.6rc8/trigger/utils/url.py +0 -67
- trigger-1.6rc8/trigger.egg-info/PKG-INFO +0 -44
- trigger-1.6rc8/trigger.egg-info/SOURCES.txt +0 -196
- trigger-1.6rc8/trigger.egg-info/requires.txt +0 -13
- trigger-1.6rc8/twisted/plugins/trigger_xmlrpc.py +0 -101
- {trigger-1.6rc8/examples/normalizer → trigger-2.0.0/trigger/bin}/__init__.py +0 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/contrib/__init__.py +0 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger/packages/__init__.py +0 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger.egg-info/dependency_links.txt +0 -0
- {trigger-1.6rc8 → trigger-2.0.0}/trigger.egg-info/top_level.txt +0 -0
trigger-2.0.0/AUTHORS.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Contributors
|
|
2
|
+
|
|
3
|
+
The following people have contributed to Trigger at some point during its
|
|
4
|
+
lifetime:
|
|
5
|
+
|
|
6
|
+
- [Jathan McCollum](https://github.com/jathanism)
|
|
7
|
+
- [Eileen Watson](https://github.com/watsonator)
|
|
8
|
+
- [Mark Ellzey Thomas](https://github.com/ellzey)
|
|
9
|
+
- Michael Shields
|
|
10
|
+
- Jeff Sullivan (for the best error message ever)
|
|
11
|
+
- [Nick Sinopoli](https://github.com/NSinopoli) (for graciously giving us the
|
|
12
|
+
name Trigger!)
|
|
13
|
+
- [Jason Long](https://github.com/sh0x)
|
|
14
|
+
- [Michael Harding](https://github.com/mvh)
|
|
15
|
+
- William White
|
|
16
|
+
- [Allan Feid](https://github.com/crazed)
|
|
17
|
+
- [Mike Biancaniello](https://github.com/chepazzo)
|
|
18
|
+
- [Murat Ezbiderli](https://github.com/mezbiderli)
|
|
19
|
+
- [Johannes Erdfelt](https://github.com/jerdfelt)
|
|
20
|
+
- [Codey Oxley](https://github.com/coxley)
|
trigger-2.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: trigger
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: Network automation toolkit for managing network devices
|
|
5
|
+
Author-email: Jathan McCollum <jathan@gmail.com>
|
|
6
|
+
License-Expression: BSD-3-Clause
|
|
7
|
+
Classifier: Development Status :: 6 - Mature
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
+
Classifier: Framework :: Twisted
|
|
12
|
+
Requires-Python: <3.12,>=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE.md
|
|
15
|
+
License-File: AUTHORS.md
|
|
16
|
+
Requires-Dist: IPy>=1.01
|
|
17
|
+
Requires-Dist: cryptography>=41.0.0
|
|
18
|
+
Requires-Dist: Twisted>=22.10.0
|
|
19
|
+
Requires-Dist: crochet>=2.0.0
|
|
20
|
+
Requires-Dist: pyasn1>=0.4.8
|
|
21
|
+
Requires-Dist: pyparsing>=3.1.0
|
|
22
|
+
Requires-Dist: pytz>=2023.3
|
|
23
|
+
Requires-Dist: SimpleParse>=2.2.0
|
|
24
|
+
Requires-Dist: textfsm>=1.1.0
|
|
25
|
+
Requires-Dist: redis>=5.0.0
|
|
26
|
+
Requires-Dist: PTable>=0.9.2
|
|
27
|
+
Requires-Dist: peewee>=3.17.0
|
|
28
|
+
Requires-Dist: service-identity>=23.1.0
|
|
29
|
+
Requires-Dist: bcrypt>=4.0.0
|
|
30
|
+
Requires-Dist: packaging>=21.0
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-twisted>=1.14.0; extra == "dev"
|
|
34
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
35
|
+
Requires-Dist: python-semantic-release>=9.0.0; extra == "dev"
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
|
|
38
|
+
# What is Trigger?
|
|
39
|
+
|
|
40
|
+
[](https://github.com/trigger/trigger/actions)
|
|
41
|
+
[](https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
42
|
+
|
|
43
|
+
Trigger is a robust network automation toolkit written in Python that was
|
|
44
|
+
designed for interfacing with network devices and managing network
|
|
45
|
+
configuration and security policy. It increases the speed and efficiency of
|
|
46
|
+
managing large-scale networks while reducing the risk of human error.
|
|
47
|
+
|
|
48
|
+
Started by the AOL Network Security team in 2006, Trigger was originally
|
|
49
|
+
designed for security policy management on firewalls, routers, and switches. It
|
|
50
|
+
has since been expanded to be a full-featured network automation toolkit.
|
|
51
|
+
|
|
52
|
+
With the high number of network devices on the AOL network this application is
|
|
53
|
+
invaluable to performance and reliability. We hope you'll find it useful on
|
|
54
|
+
your network and consider participating!
|
|
55
|
+
|
|
56
|
+
## Supported Platforms
|
|
57
|
+
|
|
58
|
+
* Cisco IOS, NX-OS, and ASA software
|
|
59
|
+
* Juniper Junos and ScreenOS
|
|
60
|
+
* Force10 router and switch platforms running FTOS
|
|
61
|
+
* Arista Networks 7000-family switches
|
|
62
|
+
* ... and more!
|
|
63
|
+
|
|
64
|
+
Refer to the [official docs](https://trigger.readthedocs.io/en/latest/#supported-platforms) for the full list.
|
|
65
|
+
|
|
66
|
+
## Key Features
|
|
67
|
+
|
|
68
|
+
Trigger is designed to work at scale and can support hundreds or thousands of
|
|
69
|
+
network devices with ease. Here are some of things that make Trigger tick:
|
|
70
|
+
|
|
71
|
+
+ Support for SSH, Telnet, and Juniper's Junoscript XML API.
|
|
72
|
+
+ Easily get an interactive shell or execute commands asynchronously.
|
|
73
|
+
+ Leverage advanced event-driven functionality to manage any number of
|
|
74
|
+
jobs in parallel and handle output or errors as they return.
|
|
75
|
+
+ Powerful metadata interface for performing complex queries to group and
|
|
76
|
+
associate network devices by name, manufacturer, type, location, and more.
|
|
77
|
+
+ Encrypted storage of login credentials so you can interact without constantly
|
|
78
|
+
being prompted to enter your password.
|
|
79
|
+
+ Flexible access-list & firewall policy parser that can test access if access
|
|
80
|
+
is permitted, or easily convert ACLs from one format to another.
|
|
81
|
+
+ Detailed support for timezones and maintenance windows.
|
|
82
|
+
+ A suite of tools for simplifying many common tasks.
|
|
83
|
+
|
|
84
|
+
New in version 1.2:
|
|
85
|
+
|
|
86
|
+
+ Import your metadata from an existing [RANCID](http://shrubbery.net/rancid/) installation to get up-and-running quickly!
|
|
87
|
+
|
|
88
|
+
New in version 1.3:
|
|
89
|
+
|
|
90
|
+
+ Import your metadata from a CSV file and get up-and-running even quicker!
|
|
91
|
+
|
|
92
|
+
## Getting Started
|
|
93
|
+
|
|
94
|
+
The best way to get started is to read the documentation hosted by [Read the
|
|
95
|
+
Docs](http://readthedocs.org) at [https://trigger.readthedocs.io](https://trigger.readthedocs.io). There you will find everything you need to
|
|
96
|
+
get going including usage examples, installation and configuration
|
|
97
|
+
instructions, and more!
|
|
98
|
+
|
|
99
|
+
### Python Version Requirements
|
|
100
|
+
|
|
101
|
+
**Trigger v2.0.0+** requires **Python 3.10 or 3.11**. Python 3.12+ is not yet supported due to SimpleParse C extension compatibility issues.
|
|
102
|
+
|
|
103
|
+
**Python 2.7 support ended with v1.6.0** (the last Python 2.7 compatible release).
|
|
104
|
+
|
|
105
|
+
#### Installation
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Install the latest version
|
|
109
|
+
pip install trigger
|
|
110
|
+
|
|
111
|
+
# Install in development mode
|
|
112
|
+
pip install -e ".[dev]"
|
|
113
|
+
|
|
114
|
+
# Using uv (faster)
|
|
115
|
+
uv pip install trigger
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For users still requiring Python 2.7, use the v1.6.0 release:
|
|
119
|
+
```bash
|
|
120
|
+
pip install trigger==1.6.0
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Upgrading from v1.6.0?
|
|
124
|
+
|
|
125
|
+
See the [Migration Guide](https://trigger.readthedocs.io/en/latest/migration.html) for detailed upgrade instructions.
|
|
126
|
+
|
|
127
|
+
### Before you begin
|
|
128
|
+
|
|
129
|
+
+ The [develop](https://github.com/trigger/trigger/tree/develop) branch is
|
|
130
|
+
the default branch that will be active when you clone this repository. While
|
|
131
|
+
it is generally stable this branch is not considered production-ready. Use at
|
|
132
|
+
your own risk!
|
|
133
|
+
+ The [master](https://github.com/trigger/trigger/tree/master) branch is
|
|
134
|
+
the stable branch, and will reflect the latest production-ready changes. It
|
|
135
|
+
is recommended that this is the branch you use if you are installing Trigger
|
|
136
|
+
for the first time.
|
|
137
|
+
+ Each point release of Trigger is maintained as a [tag branch](https://github.com/trigger/trigger/tags). If you require a
|
|
138
|
+
specific Trigger version, please refer to these.
|
|
139
|
+
|
|
140
|
+
### Get in touch!
|
|
141
|
+
|
|
142
|
+
If you run into any snags, have questions, feedback, or just want to talk shop:
|
|
143
|
+
[contact us](https://trigger.readthedocs.io/en/latest/#getting-help)!
|
|
144
|
+
|
|
145
|
+
**Pro tip**: Find us on IRC at `#trigger` on Freenode
|
|
146
|
+
([irc://irc.freenode.net/trigger](irc://irc.freenode.net/trigger)).
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
What is Trigger?
|
|
2
|
-
================
|
|
1
|
+
# What is Trigger?
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
:target: https://travis-ci.org/trigger/trigger
|
|
7
|
-
|
|
8
|
-
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
|
9
|
-
:alt: Join the chat at https://gitter.im/trigger/trigger
|
|
10
|
-
:target: https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
|
3
|
+
[](https://github.com/trigger/trigger/actions)
|
|
4
|
+
[](https://gitter.im/trigger/trigger?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
11
5
|
|
|
12
6
|
Trigger is a robust network automation toolkit written in Python that was
|
|
13
7
|
designed for interfacing with network devices and managing network
|
|
@@ -22,8 +16,7 @@ With the high number of network devices on the AOL network this application is
|
|
|
22
16
|
invaluable to performance and reliability. We hope you'll find it useful on
|
|
23
17
|
your network and consider participating!
|
|
24
18
|
|
|
25
|
-
Supported Platforms
|
|
26
|
-
===================
|
|
19
|
+
## Supported Platforms
|
|
27
20
|
|
|
28
21
|
* Cisco IOS, NX-OS, and ASA software
|
|
29
22
|
* Juniper Junos and ScreenOS
|
|
@@ -31,12 +24,9 @@ Supported Platforms
|
|
|
31
24
|
* Arista Networks 7000-family switches
|
|
32
25
|
* ... and more!
|
|
33
26
|
|
|
34
|
-
Refer to the
|
|
27
|
+
Refer to the [official docs](https://trigger.readthedocs.io/en/latest/#supported-platforms) for the full list.
|
|
35
28
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Key Features
|
|
39
|
-
============
|
|
29
|
+
## Key Features
|
|
40
30
|
|
|
41
31
|
Trigger is designed to work at scale and can support hundreds or thousands of
|
|
42
32
|
network devices with ease. Here are some of things that make Trigger tick:
|
|
@@ -56,42 +46,64 @@ network devices with ease. Here are some of things that make Trigger tick:
|
|
|
56
46
|
|
|
57
47
|
New in version 1.2:
|
|
58
48
|
|
|
59
|
-
+ Import your metadata from an existing
|
|
60
|
-
<http://shrubbery.net/rancid/>`_ installation to get up-and-running quickly!
|
|
49
|
+
+ Import your metadata from an existing [RANCID](http://shrubbery.net/rancid/) installation to get up-and-running quickly!
|
|
61
50
|
|
|
62
51
|
New in version 1.3:
|
|
63
52
|
|
|
64
53
|
+ Import your metadata from a CSV file and get up-and-running even quicker!
|
|
65
54
|
|
|
66
|
-
Getting Started
|
|
67
|
-
===============
|
|
55
|
+
## Getting Started
|
|
68
56
|
|
|
69
|
-
The best way to get started is to read the documentation hosted by
|
|
70
|
-
Docs
|
|
71
|
-
<http://trigger.readthedocs.io>`_. There you will find everything you need to
|
|
57
|
+
The best way to get started is to read the documentation hosted by [Read the
|
|
58
|
+
Docs](http://readthedocs.org) at [https://trigger.readthedocs.io](https://trigger.readthedocs.io). There you will find everything you need to
|
|
72
59
|
get going including usage examples, installation and configuration
|
|
73
60
|
instructions, and more!
|
|
74
61
|
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
### Python Version Requirements
|
|
63
|
+
|
|
64
|
+
**Trigger v2.0.0+** requires **Python 3.10 or 3.11**. Python 3.12+ is not yet supported due to SimpleParse C extension compatibility issues.
|
|
65
|
+
|
|
66
|
+
**Python 2.7 support ended with v1.6.0** (the last Python 2.7 compatible release).
|
|
67
|
+
|
|
68
|
+
#### Installation
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Install the latest version
|
|
72
|
+
pip install trigger
|
|
73
|
+
|
|
74
|
+
# Install in development mode
|
|
75
|
+
pip install -e ".[dev]"
|
|
76
|
+
|
|
77
|
+
# Using uv (faster)
|
|
78
|
+
uv pip install trigger
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
For users still requiring Python 2.7, use the v1.6.0 release:
|
|
82
|
+
```bash
|
|
83
|
+
pip install trigger==1.6.0
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Upgrading from v1.6.0?
|
|
87
|
+
|
|
88
|
+
See the [Migration Guide](https://trigger.readthedocs.io/en/latest/migration.html) for detailed upgrade instructions.
|
|
89
|
+
|
|
90
|
+
### Before you begin
|
|
77
91
|
|
|
78
|
-
+ The
|
|
92
|
+
+ The [develop](https://github.com/trigger/trigger/tree/develop) branch is
|
|
79
93
|
the default branch that will be active when you clone this repository. While
|
|
80
94
|
it is generally stable this branch is not considered production-ready. Use at
|
|
81
95
|
your own risk!
|
|
82
|
-
+ The
|
|
96
|
+
+ The [master](https://github.com/trigger/trigger/tree/master) branch is
|
|
83
97
|
the stable branch, and will reflect the latest production-ready changes. It
|
|
84
98
|
is recommended that this is the branch you use if you are installing Trigger
|
|
85
99
|
for the first time.
|
|
86
|
-
+ Each point release of Trigger is maintained as a
|
|
87
|
-
<https://github.com/trigger/trigger/tags>`_. If you require a
|
|
100
|
+
+ Each point release of Trigger is maintained as a [tag branch](https://github.com/trigger/trigger/tags). If you require a
|
|
88
101
|
specific Trigger version, please refer to these.
|
|
89
102
|
|
|
90
|
-
Get in touch!
|
|
91
|
-
-------------
|
|
103
|
+
### Get in touch!
|
|
92
104
|
|
|
93
105
|
If you run into any snags, have questions, feedback, or just want to talk shop:
|
|
94
|
-
|
|
106
|
+
[contact us](https://trigger.readthedocs.io/en/latest/#getting-help)!
|
|
95
107
|
|
|
96
|
-
**Pro tip**: Find us on IRC at
|
|
97
|
-
(
|
|
108
|
+
**Pro tip**: Find us on IRC at `#trigger` on Freenode
|
|
109
|
+
([irc://irc.freenode.net/trigger](irc://irc.freenode.net/trigger)).
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=64", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "trigger"
|
|
7
|
+
version = "2.0.0"
|
|
8
|
+
description = "Network automation toolkit for managing network devices"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "BSD-3-Clause"
|
|
11
|
+
authors = [{name = "Jathan McCollum", email = "jathan@gmail.com"}]
|
|
12
|
+
requires-python = ">=3.10,<3.12"
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 6 - Mature",
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Programming Language :: Python :: 3.10",
|
|
17
|
+
"Programming Language :: Python :: 3.11",
|
|
18
|
+
"Framework :: Twisted",
|
|
19
|
+
]
|
|
20
|
+
dependencies = [
|
|
21
|
+
"IPy>=1.01",
|
|
22
|
+
"cryptography>=41.0.0",
|
|
23
|
+
"Twisted>=22.10.0",
|
|
24
|
+
"crochet>=2.0.0",
|
|
25
|
+
"pyasn1>=0.4.8",
|
|
26
|
+
"pyparsing>=3.1.0",
|
|
27
|
+
"pytz>=2023.3",
|
|
28
|
+
"SimpleParse>=2.2.0",
|
|
29
|
+
"textfsm>=1.1.0",
|
|
30
|
+
"redis>=5.0.0",
|
|
31
|
+
"PTable>=0.9.2",
|
|
32
|
+
"peewee>=3.17.0",
|
|
33
|
+
"service-identity>=23.1.0",
|
|
34
|
+
"bcrypt>=4.0.0",
|
|
35
|
+
"packaging>=21.0",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
dev = [
|
|
40
|
+
"pytest>=7.4.0",
|
|
41
|
+
"pytest-twisted>=1.14.0",
|
|
42
|
+
"ruff>=0.1.0",
|
|
43
|
+
"python-semantic-release>=9.0.0",
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[project.scripts]
|
|
47
|
+
acl = "trigger.bin.acl:main"
|
|
48
|
+
acl_script = "trigger.bin.acl_script:main"
|
|
49
|
+
aclconv = "trigger.bin.aclconv:main"
|
|
50
|
+
check_access = "trigger.bin.check_access:main"
|
|
51
|
+
check_syntax = "trigger.bin.check_syntax:main"
|
|
52
|
+
fe = "trigger.bin.fe:main"
|
|
53
|
+
find_access = "trigger.bin.find_access:main"
|
|
54
|
+
gnng = "trigger.bin.gnng:main"
|
|
55
|
+
gong = "trigger.bin.gong:main"
|
|
56
|
+
load_acl = "trigger.bin.load_acl:main"
|
|
57
|
+
load_config = "trigger.bin.load_config:main"
|
|
58
|
+
netdev = "trigger.bin.netdev:main"
|
|
59
|
+
optimizer = "trigger.bin.optimizer:main"
|
|
60
|
+
run_cmds = "trigger.bin.run_cmds:main"
|
|
61
|
+
|
|
62
|
+
[tool.setuptools]
|
|
63
|
+
packages = ["trigger", "trigger.acl", "trigger.bin", "trigger.changemgmt",
|
|
64
|
+
"trigger.conf", "trigger.contrib", "trigger.netdevices",
|
|
65
|
+
"trigger.packages", "trigger.utils", "twisted.plugins"]
|
|
66
|
+
include-package-data = true
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.package-data]
|
|
69
|
+
twisted = ["plugins/trigger_xmlrpc.py"]
|
|
70
|
+
|
|
71
|
+
# Automatically includes files tracked by git in source distributions
|
|
72
|
+
# This includes: CHANGELOG, *.md, conf/, docs/, examples/, tests/
|
|
73
|
+
|
|
74
|
+
[tool.pytest.ini_options]
|
|
75
|
+
testpaths = ["tests"]
|
|
76
|
+
python_files = ["test_*.py"]
|
|
77
|
+
addopts = "-v"
|
|
78
|
+
|
|
79
|
+
[tool.ruff]
|
|
80
|
+
line-length = 88
|
|
81
|
+
target-version = "py310"
|
|
82
|
+
exclude = ["trigger/packages", ".venv", "build", "dist"]
|
|
83
|
+
|
|
84
|
+
[tool.ruff.lint]
|
|
85
|
+
# Focus on Python 3 compatibility and critical errors for v2.0.0
|
|
86
|
+
# More comprehensive linting can be added in future releases
|
|
87
|
+
select = [
|
|
88
|
+
"F", # pyflakes - critical errors
|
|
89
|
+
"E", # pycodestyle errors - serious issues
|
|
90
|
+
"W", # pycodestyle warnings - whitespace/formatting
|
|
91
|
+
"I", # isort - import sorting
|
|
92
|
+
"UP", # pyupgrade - Python 3 modernization
|
|
93
|
+
]
|
|
94
|
+
ignore = [
|
|
95
|
+
"E501", # line too long (handled by formatter)
|
|
96
|
+
"E402", # module level import not at top (common in test files)
|
|
97
|
+
"E721", # type comparisons (existing code style)
|
|
98
|
+
"E722", # bare except (intentional in many places)
|
|
99
|
+
"E741", # ambiguous variable names (existing code style)
|
|
100
|
+
"UP031", # percent formatting (leave for future cleanup)
|
|
101
|
+
"F401", # unused imports (may be used dynamically or by subclasses)
|
|
102
|
+
"F402", # import shadowing (acceptable in limited scope loops)
|
|
103
|
+
"F403", # star imports (common pattern, leave for future refactor)
|
|
104
|
+
"F405", # undefined from star imports (consequence of F403)
|
|
105
|
+
"F523", # format call issues (leave for future cleanup)
|
|
106
|
+
"F811", # redefinition (tests may intentionally override)
|
|
107
|
+
"F821", # undefined names (may be in contrib plugins not fully ported)
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
[tool.ruff.lint.per-file-ignores]
|
|
111
|
+
"tests/**/*.py" = [
|
|
112
|
+
"F821", # undefined names (test fixtures)
|
|
113
|
+
"E402", # module level imports not at top
|
|
114
|
+
"E722", # bare except (common in test error handling)
|
|
115
|
+
"E731", # lambda assignments (test utilities)
|
|
116
|
+
]
|
|
117
|
+
"tests/acceptance/**/*.py" = [
|
|
118
|
+
"F821", # undefined names (acceptance test config)
|
|
119
|
+
"E402", # module level imports not at top
|
|
120
|
+
"E722", # bare except
|
|
121
|
+
]
|
|
122
|
+
"docs/conf.py" = [
|
|
123
|
+
"E402", # module level imports not at top (Sphinx config)
|
|
124
|
+
"F401", # unused imports (may be used by Sphinx)
|
|
125
|
+
]
|
|
126
|
+
|
|
127
|
+
[tool.ruff.lint.isort]
|
|
128
|
+
known-first-party = ["trigger"]
|
|
129
|
+
|
|
130
|
+
[tool.ruff.format]
|
|
131
|
+
quote-style = "double"
|
|
132
|
+
indent-style = "space"
|
|
133
|
+
skip-magic-trailing-comma = false
|
|
134
|
+
line-ending = "auto"
|
|
135
|
+
|
|
136
|
+
[tool.semantic_release]
|
|
137
|
+
version_toml = ["pyproject.toml:project.version"]
|
|
138
|
+
branch = "main"
|
|
139
|
+
upload_to_pypi = true
|
|
140
|
+
upload_to_release = true
|
|
141
|
+
build_command = "pip install uv && uv build"
|
|
142
|
+
major_on_zero = false
|
|
143
|
+
tag_format = "v{version}"
|
|
144
|
+
|
|
145
|
+
[tool.semantic_release.commit_parser_options]
|
|
146
|
+
allowed_tags = ["feat", "fix", "perf", "refactor", "docs", "chore", "ci", "test", "build"]
|
|
147
|
+
major_tags = ["BREAKING CHANGE"]
|
|
148
|
+
minor_tags = ["feat"]
|
|
149
|
+
patch_tags = ["fix", "perf"]
|
|
150
|
+
|
|
151
|
+
[tool.semantic_release.changelog]
|
|
152
|
+
changelog_file = "CHANGELOG.md"
|
|
153
|
+
|
|
154
|
+
[tool.semantic_release.branches.main]
|
|
155
|
+
match = "main"
|
|
156
|
+
prerelease = false
|
trigger-2.0.0/setup.cfg
ADDED