diff --git a/subiquity/server/controllers/filesystem.py b/subiquity/server/controllers/filesystem.py index d6a9b318..c24c8b1a 100644 --- a/subiquity/server/controllers/filesystem.py +++ b/subiquity/server/controllers/filesystem.py @@ -373,10 +373,15 @@ class FilesystemController(SubiquityController, FilesystemManipulator): if data.partition.grub_device not in (None, partition.grub_device): raise ValueError('edit_partition does not support changing ' + 'grub_device') - + existing_format = '' + existing_mount = '' + if partition._fs: + existing_format = partition._fs.fstype + if partition._fs._mount: + existing_mount = partition._fs._mount.path spec = { - 'fstype': data.partition.format, - 'mount': data.partition.mount, + 'fstype': data.partition.format or existing_format, + 'mount': data.partition.mount or existing_mount, } self.partition_disk_handler(disk, partition, spec) return await self.v2_GET() diff --git a/subiquity/tests/api/test_api.py b/subiquity/tests/api/test_api.py index c6c0e393..b4439053 100755 --- a/subiquity/tests/api/test_api.py +++ b/subiquity/tests/api/test_api.py @@ -475,6 +475,32 @@ class TestWin10(TestAPI): self.assertFalse(resp['need_root']) self.assertFalse(resp['need_boot']) + @timeout(5) + async def test_edit_partial(self): + disk_id = 'disk-sda' + await self.post('/storage/v2/reformat_disk', disk_id=disk_id) + + data = { + 'disk_id': disk_id, + 'partition': { + 'format': 'ext4', + 'mount': '/', + } + } + await self.post('/storage/v2/add_partition', data) + + data['partition'].update({ + 'number': 2, + 'format': None, + 'mount': '/home' + }) + resp = await self.post('/storage/v2/edit_partition', data) + + sda = first(resp['disks'], 'id', disk_id) + sda2 = first(sda['partitions'], 'number', 2) + self.assertEqual('ext4', sda2['format']) + self.assertEqual('/home', sda2['mount']) + class TestManyDisks(TestAPI): machine_config = 'examples/many-nics-and-disks.json'