osism 0.20250701.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/api.py +3 -3
- osism/commands/manage.py +0 -251
- osism/commands/sonic.py +973 -0
- osism/tasks/__init__.py +2 -7
- osism/tasks/ansible.py +1 -3
- osism/tasks/conductor/ironic.py +1 -3
- osism/tasks/conductor/sonic/config_generator.py +38 -14
- osism/tasks/netbox.py +3 -7
- osism/tasks/reconciler.py +3 -7
- osism/utils/__init__.py +28 -0
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/METADATA +3 -3
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/RECORD +18 -17
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/entry_points.txt +9 -1
- osism-0.20250709.0.dist-info/pbr.json +1 -0
- osism-0.20250701.0.dist-info/pbr.json +0 -1
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/WHEEL +0 -0
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/licenses/AUTHORS +0 -0
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/licenses/LICENSE +0 -0
- {osism-0.20250701.0.dist-info → osism-0.20250709.0.dist-info}/top_level.txt +0 -0
osism/tasks/__init__.py
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
|
-
import logging
|
4
3
|
import os
|
5
4
|
import re
|
6
5
|
import subprocess
|
7
6
|
|
8
7
|
from loguru import logger
|
9
|
-
from pottery import Redlock
|
10
8
|
|
11
9
|
from osism import utils
|
12
10
|
|
@@ -77,10 +75,8 @@ def run_ansible_in_environment(
|
|
77
75
|
|
78
76
|
# NOTE: Consider arguments in the future
|
79
77
|
if locking:
|
80
|
-
|
81
|
-
lock = Redlock(
|
78
|
+
lock = utils.create_redlock(
|
82
79
|
key=f"lock-ansible-{environment}-{role}",
|
83
|
-
masters={utils.redis},
|
84
80
|
auto_release_time=auto_release_time,
|
85
81
|
)
|
86
82
|
|
@@ -195,9 +191,8 @@ def run_command(
|
|
195
191
|
command_env.update(env)
|
196
192
|
|
197
193
|
if locking:
|
198
|
-
lock =
|
194
|
+
lock = utils.create_redlock(
|
199
195
|
key=f"lock-{command}",
|
200
|
-
masters={utils.redis},
|
201
196
|
auto_release_time=auto_release_time,
|
202
197
|
)
|
203
198
|
|
osism/tasks/ansible.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# SPDX-License-Identifier: Apache-2.0
|
2
2
|
|
3
3
|
from celery import Celery
|
4
|
-
from pottery import Redlock
|
5
4
|
|
6
5
|
from osism import settings, utils
|
7
6
|
from osism.tasks import Config, run_ansible_in_environment
|
@@ -12,9 +11,8 @@ app.config_from_object(Config)
|
|
12
11
|
|
13
12
|
@app.on_after_configure.connect
|
14
13
|
def setup_periodic_tasks(sender, **kwargs):
|
15
|
-
lock =
|
14
|
+
lock = utils.create_redlock(
|
16
15
|
key="lock_osism_tasks_ansible_setup_periodic_tasks",
|
17
|
-
masters={utils.redis},
|
18
16
|
)
|
19
17
|
if settings.GATHER_FACTS_SCHEDULE > 0 and lock.acquire(timeout=10):
|
20
18
|
sender.add_periodic_task(
|
osism/tasks/conductor/ironic.py
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
import json
|
4
4
|
|
5
5
|
import jinja2
|
6
|
-
from pottery import Redlock
|
7
6
|
|
8
7
|
from osism import utils as osism_utils
|
9
8
|
from osism.tasks import netbox, openstack
|
@@ -180,9 +179,8 @@ def sync_ironic(request_id, get_ironic_parameters, force_update=False):
|
|
180
179
|
if interface.enabled and not interface.mgmt_only and interface.mac_address
|
181
180
|
]
|
182
181
|
|
183
|
-
lock =
|
182
|
+
lock = osism_utils.create_redlock(
|
184
183
|
key=f"lock_osism_tasks_conductor_sync_ironic-{device.name}",
|
185
|
-
masters={osism_utils.redis},
|
186
184
|
auto_release_time=600,
|
187
185
|
)
|
188
186
|
if lock.acquire(timeout=120):
|
@@ -201,6 +201,9 @@ def generate_sonic_config(device, hwsku, device_as_mapping=None):
|
|
201
201
|
# Add NTP server configuration (device-specific)
|
202
202
|
_add_ntp_configuration(config, device)
|
203
203
|
|
204
|
+
# Add DNS server configuration (device-specific)
|
205
|
+
_add_dns_configuration(config, device)
|
206
|
+
|
204
207
|
# Add VLAN configuration
|
205
208
|
_add_vlan_configuration(config, vlan_info, netbox_interfaces, device)
|
206
209
|
|
@@ -694,18 +697,20 @@ def _determine_peer_type(local_device, connected_device, device_as_mapping=None)
|
|
694
697
|
return "external" # Default to external on error
|
695
698
|
|
696
699
|
|
697
|
-
def
|
698
|
-
"""Get
|
700
|
+
def _get_metalbox_ip_for_device(device):
|
701
|
+
"""Get Metalbox IP for a SONiC device based on OOB connection.
|
699
702
|
|
700
703
|
Returns the IP address of the metalbox device interface that is connected to the
|
701
704
|
OOB switch. If VLANs are used, returns the IP of the VLAN interface where the
|
702
705
|
SONiC switch management interface (eth0) has access.
|
703
706
|
|
707
|
+
This IP is used for both NTP and DNS services.
|
708
|
+
|
704
709
|
Args:
|
705
710
|
device: SONiC device object
|
706
711
|
|
707
712
|
Returns:
|
708
|
-
str: IP address of the
|
713
|
+
str: IP address of the Metalbox or None if not found
|
709
714
|
"""
|
710
715
|
try:
|
711
716
|
# Get the OOB IP configuration for this SONiC device
|
@@ -726,7 +731,7 @@ def _get_ntp_server_for_device(device):
|
|
726
731
|
metalbox_devices = utils.nb.dcim.devices.filter(role="metalbox")
|
727
732
|
|
728
733
|
for metalbox in metalbox_devices:
|
729
|
-
logger.debug(f"Checking metalbox device {metalbox.name} for
|
734
|
+
logger.debug(f"Checking metalbox device {metalbox.name} for services")
|
730
735
|
|
731
736
|
# Get all interfaces on this metalbox
|
732
737
|
interfaces = utils.nb.dcim.interfaces.filter(device_id=metalbox.id)
|
@@ -765,7 +770,7 @@ def _get_ntp_server_for_device(device):
|
|
765
770
|
else "interface"
|
766
771
|
)
|
767
772
|
logger.info(
|
768
|
-
f"Found
|
773
|
+
f"Found Metalbox {ip_only} on {metalbox.name} "
|
769
774
|
f"{interface_type} {interface.name} for SONiC device {device.name}"
|
770
775
|
)
|
771
776
|
return ip_only
|
@@ -773,11 +778,11 @@ def _get_ntp_server_for_device(device):
|
|
773
778
|
# Skip non-IPv4 addresses
|
774
779
|
continue
|
775
780
|
|
776
|
-
logger.warning(f"No suitable
|
781
|
+
logger.warning(f"No suitable Metalbox found for SONiC device {device.name}")
|
777
782
|
return None
|
778
783
|
|
779
784
|
except Exception as e:
|
780
|
-
logger.warning(f"Could not determine
|
785
|
+
logger.warning(f"Could not determine Metalbox IP for device {device.name}: {e}")
|
781
786
|
return None
|
782
787
|
|
783
788
|
|
@@ -846,19 +851,17 @@ def _add_ntp_configuration(config, device):
|
|
846
851
|
metalbox device interface connected to the OOB switch.
|
847
852
|
"""
|
848
853
|
try:
|
849
|
-
# Get the
|
850
|
-
|
854
|
+
# Get the Metalbox IP for this device
|
855
|
+
metalbox_ip = _get_metalbox_ip_for_device(device)
|
851
856
|
|
852
|
-
if
|
857
|
+
if metalbox_ip:
|
853
858
|
# Add single NTP server configuration
|
854
|
-
config["NTP_SERVER"][
|
859
|
+
config["NTP_SERVER"][metalbox_ip] = {
|
855
860
|
"maxpoll": "10",
|
856
861
|
"minpoll": "6",
|
857
862
|
"prefer": "false",
|
858
863
|
}
|
859
|
-
logger.info(
|
860
|
-
f"Added NTP server {ntp_server_ip} to SONiC device {device.name}"
|
861
|
-
)
|
864
|
+
logger.info(f"Added NTP server {metalbox_ip} to SONiC device {device.name}")
|
862
865
|
else:
|
863
866
|
logger.warning(f"No NTP server found for SONiC device {device.name}")
|
864
867
|
|
@@ -873,6 +876,27 @@ def clear_ntp_cache():
|
|
873
876
|
logger.debug("Cleared NTP servers cache")
|
874
877
|
|
875
878
|
|
879
|
+
def _add_dns_configuration(config, device):
|
880
|
+
"""Add DNS_NAMESERVER configuration to device config.
|
881
|
+
|
882
|
+
Each SONiC switch gets exactly one DNS server - the IP address of the
|
883
|
+
metalbox device interface connected to the OOB switch.
|
884
|
+
"""
|
885
|
+
try:
|
886
|
+
# Get the Metalbox IP for this device
|
887
|
+
metalbox_ip = _get_metalbox_ip_for_device(device)
|
888
|
+
|
889
|
+
if metalbox_ip:
|
890
|
+
# Add single DNS server configuration
|
891
|
+
config["DNS_NAMESERVER"][metalbox_ip] = {}
|
892
|
+
logger.info(f"Added DNS server {metalbox_ip} to SONiC device {device.name}")
|
893
|
+
else:
|
894
|
+
logger.warning(f"No DNS server found for SONiC device {device.name}")
|
895
|
+
|
896
|
+
except Exception as e:
|
897
|
+
logger.warning(f"Could not add DNS configuration to device {device.name}: {e}")
|
898
|
+
|
899
|
+
|
876
900
|
def clear_all_caches():
|
877
901
|
"""Clear all caches in config_generator module."""
|
878
902
|
clear_ntp_cache()
|
osism/tasks/netbox.py
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
from celery import Celery
|
4
4
|
from loguru import logger
|
5
|
-
from pottery import Redlock
|
6
5
|
|
7
6
|
from osism import settings, utils
|
8
7
|
from osism.tasks import Config, run_command
|
@@ -30,9 +29,8 @@ def run(self, action, arguments):
|
|
30
29
|
def set_maintenance(self, device_name, state=True):
|
31
30
|
"""Set the maintenance state for a device in the NetBox."""
|
32
31
|
|
33
|
-
lock =
|
32
|
+
lock = utils.create_redlock(
|
34
33
|
key=f"lock_osism_tasks_netbox_set_maintenance_{device_name}",
|
35
|
-
masters={utils.redis},
|
36
34
|
auto_release_time=60,
|
37
35
|
)
|
38
36
|
if lock.acquire(timeout=20):
|
@@ -59,9 +57,8 @@ def set_maintenance(self, device_name, state=True):
|
|
59
57
|
def set_provision_state(self, device_name, state):
|
60
58
|
"""Set the provision state for a device in the NetBox."""
|
61
59
|
|
62
|
-
lock =
|
60
|
+
lock = utils.create_redlock(
|
63
61
|
key=f"lock_osism_tasks_netbox_set_provision_state_{device_name}",
|
64
|
-
masters={utils.redis},
|
65
62
|
auto_release_time=60,
|
66
63
|
)
|
67
64
|
if lock.acquire(timeout=20):
|
@@ -89,9 +86,8 @@ def set_provision_state(self, device_name, state):
|
|
89
86
|
def set_power_state(self, device_name, state):
|
90
87
|
"""Set the provision state for a device in the NetBox."""
|
91
88
|
|
92
|
-
lock =
|
89
|
+
lock = utils.create_redlock(
|
93
90
|
key=f"lock_osism_tasks_netbox_set_provision_state_{device_name}",
|
94
|
-
masters={utils.redis},
|
95
91
|
auto_release_time=60,
|
96
92
|
)
|
97
93
|
if lock.acquire(timeout=20):
|
osism/tasks/reconciler.py
CHANGED
@@ -6,7 +6,6 @@ import subprocess
|
|
6
6
|
|
7
7
|
from celery import Celery
|
8
8
|
from loguru import logger
|
9
|
-
from pottery import Redlock
|
10
9
|
|
11
10
|
from osism import settings, utils
|
12
11
|
from osism.tasks import Config
|
@@ -17,9 +16,8 @@ app.config_from_object(Config)
|
|
17
16
|
|
18
17
|
@app.on_after_configure.connect
|
19
18
|
def setup_periodic_tasks(sender, **kwargs):
|
20
|
-
lock =
|
19
|
+
lock = utils.create_redlock(
|
21
20
|
key="lock_osism_tasks_reconciler_setup_periodic_tasks",
|
22
|
-
masters={utils.redis},
|
23
21
|
)
|
24
22
|
if settings.INVENTORY_RECONCILER_SCHEDULE > 0 and lock.acquire(timeout=10):
|
25
23
|
sender.add_periodic_task(
|
@@ -29,9 +27,8 @@ def setup_periodic_tasks(sender, **kwargs):
|
|
29
27
|
|
30
28
|
@app.task(bind=True, name="osism.tasks.reconciler.run")
|
31
29
|
def run(self, publish=True, flush_cache=False):
|
32
|
-
lock =
|
30
|
+
lock = utils.create_redlock(
|
33
31
|
key="lock_osism_tasks_reconciler_run",
|
34
|
-
masters={utils.redis},
|
35
32
|
auto_release_time=60,
|
36
33
|
)
|
37
34
|
|
@@ -64,9 +61,8 @@ def run(self, publish=True, flush_cache=False):
|
|
64
61
|
|
65
62
|
@app.task(bind=True, name="osism.tasks.reconciler.run_on_change")
|
66
63
|
def run_on_change(self):
|
67
|
-
lock =
|
64
|
+
lock = utils.create_redlock(
|
68
65
|
key="lock_osism_tasks_reconciler_run_on_change",
|
69
|
-
masters={utils.redis},
|
70
66
|
auto_release_time=60,
|
71
67
|
)
|
72
68
|
|
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.
|
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.
|
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,7 +52,7 @@ 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.
|
55
|
+
Requires-Dist: transitions==0.9.3
|
56
56
|
Requires-Dist: uvicorn[standard]==0.35.0
|
57
57
|
Requires-Dist: validators==0.35.0
|
58
58
|
Requires-Dist: watchdog==6.0.0
|
@@ -1,6 +1,6 @@
|
|
1
1
|
osism/__init__.py,sha256=1UiNTBus0V0f2AbZQzAtVtu6zkfCCrw0OTq--NwFAqY,341
|
2
2
|
osism/__main__.py,sha256=ILe4gu61xEISiBsxanqTQIdSkV-YhpZXTRlguCYyssk,141
|
3
|
-
osism/api.py,sha256=
|
3
|
+
osism/api.py,sha256=7BKVedr3aK8QSRf4ZI1WpraYivibimx-SqVKVAzD6bw,11070
|
4
4
|
osism/main.py,sha256=Dt2-9sLXcS-Ny4DAz7hrha-KRc7zd7BFUTRdfs_X8z4,893
|
5
5
|
osism/settings.py,sha256=IUbUo8kru8TeiMAnnil5oHwd8SqbkPCY401dVONMygo,1885
|
6
6
|
osism/commands/__init__.py,sha256=Ag4wX_DCgXRdoLn6t069jqb3DdRylsX2nyYkiyCx4uk,456
|
@@ -13,7 +13,7 @@ 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=
|
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
|
@@ -21,6 +21,7 @@ osism/commands/redfish.py,sha256=oBfxd5UBX4ED8XulEuIYziIYQqTvUKpKfcdGyg_AoiI,843
|
|
21
21
|
osism/commands/server.py,sha256=avmoOv5rjOi-fN2A-27cPwOtiy2Q2j6UFtCh3QrfWAI,7512
|
22
22
|
osism/commands/service.py,sha256=A1lgAlGeCJpbFFqF55DRWPcCirIgpU0dzjzVLZ0mz3k,2649
|
23
23
|
osism/commands/set.py,sha256=xLBi2DzbVQo2jb3-cOIE9In5UB3vFxquQJkDN-EsfhM,1425
|
24
|
+
osism/commands/sonic.py,sha256=siuYUIlLfNuCKe9BLZ_9Pj2FkzcUCxusBOyaFnwiIF0,35303
|
24
25
|
osism/commands/status.py,sha256=X-Rcj-XuNPDBoxsGkf96NswwpmTognxz1V6E2NX2ZgY,1997
|
25
26
|
osism/commands/sync.py,sha256=jOg-g8NmVOkXBI6rOuiOx2WgUJc1PplLAAAwc0VuIfw,1919
|
26
27
|
osism/commands/task.py,sha256=mwJJ7a71Lw3o_FX7j3rR0-NbPdPwMDOjbOAiiXE4uGc,543
|
@@ -34,37 +35,37 @@ osism/data/enums.py,sha256=gItIjOK6xWuOZSkMxpMdYLRyt4ezyhzkqA7BGiah2o0,10030
|
|
34
35
|
osism/data/playbooks.py,sha256=M3T3ajV-8Lt-orsRO3jAoukhaoYFr4EZ2dzYXQjt1kg,728
|
35
36
|
osism/services/__init__.py,sha256=bG7Ffen4LvQtgnYPFEpFccsWs81t4zqqeqn9ZeirH6E,38
|
36
37
|
osism/services/listener.py,sha256=Vf8LOZkHzlspm40BZ1az3o1O_ar34_i6C83p-D8KzzM,9783
|
37
|
-
osism/tasks/__init__.py,sha256=
|
38
|
-
osism/tasks/ansible.py,sha256
|
38
|
+
osism/tasks/__init__.py,sha256=XZhUQLamrS0ikRkYNCxv-H8KQ0I51Uda7fq6botVpXo,6998
|
39
|
+
osism/tasks/ansible.py,sha256=-gUe6uZFhPLI3DGZHlpQlghuDKpp4Drn5IEctlV6Sv8,1300
|
39
40
|
osism/tasks/ceph.py,sha256=eIQkah3Kj4INtOkF9kTjHbXJ3_J2lg48EWJKfHc-UYw,615
|
40
41
|
osism/tasks/conductor.py,sha256=WBLsoPtr0iGUzRGERs0Xt7CMYrnHQVEwNV9qXBssI3s,274
|
41
42
|
osism/tasks/kolla.py,sha256=wJQpWn_01iWLkr7l7T7RNrQGfRgsgmYi4WQlTmNGvew,618
|
42
43
|
osism/tasks/kubernetes.py,sha256=VzXq_VrYU_CLm4cOruqnE3Kq2ydfO9glZ3p0bp3OYoc,625
|
43
|
-
osism/tasks/netbox.py,sha256=
|
44
|
+
osism/tasks/netbox.py,sha256=QGQGz3s0V8WvPvhEJWwo0H24aLFaZrSl-voN-axzRwY,5846
|
44
45
|
osism/tasks/openstack.py,sha256=g15tCll5vP1pC6ysxRCTZxplsdGmXbxaCH3k1Qdv5Xg,6367
|
45
|
-
osism/tasks/reconciler.py,sha256=
|
46
|
+
osism/tasks/reconciler.py,sha256=PnGWfvfmomzbgddvyCdxul-z5ZLXxWAmrQyRCN874-s,1958
|
46
47
|
osism/tasks/conductor/__init__.py,sha256=HW8CXpZOQ6aNgLZ3Ck08YcfQfueoA0ce35Kolh0rWww,1903
|
47
48
|
osism/tasks/conductor/config.py,sha256=tMI0dtEFSWxfueRZdvocpbEq0sIN_PnXG08CuATkPz4,4489
|
48
|
-
osism/tasks/conductor/ironic.py,sha256=
|
49
|
+
osism/tasks/conductor/ironic.py,sha256=LyUm9xk1oqjarRona2UVodMO7clIt2sqtiW76elqEak,15352
|
49
50
|
osism/tasks/conductor/netbox.py,sha256=5Nc7wrriDOtSuru1KDLt9QpA54vC7tXDPB2J0JP9GKo,11393
|
50
51
|
osism/tasks/conductor/redfish.py,sha256=hOOS-_l3Qmo_6vLsgjZmJwTxLTf029hhFRVkU0TMLL0,12723
|
51
52
|
osism/tasks/conductor/utils.py,sha256=ZSbQumQr-uL-B9XOwbsscLIX7czJHu6Mq0t_poRpMsw,7769
|
52
53
|
osism/tasks/conductor/sonic/__init__.py,sha256=oxTTl_MGK4iWK9uNDRNlULtGrDGCQHrlJZ04weh_Lh8,777
|
53
54
|
osism/tasks/conductor/sonic/bgp.py,sha256=PC6gGI5bCj2PCXcNGyMV9-EdlJWDsYaodzxigmYSZvw,3088
|
54
55
|
osism/tasks/conductor/sonic/cache.py,sha256=Asv2k3nLJejuq7iB0a_LyK8dEmJzypP9v3OHkNY3GwI,3438
|
55
|
-
osism/tasks/conductor/sonic/config_generator.py,sha256=
|
56
|
+
osism/tasks/conductor/sonic/config_generator.py,sha256=_B001d6YdhLjAl61WGhlF2xyMXvcyJv0TQ16zuzJjB8,40117
|
56
57
|
osism/tasks/conductor/sonic/connections.py,sha256=NvRjwJv3NF3ry5Xe9qHzk7pQbfDQHYx_j3ATRMUs7gA,14244
|
57
58
|
osism/tasks/conductor/sonic/constants.py,sha256=HjVFwmH-AN3np1qN97ahEAcwz2-4cHa-pA9pXWqWsqs,2219
|
58
59
|
osism/tasks/conductor/sonic/device.py,sha256=ZYJA0bQ8waKWStzWUPxbcwNWa2Z_hMB3pqs8aA_nxXA,2458
|
59
60
|
osism/tasks/conductor/sonic/exporter.py,sha256=25L1vbi84ZQD0xNHNTWk-anTz5QRkGJskCECBkeGQw4,8882
|
60
61
|
osism/tasks/conductor/sonic/interface.py,sha256=318wOwXYSSMKTPP2WSZIps-JvIkCQ2gYdQs9ZYHXwwg,38957
|
61
62
|
osism/tasks/conductor/sonic/sync.py,sha256=fpgsQVwq6Hb7eeDHhLkAqx5BkaK3Ce_m_WvmWEsJyOo,9182
|
62
|
-
osism/utils/__init__.py,sha256=
|
63
|
-
osism-0.
|
64
|
-
osism-0.
|
65
|
-
osism-0.
|
66
|
-
osism-0.
|
67
|
-
osism-0.
|
68
|
-
osism-0.
|
69
|
-
osism-0.
|
70
|
-
osism-0.
|
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,,
|
@@ -46,7 +46,6 @@ manage netbox = osism.commands.netbox:Manage
|
|
46
46
|
manage redfish list = osism.commands.redfish:List
|
47
47
|
manage server list = osism.commands.server:ServerList
|
48
48
|
manage server migrate = osism.commands.server:ServerMigrate
|
49
|
-
manage sonic = osism.commands.manage:Sonic
|
50
49
|
manage volume list = osism.commands.volume:VolumeList
|
51
50
|
netbox = osism.commands.netbox:Console
|
52
51
|
noset bootstrap = osism.commands.noset:NoBootstrap
|
@@ -58,6 +57,15 @@ service = osism.commands.service:Run
|
|
58
57
|
set bootstrap = osism.commands.set:Bootstrap
|
59
58
|
set maintenance = osism.commands.set:Maintenance
|
60
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
|
61
69
|
sync configuration = osism.commands.configuration:Sync
|
62
70
|
sync dnsmasq = osism.commands.manage:Dnsmasq
|
63
71
|
sync facts = osism.commands.sync:Facts
|
@@ -0,0 +1 @@
|
|
1
|
+
{"git_version": "ed8c436", "is_release": false}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"git_version": "87129c8", "is_release": false}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|