Skip to content

Commit 5f38c8a

Browse files
committed
feat: PUC-1650: Separate disks by size when defining logical disks during enroll.
1 parent c5b9b48 commit 5f38c8a

1 file changed

Lines changed: 20 additions & 11 deletions

File tree

python/understack-workflows/understack_workflows/main/get_raid_devices.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,15 @@ def parse_controller_details(client: Sushy) -> dict:
5555
"""Parse available RAID controller details for execution."""
5656
result = {"controller": None, "physical_disks": []}
5757
system_objects = client.get_system_collection().get_members()
58-
system = system_objects[0]
58+
system = system_objects.pop()
5959
for c in system.storage.get_members():
60-
if "RAID" in c.identity:
60+
if "RAID" in c.identity.upper():
6161
result["controller"] = c.identity
6262
for d in c.drives:
63-
result["physical_disks"].append(d.identity)
63+
capacity = d.capacity_bytes / (10 ** 9)
64+
result["physical_disks"].append({
65+
'name': d.identity,
66+
'size_gb': f"{capacity:.0f}"})
6467
break
6568
return result
6669

@@ -75,19 +78,25 @@ def get_raid_type(disk_count: int) -> int:
7578

7679
def build_raid_config(raid_config: dict):
7780
"""Return a raid config supported by ironic for cleanup tasks."""
78-
raid_level = get_raid_type(len(raid_config["physical_disks"]))
79-
result = {
80-
"logical_disks": [
81+
sizes = sorted({int(d["size_gb"]) for d in raid_config['physical_disks']})
82+
base_config = {"logical_disks": []}
83+
for size in sizes:
84+
disks = [
85+
d["name"]
86+
for d in raid_config["physical_disks"]
87+
if int(d["size_gb"]) == size
88+
]
89+
raid_level = get_raid_type(len(disks))
90+
base_config["logical_disks"].append(
8191
{
8292
"controller": raid_config["controller"],
83-
"is_root_volume": True,
84-
"physical_disks": raid_config["physical_disks"],
93+
"is_root_volume": True if size == 480 else False,
94+
"physical_disks": disks,
8595
"raid_level": str(raid_level),
8696
"size_gb": "MAX",
8797
}
88-
]
89-
}
90-
return result
98+
)
99+
return base_config
91100

92101

93102
if __name__ == "__main__":

0 commit comments

Comments
 (0)