annet 0.12.6__tar.gz → 0.12.8__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 (144) hide show
  1. {annet-0.12.6/annet.egg-info → annet-0.12.8}/PKG-INFO +1 -1
  2. {annet-0.12.6 → annet-0.12.8}/annet/executor.py +18 -13
  3. {annet-0.12.6 → annet-0.12.8}/annet/gen.py +2 -3
  4. {annet-0.12.6 → annet-0.12.8}/annet/generators/__init__.py +1 -1
  5. {annet-0.12.6 → annet-0.12.8}/annet/generators/common/initial.py +2 -2
  6. {annet-0.12.6 → annet-0.12.8/annet.egg-info}/PKG-INFO +1 -1
  7. {annet-0.12.6 → annet-0.12.8}/AUTHORS +0 -0
  8. {annet-0.12.6 → annet-0.12.8}/LICENSE +0 -0
  9. {annet-0.12.6 → annet-0.12.8}/MANIFEST.in +0 -0
  10. {annet-0.12.6 → annet-0.12.8}/README.md +0 -0
  11. {annet-0.12.6 → annet-0.12.8}/annet/__init__.py +0 -0
  12. {annet-0.12.6 → annet-0.12.8}/annet/adapters/__init__.py +0 -0
  13. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/__init__.py +0 -0
  14. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/__init__.py +0 -0
  15. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/client.py +0 -0
  16. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/manufacturer.py +0 -0
  17. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/models.py +0 -0
  18. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/query.py +0 -0
  19. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/status_client.py +0 -0
  20. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/common/storage_opts.py +0 -0
  21. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/provider.py +0 -0
  22. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v24/__init__.py +0 -0
  23. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v24/api_models.py +0 -0
  24. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v24/client.py +0 -0
  25. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v24/storage.py +0 -0
  26. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v37/__init__.py +0 -0
  27. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v37/api_models.py +0 -0
  28. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v37/client.py +0 -0
  29. {annet-0.12.6 → annet-0.12.8}/annet/adapters/netbox/v37/storage.py +0 -0
  30. {annet-0.12.6 → annet-0.12.8}/annet/annet.py +0 -0
  31. {annet-0.12.6 → annet-0.12.8}/annet/annlib/__init__.py +0 -0
  32. {annet-0.12.6 → annet-0.12.8}/annet/annlib/command.py +0 -0
  33. {annet-0.12.6 → annet-0.12.8}/annet/annlib/diff.py +0 -0
  34. {annet-0.12.6 → annet-0.12.8}/annet/annlib/errors.py +0 -0
  35. {annet-0.12.6 → annet-0.12.8}/annet/annlib/filter_acl.py +0 -0
  36. {annet-0.12.6 → annet-0.12.8}/annet/annlib/jsontools.py +0 -0
  37. {annet-0.12.6 → annet-0.12.8}/annet/annlib/lib.py +0 -0
  38. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/__init__.py +0 -0
  39. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/db.py +0 -0
  40. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/devdb/__init__.py +0 -0
  41. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/devdb/data/devdb.json +0 -0
  42. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/views/__init__.py +0 -0
  43. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/views/dump.py +0 -0
  44. {annet-0.12.6 → annet-0.12.8}/annet/annlib/netdev/views/hardware.py +0 -0
  45. {annet-0.12.6 → annet-0.12.8}/annet/annlib/output.py +0 -0
  46. {annet-0.12.6 → annet-0.12.8}/annet/annlib/patching.py +0 -0
  47. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/__init__.py +0 -0
  48. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/acl.py +0 -0
  49. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/deploying.py +0 -0
  50. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/ordering.py +0 -0
  51. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/platform.py +0 -0
  52. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rbparser/syntax.py +0 -0
  53. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rulebook/__init__.py +0 -0
  54. {annet-0.12.6 → annet-0.12.8}/annet/annlib/rulebook/common.py +0 -0
  55. {annet-0.12.6 → annet-0.12.8}/annet/annlib/tabparser.py +0 -0
  56. {annet-0.12.6 → annet-0.12.8}/annet/annlib/types.py +0 -0
  57. {annet-0.12.6 → annet-0.12.8}/annet/api/__init__.py +0 -0
  58. {annet-0.12.6 → annet-0.12.8}/annet/argparse.py +0 -0
  59. {annet-0.12.6 → annet-0.12.8}/annet/cli.py +0 -0
  60. {annet-0.12.6 → annet-0.12.8}/annet/cli_args.py +0 -0
  61. {annet-0.12.6 → annet-0.12.8}/annet/configs/context.yml +0 -0
  62. {annet-0.12.6 → annet-0.12.8}/annet/configs/logging.yaml +0 -0
  63. {annet-0.12.6 → annet-0.12.8}/annet/connectors.py +0 -0
  64. {annet-0.12.6 → annet-0.12.8}/annet/deploy.py +0 -0
  65. {annet-0.12.6 → annet-0.12.8}/annet/diff.py +0 -0
  66. {annet-0.12.6 → annet-0.12.8}/annet/filtering.py +0 -0
  67. {annet-0.12.6 → annet-0.12.8}/annet/generators/base.py +0 -0
  68. {annet-0.12.6 → annet-0.12.8}/annet/generators/common/__init__.py +0 -0
  69. {annet-0.12.6 → annet-0.12.8}/annet/generators/entire.py +0 -0
  70. {annet-0.12.6 → annet-0.12.8}/annet/generators/exceptions.py +0 -0
  71. {annet-0.12.6 → annet-0.12.8}/annet/generators/jsonfragment.py +0 -0
  72. {annet-0.12.6 → annet-0.12.8}/annet/generators/partial.py +0 -0
  73. {annet-0.12.6 → annet-0.12.8}/annet/generators/perf.py +0 -0
  74. {annet-0.12.6 → annet-0.12.8}/annet/generators/ref.py +0 -0
  75. {annet-0.12.6 → annet-0.12.8}/annet/generators/result.py +0 -0
  76. {annet-0.12.6 → annet-0.12.8}/annet/hardware.py +0 -0
  77. {annet-0.12.6 → annet-0.12.8}/annet/implicit.py +0 -0
  78. {annet-0.12.6 → annet-0.12.8}/annet/lib.py +0 -0
  79. {annet-0.12.6 → annet-0.12.8}/annet/output.py +0 -0
  80. {annet-0.12.6 → annet-0.12.8}/annet/parallel.py +0 -0
  81. {annet-0.12.6 → annet-0.12.8}/annet/patching.py +0 -0
  82. {annet-0.12.6 → annet-0.12.8}/annet/reference.py +0 -0
  83. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/__init__.py +0 -0
  84. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/arista/__init__.py +0 -0
  85. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/arista/iface.py +0 -0
  86. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/aruba/__init__.py +0 -0
  87. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/aruba/ap_env.py +0 -0
  88. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/aruba/misc.py +0 -0
  89. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/cisco/__init__.py +0 -0
  90. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/cisco/iface.py +0 -0
  91. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/cisco/misc.py +0 -0
  92. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/cisco/vlandb.py +0 -0
  93. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/common.py +0 -0
  94. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/deploying.py +0 -0
  95. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/__init__.py +0 -0
  96. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/aaa.py +0 -0
  97. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/bgp.py +0 -0
  98. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/iface.py +0 -0
  99. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/misc.py +0 -0
  100. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/huawei/vlandb.py +0 -0
  101. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/juniper/__init__.py +0 -0
  102. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/nexus/__init__.py +0 -0
  103. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/nexus/iface.py +0 -0
  104. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/patching.py +0 -0
  105. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/ribbon/__init__.py +0 -0
  106. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/arista.deploy +0 -0
  107. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/arista.order +0 -0
  108. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/arista.rul +0 -0
  109. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/aruba.deploy +0 -0
  110. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/aruba.order +0 -0
  111. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/aruba.rul +0 -0
  112. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/cisco.deploy +0 -0
  113. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/cisco.order +0 -0
  114. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/cisco.rul +0 -0
  115. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/huawei.deploy +0 -0
  116. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/huawei.order +0 -0
  117. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/huawei.rul +0 -0
  118. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/juniper.rul +0 -0
  119. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/nexus.deploy +0 -0
  120. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/nexus.order +0 -0
  121. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/nexus.rul +0 -0
  122. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/nokia.rul +0 -0
  123. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/pc.order +0 -0
  124. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/pc.rul +0 -0
  125. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/ribbon.deploy +0 -0
  126. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/ribbon.rul +0 -0
  127. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/routeros.order +0 -0
  128. {annet-0.12.6 → annet-0.12.8}/annet/rulebook/texts/routeros.rul +0 -0
  129. {annet-0.12.6 → annet-0.12.8}/annet/storage.py +0 -0
  130. {annet-0.12.6 → annet-0.12.8}/annet/tabparser.py +0 -0
  131. {annet-0.12.6 → annet-0.12.8}/annet/text_term_format.py +0 -0
  132. {annet-0.12.6 → annet-0.12.8}/annet/tracing.py +0 -0
  133. {annet-0.12.6 → annet-0.12.8}/annet/types.py +0 -0
  134. {annet-0.12.6 → annet-0.12.8}/annet.egg-info/SOURCES.txt +0 -0
  135. {annet-0.12.6 → annet-0.12.8}/annet.egg-info/dependency_links.txt +0 -0
  136. {annet-0.12.6 → annet-0.12.8}/annet.egg-info/entry_points.txt +0 -0
  137. {annet-0.12.6 → annet-0.12.8}/annet.egg-info/requires.txt +0 -0
  138. {annet-0.12.6 → annet-0.12.8}/annet.egg-info/top_level.txt +0 -0
  139. {annet-0.12.6 → annet-0.12.8}/annet_generators/__init__.py +0 -0
  140. {annet-0.12.6 → annet-0.12.8}/annet_generators/example/__init__.py +0 -0
  141. {annet-0.12.6 → annet-0.12.8}/annet_generators/example/lldp.py +0 -0
  142. {annet-0.12.6 → annet-0.12.8}/requirements.txt +0 -0
  143. {annet-0.12.6 → annet-0.12.8}/setup.cfg +0 -0
  144. {annet-0.12.6 → annet-0.12.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: annet
3
- Version: 0.12.6
3
+ Version: 0.12.8
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
@@ -359,7 +359,7 @@ async def bulk(
359
359
  tasks = []
360
360
  res = {}
361
361
  pending = set()
362
- tasks_to_hostname = {}
362
+ tasks_to_device = {}
363
363
  time_of_start = {}
364
364
  deploy_durations = {}
365
365
  now = None
@@ -391,10 +391,15 @@ async def bulk(
391
391
  return task.result()
392
392
 
393
393
  for device in devices:
394
- conn = await executor.amake_connection(device=device)
394
+ try:
395
+ conn = await executor.amake_connection(device=device)
396
+ except Exception as exc:
397
+ _logger.error("failed to connect to %s %r", device.hostname, exc)
398
+ res[device] = exc
399
+ continue
395
400
  start_hook(device)
396
401
  task = asyncio.create_task(coro_gen(conn=conn, device=device, **kwargs))
397
- tasks_to_hostname[task] = device
402
+ tasks_to_device[task] = device
398
403
  tasks.append(task)
399
404
  try:
400
405
  ndone = 0
@@ -415,21 +420,21 @@ async def bulk(
415
420
 
416
421
  now = time.monotonic()
417
422
  for task in done:
418
- hostname = tasks_to_hostname[task]
419
- res[hostname] = end_hook(hostname, task)
423
+ device = tasks_to_device[task]
424
+ res[device] = end_hook(device, task)
420
425
  ndone += 1
421
426
  except CancelAllTasks:
422
427
  exc = asyncio.CancelledError()
423
428
 
424
429
  now = time.monotonic()
425
- for hostname, task in _get_remaining(tasks, pending, tasks_to_hostname):
426
- res[hostname] = exc
430
+ for device, task in _get_remaining(tasks, pending, tasks_to_device):
431
+ res[device] = exc
427
432
 
428
- if hostname in time_of_start:
429
- duration = now - time_of_start[hostname]
433
+ if device.hostname in time_of_start:
434
+ duration = now - time_of_start[device.hostname]
430
435
  else:
431
436
  duration = None
432
- deploy_durations[hostname] = duration
437
+ deploy_durations[device.hostname] = duration
433
438
 
434
439
  if not asyncio.iscoroutine(task):
435
440
  _logger.info("task %s", task)
@@ -471,11 +476,11 @@ class CancelAllTasks(Exception):
471
476
  pass
472
477
 
473
478
 
474
- def _get_remaining(tasks, pending, tasks_to_hostname):
479
+ def _get_remaining(tasks, pending, tasks_to_device):
475
480
  for task in pending:
476
- yield (tasks_to_hostname[task], task)
481
+ yield (tasks_to_device[task], task)
477
482
  for task in tasks:
478
- yield (tasks_to_hostname[task], task)
483
+ yield (tasks_to_device[task], task)
479
484
 
480
485
 
481
486
  _platform = platform.system()
@@ -709,10 +709,9 @@ def _old_new_get_config_cli(ctx: OldNewDeviceContext, device: Device) -> str:
709
709
  elif ctx.config == "running":
710
710
  text = ctx.running.get(device)
711
711
  if text is None:
712
- exc = (ctx.failed_running.get(device.fqdn) or
713
- ctx.failed_running.get(device.hostname) or
712
+ exc = (ctx.failed_running.get(device) or
714
713
  Exception("I can't get device config and I don't know why"))
715
- get_logger(host=device.hostname).error("config error %s", exc)
714
+ get_logger(host=device.hostname).error("config error %r", exc)
716
715
  raise exc
717
716
  elif ctx.config == "-":
718
717
  text = ctx.stdin["config"]
@@ -120,7 +120,7 @@ def run_partial_initial(device):
120
120
  tracing_connector.get().set_device_attributes(tracing_connector.get().get_current_span(), device)
121
121
 
122
122
  run_args = GeneratorPartialRunArgs(device)
123
- return run_partial_generators([InitialConfig(storage=device.storage)], [], run_args)
123
+ return run_partial_generators([InitialConfig(storage=device.storage, do_run=True)], [], run_args)
124
124
 
125
125
 
126
126
  @tracing.function
@@ -12,9 +12,9 @@ class InitialConfig(PartialGenerator):
12
12
  Acl для данного генератора не нужен, он будет генерировать
13
13
  конфиг целиком.
14
14
  """
15
- def __init__(self, storage=None):
16
- self._do_run = not storage
15
+ def __init__(self, storage, do_run: bool = False):
17
16
  super().__init__(storage=storage)
17
+ self._do_run = do_run
18
18
 
19
19
  def run_huawei(self, device):
20
20
  if not self._do_run:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: annet
3
- Version: 0.12.6
3
+ Version: 0.12.8
4
4
  Summary: annet
5
5
  Home-page: https://github.com/annetutil/annet
6
6
  License: MIT
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