filesystem: edit require wipe on fstype change

This commit is contained in:
Dan Bungert 2022-08-29 17:48:47 -06:00
parent 590eb3a40c
commit 02d2d44bae
2 changed files with 14 additions and 2 deletions

View File

@ -532,6 +532,10 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
raise ValueError('edit_partition does not support changing boot')
spec = {'mount': data.partition.mount or partition.mount}
if data.partition.format is not None:
if data.partition.format != partition._fs.fstype:
if data.partition.wipe is None:
raise ValueError(
'changing partition format requires a wipe value')
spec['fstype'] = data.partition.format
if data.partition.size is not None:
spec['size'] = data.partition.size

View File

@ -349,6 +349,7 @@ class TestFlow(TestAPI):
'partition': {
'number': root['number'],
'format': 'ext4',
'wipe': 'superblock',
}
}
edit_resp = await inst.post('/storage/v2/edit_partition', data)
@ -755,6 +756,7 @@ class TestEdit(TestAPI):
'partition': {
'number': 3,
'format': 'btrfs',
'wipe': 'superblock',
}
}
resp = await inst.post('/storage/v2/edit_partition', data)
@ -790,6 +792,7 @@ class TestEdit(TestAPI):
'number': 3,
'format': 'btrfs',
'mount': '/',
'wipe': 'superblock',
}
}
resp = await inst.post('/storage/v2/edit_partition', data)
@ -812,6 +815,7 @@ class TestEdit(TestAPI):
'number': 3,
'format': 'ext4',
'mount': '/',
'wipe': 'superblock',
}
}
resp = await inst.post('/storage/v2/edit_partition', data)
@ -827,7 +831,7 @@ class TestEdit(TestAPI):
self.assertEqual(orig_sda2, sda2)
sda3 = first(sda['partitions'], 'number', 3)
self.assertIsNone(sda3['wipe'])
self.assertIsNotNone(sda3['wipe'])
self.assertEqual('/', sda3['mount'])
self.assertEqual('ext4', sda3['format'])
self.assertFalse(sda3['boot'])
@ -1232,7 +1236,11 @@ class TestRegression(TestAPI):
resp = await inst.post('/storage/v2/add_partition', data)
[sda] = resp['disks']
[part] = match(sda['partitions'], mount='/foo')
part.update({'format': 'ext3', 'mount': '/bar'})
part.update({
'format': 'ext3',
'mount': '/bar',
'wipe': 'superblock',
})
data['partition'] = part
data.pop('gap')
await inst.post('/storage/v2/edit_partition', data)