osism 0.20250621.0__tar.gz → 0.20250627.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.
Files changed (113) hide show
  1. osism-0.20250627.0/ChangeLog +7 -0
  2. {osism-0.20250621.0 → osism-0.20250627.0}/Containerfile +1 -1
  3. {osism-0.20250621.0 → osism-0.20250627.0}/Dockerfile +1 -1
  4. {osism-0.20250621.0/osism.egg-info → osism-0.20250627.0}/PKG-INFO +3 -3
  5. {osism-0.20250621.0 → osism-0.20250627.0}/Pipfile +1 -1
  6. {osism-0.20250621.0 → osism-0.20250627.0}/Pipfile.lock +58 -151
  7. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/config_db.json +6 -0
  8. osism-0.20250627.0/files/sonic/port_config/Accton-AS4625-54T.ini +55 -0
  9. {osism-0.20250621.0 → osism-0.20250627.0}/osism/api.py +49 -5
  10. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/manage.py +251 -0
  11. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/reconciler.py +8 -1
  12. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/ironic.py +15 -17
  13. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/config_generator.py +133 -41
  14. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/constants.py +1 -0
  15. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/interface.py +167 -16
  16. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/sync.py +26 -1
  17. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/reconciler.py +12 -2
  18. {osism-0.20250621.0 → osism-0.20250627.0/osism.egg-info}/PKG-INFO +3 -3
  19. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/SOURCES.txt +1 -0
  20. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/entry_points.txt +1 -2
  21. osism-0.20250627.0/osism.egg-info/pbr.json +1 -0
  22. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/requires.txt +2 -2
  23. osism-0.20250627.0/requirements.netbox-manager.txt +1 -0
  24. {osism-0.20250621.0 → osism-0.20250627.0}/requirements.txt +2 -2
  25. {osism-0.20250621.0 → osism-0.20250627.0}/setup.cfg +1 -2
  26. osism-0.20250621.0/ChangeLog +0 -7
  27. osism-0.20250621.0/osism.egg-info/pbr.json +0 -1
  28. osism-0.20250621.0/requirements.netbox-manager.txt +0 -1
  29. {osism-0.20250621.0 → osism-0.20250627.0}/.flake8 +0 -0
  30. {osism-0.20250621.0 → osism-0.20250627.0}/.github/renovate.json +0 -0
  31. {osism-0.20250621.0 → osism-0.20250627.0}/.github/workflows/publish.yml +0 -0
  32. {osism-0.20250621.0 → osism-0.20250627.0}/.hadolint.yaml +0 -0
  33. {osism-0.20250621.0 → osism-0.20250627.0}/.zuul.yaml +0 -0
  34. {osism-0.20250621.0 → osism-0.20250627.0}/AUTHORS +0 -0
  35. {osism-0.20250621.0 → osism-0.20250627.0}/LICENSE +0 -0
  36. {osism-0.20250621.0 → osism-0.20250627.0}/README.md +0 -0
  37. {osism-0.20250621.0 → osism-0.20250627.0}/files/change.sh +0 -0
  38. {osism-0.20250621.0 → osism-0.20250627.0}/files/cleanup-ansible-collections.sh +0 -0
  39. {osism-0.20250621.0 → osism-0.20250627.0}/files/clustershell/clush.conf +0 -0
  40. {osism-0.20250621.0 → osism-0.20250627.0}/files/clustershell/groups.conf +0 -0
  41. {osism-0.20250621.0 → osism-0.20250627.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
  42. {osism-0.20250621.0 → osism-0.20250627.0}/files/netbox-manager/settings.toml +0 -0
  43. {osism-0.20250621.0 → osism-0.20250627.0}/files/run-ansible-console.sh +0 -0
  44. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/port_config/Accton-AS5835-54T.ini +0 -0
  45. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/port_config/Accton-AS5835-54X.ini +0 -0
  46. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/port_config/Accton-AS7326-56X.ini +0 -0
  47. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/port_config/Accton-AS7726-32X.ini +0 -0
  48. {osism-0.20250621.0 → osism-0.20250627.0}/files/sonic/port_config/Accton-AS9716-32D.ini +0 -0
  49. {osism-0.20250621.0 → osism-0.20250627.0}/osism/__init__.py +0 -0
  50. {osism-0.20250621.0 → osism-0.20250627.0}/osism/__main__.py +0 -0
  51. {osism-0.20250621.0 → osism-0.20250627.0}/osism/actions/__init__.py +0 -0
  52. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/__init__.py +0 -0
  53. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/apply.py +0 -0
  54. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/baremetal.py +0 -0
  55. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/compose.py +0 -0
  56. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/compute.py +0 -0
  57. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/configuration.py +0 -0
  58. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/console.py +0 -0
  59. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/container.py +0 -0
  60. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/get.py +0 -0
  61. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/log.py +0 -0
  62. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/netbox.py +0 -0
  63. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/noset.py +0 -0
  64. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/server.py +0 -0
  65. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/service.py +0 -0
  66. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/set.py +0 -0
  67. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/status.py +0 -0
  68. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/sync.py +0 -0
  69. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/task.py +0 -0
  70. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/validate.py +0 -0
  71. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/vault.py +0 -0
  72. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/volume.py +0 -0
  73. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/wait.py +0 -0
  74. {osism-0.20250621.0 → osism-0.20250627.0}/osism/commands/worker.py +0 -0
  75. {osism-0.20250621.0 → osism-0.20250627.0}/osism/core/__init__.py +0 -0
  76. {osism-0.20250621.0 → osism-0.20250627.0}/osism/core/enums.py +0 -0
  77. {osism-0.20250621.0 → osism-0.20250627.0}/osism/core/playbooks.py +0 -0
  78. {osism-0.20250621.0 → osism-0.20250627.0}/osism/data/__init__.py +0 -0
  79. {osism-0.20250621.0 → osism-0.20250627.0}/osism/main.py +0 -0
  80. {osism-0.20250621.0 → osism-0.20250627.0}/osism/plugins/__init__.py +0 -0
  81. {osism-0.20250621.0 → osism-0.20250627.0}/osism/services/__init__.py +0 -0
  82. {osism-0.20250621.0 → osism-0.20250627.0}/osism/services/listener.py +0 -0
  83. {osism-0.20250621.0 → osism-0.20250627.0}/osism/settings.py +0 -0
  84. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/__init__.py +0 -0
  85. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/ansible.py +0 -0
  86. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/ceph.py +0 -0
  87. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/__init__.py +0 -0
  88. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/config.py +0 -0
  89. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/netbox.py +0 -0
  90. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/__init__.py +0 -0
  91. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/bgp.py +0 -0
  92. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/cache.py +0 -0
  93. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/connections.py +0 -0
  94. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/device.py +0 -0
  95. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/sonic/exporter.py +0 -0
  96. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor/utils.py +0 -0
  97. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/conductor.py +0 -0
  98. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/kolla.py +0 -0
  99. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/kubernetes.py +0 -0
  100. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/netbox.py +0 -0
  101. {osism-0.20250621.0 → osism-0.20250627.0}/osism/tasks/openstack.py +0 -0
  102. {osism-0.20250621.0 → osism-0.20250627.0}/osism/utils/__init__.py +0 -0
  103. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/dependency_links.txt +0 -0
  104. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/not-zip-safe +0 -0
  105. {osism-0.20250621.0 → osism-0.20250627.0}/osism.egg-info/top_level.txt +0 -0
  106. {osism-0.20250621.0 → osism-0.20250627.0}/playbooks/build.yml +0 -0
  107. {osism-0.20250621.0 → osism-0.20250627.0}/playbooks/pre.yml +0 -0
  108. {osism-0.20250621.0 → osism-0.20250627.0}/playbooks/test-setup.yml +0 -0
  109. {osism-0.20250621.0 → osism-0.20250627.0}/requirements.ansible.txt +0 -0
  110. {osism-0.20250621.0 → osism-0.20250627.0}/requirements.openstack-flavor-manager.txt +0 -0
  111. {osism-0.20250621.0 → osism-0.20250627.0}/requirements.openstack-image-manager.txt +0 -0
  112. {osism-0.20250621.0 → osism-0.20250627.0}/requirements.yml +0 -0
  113. {osism-0.20250621.0 → osism-0.20250627.0}/setup.py +0 -0
@@ -0,0 +1,7 @@
1
+ CHANGES
2
+ =======
3
+
4
+ v0.20250627.0
5
+ -------------
6
+
7
+ * Remove loopback BGP neighbors from SONiC config generation (#1517)
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.7.13 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.7.15 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.7.13 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.7.15 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osism
3
- Version: 0.20250621.0
3
+ Version: 0.20250627.0
4
4
  Summary: OSISM manager interface
5
5
  Home-page: https://github.com/osism/python-osism
6
6
  Author: OSISM GmbH
@@ -31,7 +31,7 @@ Requires-Dist: cliff==4.10.0
31
31
  Requires-Dist: deepdiff==8.5.0
32
32
  Requires-Dist: docker==7.1.0
33
33
  Requires-Dist: dtrack-auditor==1.5.0
34
- Requires-Dist: fastapi==0.115.13
34
+ Requires-Dist: fastapi==0.115.14
35
35
  Requires-Dist: flower==2.0.1
36
36
  Requires-Dist: hiredis==3.2.1
37
37
  Requires-Dist: jc==1.25.5
@@ -40,8 +40,8 @@ Requires-Dist: kombu==5.5.4
40
40
  Requires-Dist: kubernetes==33.1.0
41
41
  Requires-Dist: loguru==0.7.3
42
42
  Requires-Dist: nbcli==0.10.0.dev2
43
- Requires-Dist: netmiko==4.5.0
44
43
  Requires-Dist: openstacksdk==4.6.0
44
+ Requires-Dist: paramiko==3.5.1
45
45
  Requires-Dist: pottery==3.0.1
46
46
  Requires-Dist: prompt-toolkit==3.0.51
47
47
  Requires-Dist: pynetbox==7.5.0
@@ -24,8 +24,8 @@ kombu = "==5.5.4"
24
24
  kubernetes = "==33.1.0"
25
25
  loguru = "==0.7.3"
26
26
  nbcli = "0.10.0.dev2"
27
- netmiko = "==4.5.0"
28
27
  openstacksdk = "==4.6.0"
28
+ paramiko = "==3.5.1"
29
29
  pottery = "==3.0.1"
30
30
  prompt-toolkit = "==3.0.51"
31
31
  pynetbox = "==7.5.0"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "hash": {
4
- "sha256": "ec6dd32fa880e9725517a57219960c422c962f402639f915ebceea9468279eac"
4
+ "sha256": "e43533c2a1b4d5822ad125c9911000317264ecc9c79919413c6da4adcc3b4e48"
5
5
  },
6
6
  "pipfile-spec": 6,
7
7
  "requires": {},
@@ -142,11 +142,11 @@
142
142
  },
143
143
  "certifi": {
144
144
  "hashes": [
145
- "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6",
146
- "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"
145
+ "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057",
146
+ "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"
147
147
  ],
148
- "markers": "python_version >= '3.6'",
149
- "version": "==2025.4.26"
148
+ "markers": "python_version >= '3.7'",
149
+ "version": "==2025.6.15"
150
150
  },
151
151
  "cffi": {
152
152
  "hashes": [
@@ -476,14 +476,6 @@
476
476
  "markers": "python_version >= '3.7'",
477
477
  "version": "==2.0.1"
478
478
  },
479
- "future": {
480
- "hashes": [
481
- "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216",
482
- "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05"
483
- ],
484
- "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2'",
485
- "version": "==1.0.0"
486
- },
487
479
  "gitdb": {
488
480
  "hashes": [
489
481
  "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571",
@@ -501,6 +493,42 @@
501
493
  "markers": "python_version >= '3.7'",
502
494
  "version": "==3.1.44"
503
495
  },
496
+ "gnureadline": {
497
+ "hashes": [
498
+ "sha256:07231f8191adb7f204010a86a91df9df9a80944981a16576a471f59304ad6a16",
499
+ "sha256:0ca03501ce0939d7ecf9d075860d6f6ceb2f49f30331b4e96e4678ce03687bab",
500
+ "sha256:0cc77fc9c8a8fcf10e0a554e49ee763219683386b8f906b7e6ef07c9e40e8420",
501
+ "sha256:10fcaf561bc4ed6ab7075ab3ead188a18faaf4e6e92d916f81a09c0a670ce906",
502
+ "sha256:23b43c8e9e2e6566cb3094749826181a86dba1d94b1e023b5f9923dc26e37876",
503
+ "sha256:265bcf6ef7082e130160fb34b9664284affb216a22c5bffcd518b35d02bcc4e9",
504
+ "sha256:2d3e33d2e0dd694d623a2ca1fae6990b52f1d25955504b7293a9350fb9912940",
505
+ "sha256:30cc1b6cb11d94554815cb91eb1dfa6a11887185aae50f253adaa393e91c6a86",
506
+ "sha256:3f1050ecf789f34d0ab0aacdb605f177725009a864e0038e70380614af92dc0d",
507
+ "sha256:4f57a3aa97c3379b2513c8bfbac0de2dfb41f695623c0b2ad337babb646b51a7",
508
+ "sha256:4f5fc90af56a1ae6f88c9c7122fc76141c395b6c342a63800abed8c813f48b85",
509
+ "sha256:50c40bfffffa82d4fcb0fde4940d4ff128ba2f876c1da09bae9d6d9ff770095e",
510
+ "sha256:561a60b12f74ea7234036cc4fe558f3b46023be0dac5ed73541ece58cba2f88a",
511
+ "sha256:576dac060887adc6067ee9d23fb2f0031fb2b3e560e07a6c9e666e05f0473af7",
512
+ "sha256:59c5505026646da6d5ced6a5316d6d191d011e8be422cba4abce71730ef37dc6",
513
+ "sha256:6472e3a780087eecd67c03e5455aecb209de51bcae74583222976f6b816f6192",
514
+ "sha256:6c550d08c4d2882a83293a724b14a262ee5078fd4fa7acdc78aa59cab26ae343",
515
+ "sha256:811d85a70ac97cddeb1755282915e8a93c279dcf89513426f28617b8feff5aec",
516
+ "sha256:85e362d2d0e85e45f0affae7bbfaf998b00167c55a78d31ee0f214de9ff429d2",
517
+ "sha256:94b143ea5d22b0c1ca4a591265afe135272c69b7757e968e34fbb47a7858d1ce",
518
+ "sha256:9c152a82613fa012ab4331bb9a0ffddb415e37561d376b910bf9e7d535607faf",
519
+ "sha256:a7d6e3f5d9fd0cf8a84fb382d4e3ad2914331be4d929f17d50da01f1571c4b03",
520
+ "sha256:b69e6608cc94e110018b721a11718d480a6330e0b62cbab65a22880e84011205",
521
+ "sha256:c28e33bfc56d4204693f213abeab927f65c505ce91f668a039720bc7c46b0353",
522
+ "sha256:c7b8d3f2a2c9b7e6feaf1f20bdb6ebb8210e207b8c5360ffe407a47efeeb3fb8",
523
+ "sha256:c9b9e1e7ba99a80bb50c12027d6ce692574f77a65bf57bc97041cf81c0f49bd1",
524
+ "sha256:d708e8f655d3b556a138f13e9fcb2d8a10a6901e3125c04cad5ef7c883191fe8",
525
+ "sha256:daa405028b9fe92bfbb93624e13e0674a242a1c5434b70ef61a04294502fdb65",
526
+ "sha256:dcfa601d95c00aa670ec5e4bf791caf6ba0bcf266de940fb54d44c278bd302fe",
527
+ "sha256:f59275168cae1b02ca1ec7586a9804bb04ce427df92f8582a80d16e96c846b78"
528
+ ],
529
+ "markers": "platform_system == 'Darwin'",
530
+ "version": "==8.2.13"
531
+ },
504
532
  "google-auth": {
505
533
  "hashes": [
506
534
  "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca",
@@ -509,66 +537,6 @@
509
537
  "markers": "python_version >= '3.7'",
510
538
  "version": "==2.40.3"
511
539
  },
512
- "greenlet": {
513
- "hashes": [
514
- "sha256:003c930e0e074db83559edc8705f3a2d066d4aa8c2f198aff1e454946efd0f26",
515
- "sha256:024571bbce5f2c1cfff08bf3fbaa43bbc7444f580ae13b0099e95d0e6e67ed36",
516
- "sha256:02b0df6f63cd15012bed5401b47829cfd2e97052dc89da3cfaf2c779124eb892",
517
- "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83",
518
- "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688",
519
- "sha256:1afd685acd5597349ee6d7a88a8bec83ce13c106ac78c196ee9dde7c04fe87be",
520
- "sha256:22eb5ba839c4b2156f18f76768233fe44b23a31decd9cc0d4cc8141c211fd1b4",
521
- "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d",
522
- "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5",
523
- "sha256:2c724620a101f8170065d7dded3f962a2aea7a7dae133a009cada42847e04a7b",
524
- "sha256:2d8aa5423cd4a396792f6d4580f88bdc6efcb9205891c9d40d20f6e670992efb",
525
- "sha256:3d04332dddb10b4a211b68111dabaee2e1a073663d117dc10247b5b1642bac86",
526
- "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c",
527
- "sha256:42efc522c0bd75ffa11a71e09cd8a399d83fafe36db250a87cf1dacfaa15dc64",
528
- "sha256:4532f0d25df67f896d137431b13f4cdce89f7e3d4a96387a41290910df4d3a57",
529
- "sha256:49c8cfb18fb419b3d08e011228ef8a25882397f3a859b9fe1436946140b6756b",
530
- "sha256:500b8689aa9dd1ab26872a34084503aeddefcb438e2e7317b89b11eaea1901ad",
531
- "sha256:5035d77a27b7c62db6cf41cf786cfe2242644a7a337a0e155c80960598baab95",
532
- "sha256:5195fb1e75e592dd04ce79881c8a22becdfa3e6f500e7feb059b1e6fdd54d3e3",
533
- "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147",
534
- "sha256:68671180e3849b963649254a882cd544a3c75bfcd2c527346ad8bb53494444db",
535
- "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb",
536
- "sha256:72e77ed69312bab0434d7292316d5afd6896192ac4327d44f3d613ecb85b037c",
537
- "sha256:731e154aba8e757aedd0781d4b240f1225b075b4409f1bb83b05ff410582cf00",
538
- "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849",
539
- "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba",
540
- "sha256:761917cac215c61e9dc7324b2606107b3b292a8349bdebb31503ab4de3f559ac",
541
- "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822",
542
- "sha256:7e70ea4384b81ef9e84192e8a77fb87573138aa5d4feee541d8014e452b434da",
543
- "sha256:8186162dffde068a465deab08fc72c767196895c39db26ab1c17c0b77a6d8b97",
544
- "sha256:8324319cbd7b35b97990090808fdc99c27fe5338f87db50514959f8059999805",
545
- "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34",
546
- "sha256:86c2d68e87107c1792e2e8d5399acec2487a4e993ab76c792408e59394d52141",
547
- "sha256:8704b3768d2f51150626962f4b9a9e4a17d2e37c8a8d9867bbd9fa4eb938d3b3",
548
- "sha256:873abe55f134c48e1f2a6f53f7d1419192a3d1a4e873bace00499a4e45ea6af0",
549
- "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b",
550
- "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365",
551
- "sha256:8c37ef5b3787567d322331d5250e44e42b58c8c713859b8a04c6065f27efbf72",
552
- "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a",
553
- "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc",
554
- "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163",
555
- "sha256:96c20252c2f792defe9a115d3287e14811036d51e78b3aaddbee23b69b216302",
556
- "sha256:a07d3472c2a93117af3b0136f246b2833fdc0b542d4a9799ae5f41c28323faef",
557
- "sha256:a433dbc54e4a37e4fff90ef34f25a8c00aed99b06856f0119dcf09fbafa16392",
558
- "sha256:aaa7aae1e7f75eaa3ae400ad98f8644bb81e1dc6ba47ce8a93d3f17274e08322",
559
- "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d",
560
- "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264",
561
- "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b",
562
- "sha256:ce539fb52fb774d0802175d37fcff5c723e2c7d249c65916257f0a940cee8904",
563
- "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf",
564
- "sha256:d760f9bdfe79bff803bad32b4d8ffb2c1d2ce906313fc10a83976ffb73d64ca7",
565
- "sha256:ed6cfa9200484d234d8394c70f5492f144b20d4533f69262d530a1a082f6ee9a",
566
- "sha256:efc6dc8a792243c31f2f5674b670b3a95d46fa1c6a912b8e310d6f542e7b0712",
567
- "sha256:f4bfbaa6096b1b7a200024784217defedf46a07c2eee1a498e94a1b5f8ec5728"
568
- ],
569
- "markers": "python_version >= '3.9'",
570
- "version": "==3.2.3"
571
- },
572
540
  "hiredis": {
573
541
  "hashes": [
574
542
  "sha256:0079ef1e03930b364556b78548e67236ab3def4e07e674f6adfc52944aa972dd",
@@ -812,14 +780,6 @@
812
780
  "markers": "python_version >= '3.5' and python_version < '4.0'",
813
781
  "version": "==0.7.3"
814
782
  },
815
- "markdown-it-py": {
816
- "hashes": [
817
- "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1",
818
- "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"
819
- ],
820
- "markers": "python_version >= '3.8'",
821
- "version": "==3.0.0"
822
- },
823
783
  "markupsafe": {
824
784
  "hashes": [
825
785
  "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4",
@@ -887,14 +847,6 @@
887
847
  "markers": "python_version >= '3.9'",
888
848
  "version": "==3.0.2"
889
849
  },
890
- "mdurl": {
891
- "hashes": [
892
- "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8",
893
- "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"
894
- ],
895
- "markers": "python_version >= '3.7'",
896
- "version": "==0.1.2"
897
- },
898
850
  "mmh3": {
899
851
  "hashes": [
900
852
  "sha256:00f810647c22c179b6821079f7aa306d51953ac893587ee09cf1afb35adf87cb",
@@ -991,30 +943,13 @@
991
943
  "markers": "python_version >= '3.8'",
992
944
  "version": "==0.10.0.dev2"
993
945
  },
994
- "netmiko": {
995
- "hashes": [
996
- "sha256:42d81fb906339af1fb5c6899f181f5cb5c9b03311262ba56c696b113e1f2f61a",
997
- "sha256:dbdfc20b6caaf8e5d7a570bb1b42a26b9a6f8d8234e91f5c65f4dbfe0c0e4f50"
998
- ],
999
- "index": "pypi",
1000
- "markers": "python_version >= '3.9' and python_version < '4.0'",
1001
- "version": "==4.5.0"
1002
- },
1003
- "ntc-templates": {
1004
- "hashes": [
1005
- "sha256:44ae2651719592bb70e98886f363b15bab12892b37f8338f0a2255aa5c7b6ee3",
1006
- "sha256:df4b4520c3dd41b33ad0746ea7742c63b13eb2860579c7648c348167af5432e2"
1007
- ],
1008
- "markers": "python_version >= '3.8' and python_version < '4.0'",
1009
- "version": "==7.9.0"
1010
- },
1011
946
  "oauthlib": {
1012
947
  "hashes": [
1013
- "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca",
1014
- "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"
948
+ "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9",
949
+ "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1"
1015
950
  ],
1016
- "markers": "python_version >= '3.6'",
1017
- "version": "==3.2.2"
951
+ "markers": "python_version >= '3.8'",
952
+ "version": "==3.3.1"
1018
953
  },
1019
954
  "openstacksdk": {
1020
955
  "hashes": [
@@ -1053,6 +988,7 @@
1053
988
  "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61",
1054
989
  "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822"
1055
990
  ],
991
+ "index": "pypi",
1056
992
  "markers": "python_version >= '3.6'",
1057
993
  "version": "==3.5.1"
1058
994
  },
@@ -1176,11 +1112,11 @@
1176
1112
  },
1177
1113
  "pydantic": {
1178
1114
  "hashes": [
1179
- "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a",
1180
- "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7"
1115
+ "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db",
1116
+ "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"
1181
1117
  ],
1182
1118
  "markers": "python_version >= '3.9'",
1183
- "version": "==2.11.5"
1119
+ "version": "==2.11.7"
1184
1120
  },
1185
1121
  "pydantic-core": {
1186
1122
  "hashes": [
@@ -1289,11 +1225,11 @@
1289
1225
  },
1290
1226
  "pygments": {
1291
1227
  "hashes": [
1292
- "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f",
1293
- "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"
1228
+ "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887",
1229
+ "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"
1294
1230
  ],
1295
1231
  "markers": "python_version >= '3.8'",
1296
- "version": "==2.19.1"
1232
+ "version": "==2.19.2"
1297
1233
  },
1298
1234
  "pynacl": {
1299
1235
  "hashes": [
@@ -1325,20 +1261,13 @@
1325
1261
  ],
1326
1262
  "version": "==1.9.0"
1327
1263
  },
1328
- "pyserial": {
1329
- "hashes": [
1330
- "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb",
1331
- "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"
1332
- ],
1333
- "version": "==3.5"
1334
- },
1335
1264
  "pytest": {
1336
1265
  "hashes": [
1337
- "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6",
1338
- "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e"
1266
+ "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7",
1267
+ "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"
1339
1268
  ],
1340
1269
  "markers": "python_version >= '3.9'",
1341
- "version": "==8.4.0"
1270
+ "version": "==8.4.1"
1342
1271
  },
1343
1272
  "pytest-testinfra": {
1344
1273
  "hashes": [
@@ -1464,14 +1393,6 @@
1464
1393
  ],
1465
1394
  "version": "==1.4.0"
1466
1395
  },
1467
- "rich": {
1468
- "hashes": [
1469
- "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0",
1470
- "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"
1471
- ],
1472
- "markers": "python_full_version >= '3.8.0'",
1473
- "version": "==14.0.0"
1474
- },
1475
1396
  "rsa": {
1476
1397
  "hashes": [
1477
1398
  "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762",
@@ -1540,13 +1461,6 @@
1540
1461
  "markers": "python_version >= '3.9'",
1541
1462
  "version": "==0.2.12"
1542
1463
  },
1543
- "scp": {
1544
- "hashes": [
1545
- "sha256:9e7f721e5ac563c33eb0831d0f949c6342f1c28c3bdc3b02f39d77b5ea20df7e",
1546
- "sha256:f1b22e9932123ccf17eebf19e0953c6e9148f589f93d91b872941a696305c83f"
1547
- ],
1548
- "version": "==0.15.0"
1549
- },
1550
1464
  "setuptools": {
1551
1465
  "hashes": [
1552
1466
  "sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922",
@@ -1661,13 +1575,6 @@
1661
1575
  "markers": "python_version >= '3.9'",
1662
1576
  "version": "==5.6.0"
1663
1577
  },
1664
- "textfsm": {
1665
- "hashes": [
1666
- "sha256:577ef278a9237f5341ae9b682947cefa4a2c1b24dbe486f94f2c95addc6504b5",
1667
- "sha256:dcbeebc6a6137bed561c71a56344d752e6dbc04ae5ea309252cb70fb97ccc9cd"
1668
- ],
1669
- "version": "==1.1.3"
1670
- },
1671
1578
  "tornado": {
1672
1579
  "hashes": [
1673
1580
  "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7",
@@ -1720,11 +1627,11 @@
1720
1627
  },
1721
1628
  "urllib3": {
1722
1629
  "hashes": [
1723
- "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466",
1724
- "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813"
1630
+ "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760",
1631
+ "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc"
1725
1632
  ],
1726
1633
  "markers": "python_version >= '3.9'",
1727
- "version": "==2.4.0"
1634
+ "version": "==2.5.0"
1728
1635
  },
1729
1636
  "vine": {
1730
1637
  "hashes": [
@@ -350,6 +350,12 @@
350
350
  "ipv6_nd_cache_expiry": "1800"
351
351
  }
352
352
  },
353
+ "NTP": {
354
+ "global": {
355
+ "auth_enabled": "false",
356
+ "vrf": "mgmt"
357
+ }
358
+ },
353
359
  "NTP_SERVER": {},
354
360
  "POLICY_BINDING_TABLE": {
355
361
  "CtrlPlane": {
@@ -0,0 +1,55 @@
1
+ # name lanes alias index speed autoneg
2
+ Ethernet0 25 Eth1(Port1) 1 1000 on
3
+ Ethernet1 26 Eth2(Port2) 2 1000 on
4
+ Ethernet2 27 Eth3(Port3) 3 1000 on
5
+ Ethernet3 28 Eth4(Port4) 4 1000 on
6
+ Ethernet4 29 Eth5(Port5) 5 1000 on
7
+ Ethernet5 30 Eth6(Port6) 6 1000 on
8
+ Ethernet6 31 Eth7(Port7) 7 1000 on
9
+ Ethernet7 32 Eth8(Port8) 8 1000 on
10
+ Ethernet8 33 Eth9(Port9) 9 1000 on
11
+ Ethernet9 34 Eth10(Port10) 10 1000 on
12
+ Ethernet10 35 Eth11(Port11) 11 1000 on
13
+ Ethernet11 36 Eth12(Port12) 12 1000 on
14
+ Ethernet12 37 Eth13(Port13) 13 1000 on
15
+ Ethernet13 38 Eth14(Port14) 14 1000 on
16
+ Ethernet14 39 Eth15(Port15) 15 1000 on
17
+ Ethernet15 40 Eth16(Port16) 16 1000 on
18
+ Ethernet16 41 Eth17(Port17) 17 1000 on
19
+ Ethernet17 42 Eth18(Port18) 18 1000 on
20
+ Ethernet18 43 Eth19(Port19) 19 1000 on
21
+ Ethernet19 44 Eth20(Port20) 20 1000 on
22
+ Ethernet20 49 Eth21(Port21) 21 1000 on
23
+ Ethernet21 50 Eth22(Port22) 22 1000 on
24
+ Ethernet22 51 Eth23(Port23) 23 1000 on
25
+ Ethernet23 52 Eth24(Port24) 24 1000 on
26
+ Ethernet24 1 Eth25(Port25) 25 1000 on
27
+ Ethernet25 2 Eth26(Port26) 26 1000 on
28
+ Ethernet26 3 Eth27(Port27) 27 1000 on
29
+ Ethernet27 4 Eth28(Port28) 28 1000 on
30
+ Ethernet28 5 Eth29(Port29) 29 1000 on
31
+ Ethernet29 6 Eth30(Port30) 30 1000 on
32
+ Ethernet30 7 Eth31(Port31) 31 1000 on
33
+ Ethernet31 8 Eth32(Port32) 32 1000 on
34
+ Ethernet32 9 Eth33(Port33) 33 1000 on
35
+ Ethernet33 10 Eth34(Port34) 34 1000 on
36
+ Ethernet34 11 Eth35(Port35) 35 1000 on
37
+ Ethernet35 12 Eth36(Port36) 36 1000 on
38
+ Ethernet36 13 Eth37(Port37) 37 1000 on
39
+ Ethernet37 14 Eth38(Port38) 38 1000 on
40
+ Ethernet38 15 Eth39(Port39) 39 1000 on
41
+ Ethernet39 16 Eth40(Port40) 40 1000 on
42
+ Ethernet40 17 Eth41(Port41) 41 1000 on
43
+ Ethernet41 18 Eth42(Port42) 42 1000 on
44
+ Ethernet42 19 Eth43(Port43) 43 1000 on
45
+ Ethernet43 20 Eth44(Port44) 44 1000 on
46
+ Ethernet44 21 Eth45(Port45) 45 1000 on
47
+ Ethernet45 22 Eth46(Port46) 46 1000 on
48
+ Ethernet46 23 Eth47(Port47) 47 1000 on
49
+ Ethernet47 24 Eth48(Port48) 48 1000 on
50
+ Ethernet48 57 Eth49(Port49) 49 10000 off
51
+ Ethernet49 58 Eth50(Port50) 50 10000 off
52
+ Ethernet50 59 Eth51(Port51) 51 10000 off
53
+ Ethernet51 60 Eth52(Port52) 52 10000 off
54
+ Ethernet52 61 Eth53(Port53) 53 10000 off
55
+ Ethernet53 62 Eth54(Port54) 54 10000 off
@@ -79,27 +79,71 @@ baremetal_events = BaremetalEvents()
79
79
 
80
80
  @app.get("/")
81
81
  async def root():
82
- return {"message": "Hello World"}
82
+ return {"result": "ok"}
83
83
 
84
84
 
85
- @app.post("/meters/sink")
85
+ @app.get("/v1")
86
+ async def v1():
87
+ return {"result": "ok"}
88
+
89
+
90
+ @app.post("/v1/meters/sink")
86
91
  async def write_sink_meters(request: Request):
87
92
  data = await request.json()
88
93
 
89
94
 
90
- @app.post("/events/sink")
95
+ @app.post("/v1/events/sink")
91
96
  async def write_sink_events(request: Request):
92
97
  data = await request.json()
93
98
 
94
99
 
95
- @app.post("/notifications/baremetal", status_code=204)
100
+ @app.post("/v1/notifications/baremetal", status_code=204)
96
101
  async def notifications_baremetal(notification: NotificationBaremetal) -> None:
97
102
 
98
103
  handler = baremetal_events.get_handler(notification.event_type)
99
104
  handler(notification.payload)
100
105
 
101
106
 
102
- @app.post("/webhook/netbox", response_model=WebhookNetboxResponse, status_code=200)
107
+ @app.post("/v1/switches/{identifier}/ztp/complete")
108
+ async def switches_ztp_complete(identifier: str):
109
+ if not utils.nb:
110
+ return {"result": "netbox not enabled"}
111
+
112
+ device = None
113
+
114
+ # Search by device name
115
+ devices = utils.nb.dcim.devices.filter(name=identifier)
116
+ if devices:
117
+ device = devices[0]
118
+
119
+ # Search by inventory_hostname custom field
120
+ if not device:
121
+ devices = utils.nb.dcim.devices.filter(cf_inventory_hostname=identifier)
122
+ if devices:
123
+ device = devices[0]
124
+
125
+ # Search by serial number
126
+ if not device:
127
+ devices = utils.nb.dcim.devices.filter(serial=identifier)
128
+ if devices:
129
+ device = devices[0]
130
+
131
+ if device:
132
+ logger.info(
133
+ f"Found device {device.name} for ZTP complete with identifier {identifier}"
134
+ )
135
+
136
+ # Set provision_state custom field to active
137
+ device.custom_fields["provision_state"] = "active"
138
+ device.save()
139
+
140
+ return {"result": "ok", "device": device.name}
141
+ else:
142
+ logger.warning(f"No device found for ZTP complete with identifier {identifier}")
143
+ return {"result": "device not found"}
144
+
145
+
146
+ @app.post("/v1/webhook/netbox", response_model=WebhookNetboxResponse, status_code=200)
103
147
  async def webhook(
104
148
  webhook_input: WebhookNetboxData,
105
149
  request: Request,