annet 2.5.2__tar.gz → 2.5.4__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.

Potentially problematic release.


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

Files changed (204) hide show
  1. {annet-2.5.2/annet.egg-info → annet-2.5.4}/PKG-INFO +2 -2
  2. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/models.py +10 -2
  3. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/storage_base.py +1 -0
  4. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/b4com/iface.py +10 -0
  5. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/b4com.order +11 -0
  6. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/b4com.rul +4 -1
  7. {annet-2.5.2 → annet-2.5.4/annet.egg-info}/PKG-INFO +2 -2
  8. {annet-2.5.2 → annet-2.5.4}/annet.egg-info/requires.txt +1 -1
  9. {annet-2.5.2 → annet-2.5.4}/setup.py +1 -1
  10. {annet-2.5.2 → annet-2.5.4}/AUTHORS +0 -0
  11. {annet-2.5.2 → annet-2.5.4}/LICENSE +0 -0
  12. {annet-2.5.2 → annet-2.5.4}/MANIFEST.in +0 -0
  13. {annet-2.5.2 → annet-2.5.4}/README.md +0 -0
  14. {annet-2.5.2 → annet-2.5.4}/annet/__init__.py +0 -0
  15. {annet-2.5.2 → annet-2.5.4}/annet/adapters/__init__.py +0 -0
  16. {annet-2.5.2 → annet-2.5.4}/annet/adapters/fetchers/__init__.py +0 -0
  17. {annet-2.5.2 → annet-2.5.4}/annet/adapters/fetchers/stub/__init__.py +0 -0
  18. {annet-2.5.2 → annet-2.5.4}/annet/adapters/fetchers/stub/fetcher.py +0 -0
  19. {annet-2.5.2 → annet-2.5.4}/annet/adapters/file/__init__.py +0 -0
  20. {annet-2.5.2 → annet-2.5.4}/annet/adapters/file/provider.py +0 -0
  21. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/__init__.py +0 -0
  22. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/__init__.py +0 -0
  23. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/adapter.py +0 -0
  24. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/client.py +0 -0
  25. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/manufacturer.py +0 -0
  26. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/query.py +0 -0
  27. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/status_client.py +0 -0
  28. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/common/storage_opts.py +0 -0
  29. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/provider.py +0 -0
  30. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v24/__init__.py +0 -0
  31. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v24/models.py +0 -0
  32. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v24/storage.py +0 -0
  33. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v37/__init__.py +0 -0
  34. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v37/models.py +0 -0
  35. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v37/storage.py +0 -0
  36. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v41/__init__.py +0 -0
  37. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v41/models.py +0 -0
  38. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v41/storage.py +0 -0
  39. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v42/__init__.py +0 -0
  40. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v42/models.py +0 -0
  41. {annet-2.5.2 → annet-2.5.4}/annet/adapters/netbox/v42/storage.py +0 -0
  42. {annet-2.5.2 → annet-2.5.4}/annet/annet.py +0 -0
  43. {annet-2.5.2 → annet-2.5.4}/annet/annlib/__init__.py +0 -0
  44. {annet-2.5.2 → annet-2.5.4}/annet/annlib/command.py +0 -0
  45. {annet-2.5.2 → annet-2.5.4}/annet/annlib/diff.py +0 -0
  46. {annet-2.5.2 → annet-2.5.4}/annet/annlib/errors.py +0 -0
  47. {annet-2.5.2 → annet-2.5.4}/annet/annlib/filter_acl.py +0 -0
  48. {annet-2.5.2 → annet-2.5.4}/annet/annlib/jsontools.py +0 -0
  49. {annet-2.5.2 → annet-2.5.4}/annet/annlib/lib.py +0 -0
  50. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/__init__.py +0 -0
  51. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/db.py +0 -0
  52. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/devdb/__init__.py +0 -0
  53. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
  54. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/views/__init__.py +0 -0
  55. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/views/dump.py +0 -0
  56. {annet-2.5.2 → annet-2.5.4}/annet/annlib/netdev/views/hardware.py +0 -0
  57. {annet-2.5.2 → annet-2.5.4}/annet/annlib/output.py +0 -0
  58. {annet-2.5.2 → annet-2.5.4}/annet/annlib/patching.py +0 -0
  59. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/__init__.py +0 -0
  60. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/acl.py +0 -0
  61. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/deploying.py +0 -0
  62. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/ordering.py +0 -0
  63. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/platform.py +0 -0
  64. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rbparser/syntax.py +0 -0
  65. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rulebook/__init__.py +0 -0
  66. {annet-2.5.2 → annet-2.5.4}/annet/annlib/rulebook/common.py +0 -0
  67. {annet-2.5.2 → annet-2.5.4}/annet/annlib/tabparser.py +0 -0
  68. {annet-2.5.2 → annet-2.5.4}/annet/annlib/types.py +0 -0
  69. {annet-2.5.2 → annet-2.5.4}/annet/api/__init__.py +0 -0
  70. {annet-2.5.2 → annet-2.5.4}/annet/argparse.py +0 -0
  71. {annet-2.5.2 → annet-2.5.4}/annet/bgp_models.py +0 -0
  72. {annet-2.5.2 → annet-2.5.4}/annet/cli.py +0 -0
  73. {annet-2.5.2 → annet-2.5.4}/annet/cli_args.py +0 -0
  74. {annet-2.5.2 → annet-2.5.4}/annet/configs/context.yml +0 -0
  75. {annet-2.5.2 → annet-2.5.4}/annet/configs/logging.yaml +0 -0
  76. {annet-2.5.2 → annet-2.5.4}/annet/connectors.py +0 -0
  77. {annet-2.5.2 → annet-2.5.4}/annet/deploy.py +0 -0
  78. {annet-2.5.2 → annet-2.5.4}/annet/deploy_ui.py +0 -0
  79. {annet-2.5.2 → annet-2.5.4}/annet/diff.py +0 -0
  80. {annet-2.5.2 → annet-2.5.4}/annet/executor.py +0 -0
  81. {annet-2.5.2 → annet-2.5.4}/annet/filtering.py +0 -0
  82. {annet-2.5.2 → annet-2.5.4}/annet/gen.py +0 -0
  83. {annet-2.5.2 → annet-2.5.4}/annet/generators/__init__.py +0 -0
  84. {annet-2.5.2 → annet-2.5.4}/annet/generators/base.py +0 -0
  85. {annet-2.5.2 → annet-2.5.4}/annet/generators/common/__init__.py +0 -0
  86. {annet-2.5.2 → annet-2.5.4}/annet/generators/common/initial.py +0 -0
  87. {annet-2.5.2 → annet-2.5.4}/annet/generators/entire.py +0 -0
  88. {annet-2.5.2 → annet-2.5.4}/annet/generators/exceptions.py +0 -0
  89. {annet-2.5.2 → annet-2.5.4}/annet/generators/jsonfragment.py +0 -0
  90. {annet-2.5.2 → annet-2.5.4}/annet/generators/partial.py +0 -0
  91. {annet-2.5.2 → annet-2.5.4}/annet/generators/perf.py +0 -0
  92. {annet-2.5.2 → annet-2.5.4}/annet/generators/ref.py +0 -0
  93. {annet-2.5.2 → annet-2.5.4}/annet/generators/result.py +0 -0
  94. {annet-2.5.2 → annet-2.5.4}/annet/hardware.py +0 -0
  95. {annet-2.5.2 → annet-2.5.4}/annet/implicit.py +0 -0
  96. {annet-2.5.2 → annet-2.5.4}/annet/lib.py +0 -0
  97. {annet-2.5.2 → annet-2.5.4}/annet/mesh/__init__.py +0 -0
  98. {annet-2.5.2 → annet-2.5.4}/annet/mesh/basemodel.py +0 -0
  99. {annet-2.5.2 → annet-2.5.4}/annet/mesh/device_models.py +0 -0
  100. {annet-2.5.2 → annet-2.5.4}/annet/mesh/executor.py +0 -0
  101. {annet-2.5.2 → annet-2.5.4}/annet/mesh/match_args.py +0 -0
  102. {annet-2.5.2 → annet-2.5.4}/annet/mesh/models_converter.py +0 -0
  103. {annet-2.5.2 → annet-2.5.4}/annet/mesh/peer_models.py +0 -0
  104. {annet-2.5.2 → annet-2.5.4}/annet/mesh/port_processor.py +0 -0
  105. {annet-2.5.2 → annet-2.5.4}/annet/mesh/registry.py +0 -0
  106. {annet-2.5.2 → annet-2.5.4}/annet/output.py +0 -0
  107. {annet-2.5.2 → annet-2.5.4}/annet/parallel.py +0 -0
  108. {annet-2.5.2 → annet-2.5.4}/annet/patching.py +0 -0
  109. {annet-2.5.2 → annet-2.5.4}/annet/reference.py +0 -0
  110. {annet-2.5.2 → annet-2.5.4}/annet/rpl/__init__.py +0 -0
  111. {annet-2.5.2 → annet-2.5.4}/annet/rpl/action.py +0 -0
  112. {annet-2.5.2 → annet-2.5.4}/annet/rpl/condition.py +0 -0
  113. {annet-2.5.2 → annet-2.5.4}/annet/rpl/match_builder.py +0 -0
  114. {annet-2.5.2 → annet-2.5.4}/annet/rpl/policy.py +0 -0
  115. {annet-2.5.2 → annet-2.5.4}/annet/rpl/result.py +0 -0
  116. {annet-2.5.2 → annet-2.5.4}/annet/rpl/routemap.py +0 -0
  117. {annet-2.5.2 → annet-2.5.4}/annet/rpl/statement_builder.py +0 -0
  118. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/__init__.py +0 -0
  119. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/aspath.py +0 -0
  120. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/community.py +0 -0
  121. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/cumulus_frr.py +0 -0
  122. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/entities.py +0 -0
  123. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/execute.py +0 -0
  124. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/policy.py +0 -0
  125. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/prefix_lists.py +0 -0
  126. {annet-2.5.2 → annet-2.5.4}/annet/rpl_generators/rd.py +0 -0
  127. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/__init__.py +0 -0
  128. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/arista/__init__.py +0 -0
  129. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/arista/aaa.py +0 -0
  130. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/arista/iface.py +0 -0
  131. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/aruba/__init__.py +0 -0
  132. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/aruba/ap_env.py +0 -0
  133. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/aruba/misc.py +0 -0
  134. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/b4com/__init__.py +0 -0
  135. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/b4com/file.py +0 -0
  136. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/cisco/__init__.py +0 -0
  137. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/cisco/iface.py +0 -0
  138. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/cisco/misc.py +0 -0
  139. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/cisco/vlandb.py +0 -0
  140. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/common.py +0 -0
  141. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/deploying.py +0 -0
  142. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/__init__.py +0 -0
  143. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/aaa.py +0 -0
  144. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/bgp.py +0 -0
  145. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/iface.py +0 -0
  146. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/misc.py +0 -0
  147. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/huawei/vlandb.py +0 -0
  148. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/juniper/__init__.py +0 -0
  149. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/nexus/__init__.py +0 -0
  150. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/nexus/iface.py +0 -0
  151. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/patching.py +0 -0
  152. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/routeros/__init__.py +0 -0
  153. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/routeros/file.py +0 -0
  154. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/arista.deploy +0 -0
  155. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/arista.order +0 -0
  156. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/arista.rul +0 -0
  157. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/aruba.deploy +0 -0
  158. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/aruba.order +0 -0
  159. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/aruba.rul +0 -0
  160. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/b4com.deploy +0 -0
  161. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/cisco.deploy +0 -0
  162. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/cisco.order +0 -0
  163. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/cisco.rul +0 -0
  164. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/huawei.deploy +0 -0
  165. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/huawei.order +0 -0
  166. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/huawei.rul +0 -0
  167. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/juniper.order +0 -0
  168. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/juniper.rul +0 -0
  169. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/nexus.deploy +0 -0
  170. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/nexus.order +0 -0
  171. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/nexus.rul +0 -0
  172. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/nokia.rul +0 -0
  173. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/optixtrans.deploy +0 -0
  174. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/optixtrans.order +0 -0
  175. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/optixtrans.rul +0 -0
  176. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/pc.deploy +0 -0
  177. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/pc.order +0 -0
  178. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/pc.rul +0 -0
  179. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/ribbon.deploy +0 -0
  180. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/ribbon.rul +0 -0
  181. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/routeros.order +0 -0
  182. {annet-2.5.2 → annet-2.5.4}/annet/rulebook/texts/routeros.rul +0 -0
  183. {annet-2.5.2 → annet-2.5.4}/annet/storage.py +0 -0
  184. {annet-2.5.2 → annet-2.5.4}/annet/tabparser.py +0 -0
  185. {annet-2.5.2 → annet-2.5.4}/annet/text_term_format.py +0 -0
  186. {annet-2.5.2 → annet-2.5.4}/annet/tracing.py +0 -0
  187. {annet-2.5.2 → annet-2.5.4}/annet/types.py +0 -0
  188. {annet-2.5.2 → annet-2.5.4}/annet.egg-info/SOURCES.txt +0 -0
  189. {annet-2.5.2 → annet-2.5.4}/annet.egg-info/dependency_links.txt +0 -0
  190. {annet-2.5.2 → annet-2.5.4}/annet.egg-info/entry_points.txt +0 -0
  191. {annet-2.5.2 → annet-2.5.4}/annet.egg-info/top_level.txt +0 -0
  192. {annet-2.5.2 → annet-2.5.4}/annet_generators/__init__.py +0 -0
  193. {annet-2.5.2 → annet-2.5.4}/annet_generators/example/__init__.py +0 -0
  194. {annet-2.5.2 → annet-2.5.4}/annet_generators/example/lldp.py +0 -0
  195. {annet-2.5.2 → annet-2.5.4}/annet_generators/mesh_example/__init__.py +0 -0
  196. {annet-2.5.2 → annet-2.5.4}/annet_generators/mesh_example/bgp.py +0 -0
  197. {annet-2.5.2 → annet-2.5.4}/annet_generators/mesh_example/mesh_logic.py +0 -0
  198. {annet-2.5.2 → annet-2.5.4}/annet_generators/rpl_example/__init__.py +0 -0
  199. {annet-2.5.2 → annet-2.5.4}/annet_generators/rpl_example/generator.py +0 -0
  200. {annet-2.5.2 → annet-2.5.4}/annet_generators/rpl_example/items.py +0 -0
  201. {annet-2.5.2 → annet-2.5.4}/annet_generators/rpl_example/mesh.py +0 -0
  202. {annet-2.5.2 → annet-2.5.4}/annet_generators/rpl_example/route_policy.py +0 -0
  203. {annet-2.5.2 → annet-2.5.4}/requirements.txt +0 -0
  204. {annet-2.5.2 → annet-2.5.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 2.5.2
3
+ Version: 2.5.4
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -21,7 +21,7 @@ Requires-Dist: yarl>=1.8.2
21
21
  Requires-Dist: adaptix==3.0.0b7
22
22
  Requires-Dist: dataclass-rest==0.4
23
23
  Provides-Extra: netbox
24
- Requires-Dist: annetbox[sync]>=0.2.2; extra == "netbox"
24
+ Requires-Dist: annetbox[sync]>=0.3.0; extra == "netbox"
25
25
  Dynamic: home-page
26
26
  Dynamic: license
27
27
  Dynamic: license-file
@@ -19,6 +19,11 @@ class Entity(DumpableView):
19
19
  return self.name
20
20
 
21
21
 
22
+ @dataclass
23
+ class EntityWithSlug(Entity):
24
+ slug: str
25
+
26
+
22
27
  @dataclass
23
28
  class Label:
24
29
  value: str
@@ -82,7 +87,7 @@ class IpAddress(DumpableView, Generic[_PrefixT]):
82
87
  family: IpFamily
83
88
  address: str
84
89
  status: Label
85
- tags: List[Entity]
90
+ tags: List[EntityWithSlug]
86
91
  created: datetime
87
92
  last_updated: datetime
88
93
  prefix: Optional[_PrefixT] = None
@@ -135,12 +140,14 @@ class Interface(Entity, Generic[_IpAddressT]):
135
140
  mode: Optional[InterfaceMode]
136
141
  untagged_vlan: Optional[InterfaceVlan]
137
142
  tagged_vlans: Optional[List[InterfaceVlan]]
143
+ tags: List[EntityWithSlug]
138
144
  display: str = ""
139
145
  ip_addresses: List[_IpAddressT] = field(default_factory=list)
140
146
  vrf: Optional[Entity] = None
141
147
  mtu: int | None = None
142
148
  lag: Entity | None = None
143
149
  lag_min_links: int | None = None
150
+ speed: int | None = None
144
151
 
145
152
  def add_addr(self, address_mask: str, vrf: str | None) -> None:
146
153
  for existing_addr in self.ip_addresses:
@@ -186,10 +193,11 @@ class NetboxDevice(Entity, Generic[_InterfaceT]):
186
193
  primary_ip: Optional[DeviceIp]
187
194
  primary_ip4: Optional[DeviceIp]
188
195
  primary_ip6: Optional[DeviceIp]
189
- tags: List[Entity]
196
+ tags: List[EntityWithSlug]
190
197
  custom_fields: Dict[str, Any]
191
198
  created: datetime
192
199
  last_updated: datetime
200
+ cluster: Optional[Entity]
193
201
 
194
202
  fqdn: str
195
203
  hostname: str
@@ -161,6 +161,7 @@ class BaseNetboxStorage(
161
161
  return self._id_devices[obj_id]
162
162
 
163
163
  device = self.netbox.get_device(obj_id)
164
+ self._fill_device_interfaces([device])
164
165
  self._record_device(device)
165
166
  return device
166
167
 
@@ -13,6 +13,16 @@ def mtu(rule, key, diff, **kwargs):
13
13
  yield from common.default(rule, key, diff, **kwargs)
14
14
 
15
15
 
16
+ def description(rule, key, diff, **kwargs):
17
+ """
18
+ Удаляем description без указания значения
19
+ """
20
+ if diff[Op.REMOVED]:
21
+ yield (False, "no description", None)
22
+ elif diff[Op.ADDED]:
23
+ yield from common.default(rule, key, diff, **kwargs)
24
+
25
+
16
26
  def sflow(rule, key, diff, **kwargs):
17
27
  """
18
28
  Команда sflow sampling-rate * direction ingress max-header-size *
@@ -6,3 +6,14 @@
6
6
  # Фичи должны быть включены прежде всего
7
7
  feature
8
8
  # Далее нужно будет указать команды и их порядок
9
+ interface *
10
+ description
11
+ ip vrf forwarding
12
+ ipv6 address
13
+ mtu
14
+ lldp-agent
15
+ set lldp
16
+ lldp tlv
17
+ dcbx
18
+ exit
19
+ sflow
@@ -13,7 +13,10 @@
13
13
  # Physical
14
14
  sflow *
15
15
 
16
- interface */(ce|xe)[0-9\/]+$/ %logic=common.permanent %diff_logic=cisco.iface.diff
16
+ interface */(ce|xe|eth)[0-9\/]+$/ %logic=common.permanent %diff_logic=cisco.iface.diff
17
+ description * %logic=b4com.iface.description
18
+ ip vrf forwarding *
19
+ ip address *
17
20
  ipv6 address *
18
21
  mtu * %logic=b4com.iface.mtu
19
22
  sflow * %logic=b4com.iface.sflow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: annet
3
- Version: 2.5.2
3
+ Version: 2.5.4
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -21,7 +21,7 @@ Requires-Dist: yarl>=1.8.2
21
21
  Requires-Dist: adaptix==3.0.0b7
22
22
  Requires-Dist: dataclass-rest==0.4
23
23
  Provides-Extra: netbox
24
- Requires-Dist: annetbox[sync]>=0.2.2; extra == "netbox"
24
+ Requires-Dist: annetbox[sync]>=0.3.0; extra == "netbox"
25
25
  Dynamic: home-page
26
26
  Dynamic: license
27
27
  Dynamic: license-file
@@ -13,4 +13,4 @@ adaptix==3.0.0b7
13
13
  dataclass-rest==0.4
14
14
 
15
15
  [netbox]
16
- annetbox[sync]>=0.2.2
16
+ annetbox[sync]>=0.3.0
@@ -44,7 +44,7 @@ if __name__ == "__main__":
44
44
  ],
45
45
  },
46
46
  extras_require={
47
- "netbox": ["annetbox[sync]>=0.2.2"],
47
+ "netbox": ["annetbox[sync]>=0.3.0"],
48
48
  },
49
49
  python_requires=">=3.10",
50
50
  install_requires=requirements(),
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