Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1782463 - Guided partitioning 'shrink' and 'delete' actions cause a crash: "AttributeError: 'ResizeDialog' object has no attribute '_get_device'"
Summary: Guided partitioning 'shrink' and 'delete' actions cause a crash: "AttributeEr...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: anaconda
Version: rawhide
Hardware: Unspecified
OS: Unspecified
urgent
urgent
Target Milestone: ---
Assignee: Vendula Poncova
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: openqa
Depends On:
Blocks: F32BetaBlocker
TreeView+ depends on / blocked
 
Reported: 2019-12-11 17:00 UTC by Adam Williamson
Modified: 2019-12-14 18:47 UTC (History)
9 users (show)

Fixed In Version: anaconda-32.17-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-12-14 18:47:55 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Adam Williamson 2019-12-11 17:00:07 UTC
Since anaconda-32.16-1, any use of the 'shrink' or 'delete' actions in the guided partitioning 'reclaim space' path cause a crash:

19:41:47,601 DBG exception: running handleException
19:41:47,603 CRT exception: Traceback (most recent call last):

  File "/usr/lib64/python3.8/site-packages/pyanaconda/ui/gui/spokes/lib/resize.py", line 460, in _schedule_actions
    AutoPartitioningModule.remove_device(self, obj.name)

  File "/usr/lib64/python3.8/site-packages/pyanaconda/modules/storage/partitioning/automatic.py", line 196, in remove_device
    device = self._get_device(device_name)

AttributeError: 'ResizeDialog' object has no attribute '_get_device'

This is triggered by https://github.com/rhinstaller/anaconda/commit/8063c9f69bab876bde99af21e09e73a9b3564a89 . That commit isn't doing anything wrong, but because it makes AutoPartitioningModule.remove_device() and AutoPartitioningModule.shrink_device() call another of the class's methods - `self._get_device(device_name)` - it breaks these spectacularly ugly hacks in resize.py `ResizeDialog._schedule_actions()`:

        elif obj.action == _(SHRINK):
            # FIXME: This is an ugly temporary workaround for UI.
            AutoPartitioningModule.shrink_device(self, obj.name, obj.target)
        elif obj.action == _(DELETE):
            # FIXME: This is an ugly temporary workaround for UI.
            AutoPartitioningModule.remove_device(self, obj.name)

yep, it just wholesale steals methods from another class. This 'worked' while those methods were sort of self-contained, but now they're expecting to call another of AutoPartitioningModule's methods, it just blows up, because 'self' is not an AutoPartitioningModule, it's a ResizeDialog, and ResizeDialogs don't have a `_get_device()` method, like the error says.

I guess someone should've...FIXED ME 😎

Comment 1 Adam Williamson 2019-12-11 17:06:17 UTC
Proposing as a Beta blocker as a violation of Basic criterion "The installer must be able to complete an installation to a single disk using automatic partitioning.", with the footnote "It must work whether the disk is formatted or not and whether or not it contains any existing data - but before Beta, it's OK if it can only install to a disk with existing data by overwriting it." - this makes that not possible, as to install using 'automatic partitioning' to a 'single disk' with 'existing data' you must be able to delete it in this dialog.

Comment 2 Vendula Poncova 2019-12-11 17:38:43 UTC
Fixed in a pull request: https://github.com/rhinstaller/anaconda/pull/2249

Comment 3 Adam Williamson 2019-12-11 17:45:05 UTC
ahhhh! it's spreading! :P

thanks for the quick fixes.

Comment 4 Adam Williamson 2019-12-14 18:47:55 UTC
Confirmed fixed in latest Rawhide, thanks.


Note You need to log in before you can comment on or make changes to this bug.