osism 0.20250628.0__py3-none-any.whl → 0.20250709.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/utils/__init__.py CHANGED
@@ -2,11 +2,13 @@
2
2
 
3
3
  import time
4
4
  import os
5
+ from contextlib import redirect_stdout, redirect_stderr
5
6
  from cryptography.fernet import Fernet
6
7
  import keystoneauth1
7
8
  from loguru import logger
8
9
  import openstack
9
10
  import pynetbox
11
+ from pottery import Redlock
10
12
  from redis import Redis
11
13
  import urllib3
12
14
  import yaml
@@ -181,3 +183,29 @@ def finish_task_output(task_id, rc=None):
181
183
  if rc:
182
184
  redis.xadd(task_id, {"type": "rc", "content": rc})
183
185
  redis.xadd(task_id, {"type": "action", "content": "quit"})
186
+
187
+
188
+ def create_redlock(key, auto_release_time=3600):
189
+ """
190
+ Create a Redlock instance with output suppression during initialization.
191
+
192
+ Args:
193
+ key (str): The lock key
194
+ auto_release_time (int): Auto release time in seconds (default: 3600)
195
+
196
+ Returns:
197
+ Redlock: The configured Redlock instance
198
+ """
199
+ import logging
200
+
201
+ # Permanently suppress pottery logger output
202
+ pottery_logger = logging.getLogger("pottery")
203
+ pottery_logger.setLevel(logging.CRITICAL)
204
+
205
+ with open(os.devnull, "w") as devnull:
206
+ with redirect_stdout(devnull), redirect_stderr(devnull):
207
+ return Redlock(
208
+ key=key,
209
+ masters={redis},
210
+ auto_release_time=auto_release_time,
211
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osism
3
- Version: 0.20250628.0
3
+ Version: 0.20250709.0
4
4
  Summary: OSISM manager interface
5
5
  Home-page: https://github.com/osism/python-osism
6
6
  Author: OSISM GmbH
@@ -32,7 +32,7 @@ Requires-Dist: cliff==4.10.0
32
32
  Requires-Dist: deepdiff==8.5.0
33
33
  Requires-Dist: docker==7.1.0
34
34
  Requires-Dist: dtrack-auditor==1.5.0
35
- Requires-Dist: fastapi==0.115.14
35
+ Requires-Dist: fastapi==0.116.0
36
36
  Requires-Dist: flower==2.0.1
37
37
  Requires-Dist: hiredis==3.2.1
38
38
  Requires-Dist: jc==1.25.5
@@ -52,8 +52,9 @@ Requires-Dist: setuptools==80.9.0
52
52
  Requires-Dist: sqlmodel==0.0.24
53
53
  Requires-Dist: sushy==5.6.0
54
54
  Requires-Dist: tabulate==0.9.0
55
- Requires-Dist: transitions==0.9.2
55
+ Requires-Dist: transitions==0.9.3
56
56
  Requires-Dist: uvicorn[standard]==0.35.0
57
+ Requires-Dist: validators==0.35.0
57
58
  Requires-Dist: watchdog==6.0.0
58
59
  Provides-Extra: ansible
59
60
  Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
@@ -1,11 +1,11 @@
1
1
  osism/__init__.py,sha256=1UiNTBus0V0f2AbZQzAtVtu6zkfCCrw0OTq--NwFAqY,341
2
2
  osism/__main__.py,sha256=ILe4gu61xEISiBsxanqTQIdSkV-YhpZXTRlguCYyssk,141
3
- osism/api.py,sha256=3kEfPJtPwuWD8luDNnEFRx3nEsUY5AeWnmjd4A5ii-A,11079
3
+ osism/api.py,sha256=7BKVedr3aK8QSRf4ZI1WpraYivibimx-SqVKVAzD6bw,11070
4
4
  osism/main.py,sha256=Dt2-9sLXcS-Ny4DAz7hrha-KRc7zd7BFUTRdfs_X8z4,893
5
- osism/settings.py,sha256=bebPBT6Hd1-KhJfwZdFR-s8eMwV4B1IFr-WrQBkOrWw,1786
5
+ osism/settings.py,sha256=IUbUo8kru8TeiMAnnil5oHwd8SqbkPCY401dVONMygo,1885
6
6
  osism/commands/__init__.py,sha256=Ag4wX_DCgXRdoLn6t069jqb3DdRylsX2nyYkiyCx4uk,456
7
7
  osism/commands/apply.py,sha256=GWUccZAXlgkPYqylrCmdWcj8FCkDsPEipIIG937MeII,16833
8
- osism/commands/baremetal.py,sha256=w1LyZDms-DtULsF_76JsauOYHc2tcvoMRP6F9dYby9E,10688
8
+ osism/commands/baremetal.py,sha256=yxCb0UwBfERinoGvlD9bvsGPEdDcHhq48Mn6u5b2aM8,12037
9
9
  osism/commands/compose.py,sha256=iqzG7mS9E1VWaLNN6yQowjOqiHn3BMdj-yfXb3Dc4Ok,1200
10
10
  osism/commands/compute.py,sha256=cgqXWJa5wAvn-7e3FWCgX6hie_aK0yrKRkcNzjLXwDY,25799
11
11
  osism/commands/configuration.py,sha256=sPe8b0dVKFRbr30xoeVdAnHbGwCwgUh0xa_Vzv5pSQQ,954
@@ -13,13 +13,15 @@ osism/commands/console.py,sha256=8BPz1hio5Wi6kONVAWFuSqkDRrMcLEYeFIY8dbtN6e4,321
13
13
  osism/commands/container.py,sha256=Fku2GaCM3Idq_FxExUtNqjrEM0XYjpVvXmueSVO8S_c,1601
14
14
  osism/commands/get.py,sha256=ryytjtXWmlMV0NucP5tGkMZu0nIlC4xVtjRk4iMZ06c,8967
15
15
  osism/commands/log.py,sha256=2IpYuosC7FZwwLvM8HmKSU1NRNIelVVYzqjjVMCrOJk,4072
16
- osism/commands/manage.py,sha256=uzfmt3R0PJ4HxUw_V945pN0FbKb3zhyiBuD9br1ORYE,23149
16
+ osism/commands/manage.py,sha256=FaO9dbYjNHYanS98-zC498bx26oU8E3loxCczH9mfKI,12751
17
17
  osism/commands/netbox.py,sha256=e65P0kWrjTLw2T9HZthxjDTIRa-KAHgSSJAlvVef7n4,7345
18
18
  osism/commands/noset.py,sha256=7zDFuFMyNpo7DUOKcNiYV8nodtdMOYFp5LDPcuJhlZ8,1481
19
19
  osism/commands/reconciler.py,sha256=ubQfX8j13s3NuMKnT0Lt6O-szf7Z1V02AfsMQFHmO74,2209
20
+ osism/commands/redfish.py,sha256=oBfxd5UBX4ED8XulEuIYziIYQqTvUKpKfcdGyg_AoiI,8431
20
21
  osism/commands/server.py,sha256=avmoOv5rjOi-fN2A-27cPwOtiy2Q2j6UFtCh3QrfWAI,7512
21
22
  osism/commands/service.py,sha256=A1lgAlGeCJpbFFqF55DRWPcCirIgpU0dzjzVLZ0mz3k,2649
22
23
  osism/commands/set.py,sha256=xLBi2DzbVQo2jb3-cOIE9In5UB3vFxquQJkDN-EsfhM,1425
24
+ osism/commands/sonic.py,sha256=siuYUIlLfNuCKe9BLZ_9Pj2FkzcUCxusBOyaFnwiIF0,35303
23
25
  osism/commands/status.py,sha256=X-Rcj-XuNPDBoxsGkf96NswwpmTognxz1V6E2NX2ZgY,1997
24
26
  osism/commands/sync.py,sha256=jOg-g8NmVOkXBI6rOuiOx2WgUJc1PplLAAAwc0VuIfw,1919
25
27
  osism/commands/task.py,sha256=mwJJ7a71Lw3o_FX7j3rR0-NbPdPwMDOjbOAiiXE4uGc,543
@@ -33,36 +35,37 @@ osism/data/enums.py,sha256=gItIjOK6xWuOZSkMxpMdYLRyt4ezyhzkqA7BGiah2o0,10030
33
35
  osism/data/playbooks.py,sha256=M3T3ajV-8Lt-orsRO3jAoukhaoYFr4EZ2dzYXQjt1kg,728
34
36
  osism/services/__init__.py,sha256=bG7Ffen4LvQtgnYPFEpFccsWs81t4zqqeqn9ZeirH6E,38
35
37
  osism/services/listener.py,sha256=Vf8LOZkHzlspm40BZ1az3o1O_ar34_i6C83p-D8KzzM,9783
36
- osism/tasks/__init__.py,sha256=kocG0q2bARhkkSjMBH2xWdFUIJodesdh5qVsV_DqZmE,7148
37
- osism/tasks/ansible.py,sha256=_2zrHwynwwEv9nDnX-LbNCzcwy9dTUGo_yyutt34HyQ,1346
38
+ osism/tasks/__init__.py,sha256=XZhUQLamrS0ikRkYNCxv-H8KQ0I51Uda7fq6botVpXo,6998
39
+ osism/tasks/ansible.py,sha256=-gUe6uZFhPLI3DGZHlpQlghuDKpp4Drn5IEctlV6Sv8,1300
38
40
  osism/tasks/ceph.py,sha256=eIQkah3Kj4INtOkF9kTjHbXJ3_J2lg48EWJKfHc-UYw,615
39
41
  osism/tasks/conductor.py,sha256=WBLsoPtr0iGUzRGERs0Xt7CMYrnHQVEwNV9qXBssI3s,274
40
42
  osism/tasks/kolla.py,sha256=wJQpWn_01iWLkr7l7T7RNrQGfRgsgmYi4WQlTmNGvew,618
41
43
  osism/tasks/kubernetes.py,sha256=VzXq_VrYU_CLm4cOruqnE3Kq2ydfO9glZ3p0bp3OYoc,625
42
- osism/tasks/netbox.py,sha256=g0gL5QImiRTHqixRxze7LfNqPth7cXqLzVWQDUJLDjE,5928
44
+ osism/tasks/netbox.py,sha256=QGQGz3s0V8WvPvhEJWwo0H24aLFaZrSl-voN-axzRwY,5846
43
45
  osism/tasks/openstack.py,sha256=g15tCll5vP1pC6ysxRCTZxplsdGmXbxaCH3k1Qdv5Xg,6367
44
- osism/tasks/reconciler.py,sha256=phbSV6urILqq9mHGMYDFwSfx8bLZmldwgEi8sMWs8RA,2040
45
- osism/tasks/conductor/__init__.py,sha256=eBkisjRj0YRT0AArvuvpIHGNEqEijsNvR_55BuVX62I,1600
46
- osism/tasks/conductor/config.py,sha256=tvfuYNgvw0F_ZbvrjqnyHfrj3vF6z0zhsRtGNu-Lgvo,3410
47
- osism/tasks/conductor/ironic.py,sha256=VT8JyYNh4IDWJ8QTIo46IokILKpGhINfLHjQvwz4FSU,16337
46
+ osism/tasks/reconciler.py,sha256=PnGWfvfmomzbgddvyCdxul-z5ZLXxWAmrQyRCN874-s,1958
47
+ osism/tasks/conductor/__init__.py,sha256=HW8CXpZOQ6aNgLZ3Ck08YcfQfueoA0ce35Kolh0rWww,1903
48
+ osism/tasks/conductor/config.py,sha256=tMI0dtEFSWxfueRZdvocpbEq0sIN_PnXG08CuATkPz4,4489
49
+ osism/tasks/conductor/ironic.py,sha256=LyUm9xk1oqjarRona2UVodMO7clIt2sqtiW76elqEak,15352
48
50
  osism/tasks/conductor/netbox.py,sha256=5Nc7wrriDOtSuru1KDLt9QpA54vC7tXDPB2J0JP9GKo,11393
49
- osism/tasks/conductor/utils.py,sha256=-a0-pRuhV4Fjj0SgdgBqtRJtAdGdqck5pzfi6NYBApU,2338
51
+ osism/tasks/conductor/redfish.py,sha256=hOOS-_l3Qmo_6vLsgjZmJwTxLTf029hhFRVkU0TMLL0,12723
52
+ osism/tasks/conductor/utils.py,sha256=ZSbQumQr-uL-B9XOwbsscLIX7czJHu6Mq0t_poRpMsw,7769
50
53
  osism/tasks/conductor/sonic/__init__.py,sha256=oxTTl_MGK4iWK9uNDRNlULtGrDGCQHrlJZ04weh_Lh8,777
51
54
  osism/tasks/conductor/sonic/bgp.py,sha256=PC6gGI5bCj2PCXcNGyMV9-EdlJWDsYaodzxigmYSZvw,3088
52
55
  osism/tasks/conductor/sonic/cache.py,sha256=Asv2k3nLJejuq7iB0a_LyK8dEmJzypP9v3OHkNY3GwI,3438
53
- osism/tasks/conductor/sonic/config_generator.py,sha256=Fww6uOC7DplhsqR_jW9PHPB0pAAY1AiTGeNAQ2BUN4k,39259
56
+ osism/tasks/conductor/sonic/config_generator.py,sha256=_B001d6YdhLjAl61WGhlF2xyMXvcyJv0TQ16zuzJjB8,40117
54
57
  osism/tasks/conductor/sonic/connections.py,sha256=NvRjwJv3NF3ry5Xe9qHzk7pQbfDQHYx_j3ATRMUs7gA,14244
55
58
  osism/tasks/conductor/sonic/constants.py,sha256=HjVFwmH-AN3np1qN97ahEAcwz2-4cHa-pA9pXWqWsqs,2219
56
59
  osism/tasks/conductor/sonic/device.py,sha256=ZYJA0bQ8waKWStzWUPxbcwNWa2Z_hMB3pqs8aA_nxXA,2458
57
60
  osism/tasks/conductor/sonic/exporter.py,sha256=25L1vbi84ZQD0xNHNTWk-anTz5QRkGJskCECBkeGQw4,8882
58
61
  osism/tasks/conductor/sonic/interface.py,sha256=318wOwXYSSMKTPP2WSZIps-JvIkCQ2gYdQs9ZYHXwwg,38957
59
62
  osism/tasks/conductor/sonic/sync.py,sha256=fpgsQVwq6Hb7eeDHhLkAqx5BkaK3Ce_m_WvmWEsJyOo,9182
60
- osism/utils/__init__.py,sha256=gN5VtLJfrvyn6_snuTte7YR-vDygkpbORopIV8qSEsA,6064
61
- osism-0.20250628.0.dist-info/licenses/AUTHORS,sha256=oWotd63qsnNR945QLJP9mEXaXNtCMaesfo8ZNuLjwpU,39
62
- osism-0.20250628.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
63
- osism-0.20250628.0.dist-info/METADATA,sha256=rcVQq1RFwIJWgeRM4C6m33wkVLBrIWRr6uxb32HlP14,2904
64
- osism-0.20250628.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
- osism-0.20250628.0.dist-info/entry_points.txt,sha256=eRq0DXdl4z2DdmPta6dqpzMe1M0DaUCNw9i4Jgdfhf0,3426
66
- osism-0.20250628.0.dist-info/pbr.json,sha256=NkG2tM3T6XeLebmfw4oRVNN2ALTn2QIvqsXacP_lLJU,47
67
- osism-0.20250628.0.dist-info/top_level.txt,sha256=8L8dsI9hcaGHsdnR4k_LN9EM78EhwrXRFHyAryPXZtY,6
68
- osism-0.20250628.0.dist-info/RECORD,,
63
+ osism/utils/__init__.py,sha256=cMKOYH8mg9PXnIDoSume1KF3OpELhHWhKYL8ScY0_EY,6903
64
+ osism-0.20250709.0.dist-info/licenses/AUTHORS,sha256=oWotd63qsnNR945QLJP9mEXaXNtCMaesfo8ZNuLjwpU,39
65
+ osism-0.20250709.0.dist-info/licenses/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
66
+ osism-0.20250709.0.dist-info/METADATA,sha256=yodBqt4lzfRfMB1-pdlKX7shsBBy67vdP4Zl8xfHa_c,2937
67
+ osism-0.20250709.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
68
+ osism-0.20250709.0.dist-info/entry_points.txt,sha256=NlvBIfH7JWQ5xhjcYQeCpQKpP_3RjXxJIW1XK8oYhmk,3802
69
+ osism-0.20250709.0.dist-info/pbr.json,sha256=ux-nCNhP6rA-LJ8vLyJsdbbHawfvybH88tJFSPLDB6Q,47
70
+ osism-0.20250709.0.dist-info/top_level.txt,sha256=8L8dsI9hcaGHsdnR4k_LN9EM78EhwrXRFHyAryPXZtY,6
71
+ osism-0.20250709.0.dist-info/RECORD,,
@@ -43,9 +43,9 @@ manage image clusterapi = osism.commands.manage:ImageClusterapi
43
43
  manage image octavia = osism.commands.manage:ImageOctavia
44
44
  manage images = osism.commands.manage:Images
45
45
  manage netbox = osism.commands.netbox:Manage
46
+ manage redfish list = osism.commands.redfish:List
46
47
  manage server list = osism.commands.server:ServerList
47
48
  manage server migrate = osism.commands.server:ServerMigrate
48
- manage sonic = osism.commands.manage:Sonic
49
49
  manage volume list = osism.commands.volume:VolumeList
50
50
  netbox = osism.commands.netbox:Console
51
51
  noset bootstrap = osism.commands.noset:NoBootstrap
@@ -57,6 +57,15 @@ service = osism.commands.service:Run
57
57
  set bootstrap = osism.commands.set:Bootstrap
58
58
  set maintenance = osism.commands.set:Maintenance
59
59
  set vault password = osism.commands.vault:SetPassword
60
+ sonic backup = osism.commands.sonic:Backup
61
+ sonic console = osism.commands.sonic:Console
62
+ sonic load = osism.commands.sonic:Load
63
+ sonic reboot = osism.commands.sonic:Reboot
64
+ sonic reload = osism.commands.sonic:Reload
65
+ sonic reset = osism.commands.sonic:Reset
66
+ sonic show = osism.commands.sonic:Show
67
+ sonic sync = osism.commands.sync:Sonic
68
+ sonic ztp = osism.commands.sonic:Ztp
60
69
  sync configuration = osism.commands.configuration:Sync
61
70
  sync dnsmasq = osism.commands.manage:Dnsmasq
62
71
  sync facts = osism.commands.sync:Facts
@@ -0,0 +1 @@
1
+ {"git_version": "ed8c436", "is_release": false}
@@ -1 +0,0 @@
1
- {"git_version": "f3fe7d7", "is_release": false}