osism 0.20250331.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/ChangeLog +7 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/Containerfile +1 -1
- {osism-0.20250331.0 → osism-0.20250407.0}/Dockerfile +1 -1
- {osism-0.20250331.0/osism.egg-info → osism-0.20250407.0}/PKG-INFO +3 -3
- {osism-0.20250331.0 → osism-0.20250407.0}/Pipfile +1 -1
- {osism-0.20250331.0 → osism-0.20250407.0}/Pipfile.lock +4 -4
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/manage.py +2 -2
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/netbox.py +17 -14
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/core/enums.py +14 -1
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/services/listener.py +28 -67
- 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.20250331.0 → osism-0.20250407.0/osism.egg-info}/PKG-INFO +3 -3
- {osism-0.20250331.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.20250331.0 → osism-0.20250407.0}/osism.egg-info/requires.txt +2 -2
- osism-0.20250407.0/requirements.openstack-image-manager.txt +1 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/requirements.txt +1 -1
- {osism-0.20250331.0 → osism-0.20250407.0}/requirements.yml +1 -1
- osism-0.20250331.0/ChangeLog +0 -7
- osism-0.20250331.0/osism/actions/manage_device.py +0 -120
- osism-0.20250331.0/osism/actions/manage_interface.py +0 -13
- osism-0.20250331.0/osism/tasks/conductor.py +0 -108
- osism-0.20250331.0/osism/tasks/netbox.py +0 -150
- osism-0.20250331.0/osism/tasks/openstack.py +0 -299
- osism-0.20250331.0/osism.egg-info/pbr.json +0 -1
- osism-0.20250331.0/requirements.openstack-image-manager.txt +0 -1
- {osism-0.20250331.0 → osism-0.20250407.0}/.flake8 +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/.github/renovate.json +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/.github/workflows/publish.yml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/.hadolint.yaml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/.zuul.yaml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/AUTHORS +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/LICENSE +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/README.md +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/change.sh +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/cleanup-ansible-collections.sh +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/clustershell/clush.conf +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/clustershell/groups.conf +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/netbox-manager/settings.toml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/files/run-ansible-console.sh +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/__main__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/actions/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/api.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/apply.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/compose.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/compute.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/configuration.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/console.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/container.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/get.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/log.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/noset.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/reconciler.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/server.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/service.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/set.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/status.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/sync.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/task.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/validate.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/vault.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/volume.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/wait.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/commands/worker.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/core/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/core/playbooks.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/data/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/main.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/plugins/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/services/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/settings.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/ansible.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/ceph.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/kolla.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/kubernetes.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/tasks/reconciler.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism/utils/__init__.py +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism.egg-info/dependency_links.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism.egg-info/entry_points.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism.egg-info/not-zip-safe +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/osism.egg-info/top_level.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/playbooks/build.yml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/playbooks/pre.yml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/playbooks/test-setup.yml +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/requirements.ansible.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/requirements.netbox-manager.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/requirements.openstack-flavor-manager.txt +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/setup.cfg +0 -0
- {osism-0.20250331.0 → osism-0.20250407.0}/setup.py +0 -0
@@ -6,7 +6,7 @@ FROM python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
|
|
6
6
|
ENV PYTHONWARNINGS="ignore::UserWarning"
|
7
7
|
|
8
8
|
COPY . /src
|
9
|
-
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
|
10
10
|
|
11
11
|
COPY files/data /data
|
12
12
|
COPY files/change.sh /change.sh
|
@@ -6,7 +6,7 @@ FROM python:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
|
|
6
6
|
ENV PYTHONWARNINGS="ignore::UserWarning"
|
7
7
|
|
8
8
|
COPY . /src
|
9
|
-
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
|
10
10
|
|
11
11
|
COPY files/data /data
|
12
12
|
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.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
|
@@ -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"
|
@@ -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": [
|
@@ -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
|
@@ -3,29 +3,33 @@
|
|
3
3
|
from cliff.command import Command
|
4
4
|
from loguru import logger
|
5
5
|
|
6
|
-
from osism.tasks import conductor, netbox, reconciler,
|
6
|
+
from osism.tasks import conductor, netbox, reconciler, handle_task
|
7
7
|
|
8
8
|
|
9
9
|
class Ironic(Command):
|
10
10
|
def get_parser(self, prog_name):
|
11
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
|
+
)
|
12
22
|
return parser
|
13
23
|
|
14
24
|
def take_action(self, parsed_args):
|
15
|
-
|
16
|
-
task = conductor.get_ironic_parameters.delay()
|
17
|
-
task.wait(timeout=None, interval=0.5)
|
18
|
-
ironic_parameters = task.get()
|
25
|
+
wait = not parsed_args.no_wait
|
19
26
|
|
20
|
-
|
21
|
-
|
22
|
-
(), link=openstack.baremetal_create_nodes.s(ironic_parameters)
|
27
|
+
task = conductor.sync_netbox_with_ironic.delay(
|
28
|
+
force_update=parsed_args.force_update
|
23
29
|
)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# 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)
|
29
33
|
|
30
34
|
|
31
35
|
class Sync(Command):
|
@@ -33,7 +37,6 @@ class Sync(Command):
|
|
33
37
|
parser = super(Sync, self).get_parser(prog_name)
|
34
38
|
parser.add_argument(
|
35
39
|
"--no-wait",
|
36
|
-
default=False,
|
37
40
|
help="Do not wait until the sync has been completed",
|
38
41
|
action="store_true",
|
39
42
|
)
|
@@ -188,7 +188,7 @@ MAP_ROLE2ROLE = {
|
|
188
188
|
[
|
189
189
|
"common",
|
190
190
|
[
|
191
|
-
["loadbalancer", ["opensearch", "mariadb-ng"]],
|
191
|
+
["loadbalancer", ["letsencrypt", "opensearch", "mariadb-ng"]],
|
192
192
|
["openvswitch", ["ovn"]],
|
193
193
|
"memcached",
|
194
194
|
"redis",
|
@@ -199,6 +199,19 @@ MAP_ROLE2ROLE = {
|
|
199
199
|
"collection-kubernetes": [
|
200
200
|
["kubernetes", ["kubeconfig", ["copy-kubeconfig"]]],
|
201
201
|
],
|
202
|
+
"collection-openstack-core": [
|
203
|
+
"horizon",
|
204
|
+
[
|
205
|
+
"keystone",
|
206
|
+
[
|
207
|
+
"glance",
|
208
|
+
"cinder",
|
209
|
+
["neutron", ["octavia"]],
|
210
|
+
"designate",
|
211
|
+
["placement", ["nova"]],
|
212
|
+
],
|
213
|
+
],
|
214
|
+
],
|
202
215
|
"collection-openstack": [
|
203
216
|
"horizon",
|
204
217
|
[
|
@@ -11,8 +11,7 @@ from loguru import logger
|
|
11
11
|
import json
|
12
12
|
import requests
|
13
13
|
|
14
|
-
from osism import
|
15
|
-
from osism.tasks import netbox, openstack
|
14
|
+
from osism.tasks import netbox
|
16
15
|
from osism import settings
|
17
16
|
|
18
17
|
EXCHANGE_NAME = "ironic"
|
@@ -40,16 +39,13 @@ class BaremetalEvents:
|
|
40
39
|
},
|
41
40
|
"maintenance_set": {"end": self.node_maintenance_set_end},
|
42
41
|
"provision_set": {
|
42
|
+
"start": self.node_provision_set_start,
|
43
43
|
"end": self.node_provision_set_end,
|
44
44
|
"success": self.node_provision_set_success,
|
45
45
|
},
|
46
46
|
"delete": {"end": self.node_delete_end},
|
47
47
|
"create": {"end": self.node_create_end},
|
48
48
|
},
|
49
|
-
"port": {
|
50
|
-
"create": {"end": self.port_create_end},
|
51
|
-
"update": {"end": self.port_update_end},
|
52
|
-
},
|
53
49
|
}
|
54
50
|
}
|
55
51
|
|
@@ -78,7 +74,7 @@ class BaremetalEvents:
|
|
78
74
|
logger.info(
|
79
75
|
f"baremetal.node.power_set.end ## {name} ## {object_data['power_state']}"
|
80
76
|
)
|
81
|
-
netbox.
|
77
|
+
netbox.set_power_state.delay(name, object_data["power_state"])
|
82
78
|
|
83
79
|
def node_power_state_corrected_success(self, payload: dict[Any, Any]) -> None:
|
84
80
|
object_data = self.get_object_data(payload)
|
@@ -86,7 +82,7 @@ class BaremetalEvents:
|
|
86
82
|
logger.info(
|
87
83
|
f"baremetal.node.power_state_corrected.success ## {name} ## {object_data['power_state']}"
|
88
84
|
)
|
89
|
-
netbox.
|
85
|
+
netbox.set_power_state.delay(name, object_data["power_state"])
|
90
86
|
|
91
87
|
def node_maintenance_set_end(self, payload: dict[Any, Any]) -> None:
|
92
88
|
object_data = self.get_object_data(payload)
|
@@ -94,7 +90,7 @@ class BaremetalEvents:
|
|
94
90
|
logger.info(
|
95
91
|
f"baremetal.node.maintenance_set.end ## {name} ## {object_data['maintenance']}"
|
96
92
|
)
|
97
|
-
netbox.set_maintenance.delay(name, object_data["maintenance"])
|
93
|
+
netbox.set_maintenance.delay(name, state=object_data["maintenance"])
|
98
94
|
|
99
95
|
def node_provision_set_success(self, payload: dict[Any, Any]) -> None:
|
100
96
|
# A provision status was successfully set, update it in the netbox
|
@@ -103,80 +99,37 @@ class BaremetalEvents:
|
|
103
99
|
logger.info(
|
104
100
|
f"baremetal.node.provision_set.success ## {name} ## {object_data['provision_state']}"
|
105
101
|
)
|
106
|
-
netbox.
|
102
|
+
netbox.set_provision_state.delay(name, object_data["provision_state"])
|
107
103
|
|
108
|
-
def
|
104
|
+
def node_provision_set_start(self, payload: dict[Any, Any]) -> None:
|
109
105
|
object_data = self.get_object_data(payload)
|
110
106
|
name = object_data["name"]
|
111
107
|
logger.info(
|
112
|
-
f"baremetal.node.provision_set.
|
113
|
-
)
|
114
|
-
netbox.set_state.delay(name, object_data["provision_state"], "provision")
|
115
|
-
|
116
|
-
if (
|
117
|
-
object_data["previous_provision_state"] == "inspect wait"
|
118
|
-
and object_data["event"] == "done"
|
119
|
-
):
|
120
|
-
netbox.set_state.delay(name, "introspected", "introspection")
|
121
|
-
openstack.baremetal_set_node_provision_state.delay(name, "provide")
|
122
|
-
|
123
|
-
def port_create_end(self, payload: dict[Any, Any]) -> None:
|
124
|
-
object_data = self.get_object_data(payload)
|
125
|
-
name = object_data["name"]
|
126
|
-
logger.info(f"baremetal.port.create.end ## {object_data['uuid']}")
|
127
|
-
|
128
|
-
mac_address = object_data["address"]
|
129
|
-
interface_a = utils.nb.dcim.interfaces.get(mac_address=mac_address)
|
130
|
-
device_a = interface_a.device
|
131
|
-
|
132
|
-
task = openstack.baremetal_get_network_interface_name.delay(
|
133
|
-
device_a.name, mac_address
|
134
|
-
)
|
135
|
-
task.wait(timeout=None, interval=0.5)
|
136
|
-
network_interface_name = task.get()
|
137
|
-
|
138
|
-
netbox.update_network_interface_name.delay(
|
139
|
-
object_data["address"], network_interface_name
|
108
|
+
f"baremetal.node.provision_set.start ## {name} ## {object_data['provision_state']}"
|
140
109
|
)
|
110
|
+
netbox.set_provision_state.delay(name, object_data["provision_state"])
|
141
111
|
|
142
|
-
def
|
112
|
+
def node_provision_set_end(self, payload: dict[Any, Any]) -> None:
|
143
113
|
object_data = self.get_object_data(payload)
|
144
114
|
name = object_data["name"]
|
145
|
-
logger.info(
|
146
|
-
|
147
|
-
mac_address = object_data["address"]
|
148
|
-
interface_a = utils.nb.dcim.interfaces.get(mac_address=mac_address)
|
149
|
-
device_a = interface_a.device
|
150
|
-
|
151
|
-
task = openstack.baremetal_get_network_interface_name.delay(
|
152
|
-
device_a.name, mac_address
|
153
|
-
)
|
154
|
-
task.wait(timeout=None, interval=0.5)
|
155
|
-
network_interface_name = task.get()
|
156
|
-
|
157
|
-
netbox.update_network_interface_name.delay(
|
158
|
-
object_data["address"], network_interface_name
|
115
|
+
logger.info(
|
116
|
+
f"baremetal.node.provision_set.end ## {name} ## {object_data['provision_state']}"
|
159
117
|
)
|
118
|
+
netbox.set_provision_state.delay(name, object_data["provision_state"])
|
160
119
|
|
161
120
|
def node_delete_end(self, payload: dict[Any, Any]) -> None:
|
162
121
|
object_data = self.get_object_data(payload)
|
163
122
|
name = object_data["name"]
|
164
123
|
logger.info(f"baremetal.node.delete.end ## {name}")
|
165
|
-
|
166
|
-
netbox.
|
167
|
-
netbox.set_state.delay(name, None, "provision")
|
168
|
-
netbox.set_state.delay(name, None, "power")
|
169
|
-
netbox.set_state.delay(name, None, "introspection")
|
170
|
-
netbox.set_state.delay(name, None, "deployment")
|
171
|
-
|
172
|
-
# remove internal flavor
|
173
|
-
openstack.baremetal_delete_internal_flavor.delay(name)
|
124
|
+
netbox.set_provision_state.delay(name, None)
|
125
|
+
netbox.set_power_state.delay(name, None)
|
174
126
|
|
175
127
|
def node_create_end(self, payload: dict[Any, Any]) -> None:
|
176
128
|
object_data = self.get_object_data(payload)
|
177
129
|
name = object_data["name"]
|
178
130
|
logger.info(f"baremetal.node.create.end ## {name}")
|
179
|
-
netbox.
|
131
|
+
netbox.set_provision_state.delay(name, object_data["provision_state"])
|
132
|
+
netbox.set_power_state.delay(name, object_data["power_state"])
|
180
133
|
|
181
134
|
|
182
135
|
class NotificationsDump(ConsumerMixin):
|
@@ -207,7 +160,17 @@ class NotificationsDump(ConsumerMixin):
|
|
207
160
|
|
208
161
|
def on_message(self, body, message):
|
209
162
|
data = json.loads(body["oslo.message"])
|
210
|
-
|
163
|
+
logger.debug(
|
164
|
+
data["event_type"]
|
165
|
+
+ ": "
|
166
|
+
+ str(
|
167
|
+
{
|
168
|
+
k: v
|
169
|
+
for k, v in data["payload"]["ironic_object.data"].items()
|
170
|
+
if k in ["provision_state", "power_state"]
|
171
|
+
}
|
172
|
+
)
|
173
|
+
)
|
211
174
|
|
212
175
|
if self.osism_api_session:
|
213
176
|
tries = 1
|
@@ -268,8 +231,6 @@ class NotificationsDump(ConsumerMixin):
|
|
268
231
|
handler = self.baremetal_events.get_handler(data["event_type"])
|
269
232
|
handler(data["payload"])
|
270
233
|
|
271
|
-
logger.info(self.baremetal_events.get_object_data(data["payload"]))
|
272
|
-
|
273
234
|
|
274
235
|
def main():
|
275
236
|
while True:
|