Skip to content

Commit

Permalink
filesystem: fix path property from Raid - override attribute
Browse files Browse the repository at this point in the history
The following commmit:
  ce146ab add .path to Raid so for_client(raid-with-partitions) works

introduced a (read only) path property for Raid objects, returning an
imaginary value to make for_client work with Raid objects. Later on, the
following commit:
  8e65899 add "path" attributes to fs model objects that curtin now
            provides a path for

introduced a (read/write) path attribute to all filesystem objects. For
Raid however, the property still takes precedence over the new attribute
of the same name, so doing raid.path = x is invalid (no setter) and
results in the following exception:

AttributeError: can't set attribute 'path'

Fixed by using a @Property + @Setter attribute for path. The getter
returns the actual path if it exists, otherwise returns the same
imaginary value as before.

Signed-off-by: Olivier Gayot <[email protected]>
  • Loading branch information
ogayot committed Mar 24, 2023
1 parent 4496f22 commit 6737e2c
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion subiquity/models/filesystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -820,16 +820,22 @@ def serialize_devices(self):
wipe = attr.ib(default=None)
ptable = attributes.ptable()
metadata = attr.ib(default=None)
path = attr.ib(default=None)
_path = attr.ib(default=None)
container = attributes.ref(backlink="_subvolumes", default=None) # Raid
_subvolumes = attributes.backlink(default=attr.Factory(list))

@property
def path(self):
if self._path is not None:
return self._path
# This is just here to make for_client(raid-with-partitions) work. It
# might not be very accurate.
return '/dev/md/' + self.name

@path.setter
def path(self, value):
self._path = value

@property
def size(self):
if self.preserve and self._m._probe_data:
Expand Down

0 comments on commit 6737e2c

Please sign in to comment.