diff options
| author | John Estabrook <jestabro@vyos.io> | 2023-12-11 13:55:09 -0600 | 
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2023-12-13 15:51:02 -0600 | 
| commit | e3cd779d0bd8dd8be6231c7b2028326a03e6a06c (patch) | |
| tree | d2d2b1391c1b0f648a836c1bf2b9b36e578f231a | |
| parent | ea30fc962049226e869171f69c6ab1879f9e7085 (diff) | |
| download | vyos-1x-e3cd779d0bd8dd8be6231c7b2028326a03e6a06c.tar.gz vyos-1x-e3cd779d0bd8dd8be6231c7b2028326a03e6a06c.zip | |
image-tools: T5806: deactive raid arrays
| -rw-r--r-- | python/vyos/system/raid.py | 32 | ||||
| -rwxr-xr-x | src/op_mode/image_installer.py | 1 | 
2 files changed, 22 insertions, 11 deletions
| diff --git a/python/vyos/system/raid.py b/python/vyos/system/raid.py index 616d1adf7..5b33d34da 100644 --- a/python/vyos/system/raid.py +++ b/python/vyos/system/raid.py @@ -19,7 +19,7 @@ from pathlib import Path  from shutil import copy  from dataclasses import dataclass -from vyos.utils.process import cmd +from vyos.utils.process import cmd, run  from vyos.system import disk @@ -44,16 +44,12 @@ def raid_create(raid_members: list[str],      """      raid_devices_num: int = len(raid_members)      raid_members_str: str = ' '.join(raid_members) -    if Path('/sys/firmware/efi').exists(): -        for part in raid_members: -            drive: str = disk.partition_parent(part) -            command: str = f'sgdisk --typecode=3:A19D880F-05FC-4D3B-A006-743F0F84911E {drive}' -            cmd(command) -    else: -        for part in raid_members: -            drive: str = disk.partition_parent(part) -            command: str = f'sgdisk --typecode=3:A19D880F-05FC-4D3B-A006-743F0F84911E {drive}' -            cmd(command) +    for part in raid_members: +        drive: str = disk.partition_parent(part) +        # set partition type GUID for raid member; cf. +        # https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs +        command: str = f'sgdisk --typecode=3:A19D880F-05FC-4D3B-A006-743F0F84911E {drive}' +        cmd(command)      command: str = f'mdadm --create /dev/{raid_name} -R --metadata=1.0 \          --raid-devices={raid_devices_num} --level={raid_level} \          {raid_members_str}' @@ -69,6 +65,20 @@ def raid_create(raid_members: list[str],      return raid +def clear(): +    """Deactivate all RAID arrays""" +    command: str = 'mdadm --examine --scan' +    raid_config = cmd(command) +    if not raid_config: +        return +    command: str = 'mdadm --run /dev/md?*' +    run(command) +    command: str = 'mdadm --assemble --scan --auto=yes --symlink=no' +    run(command) +    command: str = 'mdadm --stop --scan' +    run(command) + +  def update_initramfs() -> None:      """Update initramfs"""      mdadm_script = '/etc/initramfs-tools/scripts/local-top/mdadm' diff --git a/src/op_mode/image_installer.py b/src/op_mode/image_installer.py index b3e6e518c..8e01a9ea4 100755 --- a/src/op_mode/image_installer.py +++ b/src/op_mode/image_installer.py @@ -179,6 +179,7 @@ def create_partitions(target_disk: str, target_size: int,          rootfs_size: int = available_size      print(MSG_INFO_INSTALL_PARTITONING) +    raid.clear()      disk.disk_cleanup(target_disk)      disk_details: disk.DiskDetails = disk.parttable_create(target_disk,                                                             rootfs_size) | 
