osism 0.20250326.0__tar.gz → 0.20250407.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 (96) hide show
  1. osism-0.20250407.0/.hadolint.yaml +4 -0
  2. osism-0.20250407.0/ChangeLog +7 -0
  3. {osism-0.20250326.0 → osism-0.20250407.0}/Containerfile +15 -18
  4. {osism-0.20250326.0 → osism-0.20250407.0}/Dockerfile +15 -18
  5. {osism-0.20250326.0/osism.egg-info → osism-0.20250407.0}/PKG-INFO +5 -5
  6. {osism-0.20250326.0 → osism-0.20250407.0}/Pipfile +3 -3
  7. {osism-0.20250326.0 → osism-0.20250407.0}/Pipfile.lock +77 -77
  8. {osism-0.20250326.0 → osism-0.20250407.0}/osism/api.py +5 -10
  9. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/manage.py +2 -2
  10. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/netbox.py +17 -20
  11. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/wait.py +5 -12
  12. {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/enums.py +15 -1
  13. {osism-0.20250326.0 → osism-0.20250407.0}/osism/services/listener.py +28 -67
  14. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/__init__.py +13 -41
  15. osism-0.20250407.0/osism/tasks/conductor.py +419 -0
  16. osism-0.20250407.0/osism/tasks/netbox.py +154 -0
  17. osism-0.20250407.0/osism/tasks/openstack.py +239 -0
  18. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/reconciler.py +11 -26
  19. {osism-0.20250326.0 → osism-0.20250407.0}/osism/utils/__init__.py +11 -0
  20. {osism-0.20250326.0 → osism-0.20250407.0/osism.egg-info}/PKG-INFO +5 -5
  21. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/SOURCES.txt +0 -2
  22. osism-0.20250407.0/osism.egg-info/pbr.json +1 -0
  23. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/requires.txt +4 -4
  24. {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/build.yml +0 -11
  25. osism-0.20250407.0/requirements.openstack-image-manager.txt +1 -0
  26. {osism-0.20250326.0 → osism-0.20250407.0}/requirements.txt +3 -3
  27. {osism-0.20250326.0 → osism-0.20250407.0}/requirements.yml +2 -2
  28. osism-0.20250326.0/.hadolint.yaml +0 -3
  29. osism-0.20250326.0/ChangeLog +0 -7
  30. osism-0.20250326.0/osism/actions/manage_device.py +0 -120
  31. osism-0.20250326.0/osism/actions/manage_interface.py +0 -13
  32. osism-0.20250326.0/osism/tasks/conductor.py +0 -120
  33. osism-0.20250326.0/osism/tasks/netbox.py +0 -171
  34. osism-0.20250326.0/osism/tasks/openstack.py +0 -318
  35. osism-0.20250326.0/osism.egg-info/pbr.json +0 -1
  36. osism-0.20250326.0/requirements.openstack-image-manager.txt +0 -1
  37. {osism-0.20250326.0 → osism-0.20250407.0}/.flake8 +0 -0
  38. {osism-0.20250326.0 → osism-0.20250407.0}/.github/renovate.json +0 -0
  39. {osism-0.20250326.0 → osism-0.20250407.0}/.github/workflows/publish.yml +0 -0
  40. {osism-0.20250326.0 → osism-0.20250407.0}/.zuul.yaml +0 -0
  41. {osism-0.20250326.0 → osism-0.20250407.0}/AUTHORS +0 -0
  42. {osism-0.20250326.0 → osism-0.20250407.0}/LICENSE +0 -0
  43. {osism-0.20250326.0 → osism-0.20250407.0}/README.md +0 -0
  44. {osism-0.20250326.0 → osism-0.20250407.0}/files/change.sh +0 -0
  45. {osism-0.20250326.0 → osism-0.20250407.0}/files/cleanup-ansible-collections.sh +0 -0
  46. {osism-0.20250326.0 → osism-0.20250407.0}/files/clustershell/clush.conf +0 -0
  47. {osism-0.20250326.0 → osism-0.20250407.0}/files/clustershell/groups.conf +0 -0
  48. {osism-0.20250326.0 → osism-0.20250407.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
  49. {osism-0.20250326.0 → osism-0.20250407.0}/files/netbox-manager/settings.toml +0 -0
  50. {osism-0.20250326.0 → osism-0.20250407.0}/files/run-ansible-console.sh +0 -0
  51. {osism-0.20250326.0 → osism-0.20250407.0}/osism/__init__.py +0 -0
  52. {osism-0.20250326.0 → osism-0.20250407.0}/osism/__main__.py +0 -0
  53. {osism-0.20250326.0 → osism-0.20250407.0}/osism/actions/__init__.py +0 -0
  54. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/__init__.py +0 -0
  55. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/apply.py +0 -0
  56. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/compose.py +0 -0
  57. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/compute.py +0 -0
  58. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/configuration.py +0 -0
  59. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/console.py +0 -0
  60. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/container.py +0 -0
  61. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/get.py +0 -0
  62. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/log.py +0 -0
  63. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/noset.py +0 -0
  64. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/reconciler.py +0 -0
  65. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/server.py +0 -0
  66. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/service.py +0 -0
  67. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/set.py +0 -0
  68. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/status.py +0 -0
  69. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/sync.py +0 -0
  70. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/task.py +0 -0
  71. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/validate.py +0 -0
  72. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/vault.py +0 -0
  73. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/volume.py +0 -0
  74. {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/worker.py +0 -0
  75. {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/__init__.py +0 -0
  76. {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/playbooks.py +0 -0
  77. {osism-0.20250326.0 → osism-0.20250407.0}/osism/data/__init__.py +0 -0
  78. {osism-0.20250326.0 → osism-0.20250407.0}/osism/main.py +0 -0
  79. {osism-0.20250326.0 → osism-0.20250407.0}/osism/plugins/__init__.py +0 -0
  80. {osism-0.20250326.0 → osism-0.20250407.0}/osism/services/__init__.py +0 -0
  81. {osism-0.20250326.0 → osism-0.20250407.0}/osism/settings.py +0 -0
  82. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/ansible.py +0 -0
  83. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/ceph.py +0 -0
  84. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/kolla.py +0 -0
  85. {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/kubernetes.py +0 -0
  86. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/dependency_links.txt +0 -0
  87. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/entry_points.txt +0 -0
  88. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/not-zip-safe +0 -0
  89. {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/top_level.txt +0 -0
  90. {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/pre.yml +0 -0
  91. {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/test-setup.yml +0 -0
  92. {osism-0.20250326.0 → osism-0.20250407.0}/requirements.ansible.txt +0 -0
  93. {osism-0.20250326.0 → osism-0.20250407.0}/requirements.netbox-manager.txt +0 -0
  94. {osism-0.20250326.0 → osism-0.20250407.0}/requirements.openstack-flavor-manager.txt +0 -0
  95. {osism-0.20250326.0 → osism-0.20250407.0}/setup.cfg +0 -0
  96. {osism-0.20250326.0 → osism-0.20250407.0}/setup.py +0 -0
@@ -0,0 +1,4 @@
1
+ ---
2
+ ignored:
3
+ - DL3008
4
+ - DL3018
@@ -0,0 +1,7 @@
1
+ CHANGES
2
+ =======
3
+
4
+ v0.20250407.0
5
+ -------------
6
+
7
+ * chore(deps): update dependency openstack-image-manager to v0.20250407.0 (#1271)
@@ -1,11 +1,12 @@
1
1
  ARG PYTHON_VERSION=3.13.2
2
+ ARG ALPINE_VERSION=3.21
2
3
 
3
- FROM python:${PYTHON_VERSION}-slim
4
+ FROM python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
4
5
 
5
6
  ENV PYTHONWARNINGS="ignore::UserWarning"
6
7
 
7
8
  COPY . /src
8
- COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /usr/local/bin/uv
9
+ COPY --from=ghcr.io/astral-sh/uv:0.6.12 /uv /usr/local/bin/uv
9
10
 
10
11
  COPY files/data /data
11
12
  COPY files/change.sh /change.sh
@@ -18,6 +19,8 @@ COPY files/clustershell/groups.conf /etc/clustershell/groups.conf
18
19
 
19
20
  COPY files/netbox-manager/settings.toml /usr/local/config/settings.toml
20
21
 
22
+ RUN apk add --no-cache bash
23
+
21
24
  SHELL ["/bin/bash", "-o", "pipefail", "-c"]
22
25
 
23
26
  RUN <<EOF
@@ -25,17 +28,18 @@ set -e
25
28
  set -x
26
29
 
27
30
  # install required packages
28
- apt-get update
29
- apt-get install -y --no-install-recommends \
31
+ apk add --no-cache --virtual .build-deps \
32
+ build-base \
33
+ gcc \
34
+ linux-headers \
35
+ musl-dev \
36
+ openldap-dev
37
+ apk add --no-cache \
30
38
  git \
31
39
  less \
32
40
  openssh-client \
33
41
  procps \
34
- tini \
35
- build-essential \
36
- gcc \
37
- libldap2-dev \
38
- libsasl2-dev
42
+ tini
39
43
 
40
44
  # install python packages
41
45
  uv pip install --no-cache --system -r /src/requirements.txt
@@ -82,19 +86,12 @@ rm -rf /tests/.git
82
86
  ln -s /ansible/inventory/clustershell /etc/clustershell/groups.d
83
87
 
84
88
  # cleanup
85
- apt-get remove -y \
86
- build-essential \
87
- gcc \
88
- libldap2-dev \
89
- libsasl2-dev
90
- apt-get autoremove -y
91
- apt-get clean
89
+ apk del .build-deps
92
90
  rm -rf \
93
91
  /src \
94
92
  /tmp/* \
95
93
  /usr/share/doc/* \
96
94
  /usr/share/man/* \
97
- /var/lib/apt/lists/* \
98
95
  /var/tmp/*
99
96
 
100
97
  uv pip install --no-cache --system pyclean==3.0.0
@@ -102,4 +99,4 @@ pyclean /usr
102
99
  uv pip uninstall --system pyclean
103
100
  EOF
104
101
 
105
- ENTRYPOINT ["/usr/bin/tini", "--"]
102
+ ENTRYPOINT ["/sbin/tini", "--"]
@@ -1,11 +1,12 @@
1
1
  ARG PYTHON_VERSION=3.13.2
2
+ ARG ALPINE_VERSION=3.21
2
3
 
3
- FROM python:${PYTHON_VERSION}-slim
4
+ FROM python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
4
5
 
5
6
  ENV PYTHONWARNINGS="ignore::UserWarning"
6
7
 
7
8
  COPY . /src
8
- COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /usr/local/bin/uv
9
+ COPY --from=ghcr.io/astral-sh/uv:0.6.12 /uv /usr/local/bin/uv
9
10
 
10
11
  COPY files/data /data
11
12
  COPY files/change.sh /change.sh
@@ -18,6 +19,8 @@ COPY files/clustershell/groups.conf /etc/clustershell/groups.conf
18
19
 
19
20
  COPY files/netbox-manager/settings.toml /usr/local/config/settings.toml
20
21
 
22
+ RUN apk add --no-cache bash
23
+
21
24
  SHELL ["/bin/bash", "-o", "pipefail", "-c"]
22
25
 
23
26
  RUN <<EOF
@@ -25,17 +28,18 @@ set -e
25
28
  set -x
26
29
 
27
30
  # install required packages
28
- apt-get update
29
- apt-get install -y --no-install-recommends \
31
+ apk add --no-cache --virtual .build-deps \
32
+ build-base \
33
+ gcc \
34
+ linux-headers \
35
+ musl-dev \
36
+ openldap-dev
37
+ apk add --no-cache \
30
38
  git \
31
39
  less \
32
40
  openssh-client \
33
41
  procps \
34
- tini \
35
- build-essential \
36
- gcc \
37
- libldap2-dev \
38
- libsasl2-dev
42
+ tini
39
43
 
40
44
  # install python packages
41
45
  uv pip install --no-cache --system -r /src/requirements.txt
@@ -82,19 +86,12 @@ rm -rf /tests/.git
82
86
  ln -s /ansible/inventory/clustershell /etc/clustershell/groups.d
83
87
 
84
88
  # cleanup
85
- apt-get remove -y \
86
- build-essential \
87
- gcc \
88
- libldap2-dev \
89
- libsasl2-dev
90
- apt-get autoremove -y
91
- apt-get clean
89
+ apk del .build-deps
92
90
  rm -rf \
93
91
  /src \
94
92
  /tmp/* \
95
93
  /usr/share/doc/* \
96
94
  /usr/share/man/* \
97
- /var/lib/apt/lists/* \
98
95
  /var/tmp/*
99
96
 
100
97
  uv pip install --no-cache --system pyclean==3.0.0
@@ -102,4 +99,4 @@ pyclean /usr
102
99
  uv pip uninstall --system pyclean
103
100
  EOF
104
101
 
105
- ENTRYPOINT ["/usr/bin/tini", "--"]
102
+ ENTRYPOINT ["/sbin/tini", "--"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osism
3
- Version: 0.20250326.0
3
+ Version: 0.20250407.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.4.0
29
+ Requires-Dist: celery[redis]==5.5.0
30
30
  Requires-Dist: cliff==4.9.1
31
31
  Requires-Dist: deepdiff==8.4.2
32
32
  Requires-Dist: docker==7.1.0
@@ -36,7 +36,7 @@ Requires-Dist: flower==2.0.1
36
36
  Requires-Dist: hiredis==3.1.0
37
37
  Requires-Dist: jc==1.25.4
38
38
  Requires-Dist: keystoneauth1==5.10.0
39
- Requires-Dist: kombu==5.5.1
39
+ Requires-Dist: kombu==5.5.2
40
40
  Requires-Dist: kubernetes==32.0.1
41
41
  Requires-Dist: loguru==0.7.3
42
42
  Requires-Dist: netmiko==4.5.0
@@ -47,7 +47,7 @@ Requires-Dist: pottery==3.0.1
47
47
  Requires-Dist: prompt-toolkit==3.0.50
48
48
  Requires-Dist: pydantic==1.10.21
49
49
  Requires-Dist: pynetbox==7.4.1
50
- Requires-Dist: pytest-testinfra==10.1.1
50
+ Requires-Dist: pytest-testinfra==10.2.2
51
51
  Requires-Dist: python-dateutil==2.9.0.post0
52
52
  Requires-Dist: setuptools==78.1.0
53
53
  Requires-Dist: sqlmodel==0.0.24
@@ -60,7 +60,7 @@ Provides-Extra: ansible
60
60
  Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
61
61
  Requires-Dist: ansible-core==2.18.4; extra == "ansible"
62
62
  Provides-Extra: openstack-image-manager
63
- Requires-Dist: openstack-image-manager==0.20250314.0; extra == "openstack-image-manager"
63
+ Requires-Dist: openstack-image-manager==0.20250407.0; extra == "openstack-image-manager"
64
64
  Dynamic: author
65
65
  Dynamic: author-email
66
66
  Dynamic: classifier
@@ -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.4.0", extras = ["redis"]}
13
+ celery = {version = "==5.5.0", extras = ["redis"]}
14
14
  cliff = "==4.9.1"
15
15
  deepdiff = "==8.4.2"
16
16
  docker = "==7.1.0"
@@ -20,7 +20,7 @@ hiredis = "==3.1.0"
20
20
  huey = "==2.5.3"
21
21
  jc = "==1.25.4"
22
22
  keystoneauth1 = "==5.10.0"
23
- kombu = "==5.5.1"
23
+ kombu = "==5.5.2"
24
24
  kubernetes = "==32.0.1"
25
25
  loguru = "==0.7.3"
26
26
  netmiko = "==4.5.0"
@@ -31,7 +31,7 @@ pottery = "==3.0.1"
31
31
  prompt-toolkit = "==3.0.50"
32
32
  pydantic = "==1.10.21"
33
33
  pynetbox = "==7.4.1"
34
- pytest-testinfra = "==10.1.1"
34
+ pytest-testinfra = "==10.2.2"
35
35
  python-dateutil = "==2.9.0.post0"
36
36
  setuptools = "==78.1.0"
37
37
  sqlmodel = "==0.0.24"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_meta": {
3
3
  "hash": {
4
- "sha256": "fdcd2ada79e948f3b9b2dc37443bee51cb5911c01213c5a7f7f844eb7b3594b6"
4
+ "sha256": "35c9c01c094735503a1f921d8635b84c0d0555c5a14233741739c2c78fe91a76"
5
5
  },
6
6
  "pipfile-spec": 6,
7
7
  "requires": {},
@@ -126,11 +126,11 @@
126
126
  "redis"
127
127
  ],
128
128
  "hashes": [
129
- "sha256:369631eb580cf8c51a82721ec538684994f8277637edde2dfc0dacd73ed97f64",
130
- "sha256:504a19140e8d3029d5acad88330c541d4c3f64c789d85f94756762d8bca7e706"
129
+ "sha256:10d49f9926d16237310109b0e6e1e2f7a2133b84e684bb36534d7663e66919bb",
130
+ "sha256:f4170c6e5952281318448a899d9e9a15b9cbd007e002091766900dc8f71b9394"
131
131
  ],
132
132
  "markers": "python_version >= '3.8'",
133
- "version": "==5.4.0"
133
+ "version": "==5.5.0"
134
134
  },
135
135
  "certifi": {
136
136
  "hashes": [
@@ -786,12 +786,12 @@
786
786
  },
787
787
  "kombu": {
788
788
  "hashes": [
789
- "sha256:3b66add422e1655235c7c9244000600368ef6f2ba66278a5cf0ba2e7b2dc6425",
790
- "sha256:a4c2250396cdfb947c5e5322f3094fd36c3f86a1cff655f5cffdf45f371dddb8"
789
+ "sha256:2dd27ec84fd843a4e0a7187424313f87514b344812cb98c25daddafbb6a7ff0e",
790
+ "sha256:40f3674ed19603b8a771b6c74de126dbf8879755a0337caac6602faa82d539cd"
791
791
  ],
792
792
  "index": "pypi",
793
793
  "markers": "python_version >= '3.8'",
794
- "version": "==5.5.1"
794
+ "version": "==5.5.2"
795
795
  },
796
796
  "kubernetes": {
797
797
  "hashes": [
@@ -1175,11 +1175,11 @@
1175
1175
  },
1176
1176
  "pyasn1-modules": {
1177
1177
  "hashes": [
1178
- "sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd",
1179
- "sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c"
1178
+ "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a",
1179
+ "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"
1180
1180
  ],
1181
1181
  "markers": "python_version >= '3.8'",
1182
- "version": "==0.4.1"
1182
+ "version": "==0.4.2"
1183
1183
  },
1184
1184
  "pycparser": {
1185
1185
  "hashes": [
@@ -1309,12 +1309,12 @@
1309
1309
  },
1310
1310
  "pytest-testinfra": {
1311
1311
  "hashes": [
1312
- "sha256:a876f1453a01b58d94d9d936dd50344c2c01ac7880a2b41d15bdf233aed9cf1f",
1313
- "sha256:b990dc7d77b49a1bba24818fbff49b6171d8c46d606fb5ca86b937de690d7062"
1312
+ "sha256:537fd5eb88da618c1f461248aa20594cf8d44512e8519b239837e83875e1e9cd",
1313
+ "sha256:b785602b0aa868c858e4ef121a8cc0d13a81c04b74ec0364d70969540f8e7c31"
1314
1314
  ],
1315
1315
  "index": "pypi",
1316
1316
  "markers": "python_version >= '3.9'",
1317
- "version": "==10.1.1"
1317
+ "version": "==10.2.2"
1318
1318
  },
1319
1319
  "python-daemon": {
1320
1320
  "hashes": [
@@ -1433,11 +1433,11 @@
1433
1433
  },
1434
1434
  "rich": {
1435
1435
  "hashes": [
1436
- "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098",
1437
- "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"
1436
+ "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0",
1437
+ "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"
1438
1438
  ],
1439
1439
  "markers": "python_full_version >= '3.8.0'",
1440
- "version": "==13.9.4"
1440
+ "version": "==14.0.0"
1441
1441
  },
1442
1442
  "rsa": {
1443
1443
  "hashes": [
@@ -1489,66 +1489,66 @@
1489
1489
  },
1490
1490
  "sqlalchemy": {
1491
1491
  "hashes": [
1492
- "sha256:018ee97c558b499b58935c5a152aeabf6d36b3d55d91656abeb6d93d663c0c4c",
1493
- "sha256:01da15490c9df352fbc29859d3c7ba9cd1377791faeeb47c100832004c99472c",
1494
- "sha256:04545042969833cb92e13b0a3019549d284fd2423f318b6ba10e7aa687690a3c",
1495
- "sha256:06205eb98cb3dd52133ca6818bf5542397f1dd1b69f7ea28aa84413897380b06",
1496
- "sha256:08cf721bbd4391a0e765fe0fe8816e81d9f43cece54fdb5ac465c56efafecb3d",
1497
- "sha256:0d7e3866eb52d914aea50c9be74184a0feb86f9af8aaaa4daefe52b69378db0b",
1498
- "sha256:125a7763b263218a80759ad9ae2f3610aaf2c2fbbd78fff088d584edf81f3782",
1499
- "sha256:23c5aa33c01bd898f879db158537d7e7568b503b15aad60ea0c8da8109adf3e7",
1500
- "sha256:2600a50d590c22d99c424c394236899ba72f849a02b10e65b4c70149606408b5",
1501
- "sha256:2d7332868ce891eda48896131991f7f2be572d65b41a4050957242f8e935d5d7",
1502
- "sha256:2ed107331d188a286611cea9022de0afc437dd2d3c168e368169f27aa0f61338",
1503
- "sha256:3395e7ed89c6d264d38bea3bfb22ffe868f906a7985d03546ec7dc30221ea980",
1504
- "sha256:344cd1ec2b3c6bdd5dfde7ba7e3b879e0f8dd44181f16b895940be9b842fd2b6",
1505
- "sha256:34d5c49f18778a3665d707e6286545a30339ad545950773d43977e504815fa70",
1506
- "sha256:35e72518615aa5384ef4fae828e3af1b43102458b74a8c481f69af8abf7e802a",
1507
- "sha256:3eb14ba1a9d07c88669b7faf8f589be67871d6409305e73e036321d89f1d904e",
1508
- "sha256:412c6c126369ddae171c13987b38df5122cb92015cba6f9ee1193b867f3f1530",
1509
- "sha256:4600c7a659d381146e1160235918826c50c80994e07c5b26946a3e7ec6c99249",
1510
- "sha256:463ecfb907b256e94bfe7bcb31a6d8c7bc96eca7cbe39803e448a58bb9fcad02",
1511
- "sha256:4a06e6c8e31c98ddc770734c63903e39f1947c9e3e5e4bef515c5491b7737dde",
1512
- "sha256:4b2de1523d46e7016afc7e42db239bd41f2163316935de7c84d0e19af7e69538",
1513
- "sha256:4dabd775fd66cf17f31f8625fc0e4cfc5765f7982f94dc09b9e5868182cb71c0",
1514
- "sha256:4eff9c270afd23e2746e921e80182872058a7a592017b2713f33f96cc5f82e32",
1515
- "sha256:52607d0ebea43cf214e2ee84a6a76bc774176f97c5a774ce33277514875a718e",
1516
- "sha256:533e0f66c32093a987a30df3ad6ed21170db9d581d0b38e71396c49718fbb1ca",
1517
- "sha256:5493a8120d6fc185f60e7254fc056a6742f1db68c0f849cfc9ab46163c21df47",
1518
- "sha256:5d2d1fe548def3267b4c70a8568f108d1fed7cbbeccb9cc166e05af2abc25c22",
1519
- "sha256:5dfbc543578058c340360f851ddcecd7a1e26b0d9b5b69259b526da9edfa8875",
1520
- "sha256:66a40003bc244e4ad86b72abb9965d304726d05a939e8c09ce844d27af9e6d37",
1521
- "sha256:67de057fbcb04a066171bd9ee6bcb58738d89378ee3cabff0bffbf343ae1c787",
1522
- "sha256:6827f8c1b2f13f1420545bd6d5b3f9e0b85fe750388425be53d23c760dcf176b",
1523
- "sha256:6b35e07f1d57b79b86a7de8ecdcefb78485dab9851b9638c2c793c50203b2ae8",
1524
- "sha256:7399d45b62d755e9ebba94eb89437f80512c08edde8c63716552a3aade61eb42",
1525
- "sha256:788b6ff6728072b313802be13e88113c33696a9a1f2f6d634a97c20f7ef5ccce",
1526
- "sha256:78f1b79132a69fe8bd6b5d91ef433c8eb40688ba782b26f8c9f3d2d9ca23626f",
1527
- "sha256:79f4f502125a41b1b3b34449e747a6abfd52a709d539ea7769101696bdca6716",
1528
- "sha256:7a8517b6d4005facdbd7eb4e8cf54797dbca100a7df459fdaff4c5123265c1cd",
1529
- "sha256:7bd5c5ee1448b6408734eaa29c0d820d061ae18cb17232ce37848376dcfa3e92",
1530
- "sha256:7f5243357e6da9a90c56282f64b50d29cba2ee1f745381174caacc50d501b109",
1531
- "sha256:805cb481474e111ee3687c9047c5f3286e62496f09c0e82e8853338aaaa348f8",
1532
- "sha256:871f55e478b5a648c08dd24af44345406d0e636ffe021d64c9b57a4a11518304",
1533
- "sha256:87a1ce1f5e5dc4b6f4e0aac34e7bb535cb23bd4f5d9c799ed1633b65c2bcad8c",
1534
- "sha256:8a10ca7f8a1ea0fd5630f02feb055b0f5cdfcd07bb3715fc1b6f8cb72bf114e4",
1535
- "sha256:995c2bacdddcb640c2ca558e6760383dcdd68830160af92b5c6e6928ffd259b4",
1536
- "sha256:9f03143f8f851dd8de6b0c10784363712058f38209e926723c80654c1b40327a",
1537
- "sha256:a1c6b0a5e3e326a466d809b651c63f278b1256146a377a528b6938a279da334f",
1538
- "sha256:a28f9c238f1e143ff42ab3ba27990dfb964e5d413c0eb001b88794c5c4a528a9",
1539
- "sha256:b2cf5b5ddb69142511d5559c427ff00ec8c0919a1e6c09486e9c32636ea2b9dd",
1540
- "sha256:b761a6847f96fdc2d002e29e9e9ac2439c13b919adfd64e8ef49e75f6355c548",
1541
- "sha256:bf555f3e25ac3a70c67807b2949bfe15f377a40df84b71ab2c58d8593a1e036e",
1542
- "sha256:c08a972cbac2a14810463aec3a47ff218bb00c1a607e6689b531a7c589c50723",
1543
- "sha256:c457a38351fb6234781d054260c60e531047e4d07beca1889b558ff73dc2014b",
1544
- "sha256:c4c433f78c2908ae352848f56589c02b982d0e741b7905228fad628999799de4",
1545
- "sha256:d9f119e7736967c0ea03aff91ac7d04555ee038caf89bb855d93bbd04ae85b41",
1546
- "sha256:e6b0a1c7ed54a5361aaebb910c1fa864bae34273662bb4ff788a527eafd6e14d",
1547
- "sha256:f2bcb085faffcacf9319b1b1445a7e1cfdc6fb46c03f2dce7bc2d9a4b3c1cdc5",
1548
- "sha256:fe193d3ae297c423e0e567e240b4324d6b6c280a048e64c77a3ea6886cc2aa87"
1492
+ "sha256:00a494ea6f42a44c326477b5bee4e0fc75f6a80c01570a32b57e89cf0fbef85a",
1493
+ "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d",
1494
+ "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2",
1495
+ "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e",
1496
+ "sha256:16d325ea898f74b26ffcd1cf8c593b0beed8714f0317df2bed0d8d1de05a8f26",
1497
+ "sha256:1abb387710283fc5983d8a1209d9696a4eae9db8d7ac94b402981fe2fe2e39ad",
1498
+ "sha256:1ffdf9c91428e59744f8e6f98190516f8e1d05eec90e936eb08b257332c5e870",
1499
+ "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0",
1500
+ "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596",
1501
+ "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a",
1502
+ "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a",
1503
+ "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4",
1504
+ "sha256:37a5c21ab099a83d669ebb251fddf8f5cee4d75ea40a5a1653d9c43d60e20867",
1505
+ "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a",
1506
+ "sha256:46628ebcec4f23a1584fb52f2abe12ddb00f3bb3b7b337618b80fc1b51177aff",
1507
+ "sha256:4a4c5a2905a9ccdc67a8963e24abd2f7afcd4348829412483695c59e0af9a705",
1508
+ "sha256:4aeb939bcac234b88e2d25d5381655e8353fe06b4e50b1c55ecffe56951d18c2",
1509
+ "sha256:50f5885bbed261fc97e2e66c5156244f9704083a674b8d17f24c72217d29baf5",
1510
+ "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51",
1511
+ "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00",
1512
+ "sha256:55028d7a3ebdf7ace492fab9895cbc5270153f75442a0472d8516e03159ab364",
1513
+ "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011",
1514
+ "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4",
1515
+ "sha256:5cfa124eda500ba4b0d3afc3e91ea27ed4754e727c7f025f293a22f512bcd4c9",
1516
+ "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1",
1517
+ "sha256:641ee2e0834812d657862f3a7de95e0048bdcb6c55496f39c6fa3d435f6ac6ad",
1518
+ "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1",
1519
+ "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716",
1520
+ "sha256:6cfedff6878b0e0d1d0a50666a817ecd85051d12d56b43d9d425455e608b5ba0",
1521
+ "sha256:7e0505719939e52a7b0c65d20e84a6044eb3712bb6f239c6b1db77ba8e173a37",
1522
+ "sha256:8b6b28d303b9d57c17a5164eb1fd2d5119bb6ff4413d5894e74873280483eeb5",
1523
+ "sha256:8bb131ffd2165fae48162c7bbd0d97c84ab961deea9b8bab16366543deeab625",
1524
+ "sha256:915866fd50dd868fdcc18d61d8258db1bf9ed7fbd6dfec960ba43365952f3b01",
1525
+ "sha256:9408fd453d5f8990405cc9def9af46bfbe3183e6110401b407c2d073c3388f47",
1526
+ "sha256:957f8d85d5e834397ef78a6109550aeb0d27a53b5032f7a57f2451e1adc37e98",
1527
+ "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1",
1528
+ "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d",
1529
+ "sha256:a669cbe5be3c63f75bcbee0b266779706f1a54bcb1000f302685b87d1b8c1500",
1530
+ "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af",
1531
+ "sha256:ae9597cab738e7cc823f04a704fb754a9249f0b6695a6aeb63b74055cd417a96",
1532
+ "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758",
1533
+ "sha256:b5a5bbe29c10c5bfd63893747a1bf6f8049df607638c786252cb9243b86b6706",
1534
+ "sha256:baf7cee56bd552385c1ee39af360772fbfc2f43be005c78d1140204ad6148438",
1535
+ "sha256:bb19e30fdae77d357ce92192a3504579abe48a66877f476880238a962e5b96db",
1536
+ "sha256:bece9527f5a98466d67fb5d34dc560c4da964240d8b09024bb21c1246545e04e",
1537
+ "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b",
1538
+ "sha256:c268b5100cfeaa222c40f55e169d484efa1384b44bf9ca415eae6d556f02cb08",
1539
+ "sha256:c7b927155112ac858357ccf9d255dd8c044fd9ad2dc6ce4c4149527c901fa4c3",
1540
+ "sha256:c884de19528e0fcd9dc34ee94c810581dd6e74aef75437ff17e696c2bfefae3e",
1541
+ "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a",
1542
+ "sha256:cf0e99cdb600eabcd1d65cdba0d3c91418fee21c4aa1d28db47d095b1064a7d8",
1543
+ "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00",
1544
+ "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191",
1545
+ "sha256:f0fda83e113bb0fb27dc003685f32a5dcb99c9c4f41f4fa0838ac35265c23b5c",
1546
+ "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7",
1547
+ "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e",
1548
+ "sha256:fe147fcd85aaed53ce90645c91ed5fca0cc88a797314c70dfd9d35925bd5d106"
1549
1549
  ],
1550
1550
  "markers": "python_version >= '3.7'",
1551
- "version": "==2.0.39"
1551
+ "version": "==2.0.40"
1552
1552
  },
1553
1553
  "sqlmodel": {
1554
1554
  "hashes": [
@@ -1618,11 +1618,11 @@
1618
1618
  },
1619
1619
  "tzdata": {
1620
1620
  "hashes": [
1621
- "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694",
1622
- "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"
1621
+ "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8",
1622
+ "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"
1623
1623
  ],
1624
1624
  "markers": "python_version >= '2'",
1625
- "version": "==2025.1"
1625
+ "version": "==2025.2"
1626
1626
  },
1627
1627
  "urllib3": {
1628
1628
  "hashes": [
@@ -11,7 +11,7 @@ import pynetbox
11
11
  from starlette.middleware.cors import CORSMiddleware
12
12
 
13
13
  from osism.tasks import reconciler
14
- from osism import settings
14
+ from osism import settings, utils
15
15
  from osism.services.listener import BaremetalEvents
16
16
 
17
17
 
@@ -75,16 +75,13 @@ app.add_middleware(CORSMiddleware)
75
75
  dictConfig(LogConfig().dict())
76
76
  logger = logging.getLogger("api")
77
77
 
78
- nb = None
79
78
  baremetal_events = BaremetalEvents()
80
79
 
81
80
 
82
81
  @app.on_event("startup")
83
82
  async def startup_event():
84
- global nb
85
-
86
83
  if settings.NETBOX_URL and settings.NETBOX_TOKEN:
87
- nb = pynetbox.api(settings.NETBOX_URL, token=settings.NETBOX_TOKEN)
84
+ utils.nb = pynetbox.api(settings.NETBOX_URL, token=settings.NETBOX_TOKEN)
88
85
 
89
86
  if settings.IGNORE_SSL_ERRORS:
90
87
  import requests
@@ -92,7 +89,7 @@ async def startup_event():
92
89
  requests.packages.urllib3.disable_warnings()
93
90
  session = requests.Session()
94
91
  session.verify = False
95
- nb.http_session = session
92
+ utils.nb.http_session = session
96
93
 
97
94
 
98
95
  @app.get("/")
@@ -125,9 +122,7 @@ async def webhook(
125
122
  content_length: int = Header(...),
126
123
  x_hook_signature: str = Header(None),
127
124
  ):
128
- global nb
129
-
130
- if nb:
125
+ if utils.nb:
131
126
  data = webhook_input.data
132
127
  url = data["url"]
133
128
  name = data["name"]
@@ -146,7 +141,7 @@ async def webhook(
146
141
  device_type = "interface"
147
142
 
148
143
  device_id = data["device"]["id"]
149
- device = nb.dcim.devices.get(id=device_id)
144
+ device = utils.nb.dcim.devices.get(id=device_id)
150
145
  tags = [str(x) for x in device.tags]
151
146
  custom_fields = device.custom_fields
152
147
 
@@ -12,7 +12,7 @@ import requests
12
12
  from osism.data import TEMPLATE_IMAGE_CLUSTERAPI, TEMPLATE_IMAGE_OCTAVIA
13
13
  from osism.tasks import openstack, handle_task
14
14
 
15
- SUPPORTED_CLUSTERAPI_K8S_IMAGES = ["1.29", "1.30", "1.31"]
15
+ SUPPORTED_CLUSTERAPI_K8S_IMAGES = ["1.30", "1.31", "1.32"]
16
16
 
17
17
 
18
18
  class ImageClusterapi(Command):
@@ -51,7 +51,7 @@ class ImageClusterapi(Command):
51
51
  parser.add_argument(
52
52
  "--filter",
53
53
  type=str,
54
- help="Filter the version to be managed (e.g. 1.31)",
54
+ help="Filter the version to be managed (e.g. 1.32)",
55
55
  default=None,
56
56
  )
57
57
  return parser
@@ -2,36 +2,34 @@
2
2
 
3
3
  from cliff.command import Command
4
4
  from loguru import logger
5
- from redis import Redis
6
5
 
7
- from osism import settings
8
- from osism.tasks import conductor, netbox, reconciler, openstack, handle_task
9
-
10
-
11
- redis = Redis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.REDIS_DB)
12
- redis.ping()
6
+ from osism.tasks import conductor, netbox, reconciler, handle_task
13
7
 
14
8
 
15
9
  class Ironic(Command):
16
10
  def get_parser(self, prog_name):
17
11
  parser = super(Ironic, self).get_parser(prog_name)
12
+ parser.add_argument(
13
+ "--no-wait",
14
+ help="Do not wait until the sync has been completed",
15
+ action="store_true",
16
+ )
17
+ parser.add_argument(
18
+ "--force-update",
19
+ help="Force update of baremetal nodes (Used to update non-comparable items like passwords)",
20
+ action="store_true",
21
+ )
18
22
  return parser
19
23
 
20
24
  def take_action(self, parsed_args):
21
- # Get Ironic parameters from the conductor
22
- task = conductor.get_ironic_parameters.delay()
23
- task.wait(timeout=None, interval=0.5)
24
- ironic_parameters = task.get()
25
+ wait = not parsed_args.no_wait
25
26
 
26
- # Add all unregistered systems from the Netbox in Ironic
27
- netbox.get_devices_not_yet_registered_in_ironic.apply_async(
28
- (), link=openstack.baremetal_create_nodes.s(ironic_parameters)
27
+ task = conductor.sync_netbox_with_ironic.delay(
28
+ force_update=parsed_args.force_update
29
29
  )
30
-
31
- # Synchronize the current status in Ironic with the Netbox
32
- # openstack.baremetal_node_list.apply_async((), link=netbox.synchronize_device_state.s())
33
-
34
- # Remove systems from Ironic that are no longer present in the Netbox
30
+ if wait:
31
+ logger.info(f"Task {task.task_id} is running. Wait. No more output.")
32
+ task.wait(timeout=None, interval=0.5)
35
33
 
36
34
 
37
35
  class Sync(Command):
@@ -39,7 +37,6 @@ class Sync(Command):
39
37
  parser = super(Sync, self).get_parser(prog_name)
40
38
  parser.add_argument(
41
39
  "--no-wait",
42
- default=False,
43
40
  help="Do not wait until the sync has been completed",
44
41
  action="store_true",
45
42
  )
@@ -6,8 +6,7 @@ from celery import Celery
6
6
  from celery.result import AsyncResult
7
7
  from cliff.command import Command
8
8
  from loguru import logger
9
- from redis import Redis
10
- from osism import settings
9
+ from osism import utils
11
10
  from osism.tasks import Config
12
11
 
13
12
 
@@ -119,18 +118,12 @@ class Run(Command):
119
118
  print(f"{task_id} = STARTED")
120
119
 
121
120
  if live:
122
- redis = Redis(
123
- host=settings.REDIS_HOST,
124
- port=settings.REDIS_PORT,
125
- db=settings.REDIS_DB,
126
- socket_keepalive=True,
127
- )
128
- redis.ping()
121
+ utils.redis.ping()
129
122
 
130
123
  last_id = 0
131
124
  while_True = True
132
125
  while while_True:
133
- data = redis.xread(
126
+ data = utils.redis.xread(
134
127
  {str(task_id): last_id}, count=1, block=1000
135
128
  )
136
129
  if data:
@@ -143,7 +136,7 @@ class Run(Command):
143
136
  logger.debug(
144
137
  f"Processing message {last_id} of type {message_type}"
145
138
  )
146
- redis.xdel(str(task_id), last_id)
139
+ utils.redis.xdel(str(task_id), last_id)
147
140
 
148
141
  if message_type == "stdout":
149
142
  print(message_content, end="")
@@ -153,7 +146,7 @@ class Run(Command):
153
146
  message_type == "action"
154
147
  and message_content == "quit"
155
148
  ):
156
- redis.close()
149
+ utils.redis.close()
157
150
  if len(task_ids) == 1:
158
151
  return rc
159
152
  else: