osism 0.20250314.0__py3-none-any.whl → 0.20250326.0__py3-none-any.whl
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/commands/manage.py +117 -55
- osism/commands/netbox.py +12 -21
- osism/tasks/ansible.py +0 -15
- osism/tasks/openstack.py +64 -15
- osism/tasks/reconciler.py +0 -16
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info}/METADATA +10 -9
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info}/RECORD +13 -13
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info}/WHEEL +1 -1
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info}/entry_points.txt +0 -1
- osism-0.20250326.0.dist-info/licenses/AUTHORS +1 -0
- osism-0.20250326.0.dist-info/pbr.json +1 -0
- osism-0.20250314.0.dist-info/AUTHORS +0 -1
- osism-0.20250314.0.dist-info/pbr.json +0 -1
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info/licenses}/LICENSE +0 -0
- {osism-0.20250314.0.dist-info → osism-0.20250326.0.dist-info}/top_level.txt +0 -0
osism/commands/manage.py
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import os
|
4
3
|
from re import findall
|
5
|
-
import subprocess
|
6
4
|
from urllib.parse import urljoin
|
7
5
|
|
8
6
|
from cliff.command import Command
|
@@ -12,6 +10,7 @@ from loguru import logger
|
|
12
10
|
import requests
|
13
11
|
|
14
12
|
from osism.data import TEMPLATE_IMAGE_CLUSTERAPI, TEMPLATE_IMAGE_OCTAVIA
|
13
|
+
from osism.tasks import openstack, handle_task
|
15
14
|
|
16
15
|
SUPPORTED_CLUSTERAPI_K8S_IMAGES = ["1.29", "1.30", "1.31"]
|
17
16
|
|
@@ -20,6 +19,12 @@ class ImageClusterapi(Command):
|
|
20
19
|
def get_parser(self, prog_name):
|
21
20
|
parser = super(ImageClusterapi, self).get_parser(prog_name)
|
22
21
|
|
22
|
+
parser.add_argument(
|
23
|
+
"--no-wait",
|
24
|
+
default=False,
|
25
|
+
help="Do not wait until image management has been completed",
|
26
|
+
action="store_true",
|
27
|
+
)
|
23
28
|
parser.add_argument(
|
24
29
|
"--base-url",
|
25
30
|
type=str,
|
@@ -56,13 +61,14 @@ class ImageClusterapi(Command):
|
|
56
61
|
cloud = parsed_args.cloud
|
57
62
|
filter = parsed_args.filter
|
58
63
|
tag = parsed_args.tag
|
64
|
+
wait = not parsed_args.no_wait
|
59
65
|
|
60
66
|
if filter:
|
61
67
|
supported_cluterapi_k8s_images = [filter]
|
62
68
|
else:
|
63
69
|
supported_cluterapi_k8s_images = SUPPORTED_CLUSTERAPI_K8S_IMAGES
|
64
70
|
|
65
|
-
|
71
|
+
result = []
|
66
72
|
for kubernetes_release in supported_cluterapi_k8s_images:
|
67
73
|
url = urljoin(base_url, f"last-{kubernetes_release}")
|
68
74
|
|
@@ -84,18 +90,18 @@ class ImageClusterapi(Command):
|
|
84
90
|
logger.info(f"checksum: {splitted_checksum[0]}")
|
85
91
|
|
86
92
|
template = Template(TEMPLATE_IMAGE_CLUSTERAPI)
|
87
|
-
result
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
93
|
+
result.extend(
|
94
|
+
[
|
95
|
+
template.render(
|
96
|
+
image_url=url,
|
97
|
+
image_checksum=f"sha256:{splitted_checksum[0]}",
|
98
|
+
image_version=r[0].strip(),
|
99
|
+
image_builddate=splitted[0],
|
100
|
+
)
|
101
|
+
]
|
92
102
|
)
|
93
|
-
with open(f"/tmp/clusterapi/k8s-{kubernetes_release}.yml", "w+") as fp:
|
94
|
-
fp.write(result)
|
95
103
|
|
96
104
|
args = [
|
97
|
-
"openstack-image-manager",
|
98
|
-
"--images=/tmp/clusterapi",
|
99
105
|
"--cloud",
|
100
106
|
cloud,
|
101
107
|
"--filter",
|
@@ -105,15 +111,32 @@ class ImageClusterapi(Command):
|
|
105
111
|
args.extend(["--tag", tag])
|
106
112
|
if parsed_args.dry_run:
|
107
113
|
args.append("--dry-run")
|
108
|
-
|
114
|
+
|
115
|
+
task_signature = openstack.image_manager.si(*args, configs=result)
|
116
|
+
task = task_signature.apply_async()
|
117
|
+
if wait:
|
118
|
+
logger.info(
|
119
|
+
f"It takes a moment until task {task.task_id} (image-manager) has been started and output is visible here."
|
120
|
+
)
|
121
|
+
|
122
|
+
return handle_task(task, wait, format="script", timeout=3600)
|
109
123
|
|
110
124
|
|
111
125
|
class ImageOctavia(Command):
|
112
126
|
def get_parser(self, prog_name):
|
113
127
|
parser = super(ImageOctavia, self).get_parser(prog_name)
|
128
|
+
parser.add_argument(
|
129
|
+
"--no-wait",
|
130
|
+
default=False,
|
131
|
+
help="Do not wait until image management has been completed",
|
132
|
+
action="store_true",
|
133
|
+
)
|
114
134
|
|
115
135
|
parser.add_argument(
|
116
|
-
"--cloud",
|
136
|
+
"--cloud",
|
137
|
+
type=str,
|
138
|
+
help="Cloud name in clouds.yaml (will be overruled by OS_AUTH_URL envvar)",
|
139
|
+
default="octavia",
|
117
140
|
)
|
118
141
|
parser.add_argument(
|
119
142
|
"--base-url",
|
@@ -124,6 +147,7 @@ class ImageOctavia(Command):
|
|
124
147
|
return parser
|
125
148
|
|
126
149
|
def take_action(self, parsed_args):
|
150
|
+
wait = not parsed_args.no_wait
|
127
151
|
cloud = parsed_args.cloud
|
128
152
|
base_url = parsed_args.base_url
|
129
153
|
|
@@ -147,21 +171,31 @@ class ImageOctavia(Command):
|
|
147
171
|
logger.info(f"checksum: {splitted_checksum[0]}")
|
148
172
|
|
149
173
|
template = Template(TEMPLATE_IMAGE_OCTAVIA)
|
150
|
-
result =
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
174
|
+
result = []
|
175
|
+
result.extend(
|
176
|
+
[
|
177
|
+
template.render(
|
178
|
+
image_url=url,
|
179
|
+
image_checksum=f"sha256:{splitted_checksum[0]}",
|
180
|
+
image_version=splitted[0],
|
181
|
+
image_builddate=splitted[0],
|
182
|
+
)
|
183
|
+
]
|
155
184
|
)
|
185
|
+
arguments = [
|
186
|
+
"--cloud",
|
187
|
+
cloud,
|
188
|
+
"--deactivate",
|
189
|
+
]
|
156
190
|
|
157
|
-
|
158
|
-
|
159
|
-
|
191
|
+
task_signature = openstack.image_manager.si(*arguments, configs=result)
|
192
|
+
task = task_signature.apply_async()
|
193
|
+
if wait:
|
194
|
+
logger.info(
|
195
|
+
f"It takes a moment until task {task.task_id} (image-manager) has been started and output is visible here."
|
196
|
+
)
|
160
197
|
|
161
|
-
|
162
|
-
"/usr/local/bin/openstack-image-manager --images=/tmp/octavia --cloud octavia --deactivate",
|
163
|
-
shell=True,
|
164
|
-
)
|
198
|
+
return handle_task(task, wait, format="script", timeout=3600)
|
165
199
|
|
166
200
|
|
167
201
|
class Images(Command):
|
@@ -173,6 +207,12 @@ class Images(Command):
|
|
173
207
|
# to typer. Then openstack-image-manager can simply be included directly at this
|
174
208
|
# point.
|
175
209
|
|
210
|
+
parser.add_argument(
|
211
|
+
"--no-wait",
|
212
|
+
default=False,
|
213
|
+
help="Do not wait until image management has been completed",
|
214
|
+
action="store_true",
|
215
|
+
)
|
176
216
|
parser.add_argument(
|
177
217
|
"--dry-run",
|
178
218
|
default=False,
|
@@ -185,6 +225,12 @@ class Images(Command):
|
|
185
225
|
help="Hide images that should be deleted",
|
186
226
|
action="store_true",
|
187
227
|
)
|
228
|
+
parser.add_argument(
|
229
|
+
"--delete",
|
230
|
+
default=False,
|
231
|
+
help="Delete images that should be deleted",
|
232
|
+
action="store_true",
|
233
|
+
)
|
188
234
|
parser.add_argument(
|
189
235
|
"--latest",
|
190
236
|
default=False,
|
@@ -210,35 +256,39 @@ class Images(Command):
|
|
210
256
|
return parser
|
211
257
|
|
212
258
|
def take_action(self, parsed_args):
|
213
|
-
|
214
|
-
dry_run = parsed_args.dry_run
|
215
|
-
filter = parsed_args.filter
|
216
|
-
hide = parsed_args.hide
|
217
|
-
latest = parsed_args.latest
|
218
|
-
images = parsed_args.images
|
259
|
+
wait = not parsed_args.no_wait
|
219
260
|
|
220
261
|
arguments = []
|
221
|
-
if cloud:
|
222
|
-
arguments.append(
|
223
|
-
|
224
|
-
|
225
|
-
|
262
|
+
if parsed_args.cloud:
|
263
|
+
arguments.append("--cloud")
|
264
|
+
arguments.append(parsed_args.cloud)
|
265
|
+
if parsed_args.filter:
|
266
|
+
arguments.append("--filter")
|
267
|
+
arguments.append(parsed_args.filter)
|
268
|
+
if parsed_args.delete:
|
269
|
+
arguments.append("--delete")
|
270
|
+
arguments.append("--yes-i-really-know-what-i-do")
|
271
|
+
if parsed_args.dry_run:
|
226
272
|
arguments.append("--dry-run")
|
227
|
-
if latest:
|
273
|
+
if parsed_args.latest:
|
228
274
|
arguments.append("--latest")
|
229
|
-
if hide:
|
275
|
+
if parsed_args.hide:
|
230
276
|
arguments.append("--hide")
|
231
277
|
|
232
|
-
|
233
|
-
|
278
|
+
arguments.append("--images")
|
279
|
+
if parsed_args.images:
|
280
|
+
arguments.append(parsed_args.images)
|
234
281
|
else:
|
235
|
-
arguments.append("
|
282
|
+
arguments.append("/etc/images")
|
236
283
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
284
|
+
task_signature = openstack.image_manager.si(*arguments)
|
285
|
+
task = task_signature.apply_async()
|
286
|
+
if wait:
|
287
|
+
logger.info(
|
288
|
+
f"It takes a moment until task {task.task_id} (image-manager) has been started and output is visible here."
|
289
|
+
)
|
290
|
+
|
291
|
+
return handle_task(task, wait, format="script", timeout=3600)
|
242
292
|
|
243
293
|
|
244
294
|
class Flavors(Command):
|
@@ -250,6 +300,12 @@ class Flavors(Command):
|
|
250
300
|
# to typer. Then openstack-flavor-manager can simply be included directly at this
|
251
301
|
# point.
|
252
302
|
|
303
|
+
parser.add_argument(
|
304
|
+
"--no-wait",
|
305
|
+
default=False,
|
306
|
+
help="Do not wait until flavor management has been completed",
|
307
|
+
action="store_true",
|
308
|
+
)
|
253
309
|
parser.add_argument(
|
254
310
|
"--cloud", type=str, help="Cloud name in clouds.yaml", default="admin"
|
255
311
|
)
|
@@ -276,23 +332,29 @@ class Flavors(Command):
|
|
276
332
|
return parser
|
277
333
|
|
278
334
|
def take_action(self, parsed_args):
|
335
|
+
wait = not parsed_args.no_wait
|
279
336
|
cloud = parsed_args.cloud
|
280
337
|
name = parsed_args.name
|
281
338
|
recommended = parsed_args.recommended
|
282
339
|
url = parsed_args.url
|
283
340
|
|
284
|
-
arguments = [
|
341
|
+
arguments = ["--name", name]
|
285
342
|
if cloud:
|
286
|
-
arguments.append(
|
343
|
+
arguments.append("--cloud")
|
344
|
+
arguments.append(cloud)
|
287
345
|
|
288
346
|
if recommended:
|
289
347
|
arguments.append("--recommended")
|
290
348
|
|
291
349
|
if url:
|
292
|
-
arguments.append(
|
350
|
+
arguments.append("--url")
|
351
|
+
arguments.append(url)
|
352
|
+
|
353
|
+
task_signature = openstack.flavor_manager.si(*arguments)
|
354
|
+
task = task_signature.apply_async()
|
355
|
+
if wait:
|
356
|
+
logger.info(
|
357
|
+
f"It takes a moment until task {task.task_id} (flavor-manager) has been started and output is visible here."
|
358
|
+
)
|
293
359
|
|
294
|
-
|
295
|
-
subprocess.call(
|
296
|
-
f"/usr/local/bin/openstack-flavor-manager {joined_arguments}",
|
297
|
-
shell=True,
|
298
|
-
)
|
360
|
+
return handle_task(task, wait, format="script", timeout=3600)
|
osism/commands/netbox.py
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import argparse
|
4
|
-
|
5
3
|
from cliff.command import Command
|
6
4
|
from loguru import logger
|
7
5
|
from redis import Redis
|
@@ -14,24 +12,6 @@ redis = Redis(host=settings.REDIS_HOST, port=settings.REDIS_PORT, db=settings.RE
|
|
14
12
|
redis.ping()
|
15
13
|
|
16
14
|
|
17
|
-
class Run(Command):
|
18
|
-
def get_parser(self, prog_name):
|
19
|
-
parser = super(Run, self).get_parser(prog_name)
|
20
|
-
parser.add_argument(
|
21
|
-
"arguments", nargs=argparse.REMAINDER, help="Other arguments for Ansible"
|
22
|
-
)
|
23
|
-
parser.add_argument(
|
24
|
-
"--no-wait",
|
25
|
-
default=False,
|
26
|
-
help="Do not wait until the role has been applied",
|
27
|
-
action="store_true",
|
28
|
-
)
|
29
|
-
return parser
|
30
|
-
|
31
|
-
def take_action(self, parsed_args):
|
32
|
-
pass
|
33
|
-
|
34
|
-
|
35
15
|
class Ironic(Command):
|
36
16
|
def get_parser(self, prog_name):
|
37
17
|
parser = super(Ironic, self).get_parser(prog_name)
|
@@ -89,6 +69,12 @@ class Manage(Command):
|
|
89
69
|
help="Do not wait for the netbox API to be ready",
|
90
70
|
action="store_true",
|
91
71
|
)
|
72
|
+
parser.add_argument(
|
73
|
+
"--parallel",
|
74
|
+
type=str,
|
75
|
+
default=None,
|
76
|
+
help="Process up to n files in parallel",
|
77
|
+
)
|
92
78
|
parser.add_argument(
|
93
79
|
"--limit",
|
94
80
|
type=str,
|
@@ -124,8 +110,13 @@ class Manage(Command):
|
|
124
110
|
else:
|
125
111
|
arguments.append("--wait")
|
126
112
|
|
113
|
+
if parsed_args.parallel:
|
114
|
+
arguments.append("--parallel")
|
115
|
+
arguments.append(parsed_args.parallel)
|
116
|
+
|
127
117
|
if parsed_args.limit:
|
128
|
-
arguments.append("--limit
|
118
|
+
arguments.append("--limit")
|
119
|
+
arguments.append(parsed_args.limit)
|
129
120
|
|
130
121
|
if parsed_args.skipdtl:
|
131
122
|
arguments.append("--skipdtl")
|
osism/tasks/ansible.py
CHANGED
@@ -1,25 +1,10 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import functools
|
4
|
-
from threading import RLock
|
5
|
-
|
6
3
|
from celery import Celery
|
7
|
-
import kombu.utils
|
8
4
|
|
9
5
|
from osism import settings
|
10
6
|
from osism.tasks import Config, run_ansible_in_environment
|
11
7
|
|
12
|
-
# https://github.com/celery/kombu/issues/1804
|
13
|
-
if not getattr(kombu.utils.cached_property, "lock", None):
|
14
|
-
setattr(
|
15
|
-
kombu.utils.cached_property,
|
16
|
-
"lock",
|
17
|
-
functools.cached_property(lambda _: RLock()),
|
18
|
-
)
|
19
|
-
# Must call __set_name__ here since this cached property is not defined in the context of a class
|
20
|
-
# Refer to https://docs.python.org/3/reference/datamodel.html#object.__set_name__
|
21
|
-
kombu.utils.cached_property.lock.__set_name__(kombu.utils.cached_property, "lock")
|
22
|
-
|
23
8
|
app = Celery("ansible")
|
24
9
|
app.config_from_object(Config)
|
25
10
|
|
osism/tasks/openstack.py
CHANGED
@@ -1,34 +1,21 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import functools
|
4
3
|
import copy
|
5
4
|
import ipaddress
|
6
|
-
from threading import RLock
|
7
5
|
|
8
6
|
from celery import Celery
|
9
7
|
from celery.signals import worker_process_init
|
10
8
|
import jinja2
|
11
9
|
import keystoneauth1
|
12
|
-
import kombu.utils
|
13
10
|
import openstack
|
14
11
|
from pottery import Redlock
|
15
12
|
from redis import Redis
|
13
|
+
import tempfile
|
16
14
|
|
17
15
|
from osism import settings
|
18
|
-
from osism.tasks import Config, conductor, netbox
|
16
|
+
from osism.tasks import Config, conductor, netbox, run_command
|
19
17
|
from osism import utils
|
20
18
|
|
21
|
-
# https://github.com/celery/kombu/issues/1804
|
22
|
-
if not getattr(kombu.utils.cached_property, "lock", None):
|
23
|
-
setattr(
|
24
|
-
kombu.utils.cached_property,
|
25
|
-
"lock",
|
26
|
-
functools.cached_property(lambda _: RLock()),
|
27
|
-
)
|
28
|
-
# Must call __set_name__ here since this cached property is not defined in the context of a class
|
29
|
-
# Refer to https://docs.python.org/3/reference/datamodel.html#object.__set_name__
|
30
|
-
kombu.utils.cached_property.lock.__set_name__(kombu.utils.cached_property, "lock")
|
31
|
-
|
32
19
|
app = Celery("openstack")
|
33
20
|
app.config_from_object(Config)
|
34
21
|
|
@@ -267,3 +254,65 @@ def baremetal_create_internal_flavor(self, node):
|
|
267
254
|
def baremetal_delete_internal_flavor(self, node):
|
268
255
|
flavor = conn.compute.get_flavor(f"osism-{node}")
|
269
256
|
conn.compute.delete_flavor(flavor)
|
257
|
+
|
258
|
+
|
259
|
+
@app.task(bind=True, name="osism.tasks.openstack.image_manager")
|
260
|
+
def image_manager(
|
261
|
+
self, *arguments, configs=None, publish=True, locking=False, auto_release_time=3600
|
262
|
+
):
|
263
|
+
command = "/usr/local/bin/openstack-image-manager"
|
264
|
+
if configs:
|
265
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
266
|
+
for config in configs:
|
267
|
+
with tempfile.NamedTemporaryFile(
|
268
|
+
mode="w+", suffix=".yml", dir=temp_dir, delete=False
|
269
|
+
) as temp_file:
|
270
|
+
temp_file.write(config)
|
271
|
+
|
272
|
+
sanitized_args = [
|
273
|
+
arg for arg in arguments if not arg.startswith("--images=")
|
274
|
+
]
|
275
|
+
|
276
|
+
try:
|
277
|
+
images_index = sanitized_args.index("--images")
|
278
|
+
sanitized_args.pop(images_index)
|
279
|
+
sanitized_args.pop(images_index)
|
280
|
+
except ValueError:
|
281
|
+
pass
|
282
|
+
sanitized_args.extend(["--images", temp_dir])
|
283
|
+
rc = run_command(
|
284
|
+
self.request.id,
|
285
|
+
command,
|
286
|
+
{},
|
287
|
+
*sanitized_args,
|
288
|
+
publish=publish,
|
289
|
+
locking=locking,
|
290
|
+
auto_release_time=auto_release_time,
|
291
|
+
)
|
292
|
+
return rc
|
293
|
+
else:
|
294
|
+
return run_command(
|
295
|
+
self.request.id,
|
296
|
+
command,
|
297
|
+
{},
|
298
|
+
*arguments,
|
299
|
+
publish=publish,
|
300
|
+
locking=locking,
|
301
|
+
auto_release_time=auto_release_time,
|
302
|
+
)
|
303
|
+
|
304
|
+
|
305
|
+
@app.task(bind=True, name="osism.tasks.openstack.flavor_manager")
|
306
|
+
def flavor_manager(
|
307
|
+
self, *arguments, publish=True, locking=False, auto_release_time=3600
|
308
|
+
):
|
309
|
+
command = "/usr/local/bin/openstack-flavor-manager"
|
310
|
+
return run_command(
|
311
|
+
self.request.id,
|
312
|
+
command,
|
313
|
+
{},
|
314
|
+
*arguments,
|
315
|
+
publish=publish,
|
316
|
+
locking=locking,
|
317
|
+
auto_release_time=auto_release_time,
|
318
|
+
)
|
osism/tasks/reconciler.py
CHANGED
@@ -1,32 +1,16 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import functools
|
4
3
|
import io
|
5
4
|
import subprocess
|
6
|
-
from threading import RLock
|
7
5
|
|
8
6
|
from celery import Celery
|
9
7
|
from celery.signals import worker_process_init
|
10
|
-
import kombu.utils
|
11
8
|
from loguru import logger
|
12
9
|
from pottery import Redlock
|
13
10
|
from redis import Redis
|
14
|
-
|
15
11
|
from osism import settings
|
16
12
|
from osism.tasks import Config
|
17
13
|
|
18
|
-
|
19
|
-
# https://github.com/celery/kombu/issues/1804
|
20
|
-
if not getattr(kombu.utils.cached_property, "lock", None):
|
21
|
-
setattr(
|
22
|
-
kombu.utils.cached_property,
|
23
|
-
"lock",
|
24
|
-
functools.cached_property(lambda _: RLock()),
|
25
|
-
)
|
26
|
-
# Must call __set_name__ here since this cached property is not defined in the context of a class
|
27
|
-
# Refer to https://docs.python.org/3/reference/datamodel.html#object.__set_name__
|
28
|
-
kombu.utils.cached_property.lock.__set_name__(kombu.utils.cached_property, "lock")
|
29
|
-
|
30
14
|
app = Celery("reconciler")
|
31
15
|
app.config_from_object(Config)
|
32
16
|
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: osism
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.20250326.0
|
4
4
|
Summary: OSISM manager interface
|
5
5
|
Home-page: https://github.com/osism/python-osism
|
6
6
|
Author: OSISM GmbH
|
@@ -29,28 +29,28 @@ Requires-Dist: PyYAML==6.0.2
|
|
29
29
|
Requires-Dist: ara==1.7.2
|
30
30
|
Requires-Dist: celery[redis]==5.4.0
|
31
31
|
Requires-Dist: cliff==4.9.1
|
32
|
-
Requires-Dist: deepdiff==8.
|
32
|
+
Requires-Dist: deepdiff==8.4.2
|
33
33
|
Requires-Dist: docker==7.1.0
|
34
34
|
Requires-Dist: dtrack-auditor==1.5.0
|
35
|
-
Requires-Dist: fastapi==0.115.
|
35
|
+
Requires-Dist: fastapi==0.115.12
|
36
36
|
Requires-Dist: flower==2.0.1
|
37
37
|
Requires-Dist: hiredis==3.1.0
|
38
38
|
Requires-Dist: jc==1.25.4
|
39
39
|
Requires-Dist: keystoneauth1==5.10.0
|
40
|
-
Requires-Dist: kombu==5.5.
|
40
|
+
Requires-Dist: kombu==5.5.1
|
41
41
|
Requires-Dist: kubernetes==32.0.1
|
42
42
|
Requires-Dist: loguru==0.7.3
|
43
43
|
Requires-Dist: netmiko==4.5.0
|
44
44
|
Requires-Dist: nornir-ansible==2023.12.28
|
45
45
|
Requires-Dist: nornir==3.5.0
|
46
46
|
Requires-Dist: openstacksdk==4.4.0
|
47
|
-
Requires-Dist: pottery==3.0.
|
47
|
+
Requires-Dist: pottery==3.0.1
|
48
48
|
Requires-Dist: prompt-toolkit==3.0.50
|
49
49
|
Requires-Dist: pydantic==1.10.21
|
50
50
|
Requires-Dist: pynetbox==7.4.1
|
51
51
|
Requires-Dist: pytest-testinfra==10.1.1
|
52
52
|
Requires-Dist: python-dateutil==2.9.0.post0
|
53
|
-
Requires-Dist: setuptools==
|
53
|
+
Requires-Dist: setuptools==78.1.0
|
54
54
|
Requires-Dist: sqlmodel==0.0.24
|
55
55
|
Requires-Dist: sushy==5.5.0
|
56
56
|
Requires-Dist: tabulate==0.9.0
|
@@ -58,8 +58,8 @@ Requires-Dist: transitions==0.9.2
|
|
58
58
|
Requires-Dist: uvicorn[standard]==0.34.0
|
59
59
|
Requires-Dist: watchdog==6.0.0
|
60
60
|
Provides-Extra: ansible
|
61
|
-
Requires-Dist: ansible-runner==2.4.
|
62
|
-
Requires-Dist: ansible-core==2.18.
|
61
|
+
Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
|
62
|
+
Requires-Dist: ansible-core==2.18.4; extra == "ansible"
|
63
63
|
Provides-Extra: openstack-image-manager
|
64
64
|
Requires-Dist: openstack-image-manager==0.20250314.0; extra == "openstack-image-manager"
|
65
65
|
Dynamic: author
|
@@ -67,6 +67,7 @@ Dynamic: author-email
|
|
67
67
|
Dynamic: classifier
|
68
68
|
Dynamic: description
|
69
69
|
Dynamic: home-page
|
70
|
+
Dynamic: license-file
|
70
71
|
Dynamic: requires-dist
|
71
72
|
Dynamic: requires-python
|
72
73
|
Dynamic: summary
|
@@ -15,8 +15,8 @@ osism/commands/console.py,sha256=8BPz1hio5Wi6kONVAWFuSqkDRrMcLEYeFIY8dbtN6e4,321
|
|
15
15
|
osism/commands/container.py,sha256=Fku2GaCM3Idq_FxExUtNqjrEM0XYjpVvXmueSVO8S_c,1601
|
16
16
|
osism/commands/get.py,sha256=ryytjtXWmlMV0NucP5tGkMZu0nIlC4xVtjRk4iMZ06c,8967
|
17
17
|
osism/commands/log.py,sha256=2IpYuosC7FZwwLvM8HmKSU1NRNIelVVYzqjjVMCrOJk,4072
|
18
|
-
osism/commands/manage.py,sha256=
|
19
|
-
osism/commands/netbox.py,sha256=
|
18
|
+
osism/commands/manage.py,sha256=SDJyH3zwdaOjVWURIIjm8WMo6zSor1Y_TiTYgeMt4pI,11932
|
19
|
+
osism/commands/netbox.py,sha256=DMAgP9o9AUjw1Cf3MLjSQ36vr5NckGKIsAPNQictboc,4702
|
20
20
|
osism/commands/noset.py,sha256=7zDFuFMyNpo7DUOKcNiYV8nodtdMOYFp5LDPcuJhlZ8,1481
|
21
21
|
osism/commands/reconciler.py,sha256=Ja_b86gX6-_Pr3DmrUUvskmEnnJpHQ-XJNQLycMJeyc,2818
|
22
22
|
osism/commands/server.py,sha256=zFXRdYoj4ZNDJNPSaGddMPEWxt8G2GyMomPOcCOaN3c,4137
|
@@ -38,20 +38,20 @@ osism/plugins/__init__.py,sha256=bG7Ffen4LvQtgnYPFEpFccsWs81t4zqqeqn9ZeirH6E,38
|
|
38
38
|
osism/services/__init__.py,sha256=bG7Ffen4LvQtgnYPFEpFccsWs81t4zqqeqn9ZeirH6E,38
|
39
39
|
osism/services/listener.py,sha256=JjCdwPG5U9b_xYDpGFQeiLPP4y00GM3Me6NW1tt6Jws,11275
|
40
40
|
osism/tasks/__init__.py,sha256=qZQGMeaaeUN9CUBqVXGEx2pvDZpDJbhudq0jl4-7GRU,9111
|
41
|
-
osism/tasks/ansible.py,sha256=
|
41
|
+
osism/tasks/ansible.py,sha256=RcLxLrjzL5_X6OjNHm3H0lZlmKKlYKIANB0M4_d4chE,1109
|
42
42
|
osism/tasks/ceph.py,sha256=eIQkah3Kj4INtOkF9kTjHbXJ3_J2lg48EWJKfHc-UYw,615
|
43
43
|
osism/tasks/conductor.py,sha256=g9ulqWlGim0DjwQkVgW8Tl8MsXBGuukuQvM12CXbEmM,3892
|
44
44
|
osism/tasks/kolla.py,sha256=wJQpWn_01iWLkr7l7T7RNrQGfRgsgmYi4WQlTmNGvew,618
|
45
45
|
osism/tasks/kubernetes.py,sha256=VzXq_VrYU_CLm4cOruqnE3Kq2ydfO9glZ3p0bp3OYoc,625
|
46
46
|
osism/tasks/netbox.py,sha256=yR8z6VYkNXmNCsHzxP6KGmPtGW5mbpLks8XEw6TUwjk,4692
|
47
|
-
osism/tasks/openstack.py,sha256=
|
48
|
-
osism/tasks/reconciler.py,sha256=
|
47
|
+
osism/tasks/openstack.py,sha256=RkP1K-UhD3yJea1YD9cPyc5IWEvS-E8L6CCAiJlEpf8,10463
|
48
|
+
osism/tasks/reconciler.py,sha256=q_J825nw8haIcYS-FME5oWlaiSPmDbAGeB6NK6Vj00w,2974
|
49
49
|
osism/utils/__init__.py,sha256=5yng8l5Jd6GhNO4FNi6iYH4569UuTYAynamANgZnm1E,1258
|
50
|
-
osism-0.
|
51
|
-
osism-0.
|
52
|
-
osism-0.
|
53
|
-
osism-0.
|
54
|
-
osism-0.
|
55
|
-
osism-0.
|
56
|
-
osism-0.
|
57
|
-
osism-0.
|
50
|
+
osism-0.20250326.0.dist-info/licenses/AUTHORS,sha256=EKFIR9F27AvoEXp1cA6FkGbjEOFt4Rcbipr5RJc7jSs,64
|
51
|
+
osism-0.20250326.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
52
|
+
osism-0.20250326.0.dist-info/METADATA,sha256=7k0X9KTHpjfEgTKYV-Rw3biNu57oWLwLlEXT5EtG2vE,2972
|
53
|
+
osism-0.20250326.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
54
|
+
osism-0.20250326.0.dist-info/entry_points.txt,sha256=DlfrvU14rI55WuTrwNRoce9FY3ric4HeZKZx_Z3NzCw,3015
|
55
|
+
osism-0.20250326.0.dist-info/pbr.json,sha256=i-cyCN-68l6O9MTObxxZqkRCTq2ElZumvNW_esL1WmI,47
|
56
|
+
osism-0.20250326.0.dist-info/top_level.txt,sha256=8L8dsI9hcaGHsdnR4k_LN9EM78EhwrXRFHyAryPXZtY,6
|
57
|
+
osism-0.20250326.0.dist-info/RECORD,,
|
@@ -40,7 +40,6 @@ manage netbox = osism.commands.netbox:Manage
|
|
40
40
|
manage server list = osism.commands.server:ServerList
|
41
41
|
manage server migrate = osism.commands.server:ServerMigrate
|
42
42
|
manage volume list = osism.commands.volume:VolumeList
|
43
|
-
netbox = osism.commands.netbox:Run
|
44
43
|
netbox ping = osism.commands.netbox:Ping
|
45
44
|
netbox sync = osism.commands.netbox:Sync
|
46
45
|
netbox sync ironic = osism.commands.netbox:Ironic
|
@@ -0,0 +1 @@
|
|
1
|
+
renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
@@ -0,0 +1 @@
|
|
1
|
+
{"git_version": "908ac32", "is_release": false}
|
@@ -1 +0,0 @@
|
|
1
|
-
janhorstmann <horstmann@osism.tech>
|
@@ -1 +0,0 @@
|
|
1
|
-
{"git_version": "73a2ae0", "is_release": false}
|
File without changes
|
File without changes
|