These three patches fix few places were we haven't been using Size instances while we should have.
Vratislav Podzimek (3): Allow creating Size instance from another Size instance Make sure StorageDevice's self._size is a Size instance (#1077179) All size specifications should be Size instances (#1077163)
blivet/devices.py | 30 +++++++++++++++--------------- blivet/size.py | 2 ++ 2 files changed, 17 insertions(+), 15 deletions(-)
Attempt to create Size instance from another Size instance should work and result in creation of a copy.
Related: rhbz#1077179 --- blivet/size.py | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/blivet/size.py b/blivet/size.py index 74198cc..61dae94 100644 --- a/blivet/size.py +++ b/blivet/size.py @@ -196,6 +196,8 @@ class Size(Decimal): if bytes is not None: if isinstance(bytes, (int, long, float, Decimal)): value = Decimal(bytes) + elif isinstance(bytes, Size): + value = Decimal(bytes.convertTo("b")) else: raise ValueError("invalid value for bytes param") elif spec:
In the size property setting the self._size attribute, we make sure nothing else than a Size instance is assigned to self._size, but in the constructor we don't do any such check. --- blivet/devices.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/devices.py b/blivet/devices.py index 9e6efb4..353e761 100644 --- a/blivet/devices.py +++ b/blivet/devices.py @@ -423,7 +423,7 @@ class StorageDevice(Device):
self.uuid = uuid self._format = None - self._size = util.numeric_type(size) + self._size = Size(bytes=util.numeric_type(size)) self.major = util.numeric_type(major) self.minor = util.numeric_type(minor) self.sysfsPath = sysfsPath
--- blivet/devices.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/blivet/devices.py b/blivet/devices.py index 353e761..23c1642 100644 --- a/blivet/devices.py +++ b/blivet/devices.py @@ -1122,9 +1122,9 @@ class PartitionDevice(StorageDevice): self.req_primary = None self.req_grow = None self.req_bootable = None - self.req_size = 0 - self.req_base_size = 0 - self.req_max_size = 0 + self.req_size = Size(0) + self.req_base_size = Size(0) + self.req_max_size = Size(0) self.req_base_weight = 0 self.req_start_sector = None self.req_end_sector = None @@ -1186,7 +1186,7 @@ class PartitionDevice(StorageDevice): self.req_name = name self.req_partType = partType self.req_primary = primary - self.req_max_size = util.numeric_type(maxsize) + self.req_max_size = Size(bytes=util.numeric_type(maxsize)) self.req_grow = grow self.req_bootable = bootable
@@ -1751,10 +1751,10 @@ class PartitionDevice(StorageDevice): data.resize = (self.exists and self.targetSize and self.targetSize != self.currentSize) if not self.exists: - data.size = int(self.req_base_size) + data.size = self.req_base_size.convertTo(spec="MiB") data.grow = self.req_grow if self.req_grow: - data.maxSizeMB = int(self.req_max_size.convertTo(spec="mib")) + data.maxSizeMB = self.req_max_size.convertTo(spec="MiB")
##data.disk = self.disk.name # by-id if self.req_disks and len(self.req_disks) == 1: @@ -1764,7 +1764,7 @@ class PartitionDevice(StorageDevice): data.onPart = self.name # by-id
if data.resize: - data.size = int(self.size) + data.size = self.size.convertTo(spec="MiB")
class DMDevice(StorageDevice): """ A device-mapper device """ @@ -2569,13 +2569,13 @@ class LVMLogicalVolumeDevice(DMDevice): self.segType = segType or "linear"
self.req_grow = None - self.req_max_size = 0 - self.req_size = 0 + self.req_max_size = Size(0) + self.req_size = Size(0) self.req_percent = 0
if not self.exists: self.req_grow = grow - self.req_max_size = util.numeric_type(maxsize) + self.req_max_size = Size(util.numeric_type(maxsize)) # XXX should we enforce that req_size be pe-aligned? self.req_size = self._size self.req_percent = util.numeric_type(percent) @@ -2810,14 +2810,14 @@ class LVMLogicalVolumeDevice(DMDevice): if not self.exists: data.grow = self.req_grow if self.req_grow: - data.size = int(self.req_size) - data.maxSizeMB = self.req_max_size.convertTo(spec="mib") + data.size = self.req_size.convertTo(spec="MiB") + data.maxSizeMB = self.req_max_size.convertTo(spec="MiB") else: - data.size = int(self.size) + data.size = self.size.convertTo(spec="MiB")
data.percent = self.req_percent elif data.resize: - data.size = int(self.targetSize) + data.size = self.targetSize.convertTo(spec="MiB")
class LVMThinPoolDevice(LVMLogicalVolumeDevice): """ An LVM Thin Pool """
On Wed, 2014-03-19 at 15:24 +0100, Vratislav Podzimek wrote:
blivet/devices.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-)
Are we sure that ksdata sizes being Decimal is okay?
On Wed, 2014-03-19 at 10:05 -0500, David Lehman wrote:
On Wed, 2014-03-19 at 15:24 +0100, Vratislav Podzimek wrote:
blivet/devices.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-)
Are we sure that ksdata sizes being Decimal is okay?
I ran multiple testing kickstart/manual installations and everything looks fine.
anaconda-patches@lists.fedorahosted.org