osism 0.20250525.0__tar.gz → 0.20250602.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.
- osism-0.20250602.0/AUTHORS +1 -0
- osism-0.20250602.0/ChangeLog +7 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/Containerfile +1 -1
- {osism-0.20250525.0 → osism-0.20250602.0}/Dockerfile +1 -1
- {osism-0.20250525.0/osism.egg-info → osism-0.20250602.0}/PKG-INFO +5 -5
- {osism-0.20250525.0 → osism-0.20250602.0}/Pipfile +3 -3
- {osism-0.20250525.0 → osism-0.20250602.0}/Pipfile.lock +113 -66
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/apply.py +1 -1
- osism-0.20250602.0/osism/commands/baremetal.py +237 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/netbox.py +1 -1
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/reconciler.py +2 -1
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/__init__.py +2 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/conductor.py +22 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/netbox.py +5 -0
- {osism-0.20250525.0 → osism-0.20250602.0/osism.egg-info}/PKG-INFO +5 -5
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/SOURCES.txt +1 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/entry_points.txt +3 -0
- osism-0.20250602.0/osism.egg-info/pbr.json +1 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/requires.txt +4 -4
- osism-0.20250602.0/requirements.netbox-manager.txt +1 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/requirements.txt +4 -4
- {osism-0.20250525.0 → osism-0.20250602.0}/setup.cfg +3 -0
- osism-0.20250525.0/AUTHORS +0 -1
- osism-0.20250525.0/ChangeLog +0 -7
- osism-0.20250525.0/osism.egg-info/pbr.json +0 -1
- osism-0.20250525.0/requirements.netbox-manager.txt +0 -1
- {osism-0.20250525.0 → osism-0.20250602.0}/.flake8 +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/.github/renovate.json +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/.github/workflows/publish.yml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/.hadolint.yaml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/.zuul.yaml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/LICENSE +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/README.md +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/change.sh +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/cleanup-ansible-collections.sh +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/clustershell/clush.conf +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/clustershell/groups.conf +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/netbox-manager/settings.toml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/files/run-ansible-console.sh +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/__main__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/actions/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/api.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/compose.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/compute.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/configuration.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/console.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/container.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/get.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/log.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/manage.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/noset.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/server.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/service.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/set.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/status.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/sync.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/task.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/validate.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/vault.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/volume.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/wait.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/commands/worker.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/core/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/core/enums.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/core/playbooks.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/data/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/main.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/plugins/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/services/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/services/listener.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/settings.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/ansible.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/ceph.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/kolla.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/kubernetes.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/openstack.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/tasks/reconciler.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism/utils/__init__.py +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/dependency_links.txt +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/not-zip-safe +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/osism.egg-info/top_level.txt +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/playbooks/build.yml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/playbooks/pre.yml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/playbooks/test-setup.yml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/requirements.ansible.txt +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/requirements.openstack-flavor-manager.txt +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/requirements.openstack-image-manager.txt +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/requirements.yml +0 -0
- {osism-0.20250525.0 → osism-0.20250602.0}/setup.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
Christian Berendt <berendt@osism.tech>
|
@@ -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.
|
10
|
+
COPY --from=ghcr.io/astral-sh/uv:0.7.9 /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.
|
10
|
+
COPY --from=ghcr.io/astral-sh/uv:0.7.9 /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.
|
3
|
+
Version: 0.20250602.0
|
4
4
|
Summary: OSISM manager interface
|
5
5
|
Home-page: https://github.com/osism/python-osism
|
6
6
|
Author: OSISM GmbH
|
@@ -26,7 +26,7 @@ Requires-Dist: GitPython==3.1.44
|
|
26
26
|
Requires-Dist: Jinja2==3.1.6
|
27
27
|
Requires-Dist: PyYAML==6.0.2
|
28
28
|
Requires-Dist: ara==1.7.2
|
29
|
-
Requires-Dist: celery[redis]==5.5.
|
29
|
+
Requires-Dist: celery[redis]==5.5.3
|
30
30
|
Requires-Dist: cliff==4.10.0
|
31
31
|
Requires-Dist: deepdiff==8.5.0
|
32
32
|
Requires-Dist: docker==7.1.0
|
@@ -36,7 +36,7 @@ Requires-Dist: flower==2.0.1
|
|
36
36
|
Requires-Dist: hiredis==3.2.1
|
37
37
|
Requires-Dist: jc==1.25.5
|
38
38
|
Requires-Dist: keystoneauth1==5.11.0
|
39
|
-
Requires-Dist: kombu==5.5.
|
39
|
+
Requires-Dist: kombu==5.5.4
|
40
40
|
Requires-Dist: kubernetes==32.0.1
|
41
41
|
Requires-Dist: loguru==0.7.3
|
42
42
|
Requires-Dist: nbcli==0.10.0.dev2
|
@@ -47,12 +47,12 @@ Requires-Dist: prompt-toolkit==3.0.51
|
|
47
47
|
Requires-Dist: pynetbox==7.5.0
|
48
48
|
Requires-Dist: pytest-testinfra==10.2.2
|
49
49
|
Requires-Dist: python-dateutil==2.9.0.post0
|
50
|
-
Requires-Dist: setuptools==80.
|
50
|
+
Requires-Dist: setuptools==80.9.0
|
51
51
|
Requires-Dist: sqlmodel==0.0.24
|
52
52
|
Requires-Dist: sushy==5.6.0
|
53
53
|
Requires-Dist: tabulate==0.9.0
|
54
54
|
Requires-Dist: transitions==0.9.2
|
55
|
-
Requires-Dist: uvicorn[standard]==0.34.
|
55
|
+
Requires-Dist: uvicorn[standard]==0.34.3
|
56
56
|
Requires-Dist: watchdog==6.0.0
|
57
57
|
Provides-Extra: ansible
|
58
58
|
Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
|
@@ -10,7 +10,7 @@ Jinja2 = "==3.1.6"
|
|
10
10
|
PyYAML = "==6.0.2"
|
11
11
|
ansible-runner = "==2.4.1"
|
12
12
|
ara = "==1.7.2"
|
13
|
-
celery = {version = "==5.5.
|
13
|
+
celery = {version = "==5.5.3", extras = ["redis"]}
|
14
14
|
cliff = "==4.10.0"
|
15
15
|
deepdiff = "==8.5.0"
|
16
16
|
docker = "==7.1.0"
|
@@ -20,7 +20,7 @@ hiredis = "==3.2.1"
|
|
20
20
|
huey = "==2.5.3"
|
21
21
|
jc = "==1.25.5"
|
22
22
|
keystoneauth1 = "==5.11.0"
|
23
|
-
kombu = "==5.5.
|
23
|
+
kombu = "==5.5.4"
|
24
24
|
kubernetes = "==32.0.1"
|
25
25
|
loguru = "==0.7.3"
|
26
26
|
nbcli = "0.10.0.dev2"
|
@@ -31,7 +31,7 @@ prompt-toolkit = "==3.0.51"
|
|
31
31
|
pynetbox = "==7.5.0"
|
32
32
|
pytest-testinfra = "==10.2.2"
|
33
33
|
python-dateutil = "==2.9.0.post0"
|
34
|
-
setuptools = "==80.
|
34
|
+
setuptools = "==80.9.0"
|
35
35
|
sqlmodel = "==0.0.24"
|
36
36
|
sushy = "==5.6.0"
|
37
37
|
transitions = "==0.9.2"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"_meta": {
|
3
3
|
"hash": {
|
4
|
-
"sha256": "
|
4
|
+
"sha256": "1ff9f04228dbfaeaffb96e1ce0da94559d562d17f9888d8db4b4a759effe22dc"
|
5
5
|
},
|
6
6
|
"pipfile-spec": 6,
|
7
7
|
"requires": {},
|
@@ -134,11 +134,11 @@
|
|
134
134
|
"redis"
|
135
135
|
],
|
136
136
|
"hashes": [
|
137
|
-
"sha256:
|
138
|
-
"sha256:
|
137
|
+
"sha256:0b5761a07057acee94694464ca482416b959568904c9dfa41ce8413a7d65d525",
|
138
|
+
"sha256:6c972ae7968c2b5281227f01c3a3f984037d21c5129d07bf3550cc2afc6b10a5"
|
139
139
|
],
|
140
140
|
"markers": "python_version >= '3.8'",
|
141
|
-
"version": "==5.5.
|
141
|
+
"version": "==5.5.3"
|
142
142
|
},
|
143
143
|
"certifi": {
|
144
144
|
"hashes": [
|
@@ -368,54 +368,54 @@
|
|
368
368
|
},
|
369
369
|
"cmd2": {
|
370
370
|
"hashes": [
|
371
|
-
"sha256:
|
372
|
-
"sha256:
|
371
|
+
"sha256:832f8121c4f21ebf2af4292051b34579d7d4c9e917dc54f8e322feb911d76da1",
|
372
|
+
"sha256:8cffaba7810526421cab3bfa0101b4907e1298ff2bcd8119615965a2eae5d95f"
|
373
373
|
],
|
374
|
-
"markers": "python_version >= '3.
|
375
|
-
"version": "==2.
|
374
|
+
"markers": "python_version >= '3.9'",
|
375
|
+
"version": "==2.6.0"
|
376
376
|
},
|
377
377
|
"cryptography": {
|
378
378
|
"hashes": [
|
379
|
-
"sha256:
|
380
|
-
"sha256:
|
381
|
-
"sha256:
|
382
|
-
"sha256:
|
383
|
-
"sha256:
|
384
|
-
"sha256:
|
385
|
-
"sha256:
|
386
|
-
"sha256:
|
387
|
-
"sha256:
|
388
|
-
"sha256:
|
389
|
-
"sha256:
|
390
|
-
"sha256:
|
391
|
-
"sha256:
|
392
|
-
"sha256:
|
393
|
-
"sha256:
|
394
|
-
"sha256:
|
395
|
-
"sha256:
|
396
|
-
"sha256:
|
397
|
-
"sha256:
|
398
|
-
"sha256:
|
399
|
-
"sha256:
|
400
|
-
"sha256:
|
401
|
-
"sha256:
|
402
|
-
"sha256:
|
403
|
-
"sha256:
|
404
|
-
"sha256:
|
405
|
-
"sha256:
|
406
|
-
"sha256:
|
407
|
-
"sha256:
|
408
|
-
"sha256:
|
409
|
-
"sha256:
|
410
|
-
"sha256:
|
411
|
-
"sha256:
|
412
|
-
"sha256:
|
413
|
-
"sha256:
|
414
|
-
"sha256:
|
415
|
-
"sha256:
|
379
|
+
"sha256:00094838ecc7c6594171e8c8a9166124c1197b074cfca23645cee573910d76bc",
|
380
|
+
"sha256:050ce5209d5072472971e6efbfc8ec5a8f9a841de5a4db0ebd9c2e392cb81972",
|
381
|
+
"sha256:232954730c362638544758a8160c4ee1b832dc011d2c41a306ad8f7cccc5bb0b",
|
382
|
+
"sha256:25286aacb947286620a31f78f2ed1a32cded7be5d8b729ba3fb2c988457639e4",
|
383
|
+
"sha256:2f8f8f0b73b885ddd7f3d8c2b2234a7d3ba49002b0223f58cfde1bedd9563c56",
|
384
|
+
"sha256:38deed72285c7ed699864f964a3f4cf11ab3fb38e8d39cfcd96710cd2b5bb716",
|
385
|
+
"sha256:3ad69eeb92a9de9421e1f6685e85a10fbcfb75c833b42cc9bc2ba9fb00da4710",
|
386
|
+
"sha256:5555365a50efe1f486eed6ac7062c33b97ccef409f5970a0b6f205a7cfab59c8",
|
387
|
+
"sha256:555e5e2d3a53b4fabeca32835878b2818b3f23966a4efb0d566689777c5a12c8",
|
388
|
+
"sha256:57a6500d459e8035e813bd8b51b671977fb149a8c95ed814989da682314d0782",
|
389
|
+
"sha256:5833bb4355cb377ebd880457663a972cd044e7f49585aee39245c0d592904578",
|
390
|
+
"sha256:71320fbefd05454ef2d457c481ba9a5b0e540f3753354fff6f780927c25d19b0",
|
391
|
+
"sha256:7573d9eebaeceeb55285205dbbb8753ac1e962af3d9640791d12b36864065e71",
|
392
|
+
"sha256:92d5f428c1a0439b2040435a1d6bc1b26ebf0af88b093c3628913dd464d13fa1",
|
393
|
+
"sha256:97787952246a77d77934d41b62fb1b6f3581d83f71b44796a4158d93b8f5c490",
|
394
|
+
"sha256:9bb5bf55dcb69f7067d80354d0a348368da907345a2c448b0babc4215ccd3497",
|
395
|
+
"sha256:9cc80ce69032ffa528b5e16d217fa4d8d4bb7d6ba8659c1b4d74a1b0f4235fca",
|
396
|
+
"sha256:9e4253ed8f5948a3589b3caee7ad9a5bf218ffd16869c516535325fece163dcc",
|
397
|
+
"sha256:9eda14f049d7f09c2e8fb411dda17dd6b16a3c76a1de5e249188a32aeb92de19",
|
398
|
+
"sha256:a2b56de3417fd5f48773ad8e91abaa700b678dc7fe1e0c757e1ae340779acf7b",
|
399
|
+
"sha256:af3f92b1dc25621f5fad065288a44ac790c5798e986a34d393ab27d2b27fcff9",
|
400
|
+
"sha256:c5edcb90da1843df85292ef3a313513766a78fbbb83f584a5a58fb001a5a9d57",
|
401
|
+
"sha256:c824c9281cb628015bfc3c59335163d4ca0540d49de4582d6c2637312907e4b1",
|
402
|
+
"sha256:c92519d242703b675ccefd0f0562eb45e74d438e001f8ab52d628e885751fb06",
|
403
|
+
"sha256:ca932e11218bcc9ef812aa497cdf669484870ecbcf2d99b765d6c27a86000942",
|
404
|
+
"sha256:cb6ab89421bc90e0422aca911c69044c2912fc3debb19bb3c1bfe28ee3dff6ab",
|
405
|
+
"sha256:cfd84777b4b6684955ce86156cfb5e08d75e80dc2585e10d69e47f014f0a5342",
|
406
|
+
"sha256:d377dde61c5d67eb4311eace661c3efda46c62113ff56bf05e2d679e02aebb5b",
|
407
|
+
"sha256:d54ae41e6bd70ea23707843021c778f151ca258081586f0cfa31d936ae43d1b2",
|
408
|
+
"sha256:dc10ec1e9f21f33420cc05214989544727e776286c1c16697178978327b95c9c",
|
409
|
+
"sha256:ec21313dd335c51d7877baf2972569f40a4291b76a0ce51391523ae358d05899",
|
410
|
+
"sha256:ec64ee375b5aaa354b2b273c921144a660a511f9df8785e6d1c942967106438e",
|
411
|
+
"sha256:ed43d396f42028c1f47b5fec012e9e12631266e3825e95c00e3cf94d472dac49",
|
412
|
+
"sha256:edd6d51869beb7f0d472e902ef231a9b7689508e83880ea16ca3311a00bf5ce7",
|
413
|
+
"sha256:f22af3c78abfbc7cbcdf2c55d23c3e022e1a462ee2481011d518c7fb9c9f3d65",
|
414
|
+
"sha256:fae1e637f527750811588e4582988932c222f8251f7b7ea93739acb624e1487f",
|
415
|
+
"sha256:fed5aaca1750e46db870874c9c273cd5182a9e9deb16f06f7bdffdb5c2bde4b9"
|
416
416
|
],
|
417
417
|
"markers": "python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1'",
|
418
|
-
"version": "==45.0.
|
418
|
+
"version": "==45.0.3"
|
419
419
|
},
|
420
420
|
"decorator": {
|
421
421
|
"hashes": [
|
@@ -777,13 +777,16 @@
|
|
777
777
|
"version": "==5.11.0"
|
778
778
|
},
|
779
779
|
"kombu": {
|
780
|
+
"extras": [
|
781
|
+
"redis"
|
782
|
+
],
|
780
783
|
"hashes": [
|
781
|
-
"sha256:
|
782
|
-
"sha256:
|
784
|
+
"sha256:886600168275ebeada93b888e831352fe578168342f0d1d5833d88ba0d847363",
|
785
|
+
"sha256:a12ed0557c238897d8e518f1d1fdf84bd1516c5e305af2dacd85c2015115feb8"
|
783
786
|
],
|
784
787
|
"index": "pypi",
|
785
788
|
"markers": "python_version >= '3.8'",
|
786
|
-
"version": "==5.5.
|
789
|
+
"version": "==5.5.4"
|
787
790
|
},
|
788
791
|
"kubernetes": {
|
789
792
|
"hashes": [
|
@@ -1293,14 +1296,6 @@
|
|
1293
1296
|
"markers": "python_version >= '3.8'",
|
1294
1297
|
"version": "==2.19.1"
|
1295
1298
|
},
|
1296
|
-
"pyjwt": {
|
1297
|
-
"hashes": [
|
1298
|
-
"sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850",
|
1299
|
-
"sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"
|
1300
|
-
],
|
1301
|
-
"markers": "python_version >= '3.8'",
|
1302
|
-
"version": "==2.9.0"
|
1303
|
-
},
|
1304
1299
|
"pynacl": {
|
1305
1300
|
"hashes": [
|
1306
1301
|
"sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858",
|
@@ -1441,11 +1436,11 @@
|
|
1441
1436
|
},
|
1442
1437
|
"redis": {
|
1443
1438
|
"hashes": [
|
1444
|
-
"sha256:
|
1445
|
-
"sha256:
|
1439
|
+
"sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f",
|
1440
|
+
"sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4"
|
1446
1441
|
],
|
1447
1442
|
"markers": "python_version >= '3.8'",
|
1448
|
-
"version": "==5.
|
1443
|
+
"version": "==5.2.1"
|
1449
1444
|
},
|
1450
1445
|
"requests": {
|
1451
1446
|
"hashes": [
|
@@ -1488,11 +1483,63 @@
|
|
1488
1483
|
},
|
1489
1484
|
"ruamel.yaml": {
|
1490
1485
|
"hashes": [
|
1491
|
-
"sha256:
|
1492
|
-
"sha256:
|
1486
|
+
"sha256:5a38fd5ce39d223bebb9e3a6779e86b9427a03fb0bf9f270060f8b149cffe5e2",
|
1487
|
+
"sha256:790ba4c48b6a6e6b12b532a7308779eb12d2aaab3a80fdb8389216f28ea2b287"
|
1493
1488
|
],
|
1494
1489
|
"markers": "python_version >= '3.7'",
|
1495
|
-
"version": "==0.18.
|
1490
|
+
"version": "==0.18.12"
|
1491
|
+
},
|
1492
|
+
"ruamel.yaml.clib": {
|
1493
|
+
"hashes": [
|
1494
|
+
"sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b",
|
1495
|
+
"sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4",
|
1496
|
+
"sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef",
|
1497
|
+
"sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5",
|
1498
|
+
"sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3",
|
1499
|
+
"sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632",
|
1500
|
+
"sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6",
|
1501
|
+
"sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7",
|
1502
|
+
"sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680",
|
1503
|
+
"sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf",
|
1504
|
+
"sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da",
|
1505
|
+
"sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6",
|
1506
|
+
"sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a",
|
1507
|
+
"sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01",
|
1508
|
+
"sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519",
|
1509
|
+
"sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6",
|
1510
|
+
"sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f",
|
1511
|
+
"sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd",
|
1512
|
+
"sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2",
|
1513
|
+
"sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52",
|
1514
|
+
"sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd",
|
1515
|
+
"sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d",
|
1516
|
+
"sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c",
|
1517
|
+
"sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6",
|
1518
|
+
"sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb",
|
1519
|
+
"sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a",
|
1520
|
+
"sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969",
|
1521
|
+
"sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28",
|
1522
|
+
"sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d",
|
1523
|
+
"sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e",
|
1524
|
+
"sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45",
|
1525
|
+
"sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4",
|
1526
|
+
"sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12",
|
1527
|
+
"sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31",
|
1528
|
+
"sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642",
|
1529
|
+
"sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e",
|
1530
|
+
"sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285",
|
1531
|
+
"sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed",
|
1532
|
+
"sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1",
|
1533
|
+
"sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7",
|
1534
|
+
"sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3",
|
1535
|
+
"sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475",
|
1536
|
+
"sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5",
|
1537
|
+
"sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76",
|
1538
|
+
"sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987",
|
1539
|
+
"sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df"
|
1540
|
+
],
|
1541
|
+
"markers": "python_version >= '3.9'",
|
1542
|
+
"version": "==0.2.12"
|
1496
1543
|
},
|
1497
1544
|
"scp": {
|
1498
1545
|
"hashes": [
|
@@ -1503,12 +1550,12 @@
|
|
1503
1550
|
},
|
1504
1551
|
"setuptools": {
|
1505
1552
|
"hashes": [
|
1506
|
-
"sha256:
|
1507
|
-
"sha256:
|
1553
|
+
"sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922",
|
1554
|
+
"sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c"
|
1508
1555
|
],
|
1509
1556
|
"index": "pypi",
|
1510
1557
|
"markers": "python_version >= '3.9'",
|
1511
|
-
"version": "==80.
|
1558
|
+
"version": "==80.9.0"
|
1512
1559
|
},
|
1513
1560
|
"six": {
|
1514
1561
|
"hashes": [
|
@@ -0,0 +1,237 @@
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
2
|
+
|
3
|
+
from cliff.command import Command
|
4
|
+
|
5
|
+
from loguru import logger
|
6
|
+
import openstack
|
7
|
+
from tabulate import tabulate
|
8
|
+
import json
|
9
|
+
|
10
|
+
from osism.commands import get_cloud_connection
|
11
|
+
|
12
|
+
|
13
|
+
class BaremetalList(Command):
|
14
|
+
def get_parser(self, prog_name):
|
15
|
+
parser = super(BaremetalList, self).get_parser(prog_name)
|
16
|
+
parser.add_argument(
|
17
|
+
"--provision-state",
|
18
|
+
default=None,
|
19
|
+
choices=["enroll", "managable", "available", "active", "error"],
|
20
|
+
type=str,
|
21
|
+
help="Only list nodes with the given provision state",
|
22
|
+
)
|
23
|
+
parser.add_argument(
|
24
|
+
"--maintenance",
|
25
|
+
default=False,
|
26
|
+
action="store_true",
|
27
|
+
help="Only list baremetal nodes in maintenance mode",
|
28
|
+
)
|
29
|
+
return parser
|
30
|
+
|
31
|
+
def take_action(self, parsed_args):
|
32
|
+
provision_state = parsed_args.provision_state
|
33
|
+
maintenance = parsed_args.maintenance
|
34
|
+
|
35
|
+
conn = get_cloud_connection()
|
36
|
+
|
37
|
+
query = {}
|
38
|
+
if provision_state:
|
39
|
+
query.update(dict(provision_state=provision_state))
|
40
|
+
if maintenance:
|
41
|
+
query.update(dict(maintenance=maintenance))
|
42
|
+
|
43
|
+
baremetal = conn.baremetal.nodes(**query)
|
44
|
+
|
45
|
+
result = [
|
46
|
+
[
|
47
|
+
b["name"],
|
48
|
+
b["power_state"],
|
49
|
+
b["provision_state"],
|
50
|
+
b["maintenance"],
|
51
|
+
]
|
52
|
+
for b in baremetal
|
53
|
+
]
|
54
|
+
|
55
|
+
print(
|
56
|
+
tabulate(
|
57
|
+
result,
|
58
|
+
headers=[
|
59
|
+
"Name",
|
60
|
+
"Power State",
|
61
|
+
"Provision State",
|
62
|
+
"Maintenance",
|
63
|
+
],
|
64
|
+
tablefmt="psql",
|
65
|
+
)
|
66
|
+
)
|
67
|
+
|
68
|
+
|
69
|
+
class BaremetalDeploy(Command):
|
70
|
+
def get_parser(self, prog_name):
|
71
|
+
parser = super(BaremetalDeploy, self).get_parser(prog_name)
|
72
|
+
|
73
|
+
parser_exc_group = parser.add_mutually_exclusive_group(required=True)
|
74
|
+
parser_exc_group.add_argument(
|
75
|
+
"--all",
|
76
|
+
default=False,
|
77
|
+
help="Deploy all baremetal nodes in provision state available",
|
78
|
+
action="store_true",
|
79
|
+
)
|
80
|
+
parser_exc_group.add_argument(
|
81
|
+
"--name",
|
82
|
+
default=[],
|
83
|
+
help="Deploy given baremetal node when in provision state available. May be specified multiple times",
|
84
|
+
action="append",
|
85
|
+
)
|
86
|
+
parser.add_argument(
|
87
|
+
"--rebuild",
|
88
|
+
default=False,
|
89
|
+
help="Rebuild given nodes in active state",
|
90
|
+
action="store_true",
|
91
|
+
)
|
92
|
+
parser.add_argument(
|
93
|
+
"--yes-i-really-really-mean-it",
|
94
|
+
default=False,
|
95
|
+
help="Specify this in connection with '--rebuild --all' to actually rebuild all nodes",
|
96
|
+
action="store_true",
|
97
|
+
)
|
98
|
+
return parser
|
99
|
+
|
100
|
+
def take_action(self, parsed_args):
|
101
|
+
all_nodes = parsed_args.all
|
102
|
+
names = parsed_args.name
|
103
|
+
rebuild = parsed_args.rebuild
|
104
|
+
yes_i_really_really_mean_it = parsed_args.yes_i_really_really_mean_it
|
105
|
+
|
106
|
+
if all_nodes and rebuild and not yes_i_really_really_mean_it:
|
107
|
+
logger.error(
|
108
|
+
"Please confirm that you wish to rebuild all nodes by specifying '--yes-i-really-really-mean-it'"
|
109
|
+
)
|
110
|
+
return
|
111
|
+
|
112
|
+
conn = get_cloud_connection()
|
113
|
+
|
114
|
+
if all_nodes:
|
115
|
+
deploy_nodes = list(conn.baremetal.nodes(details=True))
|
116
|
+
else:
|
117
|
+
deploy_nodes = [
|
118
|
+
conn.baremetal.find_node(name, ignore_missing=True, details=True)
|
119
|
+
for name in names
|
120
|
+
]
|
121
|
+
|
122
|
+
for node_idx, node in enumerate(deploy_nodes):
|
123
|
+
if not node:
|
124
|
+
logger.warning(f"Could not find node {names[node_idx]}")
|
125
|
+
continue
|
126
|
+
|
127
|
+
if node.provision_state in ["available", "deploy failed"]:
|
128
|
+
provision_state = "active"
|
129
|
+
elif (
|
130
|
+
node.provision_state == "error"
|
131
|
+
or node.provision_state == "active"
|
132
|
+
and rebuild
|
133
|
+
):
|
134
|
+
provision_state = "rebuild"
|
135
|
+
else:
|
136
|
+
logger.warning(
|
137
|
+
f"Node {node.name} ({node.id}) not in supported provision state"
|
138
|
+
)
|
139
|
+
continue
|
140
|
+
|
141
|
+
try:
|
142
|
+
conn.baremetal.validate_node(
|
143
|
+
node.id, required=("boot", "deploy", "power")
|
144
|
+
)
|
145
|
+
except openstack.exceptions.ValidationException:
|
146
|
+
logger.warning(f"Node {node.name} ({node.id}) could not be validated")
|
147
|
+
continue
|
148
|
+
try:
|
149
|
+
config_drive = {"meta_data": {}}
|
150
|
+
if (
|
151
|
+
"netplan_parameters" in node.extra
|
152
|
+
and node.extra["netplan_parameters"]
|
153
|
+
):
|
154
|
+
config_drive["meta_data"].update(
|
155
|
+
{
|
156
|
+
"netplan_parameters": json.loads(
|
157
|
+
node.extra["netplan_parameters"]
|
158
|
+
)
|
159
|
+
}
|
160
|
+
)
|
161
|
+
if "frr_parameters" in node.extra and node.extra["frr_parameters"]:
|
162
|
+
config_drive["meta_data"].update(
|
163
|
+
{"frr_parameters": json.loads(node.extra["frr_parameters"])}
|
164
|
+
)
|
165
|
+
conn.baremetal.set_node_provision_state(
|
166
|
+
node.id, provision_state, config_drive=config_drive
|
167
|
+
)
|
168
|
+
except Exception as exc:
|
169
|
+
logger.warning(
|
170
|
+
f"Node {node.name} ({node.id}) could not be moved to active state: {exc}"
|
171
|
+
)
|
172
|
+
continue
|
173
|
+
|
174
|
+
|
175
|
+
class BaremetalUndeploy(Command):
|
176
|
+
def get_parser(self, prog_name):
|
177
|
+
parser = super(BaremetalUndeploy, self).get_parser(prog_name)
|
178
|
+
|
179
|
+
parser_exc_group = parser.add_mutually_exclusive_group(required=True)
|
180
|
+
parser_exc_group.add_argument(
|
181
|
+
"--all",
|
182
|
+
default=False,
|
183
|
+
help="Undeploy all baremetal nodes",
|
184
|
+
action="store_true",
|
185
|
+
)
|
186
|
+
parser_exc_group.add_argument(
|
187
|
+
"--name",
|
188
|
+
default=[],
|
189
|
+
help="Undeploy given baremetal node. May be specified multiple times",
|
190
|
+
action="append",
|
191
|
+
)
|
192
|
+
parser.add_argument(
|
193
|
+
"--yes-i-really-really-mean-it",
|
194
|
+
default=False,
|
195
|
+
help="Specify this to actually undeploy all nodes",
|
196
|
+
action="store_true",
|
197
|
+
)
|
198
|
+
return parser
|
199
|
+
|
200
|
+
def take_action(self, parsed_args):
|
201
|
+
all_nodes = parsed_args.all
|
202
|
+
names = parsed_args.name
|
203
|
+
yes_i_really_really_mean_it = parsed_args.yes_i_really_really_mean_it
|
204
|
+
|
205
|
+
if all_nodes and not yes_i_really_really_mean_it:
|
206
|
+
logger.error(
|
207
|
+
"Please confirm that you wish to undeploy all nodes by specifying '--yes-i-really-really-mean-it'"
|
208
|
+
)
|
209
|
+
return
|
210
|
+
|
211
|
+
conn = get_cloud_connection()
|
212
|
+
|
213
|
+
if all_nodes:
|
214
|
+
deploy_nodes = list(conn.baremetal.nodes())
|
215
|
+
else:
|
216
|
+
deploy_nodes = [
|
217
|
+
conn.baremetal.find_node(name, ignore_missing=True, details=False)
|
218
|
+
for name in names
|
219
|
+
]
|
220
|
+
|
221
|
+
for node_idx, node in enumerate(deploy_nodes):
|
222
|
+
if not node:
|
223
|
+
logger.warning(f"Could not find node {names[node_idx]}")
|
224
|
+
continue
|
225
|
+
|
226
|
+
if node.provision_state in ["active", "deploy failed", "error"]:
|
227
|
+
try:
|
228
|
+
conn.baremetal.set_node_provision_state(node.id, "undeploy")
|
229
|
+
except Exception as exc:
|
230
|
+
logger.warning(
|
231
|
+
f"Node {node.name} ({node.id}) could not be moved to available state: {exc}"
|
232
|
+
)
|
233
|
+
continue
|
234
|
+
else:
|
235
|
+
logger.warning(
|
236
|
+
f"Node {node.name} ({node.id}) not in supported provision state"
|
237
|
+
)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
+
import os
|
3
4
|
import subprocess
|
4
5
|
import time
|
5
6
|
|
@@ -34,7 +35,7 @@ class Sync(Command):
|
|
34
35
|
)
|
35
36
|
parser.add_argument(
|
36
37
|
"--task-timeout",
|
37
|
-
default=
|
38
|
+
default=os.environ.get("OSISM_TASK_TIMEOUT", 300),
|
38
39
|
type=int,
|
39
40
|
help="Timeout for a scheduled task that has not been executed yet",
|
40
41
|
)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
+
import logging
|
3
4
|
import os
|
4
5
|
import re
|
5
6
|
import subprocess
|
@@ -77,6 +78,7 @@ def run_ansible_in_environment(
|
|
77
78
|
|
78
79
|
# NOTE: Consider arguments in the future
|
79
80
|
if locking:
|
81
|
+
logging.getLogger("redlock").setLevel(logging.WARNING)
|
80
82
|
lock = Redlock(
|
81
83
|
key=f"lock-ansible-{environment}-{role}",
|
82
84
|
masters={utils.redis},
|
@@ -10,6 +10,7 @@ import jinja2
|
|
10
10
|
from loguru import logger
|
11
11
|
from pottery import Redlock
|
12
12
|
import yaml
|
13
|
+
import json
|
13
14
|
|
14
15
|
from osism import settings
|
15
16
|
from osism import utils
|
@@ -305,6 +306,27 @@ def sync_ironic(self, force_update=False):
|
|
305
306
|
)
|
306
307
|
)
|
307
308
|
node_attributes.update({"resource_class": device.name})
|
309
|
+
# NOTE: Write metadata used for provisioning into 'extra' field, so that it is available during node deploy without querying the netbox again
|
310
|
+
if "extra" not in node_attributes:
|
311
|
+
node_attributes["extra"] = {}
|
312
|
+
if (
|
313
|
+
"netplan_parameters" in device.custom_fields
|
314
|
+
and device.custom_fields["netplan_parameters"]
|
315
|
+
):
|
316
|
+
node_attributes["extra"].update(
|
317
|
+
{
|
318
|
+
"netplan_parameters": json.dumps(
|
319
|
+
device.custom_fields["netplan_parameters"]
|
320
|
+
)
|
321
|
+
}
|
322
|
+
)
|
323
|
+
if (
|
324
|
+
"frr_parameters" in device.custom_fields
|
325
|
+
and device.custom_fields["frr_parameters"]
|
326
|
+
):
|
327
|
+
node_attributes["extra"].update(
|
328
|
+
{"frr_parameters": json.dumps(device.custom_fields["frr_parameters"])}
|
329
|
+
)
|
308
330
|
ports_attributes = [
|
309
331
|
dict(address=interface.mac_address)
|
310
332
|
for interface in node_interfaces
|
@@ -151,6 +151,11 @@ def get_interfaces_by_device(self, device_name):
|
|
151
151
|
return utils.nb.dcim.interfaces.filter(device=device_name)
|
152
152
|
|
153
153
|
|
154
|
+
@app.task(bind=True, name="osism.tasks.netbox.get_addresses_by_device_and_interface")
|
155
|
+
def get_addresses_by_device_and_interface(self, device_name, interface_name):
|
156
|
+
return utils.nb.dcim.addresses.filter(device=device_name, interface=interface_name)
|
157
|
+
|
158
|
+
|
154
159
|
@app.task(bind=True, name="osism.tasks.netbox.manage")
|
155
160
|
def manage(self, *arguments, publish=True, locking=False, auto_release_time=3600):
|
156
161
|
netbox_manager_env = {
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: osism
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20250602.0
|
4
4
|
Summary: OSISM manager interface
|
5
5
|
Home-page: https://github.com/osism/python-osism
|
6
6
|
Author: OSISM GmbH
|
@@ -26,7 +26,7 @@ Requires-Dist: GitPython==3.1.44
|
|
26
26
|
Requires-Dist: Jinja2==3.1.6
|
27
27
|
Requires-Dist: PyYAML==6.0.2
|
28
28
|
Requires-Dist: ara==1.7.2
|
29
|
-
Requires-Dist: celery[redis]==5.5.
|
29
|
+
Requires-Dist: celery[redis]==5.5.3
|
30
30
|
Requires-Dist: cliff==4.10.0
|
31
31
|
Requires-Dist: deepdiff==8.5.0
|
32
32
|
Requires-Dist: docker==7.1.0
|
@@ -36,7 +36,7 @@ Requires-Dist: flower==2.0.1
|
|
36
36
|
Requires-Dist: hiredis==3.2.1
|
37
37
|
Requires-Dist: jc==1.25.5
|
38
38
|
Requires-Dist: keystoneauth1==5.11.0
|
39
|
-
Requires-Dist: kombu==5.5.
|
39
|
+
Requires-Dist: kombu==5.5.4
|
40
40
|
Requires-Dist: kubernetes==32.0.1
|
41
41
|
Requires-Dist: loguru==0.7.3
|
42
42
|
Requires-Dist: nbcli==0.10.0.dev2
|
@@ -47,12 +47,12 @@ Requires-Dist: prompt-toolkit==3.0.51
|
|
47
47
|
Requires-Dist: pynetbox==7.5.0
|
48
48
|
Requires-Dist: pytest-testinfra==10.2.2
|
49
49
|
Requires-Dist: python-dateutil==2.9.0.post0
|
50
|
-
Requires-Dist: setuptools==80.
|
50
|
+
Requires-Dist: setuptools==80.9.0
|
51
51
|
Requires-Dist: sqlmodel==0.0.24
|
52
52
|
Requires-Dist: sushy==5.6.0
|
53
53
|
Requires-Dist: tabulate==0.9.0
|
54
54
|
Requires-Dist: transitions==0.9.2
|
55
|
-
Requires-Dist: uvicorn[standard]==0.34.
|
55
|
+
Requires-Dist: uvicorn[standard]==0.34.3
|
56
56
|
Requires-Dist: watchdog==6.0.0
|
57
57
|
Provides-Extra: ansible
|
58
58
|
Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
|
@@ -26,6 +26,9 @@ log ansible = osism.commands.log:Ansible
|
|
26
26
|
log container = osism.commands.log:Container
|
27
27
|
log file = osism.commands.log:File
|
28
28
|
log opensearch = osism.commands.log:Opensearch
|
29
|
+
manage baremetal deploy = osism.commands.baremetal:BaremetalDeploy
|
30
|
+
manage baremetal list = osism.commands.baremetal:BaremetalList
|
31
|
+
manage baremetal undeploy = osism.commands.baremetal:BaremetalUndeploy
|
29
32
|
manage compute disable = osism.commands.compute:ComputeDisable
|
30
33
|
manage compute enable = osism.commands.compute:ComputeEnable
|
31
34
|
manage compute evacuate = osism.commands.compute:ComputeEvacuate
|
@@ -0,0 +1 @@
|
|
1
|
+
{"git_version": "e6f441e", "is_release": false}
|
@@ -3,7 +3,7 @@ GitPython==3.1.44
|
|
3
3
|
Jinja2==3.1.6
|
4
4
|
PyYAML==6.0.2
|
5
5
|
ara==1.7.2
|
6
|
-
celery[redis]==5.5.
|
6
|
+
celery[redis]==5.5.3
|
7
7
|
cliff==4.10.0
|
8
8
|
deepdiff==8.5.0
|
9
9
|
docker==7.1.0
|
@@ -13,7 +13,7 @@ flower==2.0.1
|
|
13
13
|
hiredis==3.2.1
|
14
14
|
jc==1.25.5
|
15
15
|
keystoneauth1==5.11.0
|
16
|
-
kombu==5.5.
|
16
|
+
kombu==5.5.4
|
17
17
|
kubernetes==32.0.1
|
18
18
|
loguru==0.7.3
|
19
19
|
nbcli==0.10.0.dev2
|
@@ -24,12 +24,12 @@ prompt-toolkit==3.0.51
|
|
24
24
|
pynetbox==7.5.0
|
25
25
|
pytest-testinfra==10.2.2
|
26
26
|
python-dateutil==2.9.0.post0
|
27
|
-
setuptools==80.
|
27
|
+
setuptools==80.9.0
|
28
28
|
sqlmodel==0.0.24
|
29
29
|
sushy==5.6.0
|
30
30
|
tabulate==0.9.0
|
31
31
|
transitions==0.9.2
|
32
|
-
uvicorn[standard]==0.34.
|
32
|
+
uvicorn[standard]==0.34.3
|
33
33
|
watchdog==6.0.0
|
34
34
|
|
35
35
|
[ansible]
|
@@ -0,0 +1 @@
|
|
1
|
+
netbox-manager==0.20250529.1
|
@@ -3,7 +3,7 @@ GitPython==3.1.44
|
|
3
3
|
Jinja2==3.1.6
|
4
4
|
PyYAML==6.0.2
|
5
5
|
ara==1.7.2
|
6
|
-
celery[redis]==5.5.
|
6
|
+
celery[redis]==5.5.3
|
7
7
|
cliff==4.10.0
|
8
8
|
deepdiff==8.5.0
|
9
9
|
docker==7.1.0
|
@@ -13,7 +13,7 @@ flower==2.0.1
|
|
13
13
|
hiredis==3.2.1
|
14
14
|
jc==1.25.5
|
15
15
|
keystoneauth1==5.11.0
|
16
|
-
kombu==5.5.
|
16
|
+
kombu==5.5.4
|
17
17
|
kubernetes==32.0.1
|
18
18
|
loguru==0.7.3
|
19
19
|
nbcli==0.10.0.dev2
|
@@ -24,10 +24,10 @@ prompt-toolkit==3.0.51
|
|
24
24
|
pynetbox==7.5.0
|
25
25
|
pytest-testinfra==10.2.2
|
26
26
|
python-dateutil==2.9.0.post0
|
27
|
-
setuptools==80.
|
27
|
+
setuptools==80.9.0
|
28
28
|
sqlmodel==0.0.24
|
29
29
|
sushy==5.6.0
|
30
30
|
tabulate==0.9.0
|
31
31
|
transitions==0.9.2
|
32
|
-
uvicorn[standard]==0.34.
|
32
|
+
uvicorn[standard]==0.34.3
|
33
33
|
watchdog==6.0.0
|
@@ -77,6 +77,9 @@ osism.commands =
|
|
77
77
|
manage server list = osism.commands.server:ServerList
|
78
78
|
manage server migrate = osism.commands.server:ServerMigrate
|
79
79
|
manage volume list = osism.commands.volume:VolumeList
|
80
|
+
manage baremetal list = osism.commands.baremetal:BaremetalList
|
81
|
+
manage baremetal deploy = osism.commands.baremetal:BaremetalDeploy
|
82
|
+
manage baremetal undeploy = osism.commands.baremetal:BaremetalUndeploy
|
80
83
|
netbox = osism.commands.netbox:Console
|
81
84
|
get versions netbox = osism.commands.netbox:Versions
|
82
85
|
noset bootstrap = osism.commands.noset:NoBootstrap
|
osism-0.20250525.0/AUTHORS
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
osism-0.20250525.0/ChangeLog
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"git_version": "3c67308", "is_release": false}
|
@@ -1 +0,0 @@
|
|
1
|
-
netbox-manager==0.20250525.0
|
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
|