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.
- osism-0.20250407.0/.hadolint.yaml +4 -0
- osism-0.20250407.0/ChangeLog +7 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/Containerfile +15 -18
- {osism-0.20250326.0 → osism-0.20250407.0}/Dockerfile +15 -18
- {osism-0.20250326.0/osism.egg-info → osism-0.20250407.0}/PKG-INFO +5 -5
- {osism-0.20250326.0 → osism-0.20250407.0}/Pipfile +3 -3
- {osism-0.20250326.0 → osism-0.20250407.0}/Pipfile.lock +77 -77
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/api.py +5 -10
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/manage.py +2 -2
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/netbox.py +17 -20
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/wait.py +5 -12
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/enums.py +15 -1
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/services/listener.py +28 -67
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/__init__.py +13 -41
- osism-0.20250407.0/osism/tasks/conductor.py +419 -0
- osism-0.20250407.0/osism/tasks/netbox.py +154 -0
- osism-0.20250407.0/osism/tasks/openstack.py +239 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/reconciler.py +11 -26
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/utils/__init__.py +11 -0
- {osism-0.20250326.0 → osism-0.20250407.0/osism.egg-info}/PKG-INFO +5 -5
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/SOURCES.txt +0 -2
- osism-0.20250407.0/osism.egg-info/pbr.json +1 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/requires.txt +4 -4
- {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/build.yml +0 -11
- osism-0.20250407.0/requirements.openstack-image-manager.txt +1 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/requirements.txt +3 -3
- {osism-0.20250326.0 → osism-0.20250407.0}/requirements.yml +2 -2
- osism-0.20250326.0/.hadolint.yaml +0 -3
- osism-0.20250326.0/ChangeLog +0 -7
- osism-0.20250326.0/osism/actions/manage_device.py +0 -120
- osism-0.20250326.0/osism/actions/manage_interface.py +0 -13
- osism-0.20250326.0/osism/tasks/conductor.py +0 -120
- osism-0.20250326.0/osism/tasks/netbox.py +0 -171
- osism-0.20250326.0/osism/tasks/openstack.py +0 -318
- osism-0.20250326.0/osism.egg-info/pbr.json +0 -1
- osism-0.20250326.0/requirements.openstack-image-manager.txt +0 -1
- {osism-0.20250326.0 → osism-0.20250407.0}/.flake8 +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/.github/renovate.json +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/.github/workflows/publish.yml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/.zuul.yaml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/AUTHORS +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/LICENSE +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/README.md +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/change.sh +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/cleanup-ansible-collections.sh +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/clustershell/clush.conf +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/clustershell/groups.conf +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/netbox-manager/settings.toml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/files/run-ansible-console.sh +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/__main__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/actions/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/apply.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/compose.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/compute.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/configuration.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/console.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/container.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/get.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/log.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/noset.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/reconciler.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/server.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/service.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/set.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/status.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/sync.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/task.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/validate.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/vault.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/volume.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/commands/worker.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/core/playbooks.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/data/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/main.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/plugins/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/services/__init__.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/settings.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/ansible.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/ceph.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/kolla.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism/tasks/kubernetes.py +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/dependency_links.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/entry_points.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/not-zip-safe +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/osism.egg-info/top_level.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/pre.yml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/playbooks/test-setup.yml +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/requirements.ansible.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/requirements.netbox-manager.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/requirements.openstack-flavor-manager.txt +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/setup.cfg +0 -0
- {osism-0.20250326.0 → osism-0.20250407.0}/setup.py +0 -0
@@ -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}-
|
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.
|
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
|
-
|
29
|
-
|
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
|
-
|
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 ["/
|
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}-
|
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.
|
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
|
-
|
29
|
-
|
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
|
-
|
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 ["/
|
102
|
+
ENTRYPOINT ["/sbin/tini", "--"]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: osism
|
3
|
-
Version: 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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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": "
|
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:
|
130
|
-
"sha256:
|
129
|
+
"sha256:10d49f9926d16237310109b0e6e1e2f7a2133b84e684bb36534d7663e66919bb",
|
130
|
+
"sha256:f4170c6e5952281318448a899d9e9a15b9cbd007e002091766900dc8f71b9394"
|
131
131
|
],
|
132
132
|
"markers": "python_version >= '3.8'",
|
133
|
-
"version": "==5.
|
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:
|
790
|
-
"sha256:
|
789
|
+
"sha256:2dd27ec84fd843a4e0a7187424313f87514b344812cb98c25daddafbb6a7ff0e",
|
790
|
+
"sha256:40f3674ed19603b8a771b6c74de126dbf8879755a0337caac6602faa82d539cd"
|
791
791
|
],
|
792
792
|
"index": "pypi",
|
793
793
|
"markers": "python_version >= '3.8'",
|
794
|
-
"version": "==5.5.
|
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:
|
1179
|
-
"sha256:
|
1178
|
+
"sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a",
|
1179
|
+
"sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"
|
1180
1180
|
],
|
1181
1181
|
"markers": "python_version >= '3.8'",
|
1182
|
-
"version": "==0.4.
|
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:
|
1313
|
-
"sha256:
|
1312
|
+
"sha256:537fd5eb88da618c1f461248aa20594cf8d44512e8519b239837e83875e1e9cd",
|
1313
|
+
"sha256:b785602b0aa868c858e4ef121a8cc0d13a81c04b74ec0364d70969540f8e7c31"
|
1314
1314
|
],
|
1315
1315
|
"index": "pypi",
|
1316
1316
|
"markers": "python_version >= '3.9'",
|
1317
|
-
"version": "==10.
|
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:
|
1437
|
-
"sha256:
|
1436
|
+
"sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0",
|
1437
|
+
"sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"
|
1438
1438
|
],
|
1439
1439
|
"markers": "python_full_version >= '3.8.0'",
|
1440
|
-
"version": "==
|
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:
|
1493
|
-
"sha256:
|
1494
|
-
"sha256:
|
1495
|
-
"sha256:
|
1496
|
-
"sha256:
|
1497
|
-
"sha256:
|
1498
|
-
"sha256:
|
1499
|
-
"sha256:
|
1500
|
-
"sha256:
|
1501
|
-
"sha256:
|
1502
|
-
"sha256:
|
1503
|
-
"sha256:
|
1504
|
-
"sha256:
|
1505
|
-
"sha256:
|
1506
|
-
"sha256:
|
1507
|
-
"sha256:
|
1508
|
-
"sha256:
|
1509
|
-
"sha256:
|
1510
|
-
"sha256:
|
1511
|
-
"sha256:
|
1512
|
-
"sha256:
|
1513
|
-
"sha256:
|
1514
|
-
"sha256:
|
1515
|
-
"sha256:
|
1516
|
-
"sha256:
|
1517
|
-
"sha256:
|
1518
|
-
"sha256:
|
1519
|
-
"sha256:
|
1520
|
-
"sha256:
|
1521
|
-
"sha256:
|
1522
|
-
"sha256:
|
1523
|
-
"sha256:
|
1524
|
-
"sha256:
|
1525
|
-
"sha256:
|
1526
|
-
"sha256:
|
1527
|
-
"sha256:
|
1528
|
-
"sha256:
|
1529
|
-
"sha256:
|
1530
|
-
"sha256:
|
1531
|
-
"sha256:
|
1532
|
-
"sha256:
|
1533
|
-
"sha256:
|
1534
|
-
"sha256:
|
1535
|
-
"sha256:
|
1536
|
-
"sha256:
|
1537
|
-
"sha256:
|
1538
|
-
"sha256:
|
1539
|
-
"sha256:
|
1540
|
-
"sha256:
|
1541
|
-
"sha256:
|
1542
|
-
"sha256:
|
1543
|
-
"sha256:
|
1544
|
-
"sha256:
|
1545
|
-
"sha256:
|
1546
|
-
"sha256:
|
1547
|
-
"sha256:
|
1548
|
-
"sha256:
|
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.
|
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:
|
1622
|
-
"sha256:
|
1621
|
+
"sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8",
|
1622
|
+
"sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"
|
1623
1623
|
],
|
1624
1624
|
"markers": "python_version >= '2'",
|
1625
|
-
"version": "==2025.
|
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
|
-
|
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.
|
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.
|
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
|
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
|
-
|
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
|
-
|
27
|
-
|
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
|
-
|
32
|
-
|
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
|
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
|
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:
|