[PATCH 3/9] Move device size calculation and setting into DeviceFactory.
David Lehman
dlehman at redhat.com
Mon Aug 20 14:20:36 UTC 2012
---
pyanaconda/storage/__init__.py | 68 +++++++++++++++++++++++-----------------
1 files changed, 39 insertions(+), 29 deletions(-)
diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
index 664b259..8794055 100644
--- a/pyanaconda/storage/__init__.py
+++ b/pyanaconda/storage/__init__.py
@@ -2009,42 +2009,15 @@ class Storage(object):
parents = [container]
log.debug("%r" % container)
+ # this will set the device's size if a device is passed in
+ size = factory.set_device_size(container, device=device)
if device:
# We are adjusting the size of a device. The StorageDevice instance
# exists, but the underlying device does not.
- free = getattr(container, "freeSpace", None)
- if free is not None:
- free += device.size
-
- if size != device.size:
- log.info("adjusting device size from %.2f to %.2f"
- % (device.size, size))
-
- if free is not None and free < size:
- log.info("adjusting device size from %.2f to %.2f so it fits "
- "in container" % (size, free))
- size = free
-
- if hasattr(device, "req_base_size"):
- device.req_base_size = getattr(device, "defaultSize", 500)
- device.req_size = device.req_base_size
- device.req_max_size = size
- device.req_grow = True
- else:
- device.size = size
-
factory.post_create()
-
if not device.size:
raise StorageError("failed to adjust device")
elif factory.new_device_attr:
- # add the new device to the container
- free = getattr(container, "freeSpace", size)
- if free < size:
- log.info("adjusting device size from %.2f to %.2f so it fits "
- "in container" % (size, free))
- size = free
-
log.debug("creating new device")
device = factory.new_device(parents=parents,
size=size,
@@ -3076,6 +3049,9 @@ class DeviceFactory(object):
""" The total disk space required for this device. """
return self.size
+ def set_device_size(self, container, device=None):
+ return self.size
+
class PartitionFactory(DeviceFactory):
type_desc = "partition"
new_device_attr = "newPartition"
@@ -3095,6 +3071,20 @@ class PartitionFactory(DeviceFactory):
def post_create(self):
self.storage.allocatePartitions()
+ def set_device_size(self, container, device=None):
+ size = self.size
+ if device:
+ if size != device.size:
+ log.info("adjusting device size from %.2f to %.2f"
+ % (device.size, size))
+
+ device.req_base_size = device.defaultSize
+ device.req_size = device.req_base_size
+ device.req_max_size = size
+ device.req_grow = True
+
+ return size
+
class BTRFSFactory(DeviceFactory):
type_desc = "btrfs"
member_format = "btrfs"
@@ -3137,6 +3127,26 @@ class LVMFactory(DeviceFactory):
def container_size_func(self, container):
return container.size - container.freeSpace
+ def set_device_size(self, container, device=None):
+ size = self.size
+ free = container.freeSpace
+ if device:
+ free += device.size
+
+ if free < size:
+ log.info("adjusting device size from %.2f to %.2f so it fits "
+ "in container" % (size, free))
+ size = free
+
+ if device:
+ if size != device.size:
+ log.info("adjusting device size from %.2f to %.2f"
+ % (device.size, size))
+
+ device.size = size
+
+ return size
+
class MDFactory(DeviceFactory):
type_desc = "md"
member_format = "mdmember"
--
1.7.7.6
More information about the anaconda-patches
mailing list