diff --git a/subiquity/client/controllers/filesystem.py b/subiquity/client/controllers/filesystem.py index b82ecc99..0f408793 100644 --- a/subiquity/client/controllers/filesystem.py +++ b/subiquity/client/controllers/filesystem.py @@ -28,7 +28,12 @@ from subiquity.common.types import ( ProbeStatus, StorageResponseV2, ) -from subiquity.models.filesystem import Bootloader, FilesystemModel, raidlevels_by_value +from subiquity.models.filesystem import ( + ActionRenderMode, + Bootloader, + FilesystemModel, + raidlevels_by_value, +) from subiquity.ui.views import FilesystemView, GuidedDiskSelectionView from subiquity.ui.views.filesystem.probing import ProbingFailed, SlowProbing from subiquitycore.async_helpers import run_bg_task @@ -288,4 +293,8 @@ class FilesystemController(SubiquityTuiController, FilesystemManipulator): def finish(self): log.debug("FilesystemController.finish next_screen") - self.app.next_screen(self.endpoint.POST(self.model._render_actions())) + self.app.next_screen( + self.endpoint.POST( + self.model._render_actions(mode=ActionRenderMode.FOR_API_CLIENT) + ) + ) diff --git a/subiquity/models/filesystem.py b/subiquity/models/filesystem.py index 994207a2..2de5eefd 100644 --- a/subiquity/models/filesystem.py +++ b/subiquity/models/filesystem.py @@ -1336,6 +1336,10 @@ class ActionRenderMode(enum.Enum): # information that is only used by client/server communication, # not curtin. FOR_API = enum.auto() + # FOR_API_CLIENT means render actions for devices that have + # changes and include information that is only used by + # client/server communication, not curtin. + FOR_API_CLIENT = enum.auto() # DEVICES means to just render actions for setting up block # devices, e.g. partitioning disks and assembling RAIDs but not # any format or mount actions. @@ -1346,6 +1350,12 @@ class ActionRenderMode(enum.Enum): # by path. FORMAT_MOUNT = enum.auto() + def is_api(self): + return self in [ActionRenderMode.FOR_API, ActionRenderMode.FOR_API_CLIENT] + + def include_all(self): + return self in [ActionRenderMode.FOR_API] + class FilesystemModel: target = None @@ -1785,7 +1795,7 @@ class FilesystemModel: obj.name, obj.size, ) - r.append(asdict(obj, for_api=mode == ActionRenderMode.FOR_API)) + r.append(asdict(obj, for_api=mode.is_api())) emitted_ids.add(obj.id) def ensure_partitions(dev): @@ -1826,7 +1836,7 @@ class FilesystemModel: mountpoints = {m.path: m.id for m in self.all_mountlikes()} log.debug("mountpoints %s", mountpoints) - if mode == ActionRenderMode.FOR_API: + if mode.include_all(): work = list(self._actions) else: work = [a for a in self._actions if not getattr(a, "preserve", False)]