bundles/backup-server: improve

This commit is contained in:
Franzi 2025-04-16 09:02:18 +02:00
parent c905b7dc13
commit a15740c899
Signed by: kunsi
GPG key ID: 12E3D2136B818350
2 changed files with 22 additions and 46 deletions

View file

@ -83,47 +83,24 @@ def zfs_pool(metadata):
devices = metadata.get('backup-server/encrypted-devices')
# TODO remove this once we have migrated all systems
if isinstance(devices, dict):
pool_devices = set()
pool_devices = set()
for number, (device, passphrase) in enumerate(sorted(devices.items())):
crypt_devices[device] = {
'dm-name': f'backup{number}',
'passphrase': passphrase,
}
pool_devices.add(f'/dev/mapper/backup{number}')
unlock_actions.add(f'action:dm-crypt_open_backup{number}')
for device, dconfig in devices.items():
crypt_devices[dconfig['device']] = {
'dm-name': f'backup-{device}',
'passphrase': dconfig['passphrase'],
}
pool_devices.add(f'/dev/mapper/backup-{device}')
unlock_actions.add(f'action:dm-crypt_open_backup-{device}')
pool_config = [{
'devices': pool_devices,
}]
pool_config = [{
'devices': pool_devices,
}]
if len(pool_devices) > 2:
pool_config[0]['type'] = 'raidz'
elif len(pool_devices) > 1:
pool_config[0]['type'] = 'mirror'
elif isinstance(devices, list):
pool_config = []
for idx, intended_pool in enumerate(devices):
pool_devices = set()
for number, (device, passphrase) in enumerate(sorted(intended_pool.items())):
crypt_devices[device] = {
'dm-name': f'backup{idx}-{number}',
'passphrase': passphrase,
}
pool_devices.add(f'/dev/mapper/backup{idx}-{number}')
unlock_actions.add(f'action:dm-crypt_open_backup{idx}-{number}')
pool_config.append({
'devices': pool_devices,
'type': 'raidz',
})
else:
raise BundleError(f'{node.name}: unsupported configuration for backup-server/encrypted-devices')
if len(pool_devices) > 2:
pool_config[0]['type'] = 'raidz'
elif len(pool_devices) > 1:
pool_config[0]['type'] = 'mirror'
return {
'backup-server': {