Skip to content

Commit

Permalink
filesystem: handle empty string fstype partitions
Browse files Browse the repository at this point in the history
This should not result in a format object being created, which curtin
doesn't like.  Normalize to None as the fstype to skip format object
creation.

LP: #2058394
  • Loading branch information
dbungert committed Mar 22, 2024
1 parent 03b6833 commit fc05e77
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
4 changes: 3 additions & 1 deletion subiquity/server/controllers/filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -1199,9 +1199,11 @@ async def v2_add_partition_POST(self, data: AddPartitionV2) -> StorageResponseV2
raise ValueError("new partition too large")
if requested_size < 1:
requested_size = data.gap.size
# empty string is an unformatted partition
fstype = data.partition.format or None
spec = {
"size": requested_size,
"fstype": data.partition.format,
"fstype": fstype,
"mount": data.partition.mount,
}

Expand Down
22 changes: 22 additions & 0 deletions subiquity/tests/api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -782,6 +782,28 @@ async def test_add_format_required(self):
with self.assertRaises(ClientResponseError, msg=f"data {data}"):
await inst.post("/storage/v2/add_partition", data)

@timeout()
async def test_add_unformatted_ok(self):
disk_id = "disk-sda"
async with start_server("examples/machines/simple.json") as inst:
for fmt in ("", None):
await inst.post("/storage/v2/reset")
disk_id = "disk-sda"
resp = await inst.get("/storage/v2")
[sda] = match(resp["disks"], id=disk_id)
[gap] = sda["partitions"]

data = {
"disk_id": disk_id,
"gap": gap,
"partition": dict(format=fmt, mount="/"),
}
await inst.post("/storage/v2/add_partition", data)

v1resp = await inst.get("/storage")
empties = match(v1resp["config"], type="format", fstype="")
self.assertEqual(0, len(empties), "invalid format object")

@timeout()
async def test_add_default_size_handling(self):
async with start_server("examples/machines/simple.json") as inst:
Expand Down

0 comments on commit fc05e77

Please sign in to comment.