New version 33.25.2-3
- Add the DBus method IsDeviceShrinkable (#1875677) (vponcova)
This commit is contained in:
parent
e51656a3f4
commit
738e5ce50c
|
@ -0,0 +1,149 @@
|
|||
From cf8d3811b89b90211cac0cbd1e5ceb40ea7b641b Mon Sep 17 00:00:00 2001
|
||||
From: Vendula Poncova <vponcova@redhat.com>
|
||||
Date: Mon, 7 Sep 2020 17:09:15 +0200
|
||||
Subject: [PATCH] Add the DBus method IsDeviceShrinkable (#1875677)
|
||||
|
||||
Replace the DBus method IsDeviceResizable with IsDeviceShrinkable and fix its
|
||||
implementation. A shrinkable device has to be resizable and its minimal size
|
||||
has to be lower then the current size. This should fix the issue with XFS, that
|
||||
is resizable, but not shrinkable.
|
||||
|
||||
Resolves: rhbz#1875677
|
||||
---
|
||||
.../automatic/resizable_interface.py | 6 ++--
|
||||
.../automatic/resizable_module.py | 6 ++--
|
||||
pyanaconda/ui/gui/spokes/lib/resize.py | 10 +++----
|
||||
.../pyanaconda_tests/module_resizable_test.py | 29 +++++++++++++++----
|
||||
4 files changed, 34 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/pyanaconda/modules/storage/partitioning/automatic/resizable_interface.py b/pyanaconda/modules/storage/partitioning/automatic/resizable_interface.py
|
||||
index 760a49ecb..c531a0b42 100644
|
||||
--- a/pyanaconda/modules/storage/partitioning/automatic/resizable_interface.py
|
||||
+++ b/pyanaconda/modules/storage/partitioning/automatic/resizable_interface.py
|
||||
@@ -37,13 +37,13 @@ class ResizableDeviceTreeInterface(DeviceTreeInterface):
|
||||
"""
|
||||
return self.implementation.is_device_partitioned(device_name)
|
||||
|
||||
- def IsDeviceResizable(self, device_name: Str) -> Bool:
|
||||
- """Is the specified device resizable?
|
||||
+ def IsDeviceShrinkable(self, device_name: Str) -> Bool:
|
||||
+ """Is the specified device shrinkable?
|
||||
|
||||
:param device_name: a name of the device
|
||||
:return: True or False
|
||||
"""
|
||||
- return self.implementation.is_device_resizable(device_name)
|
||||
+ return self.implementation.is_device_shrinkable(device_name)
|
||||
|
||||
def GetDevicePartitions(self, device_name: Str) -> List[Str]:
|
||||
"""Get partitions of the specified device.
|
||||
diff --git a/pyanaconda/modules/storage/partitioning/automatic/resizable_module.py b/pyanaconda/modules/storage/partitioning/automatic/resizable_module.py
|
||||
index 9603dfc1b..12d32e891 100644
|
||||
--- a/pyanaconda/modules/storage/partitioning/automatic/resizable_module.py
|
||||
+++ b/pyanaconda/modules/storage/partitioning/automatic/resizable_module.py
|
||||
@@ -52,14 +52,14 @@ class ResizableDeviceTreeModule(DeviceTreeModule):
|
||||
"""Is the specified device partitioned?"""
|
||||
return device.is_disk and device.partitioned and device.format.supported
|
||||
|
||||
- def is_device_resizable(self, device_name):
|
||||
- """Is the specified device resizable?
|
||||
+ def is_device_shrinkable(self, device_name):
|
||||
+ """Is the specified device shrinkable?
|
||||
|
||||
:param device_name: a name of the device
|
||||
:return: True or False
|
||||
"""
|
||||
device = self._get_device(device_name)
|
||||
- return device.resizable
|
||||
+ return device.resizable and device.min_size < device.size
|
||||
|
||||
def get_device_partitions(self, device_name):
|
||||
"""Get partitions of the specified device.
|
||||
diff --git a/pyanaconda/ui/gui/spokes/lib/resize.py b/pyanaconda/ui/gui/spokes/lib/resize.py
|
||||
index 4695e5332..ee165ada7 100644
|
||||
--- a/pyanaconda/ui/gui/spokes/lib/resize.py
|
||||
+++ b/pyanaconda/ui/gui/spokes/lib/resize.py
|
||||
@@ -228,13 +228,13 @@ class ResizeDialog(GUIObject):
|
||||
|
||||
# Calculate the free size.
|
||||
# Devices that are not resizable are still deletable.
|
||||
- is_resizable = self._device_tree.IsDeviceResizable(device_name)
|
||||
+ is_shrinkable = self._device_tree.IsDeviceShrinkable(device_name)
|
||||
size_limits = self._device_tree.GetDeviceSizeLimits(device_name)
|
||||
|
||||
min_size = Size(size_limits[0])
|
||||
device_size = Size(device_data.size)
|
||||
|
||||
- if is_resizable:
|
||||
+ if is_shrinkable:
|
||||
free_size = device_size - min_size
|
||||
resize_string = _("%(freeSize)s of %(devSize)s") % {
|
||||
"freeSize": free_size.human_readable(max_places=1),
|
||||
@@ -394,10 +394,10 @@ class ResizeDialog(GUIObject):
|
||||
|
||||
# If the selected filesystem does not support shrinking, make that
|
||||
# button insensitive.
|
||||
- is_resizable = self._device_tree.IsDeviceResizable(device_name)
|
||||
- self._shrink_button.set_sensitive(is_resizable)
|
||||
+ is_shrinkable = self._device_tree.IsDeviceShrinkable(device_name)
|
||||
+ self._shrink_button.set_sensitive(is_shrinkable)
|
||||
|
||||
- if is_resizable:
|
||||
+ if is_shrinkable:
|
||||
min_size = self._device_tree.GetDeviceSizeLimits(device_name)[0]
|
||||
self._setup_slider(min_size, device_data.size, Size(obj.target))
|
||||
|
||||
diff --git a/tests/nosetests/pyanaconda_tests/module_resizable_test.py b/tests/nosetests/pyanaconda_tests/module_resizable_test.py
|
||||
index 3c60e166b..42880b4ca 100644
|
||||
--- a/tests/nosetests/pyanaconda_tests/module_resizable_test.py
|
||||
+++ b/tests/nosetests/pyanaconda_tests/module_resizable_test.py
|
||||
@@ -18,9 +18,11 @@
|
||||
# Red Hat Author(s): Vendula Poncova <vponcova@redhat.com>
|
||||
#
|
||||
import unittest
|
||||
+from unittest.mock import patch
|
||||
|
||||
from blivet.devices import StorageDevice, DiskDevice, PartitionDevice
|
||||
from blivet.formats import get_format
|
||||
+from blivet.formats.fs import FS
|
||||
from blivet.size import Size
|
||||
|
||||
from pyanaconda.modules.storage.partitioning.automatic.resizable_interface import \
|
||||
@@ -66,13 +68,28 @@ class ResizableDeviceTreeTestCase(unittest.TestCase):
|
||||
self.assertEqual(self.interface.IsDevicePartitioned("dev1"), False)
|
||||
self.assertEqual(self.interface.IsDevicePartitioned("dev2"), True)
|
||||
|
||||
- def is_device_resizable_test(self):
|
||||
- """Test IsDeviceResizable."""
|
||||
+ @patch.object(FS, "update_size_info")
|
||||
+ def is_device_shrinkable_test(self, update_size_info):
|
||||
+ """Test IsDeviceShrinkable."""
|
||||
self.module.on_storage_changed(create_storage())
|
||||
- self._add_device(StorageDevice(
|
||||
- "dev1"
|
||||
- ))
|
||||
- self.assertEqual(self.interface.IsDeviceResizable("dev1"), False)
|
||||
+
|
||||
+ dev1 = StorageDevice(
|
||||
+ "dev1",
|
||||
+ exists=True,
|
||||
+ size=Size("10 GiB"),
|
||||
+ fmt=get_format(None, exists=True)
|
||||
+ )
|
||||
+
|
||||
+ self._add_device(dev1)
|
||||
+ self.assertEqual(self.interface.IsDeviceShrinkable("dev1"), False)
|
||||
+
|
||||
+ dev1._resizable = True
|
||||
+ dev1.format._resizable = True
|
||||
+ dev1.format._min_size = Size("1 GiB")
|
||||
+ self.assertEqual(self.interface.IsDeviceShrinkable("dev1"), True)
|
||||
+
|
||||
+ dev1.format._min_size = Size("10 GiB")
|
||||
+ self.assertEqual(self.interface.IsDeviceShrinkable("dev1"), False)
|
||||
|
||||
def get_device_partitions_test(self):
|
||||
"""Test GetDevicePartitions."""
|
||||
--
|
||||
2.26.2
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
Summary: Graphical system installer
|
||||
Name: anaconda
|
||||
Version: 33.25.2
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: GPLv2+ and MIT
|
||||
URL: http://fedoraproject.org/wiki/Anaconda
|
||||
|
||||
|
@ -15,6 +15,9 @@ Source0: %{name}-%{version}.tar.bz2
|
|||
# F33 Beta blocker
|
||||
Patch1: 0001-Always-clear-treeinfo-metadata-1872056.patch
|
||||
|
||||
# F33 Beta freeze exception
|
||||
Patch2: 0002-Add-the-DBus-method-IsDeviceShrinkable-1875677.patch
|
||||
|
||||
# Versions of required components (done so we make sure the buildrequires
|
||||
# match the requires versions of things).
|
||||
|
||||
|
@ -369,6 +372,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{buildroot}%{_d
|
|||
%{_prefix}/libexec/anaconda/dd_*
|
||||
|
||||
%changelog
|
||||
* Wed Sep 09 2020 Martin Kolman <mkolman@redhat.com> - 33.25.2-3
|
||||
- Add the DBus method IsDeviceShrinkable (#1875677) (vponcova)
|
||||
|
||||
* Mon Sep 07 2020 Martin Kolman <mkolman@redhat.com> - 33.25.2-2
|
||||
- Always clear treeinfo metadata (#1872056) (jkonecny)
|
||||
|
||||
|
|
Loading…
Reference in New Issue