annet 0.1__py3-none-any.whl

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.

Potentially problematic release.


This version of annet might be problematic. Click here for more details.

Files changed (113) hide show
  1. annet/__init__.py +61 -0
  2. annet/annet.py +25 -0
  3. annet/annlib/__init__.py +7 -0
  4. annet/annlib/command.py +49 -0
  5. annet/annlib/diff.py +158 -0
  6. annet/annlib/errors.py +8 -0
  7. annet/annlib/filter_acl.py +196 -0
  8. annet/annlib/jsontools.py +89 -0
  9. annet/annlib/lib.py +495 -0
  10. annet/annlib/netdev/__init__.py +0 -0
  11. annet/annlib/netdev/db.py +62 -0
  12. annet/annlib/netdev/devdb/__init__.py +28 -0
  13. annet/annlib/netdev/devdb/data/devdb.json +137 -0
  14. annet/annlib/netdev/views/__init__.py +0 -0
  15. annet/annlib/netdev/views/dump.py +121 -0
  16. annet/annlib/netdev/views/hardware.py +112 -0
  17. annet/annlib/output.py +246 -0
  18. annet/annlib/patching.py +533 -0
  19. annet/annlib/rbparser/__init__.py +0 -0
  20. annet/annlib/rbparser/acl.py +120 -0
  21. annet/annlib/rbparser/deploying.py +55 -0
  22. annet/annlib/rbparser/ordering.py +52 -0
  23. annet/annlib/rbparser/platform.py +51 -0
  24. annet/annlib/rbparser/syntax.py +115 -0
  25. annet/annlib/rulebook/__init__.py +0 -0
  26. annet/annlib/rulebook/common.py +350 -0
  27. annet/annlib/tabparser.py +648 -0
  28. annet/annlib/types.py +35 -0
  29. annet/api/__init__.py +807 -0
  30. annet/argparse.py +415 -0
  31. annet/cli.py +192 -0
  32. annet/cli_args.py +493 -0
  33. annet/configs/context.yml +18 -0
  34. annet/configs/logging.yaml +39 -0
  35. annet/connectors.py +64 -0
  36. annet/deploy.py +441 -0
  37. annet/diff.py +85 -0
  38. annet/executor.py +551 -0
  39. annet/filtering.py +40 -0
  40. annet/gen.py +828 -0
  41. annet/generators/__init__.py +987 -0
  42. annet/generators/common/__init__.py +0 -0
  43. annet/generators/common/initial.py +33 -0
  44. annet/hardware.py +45 -0
  45. annet/implicit.py +139 -0
  46. annet/lib.py +128 -0
  47. annet/output.py +170 -0
  48. annet/parallel.py +448 -0
  49. annet/patching.py +25 -0
  50. annet/reference.py +148 -0
  51. annet/rulebook/__init__.py +114 -0
  52. annet/rulebook/arista/__init__.py +0 -0
  53. annet/rulebook/arista/iface.py +16 -0
  54. annet/rulebook/aruba/__init__.py +16 -0
  55. annet/rulebook/aruba/ap_env.py +146 -0
  56. annet/rulebook/aruba/misc.py +8 -0
  57. annet/rulebook/cisco/__init__.py +0 -0
  58. annet/rulebook/cisco/iface.py +68 -0
  59. annet/rulebook/cisco/misc.py +57 -0
  60. annet/rulebook/cisco/vlandb.py +90 -0
  61. annet/rulebook/common.py +19 -0
  62. annet/rulebook/deploying.py +87 -0
  63. annet/rulebook/huawei/__init__.py +0 -0
  64. annet/rulebook/huawei/aaa.py +75 -0
  65. annet/rulebook/huawei/bgp.py +97 -0
  66. annet/rulebook/huawei/iface.py +33 -0
  67. annet/rulebook/huawei/misc.py +337 -0
  68. annet/rulebook/huawei/vlandb.py +115 -0
  69. annet/rulebook/juniper/__init__.py +107 -0
  70. annet/rulebook/nexus/__init__.py +0 -0
  71. annet/rulebook/nexus/iface.py +92 -0
  72. annet/rulebook/patching.py +143 -0
  73. annet/rulebook/ribbon/__init__.py +12 -0
  74. annet/rulebook/texts/arista.deploy +20 -0
  75. annet/rulebook/texts/arista.order +125 -0
  76. annet/rulebook/texts/arista.rul +59 -0
  77. annet/rulebook/texts/aruba.deploy +20 -0
  78. annet/rulebook/texts/aruba.order +83 -0
  79. annet/rulebook/texts/aruba.rul +87 -0
  80. annet/rulebook/texts/cisco.deploy +27 -0
  81. annet/rulebook/texts/cisco.order +82 -0
  82. annet/rulebook/texts/cisco.rul +105 -0
  83. annet/rulebook/texts/huawei.deploy +188 -0
  84. annet/rulebook/texts/huawei.order +388 -0
  85. annet/rulebook/texts/huawei.rul +471 -0
  86. annet/rulebook/texts/juniper.rul +120 -0
  87. annet/rulebook/texts/nexus.deploy +24 -0
  88. annet/rulebook/texts/nexus.order +85 -0
  89. annet/rulebook/texts/nexus.rul +83 -0
  90. annet/rulebook/texts/nokia.rul +31 -0
  91. annet/rulebook/texts/pc.order +5 -0
  92. annet/rulebook/texts/pc.rul +9 -0
  93. annet/rulebook/texts/ribbon.deploy +22 -0
  94. annet/rulebook/texts/ribbon.rul +77 -0
  95. annet/rulebook/texts/routeros.order +38 -0
  96. annet/rulebook/texts/routeros.rul +45 -0
  97. annet/storage.py +121 -0
  98. annet/tabparser.py +36 -0
  99. annet/text_term_format.py +95 -0
  100. annet/tracing.py +170 -0
  101. annet/types.py +223 -0
  102. annet-0.1.dist-info/AUTHORS +21 -0
  103. annet-0.1.dist-info/LICENSE +21 -0
  104. annet-0.1.dist-info/METADATA +24 -0
  105. annet-0.1.dist-info/RECORD +113 -0
  106. annet-0.1.dist-info/WHEEL +5 -0
  107. annet-0.1.dist-info/entry_points.txt +6 -0
  108. annet-0.1.dist-info/top_level.txt +3 -0
  109. annet_generators/__init__.py +0 -0
  110. annet_generators/example/__init__.py +12 -0
  111. annet_generators/example/lldp.py +52 -0
  112. annet_nbexport/__init__.py +220 -0
  113. annet_nbexport/main.py +46 -0
@@ -0,0 +1,388 @@
1
+ # В этом файле определяется порядок команд, в котором их следует подавать на устройство.
2
+ # - Если порядок команды не важен - ее можно не писать сюда совсем.
3
+ # - Если команда начинается с undo и прописан параметр %order_reverse - команда считается
4
+ # обратной, но занимает место между прямыми там, где указано (т.е. undo vlan batch
5
+ # будет стоять после блоков interface).
6
+
7
+
8
+ # Сначала сплитим порты и размечаем ресурсы
9
+ port split mode
10
+ port split dimension
11
+ port split refresh
12
+ dfs-group
13
+ assign forward
14
+
15
+ # Переключаю порт в режим 200G
16
+ port mode 200GE
17
+
18
+ #clock
19
+ #sysname
20
+ #info-center
21
+
22
+ # на vpn-instance Meth есть много ссылок отовсюду, так что создадим как можно раньше
23
+ ip vpn-instance */[Mm][Ee][Tt]h.*/
24
+
25
+ #ntp
26
+ #dns
27
+
28
+ #mac-address aging-time
29
+
30
+ #rsa
31
+ #ecc
32
+
33
+ # из-за того, что Huawei не позволяет иметь в одном prefix-list 2 одинаковых правила,
34
+ # нужно сначала удалить все несовпадающие, а затем заполнить их заново
35
+ # в таком случае нужно расскомментить эту строчку, но она не позволяет снести plist целиком
36
+ # сначала мы добавляем stub-правило в рулсет чтобы оно не позволяло prefix-list'у "пропасть"
37
+ # индекс референсится в логике патчинга префикс-листа huawei.misc.prefix_list
38
+ ip */(ip|ipv6)/-prefix * index 99999999
39
+ undo ip */(ip|ipv6)/-prefix * index * %order_reverse
40
+ ip */(ip|ipv6)/-prefix
41
+ xpl
42
+
43
+ ip as-path-filter
44
+ ip community-filter
45
+ ip extcommunity-filter
46
+
47
+ tunnel-policy
48
+
49
+ # evpn-overlay должен быть объявлен до ip vpn-instance
50
+ evpn-overlay *
51
+
52
+ route-policy */VRF_.*/
53
+ ip vpn-instance
54
+ ipv4-family
55
+ route-distinguisher
56
+ ~
57
+ ipv6-family
58
+ route-distinguisher
59
+ ~
60
+ ~
61
+
62
+ # это должно идти после vpn-instance
63
+ ntp
64
+
65
+ #stp mode
66
+ #stp bpdu-protection
67
+ #stp enable
68
+ #stp region-configuration
69
+
70
+ acl port-pool
71
+ acl ip-pool
72
+ acl ipv6-pool
73
+ acl
74
+
75
+ system tcam
76
+
77
+ undo system tcam acl template * all %order_reverse
78
+ undo system tcam acl template * %order_reverse
79
+ undo system tcam acl$ %order_reverse
80
+
81
+ traffic classifier
82
+ traffic behavior
83
+ traffic policy
84
+ qos group
85
+ qos schedule-profile
86
+ port-wred
87
+
88
+ dhcp
89
+
90
+ vlan reserved
91
+ vlan batch
92
+ vlan pool
93
+ vlan
94
+
95
+ hwtacacs-server
96
+ hwtacacs server
97
+
98
+ aaa
99
+ undo local-user policy security-enhance
100
+ undo user-password complexity-check
101
+
102
+ undo user-group %order_reverse
103
+ undo task-group %order_reverse
104
+
105
+ local-user ~
106
+
107
+ */(authentication|authorization|accounting)-scheme/ *
108
+
109
+ # domain референсит scheme
110
+ domain *
111
+
112
+ task-group
113
+ user-group
114
+ ~
115
+
116
+
117
+ user-interface
118
+ drop-profile
119
+
120
+ interface */(?i)meth[\d\/]+/
121
+ FTP client
122
+ ftp client
123
+ sflow
124
+
125
+ # SR глобально -> MPLS -> IS-IS -> IS-IS и SID на интерфейсах
126
+ segment-routing
127
+ sr-te policy *
128
+ candidate-path * *
129
+ undo segment-list * %order_reverse
130
+ undo segment-list * %order_reverse
131
+
132
+ # Сначала глобально mpls включаем, потом на интерфейсы
133
+ mpls
134
+ mpls te cspf
135
+ mpls te cspf preferred-igp
136
+
137
+ mpls ldp
138
+ mpls ldp remote-peer *
139
+
140
+ explicit-path
141
+
142
+ route-policy EXPORT_ISIS
143
+
144
+ # должно идти перед интерфейсами, иначе невозможен 'isis enable 1'
145
+ isis
146
+
147
+ bridge-domain *
148
+ vxlan
149
+ evpn
150
+ undo evpn
151
+ undo vxlan
152
+
153
+ # Должно идти перед interface, т.к. на уровне interface идет ссылка на diffserv domain
154
+ diffserv domain *
155
+
156
+ interface */Vbdif\d+/
157
+ interface */Eth-Trunk\d+/
158
+ interface */LoopBack\d+/
159
+ interface */Tunnel.*/
160
+ tunnel-protocol
161
+ mpls te signal-protocol segment-routing
162
+ statistic enable
163
+ mpls te path
164
+ mpls te path metric-type
165
+
166
+ interface *
167
+ # должно идти до undo portswich, т.к. потом удалить он ее не даст
168
+ undo mac-address learning %order_reverse
169
+ undo portswitch
170
+ undo ip address * * sub %order_reverse
171
+ undo ip address * * %order_reverse
172
+ portswitch %order_reverse
173
+ ip binding
174
+ ipv6 enable
175
+ ipv6 nd ra prefix
176
+ ipv6
177
+ ip address * *
178
+ ip address * * sub
179
+ dhcpv6
180
+ isis enable
181
+ isis
182
+ undo isis *
183
+ undo isis enable %order_reverse
184
+ mpls
185
+ mpls ldp
186
+ mpls ldp transport-address interface
187
+ mpls rsvp-te
188
+ mpls rsvp-te bfd
189
+ port link-type
190
+ port trunk pvid
191
+ port trunk allow-pass
192
+ undo port trunk allow-pass vlan all
193
+ undo port trunk allow-pass vlan 1 %order_reverse
194
+ port hybrid
195
+ undo port hybrid vlan
196
+ port hybrid tagged
197
+ port hybrid untagged
198
+ port hybrid vlan
199
+ port hybrid pvid
200
+ voice-vlan */\d+/
201
+ voice-vlan
202
+ undo eth-trunk
203
+ eth-trunk
204
+ mode
205
+ qos (wfq|drr)
206
+ qos queue
207
+ vrrp6 vrid [11|12] virtual-ip FE80*
208
+ vrrp6 vrid [11|12] virtual-ip
209
+ vrrp6 vrid [11|12]
210
+ vrrp vrid [11|12] virtual-ip
211
+ vrrp vrid [11|12]
212
+ ~
213
+ poe
214
+ # Нужно чтобы subif'ы портов шли после конфигурации самих портов, иначе свитч ругнется на то что порт l2
215
+ interface */\S+\.\d+/
216
+
217
+ # Некоторые команды требуют сначала определить конфигурацию на L2 интерфейсах, а потом уже на vlanif
218
+ interface */Vlanif\d+/
219
+
220
+ # Должны быть после interface потому что в нем ссылается traffic-policy
221
+ # И именно в данном порядке
222
+ # policy ссылаются на behavior и classifier, они на acl'и
223
+ undo qos group %order_reverse
224
+ undo qos schedule-profile %order_reverse
225
+ undo traffic policy %order_reverse
226
+ undo traffic behavior %order_reverse
227
+ undo traffic classifier %order_reverse
228
+
229
+ # Должен быть после interface потому что в нем ссылается на diffserv domain
230
+ undo diffserv domain * %order_reverse
231
+
232
+ # маршруты идут после интерфейсов
233
+ ip route-static
234
+ ipv6 route-static
235
+
236
+ route-policy
237
+
238
+ ospf
239
+ opaque-capability enable
240
+ area
241
+
242
+ bgp
243
+ router-id
244
+ # [NOCDEV-1182] у load-balancing есть несколько взаимоисключающих флейверов
245
+ undo undo maximum load-balancing %order_reverse
246
+ maximum load-balancing
247
+ # [NOCDEV-2043] Тут только декларируем пиров и группы
248
+ # поскольку на них есть ссылки из family блоков
249
+ group
250
+ peer * as-number *
251
+ peer * local-as *
252
+ ipv[46]-family|link-state-family unicast|l2vpn-family evpn
253
+ undo undo maximum load-balancing %order_reverse
254
+ maximum load-balancing
255
+ group
256
+ peer * as-number *
257
+ peer * enable
258
+ peer * ~
259
+ # [NOCDEV-2043] Остальное в глобальном блоке делаем тут
260
+ undo peer * description %order_reverse
261
+ undo peer * * * %order_reverse
262
+ undo peer * * %order_reverse
263
+ undo peer * %order_reverse
264
+ undo group * %order_reverse
265
+ peer * ~
266
+
267
+
268
+ # Вырубаем bfd после bgp, но до vpn
269
+ undo bfd * %order_reverse
270
+ undo bfd %order_reverse
271
+
272
+ undo ip vpn-instance %order_reverse
273
+ undo route-policy %order_reverse
274
+ undo route-policy */VRF_.*/ %order_reverse
275
+ undo ip community-filter %order_reverse
276
+ undo ip extcommunity-filter %order_reverse
277
+ undo ip as-path-filter %order_reverse
278
+
279
+ # Вырубаем bfd после bgp
280
+ undo bfd * %order_reverse
281
+ undo bfd %order_reverse
282
+
283
+ info-center
284
+
285
+ # Should be after acl definition
286
+ snmp-agent sys-info
287
+ snmp-agent mib-view
288
+ snmp-agent community complexity-check
289
+ snmp-agent community
290
+ snmp-agent target-host
291
+ snmp-agent trap source
292
+ snmp-agent
293
+ #ifindex constant
294
+
295
+ cpu-defend policy
296
+ cpu-defend-policy
297
+ slot *
298
+ cpu-defend-policy %order_reverse
299
+ undo cpu-defend policy %order_reverse
300
+
301
+ ssh server rsa-key min-length
302
+ rsa peer-public-key
303
+ ssh user
304
+ ssh user * assign
305
+ ssh user * authentication-type
306
+ ssh user * service-type
307
+
308
+ local-user * password
309
+ local-user * service-type
310
+ local-user * level
311
+ local-user * ftp-directory
312
+
313
+ stelnet server
314
+ stelnet ipv4 server
315
+ stelnet ipv6 server
316
+
317
+ telnet server acl
318
+ ssh server acl
319
+ */(ftp|FTP)/ server acl
320
+ */(ftp|FTP)/ acl
321
+ telnet ipv6 server acl
322
+ ssh ipv6 server acl
323
+ */(ftp|FTP)/ ipv6 server acl
324
+ */(ftp|FTP)/ ipv6 acl
325
+
326
+ ssh server-source all-interface
327
+ ssh ipv6 server-source all-interface
328
+ telnet server-source all-interface
329
+ telnet ipv6 server-source all-interface
330
+
331
+ #lldp
332
+
333
+ #stelnet
334
+ #ssh
335
+
336
+ #header
337
+
338
+ #command-privilege
339
+ #user-interface maximum-vty
340
+ #user-interface
341
+
342
+ domain
343
+ default-domain
344
+ telemetry
345
+ sensor-group *
346
+ destination-group *
347
+ subscription *
348
+
349
+ diffserv domain *
350
+ ip-dscp-inbound ~
351
+
352
+ #Удаляем acl в самом конце
353
+ undo acl %order_reverse
354
+
355
+ # Удаляем iface совсем в конце
356
+ # сначала subif
357
+ undo interface */.*[.]\d+/ %order_reverse
358
+ # vlanif
359
+ undo interface */Vlanif\d+/ %order_reverse
360
+ undo interface */Vbdif\d+/ %order_reverse
361
+
362
+ # удалять eth-trunk можно только после того, как вычистим member interfaces
363
+ undo interface */Eth-Trunk\d+/ %order_reverse
364
+ undo interface %order_reverse
365
+
366
+ # interface Tunnel* ссылается на 'explicit-path'
367
+ undo interface */Tunnel.*/ %order_reverse
368
+ undo explicit-path %order_reverse
369
+
370
+ # drop-profile можно удалять только после удаления референсов на него в интерфейсах
371
+ undo drop-profile %order_reverse
372
+
373
+ # vlan'ы удаляем после vlanif/subif
374
+ undo vlan %order_reverse
375
+ undo vlan batch %order_reverse
376
+ undo observe-port %order_reverse
377
+
378
+ #sflow может висеть а subif/eth-trunk
379
+ undo sflow %order_reverse
380
+
381
+ # Данное стаб-правило должно удаляться в самую посленюю очередь
382
+ # поскольку если префикс-лист должен уходить из конфигурации полностью
383
+ # перед этим должны быть удалены все его референсы в конфиге
384
+ # индекс референсится в логике патчинга префикс-листа huawei.misc.prefix_list
385
+ undo ip */(ip|ipv6)/-prefix * index 99999999 %order_reverse
386
+
387
+ # vim: set syntax=annrulebook:
388
+ ~ %global