trigger 1.6rc9__tar.gz → 2.0.2__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.
Files changed (230) hide show
  1. trigger-2.0.2/AUTHORS.md +20 -0
  2. trigger-1.6rc9/LICENSE.rst → trigger-2.0.2/LICENSE.md +1 -3
  3. trigger-2.0.2/PKG-INFO +146 -0
  4. trigger-1.6rc9/README.rst → trigger-2.0.2/README.md +46 -34
  5. trigger-2.0.2/pyproject.toml +236 -0
  6. trigger-2.0.2/setup.cfg +4 -0
  7. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_acl.py +262 -214
  8. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_acl_db.py +19 -13
  9. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_acl_queue.py +34 -25
  10. trigger-2.0.2/tests/test_changemgmt.py +107 -0
  11. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_except.py +9 -8
  12. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_netdevices.py +45 -47
  13. trigger-2.0.2/tests/test_scripts.py +53 -0
  14. trigger-2.0.2/tests/test_tacacsrc.py +152 -0
  15. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_templates.py +29 -19
  16. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_twister.py +9 -13
  17. trigger-2.0.2/tests/test_twister2.py +16 -0
  18. {trigger-1.6rc9 → trigger-2.0.2}/tests/test_utils.py +5 -3
  19. trigger-2.0.2/trigger/__init__.py +7 -0
  20. {trigger-1.6rc9 → trigger-2.0.2}/trigger/acl/__init__.py +12 -12
  21. {trigger-1.6rc9 → trigger-2.0.2}/trigger/acl/autoacl.py +17 -18
  22. {trigger-1.6rc9 → trigger-2.0.2}/trigger/acl/db.py +81 -79
  23. trigger-2.0.2/trigger/acl/dicts.py +356 -0
  24. trigger-2.0.2/trigger/acl/grammar.py +110 -0
  25. trigger-2.0.2/trigger/acl/ios.py +221 -0
  26. trigger-2.0.2/trigger/acl/junos.py +410 -0
  27. trigger-2.0.2/trigger/acl/models.py +118 -0
  28. {trigger-1.6rc9 → trigger-2.0.2}/trigger/acl/parser.py +69 -65
  29. trigger-2.0.2/trigger/acl/queue.py +297 -0
  30. {trigger-1.6rc9 → trigger-2.0.2}/trigger/acl/support.py +598 -430
  31. trigger-2.0.2/trigger/acl/tools.py +731 -0
  32. trigger-2.0.2/trigger/bin/acl.py +235 -0
  33. trigger-1.6rc9/bin/acl_script → trigger-2.0.2/trigger/bin/acl_script.py +260 -169
  34. trigger-2.0.2/trigger/bin/aclconv.py +81 -0
  35. trigger-2.0.2/trigger/bin/check_access.py +90 -0
  36. trigger-2.0.2/trigger/bin/check_syntax.py +66 -0
  37. trigger-2.0.2/trigger/bin/fe.py +199 -0
  38. trigger-2.0.2/trigger/bin/find_access.py +186 -0
  39. trigger-1.6rc9/bin/gnng → trigger-2.0.2/trigger/bin/gnng.py +164 -128
  40. trigger-1.6rc9/bin/gong → trigger-2.0.2/trigger/bin/gong.py +32 -24
  41. trigger-1.6rc9/bin/load_acl → trigger-2.0.2/trigger/bin/load_acl.py +302 -242
  42. trigger-2.0.2/trigger/bin/load_config.py +17 -0
  43. trigger-2.0.2/trigger/bin/netdev.py +312 -0
  44. trigger-1.6rc9/bin/optimizer → trigger-2.0.2/trigger/bin/optimizer.py +246 -238
  45. trigger-2.0.2/trigger/bin/run_cmds.py +17 -0
  46. {trigger-1.6rc9 → trigger-2.0.2}/trigger/changemgmt/__init__.py +91 -69
  47. {trigger-1.6rc9 → trigger-2.0.2}/trigger/changemgmt/bounce.py +16 -18
  48. {trigger-1.6rc9 → trigger-2.0.2}/trigger/cmds.py +343 -295
  49. {trigger-1.6rc9 → trigger-2.0.2}/trigger/conf/__init__.py +28 -20
  50. {trigger-1.6rc9 → trigger-2.0.2}/trigger/conf/global_settings.py +244 -238
  51. {trigger-1.6rc9 → trigger-2.0.2}/trigger/contrib/__init__.py +1 -2
  52. {trigger-1.6rc9 → trigger-2.0.2}/trigger/exceptions.py +23 -32
  53. {trigger-1.6rc9 → trigger-2.0.2}/trigger/gorc.py +35 -36
  54. {trigger-1.6rc9 → trigger-2.0.2}/trigger/netdevices/__init__.py +305 -302
  55. {trigger-1.6rc9 → trigger-2.0.2}/trigger/netdevices/loader.py +41 -43
  56. trigger-2.0.2/trigger/netscreen.py +1005 -0
  57. trigger-2.0.2/trigger/packages/peewee.py +8084 -0
  58. {trigger-1.6rc9 → trigger-2.0.2}/trigger/rancid.py +131 -111
  59. {trigger-1.6rc9 → trigger-2.0.2}/trigger/tacacsrc.py +232 -172
  60. {trigger-1.6rc9 → trigger-2.0.2}/trigger/twister.py +762 -645
  61. {trigger-1.6rc9 → trigger-2.0.2}/trigger/twister2.py +258 -202
  62. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/__init__.py +31 -28
  63. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/cli.py +85 -71
  64. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/importlib.py +26 -25
  65. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/network.py +44 -40
  66. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/rcs.py +35 -45
  67. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/templates.py +24 -22
  68. trigger-2.0.2/trigger/utils/url.py +74 -0
  69. {trigger-1.6rc9 → trigger-2.0.2}/trigger/utils/xmltodict.py +79 -56
  70. trigger-2.0.2/trigger.egg-info/PKG-INFO +146 -0
  71. trigger-2.0.2/trigger.egg-info/SOURCES.txt +76 -0
  72. trigger-2.0.2/trigger.egg-info/entry_points.txt +15 -0
  73. trigger-2.0.2/trigger.egg-info/requires.txt +21 -0
  74. trigger-2.0.2/twisted/plugins/trigger_xmlrpc.py +124 -0
  75. trigger-1.6rc9/AUTHORS.rst +0 -21
  76. trigger-1.6rc9/CHANGELOG +0 -1
  77. trigger-1.6rc9/MANIFEST.in +0 -6
  78. trigger-1.6rc9/PKG-INFO +0 -44
  79. trigger-1.6rc9/SANDIA.rst +0 -3
  80. trigger-1.6rc9/TODO.rst +0 -43
  81. trigger-1.6rc9/bin/acl +0 -176
  82. trigger-1.6rc9/bin/aclconv +0 -73
  83. trigger-1.6rc9/bin/check_access +0 -87
  84. trigger-1.6rc9/bin/check_syntax +0 -62
  85. trigger-1.6rc9/bin/fe +0 -195
  86. trigger-1.6rc9/bin/find_access +0 -170
  87. trigger-1.6rc9/bin/netdev +0 -228
  88. trigger-1.6rc9/bin/run_cmds +0 -10
  89. trigger-1.6rc9/docs/.DS_Store +0 -0
  90. trigger-1.6rc9/docs/Makefile +0 -89
  91. trigger-1.6rc9/docs/_build/.DS_Store +0 -0
  92. trigger-1.6rc9/docs/_ext/triggerdocs.py +0 -10
  93. trigger-1.6rc9/docs/_static/rtd.css +0 -791
  94. trigger-1.6rc9/docs/_templates/page.html +0 -10
  95. trigger-1.6rc9/docs/api/acl.rst +0 -41
  96. trigger-1.6rc9/docs/api/changemgmt.rst +0 -5
  97. trigger-1.6rc9/docs/api/cmds.rst +0 -5
  98. trigger-1.6rc9/docs/api/conf.rst +0 -5
  99. trigger-1.6rc9/docs/api/contrib.rst +0 -17
  100. trigger-1.6rc9/docs/api/exceptions.rst +0 -5
  101. trigger-1.6rc9/docs/api/gorc.rst +0 -6
  102. trigger-1.6rc9/docs/api/index.rst +0 -9
  103. trigger-1.6rc9/docs/api/netdevices.rst +0 -8
  104. trigger-1.6rc9/docs/api/netscreen.rst +0 -5
  105. trigger-1.6rc9/docs/api/rancid.rst +0 -5
  106. trigger-1.6rc9/docs/api/tacacsrc.rst +0 -5
  107. trigger-1.6rc9/docs/api/twister.rst +0 -5
  108. trigger-1.6rc9/docs/api/utils.rst +0 -48
  109. trigger-1.6rc9/docs/changelog.rst +0 -1608
  110. trigger-1.6rc9/docs/conf.py +0 -268
  111. trigger-1.6rc9/docs/configuration.rst +0 -1279
  112. trigger-1.6rc9/docs/development.rst +0 -146
  113. trigger-1.6rc9/docs/examples.rst +0 -473
  114. trigger-1.6rc9/docs/experimental.rst +0 -135
  115. trigger-1.6rc9/docs/index.rst +0 -80
  116. trigger-1.6rc9/docs/installation.rst +0 -416
  117. trigger-1.6rc9/docs/interactive_mode.rst +0 -17
  118. trigger-1.6rc9/docs/license.rst +0 -58
  119. trigger-1.6rc9/docs/make.bat +0 -113
  120. trigger-1.6rc9/docs/new_vendors.rst +0 -60
  121. trigger-1.6rc9/docs/overview.rst +0 -112
  122. trigger-1.6rc9/docs/platforms.rst +0 -67
  123. trigger-1.6rc9/docs/support.rst +0 -68
  124. trigger-1.6rc9/docs/usage/cli.rst +0 -13
  125. trigger-1.6rc9/docs/usage/gorc.rst +0 -7
  126. trigger-1.6rc9/docs/usage/index.rst +0 -14
  127. trigger-1.6rc9/docs/usage/netdevices.rst +0 -671
  128. trigger-1.6rc9/docs/usage/plugins.rst +0 -131
  129. trigger-1.6rc9/docs/usage/scripts/acl.rst +0 -138
  130. trigger-1.6rc9/docs/usage/scripts/acl_script.rst +0 -223
  131. trigger-1.6rc9/docs/usage/scripts/aclconv.rst +0 -58
  132. trigger-1.6rc9/docs/usage/scripts/check_access.rst +0 -69
  133. trigger-1.6rc9/docs/usage/scripts/gnng.rst +0 -70
  134. trigger-1.6rc9/docs/usage/scripts/gong.rst +0 -238
  135. trigger-1.6rc9/docs/usage/scripts/netdev.rst +0 -127
  136. trigger-1.6rc9/docs/usage/tacacsrc.rst +0 -233
  137. trigger-1.6rc9/examples/commando_reactorless.py +0 -53
  138. trigger-1.6rc9/examples/normalizer/Normalize.py +0 -191
  139. trigger-1.6rc9/examples/normalizer/README.rst +0 -58
  140. trigger-1.6rc9/examples/normalizer/Report.py +0 -141
  141. trigger-1.6rc9/examples/normalizer/Router.py +0 -69
  142. trigger-1.6rc9/examples/normalizer/test-units.csv +0 -3
  143. trigger-1.6rc9/examples/sshendpoint_updatecmdb.py +0 -71
  144. trigger-1.6rc9/examples/xmlrpc_server/README.rst +0 -40
  145. trigger-1.6rc9/examples/xmlrpc_server/cacert.pem +0 -15
  146. trigger-1.6rc9/examples/xmlrpc_server/server.key +0 -15
  147. trigger-1.6rc9/examples/xmlrpc_server/start_xmlrpc.sh +0 -15
  148. trigger-1.6rc9/examples/xmlrpc_server/trigger-xmlrpc.init +0 -57
  149. trigger-1.6rc9/examples/xmlrpc_server/trigger-xmlrpc.log +0 -5357
  150. trigger-1.6rc9/examples/xmlrpc_server/twistd.log +0 -11
  151. trigger-1.6rc9/examples/xmlrpc_server/twistd.pid +0 -1
  152. trigger-1.6rc9/examples/xmlrpc_server/users.txt +0 -1
  153. trigger-1.6rc9/pycon2015.rst +0 -149
  154. trigger-1.6rc9/setup.cfg +0 -8
  155. trigger-1.6rc9/setup.py +0 -182
  156. trigger-1.6rc9/tests/acceptance/data/.tackf +0 -1
  157. trigger-1.6rc9/tests/acceptance/data/netdevices.xml +0 -146
  158. trigger-1.6rc9/tests/acceptance/data/settings.py +0 -424
  159. trigger-1.6rc9/tests/acceptance/trigger_acceptance_tests.py +0 -45
  160. trigger-1.6rc9/tests/data/acl.test +0 -104
  161. trigger-1.6rc9/tests/data/autoacl.py +0 -21
  162. trigger-1.6rc9/tests/data/bounce.py +0 -90
  163. trigger-1.6rc9/tests/data/brokenpw_tacacsrc +0 -7
  164. trigger-1.6rc9/tests/data/emptypw_tacacsrc +0 -4
  165. trigger-1.6rc9/tests/data/junos-examples.txt +0 -449
  166. trigger-1.6rc9/tests/data/longpw_tacacsrc +0 -4
  167. trigger-1.6rc9/tests/data/medium_tacacsrc +0 -4
  168. trigger-1.6rc9/tests/data/netdevices.xml +0 -77
  169. trigger-1.6rc9/tests/data/settings.py +0 -33
  170. trigger-1.6rc9/tests/data/tacacsrc +0 -8
  171. trigger-1.6rc9/tests/data/tackf +0 -1
  172. trigger-1.6rc9/tests/data/vendor/ntc_templates/cisco_ios_show_clock.template +0 -10
  173. trigger-1.6rc9/tests/data/vendor/ntc_templates/cisco_ios_show_version.template +0 -15
  174. trigger-1.6rc9/tests/setup_env.sh +0 -7
  175. trigger-1.6rc9/tests/test_changemgmt.py +0 -103
  176. trigger-1.6rc9/tests/test_scripts.py +0 -44
  177. trigger-1.6rc9/tests/test_tacacsrc.py +0 -125
  178. trigger-1.6rc9/tests/test_twister2.py +0 -23
  179. trigger-1.6rc9/tests/utils/__init__.py +0 -37
  180. trigger-1.6rc9/tests/utils/misc.py +0 -36
  181. trigger-1.6rc9/tests/utils/mock_redis.py +0 -178
  182. trigger-1.6rc9/tools/convert_tacacsrc.py +0 -9
  183. trigger-1.6rc9/tools/gen_tacacsrc.py +0 -19
  184. trigger-1.6rc9/tools/init_task_db +0 -39
  185. trigger-1.6rc9/tools/prepend_acl_dot +0 -84
  186. trigger-1.6rc9/tools/tacacsrc2gpg.py +0 -41
  187. trigger-1.6rc9/trigger/__init__.py +0 -6
  188. trigger-1.6rc9/trigger/acl/dicts.py +0 -346
  189. trigger-1.6rc9/trigger/acl/grammar.py +0 -106
  190. trigger-1.6rc9/trigger/acl/ios.py +0 -193
  191. trigger-1.6rc9/trigger/acl/junos.py +0 -366
  192. trigger-1.6rc9/trigger/acl/models.py +0 -105
  193. trigger-1.6rc9/trigger/acl/queue.py +0 -276
  194. trigger-1.6rc9/trigger/acl/tools.py +0 -692
  195. trigger-1.6rc9/trigger/contrib/commando/__init__.py +0 -208
  196. trigger-1.6rc9/trigger/contrib/commando/plugins/__init__.py +0 -7
  197. trigger-1.6rc9/trigger/contrib/commando/plugins/config_device.py +0 -149
  198. trigger-1.6rc9/trigger/contrib/commando/plugins/gather_info.py +0 -145
  199. trigger-1.6rc9/trigger/contrib/commando/plugins/show_clock.py +0 -115
  200. trigger-1.6rc9/trigger/contrib/commando/plugins/show_version.py +0 -17
  201. trigger-1.6rc9/trigger/contrib/docommand/__init__.py +0 -370
  202. trigger-1.6rc9/trigger/contrib/docommand/core.py +0 -484
  203. trigger-1.6rc9/trigger/contrib/xmlrpc/__init__.py +0 -6
  204. trigger-1.6rc9/trigger/contrib/xmlrpc/server.py +0 -215
  205. trigger-1.6rc9/trigger/netdevices/loaders/__init__.py +0 -6
  206. trigger-1.6rc9/trigger/netdevices/loaders/filesystem.py +0 -160
  207. trigger-1.6rc9/trigger/netdevices/loaders/mongodb.py +0 -36
  208. trigger-1.6rc9/trigger/netscreen.py +0 -911
  209. trigger-1.6rc9/trigger/packages/peewee.py +0 -2584
  210. trigger-1.6rc9/trigger/packages/tftpy/TftpClient.py +0 -102
  211. trigger-1.6rc9/trigger/packages/tftpy/TftpContexts.py +0 -385
  212. trigger-1.6rc9/trigger/packages/tftpy/TftpPacketFactory.py +0 -41
  213. trigger-1.6rc9/trigger/packages/tftpy/TftpPacketTypes.py +0 -446
  214. trigger-1.6rc9/trigger/packages/tftpy/TftpServer.py +0 -184
  215. trigger-1.6rc9/trigger/packages/tftpy/TftpShared.py +0 -59
  216. trigger-1.6rc9/trigger/packages/tftpy/TftpStates.py +0 -524
  217. trigger-1.6rc9/trigger/packages/tftpy/__init__.py +0 -24
  218. trigger-1.6rc9/trigger/utils/notifications/__init__.py +0 -27
  219. trigger-1.6rc9/trigger/utils/notifications/core.py +0 -58
  220. trigger-1.6rc9/trigger/utils/notifications/events.py +0 -141
  221. trigger-1.6rc9/trigger/utils/notifications/handlers.py +0 -120
  222. trigger-1.6rc9/trigger/utils/url.py +0 -67
  223. trigger-1.6rc9/trigger.egg-info/PKG-INFO +0 -44
  224. trigger-1.6rc9/trigger.egg-info/SOURCES.txt +0 -196
  225. trigger-1.6rc9/trigger.egg-info/requires.txt +0 -12
  226. trigger-1.6rc9/twisted/plugins/trigger_xmlrpc.py +0 -101
  227. {trigger-1.6rc9/examples/normalizer → trigger-2.0.2/trigger/bin}/__init__.py +0 -0
  228. {trigger-1.6rc9 → trigger-2.0.2}/trigger/packages/__init__.py +0 -0
  229. {trigger-1.6rc9 → trigger-2.0.2}/trigger.egg-info/dependency_links.txt +0 -0
  230. {trigger-1.6rc9 → trigger-2.0.2}/trigger.egg-info/top_level.txt +0 -0
@@ -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)
@@ -1,6 +1,4 @@
1
- =======
2
- License
3
- =======
1
+ # License
4
2
 
5
3
  Copyright (c) 2006-2012, AOL Inc.
6
4
 
trigger-2.0.2/PKG-INFO ADDED
@@ -0,0 +1,146 @@
1
+ Metadata-Version: 2.4
2
+ Name: trigger
3
+ Version: 2.0.2
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
+ [![Tests](https://github.com/trigger/trigger/workflows/Tests/badge.svg)](https://github.com/trigger/trigger/actions)
41
+ [![Join the chat at https://gitter.im/trigger/trigger](https://badges.gitter.im/Join%20Chat.svg)](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
- .. image:: https://travis-ci.org/trigger/trigger.png
5
- :alt: Build Status
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
+ [![Tests](https://github.com/trigger/trigger/workflows/Tests/badge.svg)](https://github.com/trigger/trigger/actions)
4
+ [![Join the chat at https://gitter.im/trigger/trigger](https://badges.gitter.im/Join%20Chat.svg)](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 `official docs`_ for the full list.
27
+ Refer to the [official docs](https://trigger.readthedocs.io/en/latest/#supported-platforms) for the full list.
35
28
 
36
- .. _official docs: http://trigger.readthedocs.io/en/latest/#supported-platforms
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 `RANCID
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 `Read the
70
- Docs <http://readthedocs.org>`_ at `http://trigger.readthedocs.io
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
- Before you begin
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 `develop <https://github.com/trigger/trigger/tree/develop>`_ branch is
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 `master <https://github.com/trigger/trigger/tree/master>`_ branch is
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 `tag branch
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
- `contact us <http://trigger.readthedocs.io/en/latest/#getting-help>`_!
106
+ [contact us](https://trigger.readthedocs.io/en/latest/#getting-help)!
95
107
 
96
- **Pro tip**: Find us on IRC at ``#trigger`` on Freenode
97
- (`irc://irc.freenode.net/trigger <irc://irc.freenode.net/trigger>`_).
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,236 @@
1
+ [build-system]
2
+ requires = ["setuptools>=64", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "trigger"
7
+ version = "2.0.2"
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
+ select = [
86
+ "B", # flake8-bugbear - bug prevention
87
+ "COM", # flake8-commas - trailing comma consistency
88
+ "D", # pydocstyle - docstring formatting
89
+ "E", # pycodestyle errors
90
+ "EM", # flake8-errmsg - exception message hygiene
91
+ "ERA", # eradicate - commented-out code removal
92
+ "F", # pyflakes
93
+ "FURB", # refurb - modern Python idioms
94
+ "I", # isort - import sorting
95
+ "PERF", # perflint - performance patterns
96
+ "PIE", # flake8-pie - unnecessary constructs
97
+ "PLR", # pylint-refactor
98
+ "PLW", # pylint-warnings
99
+ "PT", # flake8-pytest-style
100
+ "PTH", # flake8-use-pathlib
101
+ "RET", # flake8-return
102
+ "RSE", # flake8-raise
103
+ "RUF", # ruff-specific rules
104
+ "S", # flake8-bandit - security
105
+ "SIM", # flake8-simplify
106
+ "UP", # pyupgrade - Python 3 modernization
107
+ "W", # pycodestyle warnings
108
+ ]
109
+ ignore = [
110
+ # --- Formatter conflicts ---
111
+ "COM812", # trailing-comma-missing (handled by ruff formatter)
112
+
113
+ # --- Kept from v2.0.0 baseline ---
114
+ "E402", # module-import-not-at-top-of-file
115
+ "E501", # line-too-long (handled by formatter)
116
+ "E721", # type-comparison (existing code style)
117
+ "E722", # bare-except (intentional in many places)
118
+ "E741", # ambiguous-variable-name (existing code style)
119
+ "F401", # unused-import (may be used dynamically)
120
+ "F402", # import-shadowed-by-loop-var
121
+ "F403", # undefined-local-with-import-star
122
+ "F405", # undefined-local-with-import-star-usage
123
+ "F523", # string-dot-format-extra-positional-arguments
124
+ "F811", # redefined-while-unused
125
+ "F821", # undefined-name
126
+ "UP031", # printf-string-formatting
127
+
128
+ # --- Bugbear exceptions ---
129
+ "B016", # raise-literal (used intentionally in tests)
130
+ "B018", # useless-expression (test assertions)
131
+
132
+ # --- Docstring exceptions (not enforcing coverage/style) ---
133
+ "D100", # undocumented-public-module
134
+ "D101", # undocumented-public-class
135
+ "D102", # undocumented-public-method
136
+ "D103", # undocumented-public-function
137
+ "D104", # undocumented-public-package
138
+ "D105", # undocumented-magic-method
139
+ "D107", # undocumented-public-init
140
+ "D200", # unnecessary-multiline-docstring
141
+ "D205", # missing-blank-line-after-summary
142
+ "D401", # non-imperative-mood
143
+ "D402", # signature-in-docstring
144
+ "D404", # docstring-starts-with-this
145
+
146
+ # --- Complexity (deep refactoring territory) ---
147
+ "PLR0911", # too-many-return-statements
148
+ "PLR0912", # too-many-branches
149
+ "PLR0913", # too-many-arguments
150
+ "PLR0915", # too-many-statements
151
+ "PLR2004", # magic-value-comparison
152
+ "PLW0603", # global-statement (parser pattern)
153
+
154
+ # --- Security false positives for network toolkit ---
155
+ "S101", # assert (used in tests)
156
+ "S105", # hardcoded-password-string (false positives)
157
+ "S110", # try-except-pass
158
+ "S112", # try-except-continue
159
+ "S314", # suspicious-xml-element-tree-usage
160
+ "S603", # subprocess-without-shell-equals-true
161
+ "S605", # start-process-with-a-shell (fix manually)
162
+ "S606", # start-process-with-no-shell
163
+ "S608", # hardcoded-sql-expression
164
+
165
+ # --- Other ---
166
+ "RUF012", # mutable-class-default (too many in device metadata)
167
+ "SLF001", # private-member-access (common in Twisted patterns)
168
+ ]
169
+
170
+ [tool.ruff.lint.pydocstyle]
171
+ convention = "google"
172
+
173
+ [tool.ruff.lint.per-file-ignores]
174
+ "tests/**/*.py" = [
175
+ "ARG", # unused arguments (test fixtures)
176
+ "D", # docstrings not enforced in tests
177
+ "E402", # module-level imports not at top
178
+ "E722", # bare-except
179
+ "E731", # lambda assignments
180
+ "F821", # undefined names (test fixtures)
181
+ "PT009", # pytest-unittest-assertion (allow mixing in tests)
182
+ "PT027", # pytest-unittest-raises-assertion
183
+ "S", # security checks not relevant in tests
184
+ ]
185
+ "tests/acceptance/**/*.py" = [
186
+ "D", # docstrings not enforced
187
+ "E402", # module-level imports not at top
188
+ "E722", # bare-except
189
+ "F821", # undefined names
190
+ "S", # security checks not relevant
191
+ ]
192
+ "trigger/bin/**/*.py" = [
193
+ "S605", # start-process-with-a-shell (CLI tools)
194
+ "S606", # start-process-with-no-shell
195
+ "S607", # start-process-with-partial-path
196
+ ]
197
+ "configs/**/*.py" = [
198
+ "ERA001", # commented-out code (serves as user documentation/examples)
199
+ "PTH", # pathlib (settings values are strings by design)
200
+ ]
201
+ "docs/conf.py" = [
202
+ "D", # docstrings not enforced
203
+ "E402", # module-level imports not at top
204
+ "F401", # unused imports (used by Sphinx)
205
+ ]
206
+
207
+ [tool.ruff.lint.isort]
208
+ known-first-party = ["trigger"]
209
+
210
+ [tool.ruff.format]
211
+ quote-style = "double"
212
+ indent-style = "space"
213
+ skip-magic-trailing-comma = false
214
+ line-ending = "auto"
215
+
216
+ [tool.semantic_release]
217
+ version_toml = ["pyproject.toml:project.version"]
218
+ branch = "main"
219
+ upload_to_pypi = true
220
+ upload_to_release = true
221
+ build_command = "pip install uv && uv build"
222
+ major_on_zero = false
223
+ tag_format = "v{version}"
224
+
225
+ [tool.semantic_release.commit_parser_options]
226
+ allowed_tags = ["feat", "fix", "perf", "refactor", "docs", "chore", "ci", "test", "build"]
227
+ major_tags = ["BREAKING CHANGE"]
228
+ minor_tags = ["feat"]
229
+ patch_tags = ["fix", "perf"]
230
+
231
+ [tool.semantic_release.changelog]
232
+ changelog_file = "CHANGELOG.md"
233
+
234
+ [tool.semantic_release.branches.main]
235
+ match = "main"
236
+ prerelease = false
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+