Bug 1501249

Summary: Blivet should use libblockdev runtime dependency checking to avoid unnecessary failures due to missing unneeded binaries
Product: [Fedora] Fedora Reporter: Vojtech Trefny <vtrefny>
Component: python-blivetAssignee: Vojtech Trefny <vtrefny>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: rawhideCC: anaconda-maint-list, awilliam, bcl, blivet-maint-list, dcantrell, dlehman, dmach, extras-qa, gmarr, jkonecny, jonathan, kellin, mgracik, mkolman, robatino, rvykydal, sbueno, vanmeeuwen+fedora, vpodzime, vponcova, vtrefny, wwoods
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: python-blivet-3.0.0.b1-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1500992 Environment:
Last Closed: 2018-01-23 12:13:30 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1500992    
Bug Blocks:    

Description Vojtech Trefny 2017-10-12 09:24:51 UTC
+++ This bug was initially created as a clone of Bug #1500992 +++

Since Fedora-Rawhide-20171001.n.0 , virtually all openQA install tests from non-live media appear to be failing; the only one I can see that passes is the 'no swap device' test.

All the others seem to be running into a problem with swap handling in autopart. In anaconda.log we see this:

12:27:34,911 INF blivet.autopart: Detected 2.06 GiB of memory
12:27:34,915 INF blivet.autopart: Suggested swap size (2.06 GiB) exceeds 10 % of disk space, using 10 % of disk space (0.0) instead.
12:27:34,917 INF blivet.autopart: Swap attempt of 0.0

That '0.0' does not look right, and I think is the key source of the problems. Depending on the path that's followed, installs either wind up showing 'Error checking storage configuration' on the main hub (if using guided partitioning) or hitting a traceback if using custom partitioning but clicking the 'create partitions for me' link:

14:59:50,418 DBG blivet.autopart: existing 10 GiB disk vda (13) with non-existent msdos disklabel
14:59:50,442 DBG ui.gui.spokes.custom_storage: finished automatic partitioning
14:59:50,442 DBG exception: running handleException
14:59:50,443 CRT exception: Traceback (most recent call last):

  File "/usr/lib64/python3.6/site-packages/pyanaconda/ui/gui/spokes/custom_storage.py", line 2504, in on_create_clicked
    self._do_autopart()

  File "/usr/lib64/python3.6/site-packages/pyanaconda/ui/gui/spokes/custom_storage.py", line 135, in decorated
    return func(*args, **kwargs)

  File "/usr/lib64/python3.6/site-packages/pyanaconda/ui/gui/spokes/custom_storage.py", line 2461, in _do_autopart
    min_luks_entropy=crypto.MIN_CREATE_ENTROPY)

  File "/usr/lib/python3.6/site-packages/blivet/autopart.py", line 511, in do_autopart
    devs = _schedule_partitions(storage, disks, devs)

  File "/usr/lib/python3.6/site-packages/blivet/autopart.py", line 302, in _schedule_partitions
    storage.create_device(dev)

  File "/usr/lib/python3.6/site-packages/blivet/threads.py", line 45, in run_with_lock
    return m(*args, **kwargs)

  File "/usr/lib/python3.6/site-packages/blivet/blivet.py", line 1118, in create_device
    self.devicetree.actions.add(ActionCreateFormat(device))

  File "/usr/lib/python3.6/site-packages/blivet/threads.py", line 45, in run_with_lock
    return m(*args, **kwargs)

  File "/usr/lib/python3.6/site-packages/blivet/deviceaction.py", line 551, in __init__
    raise ValueError("resource to create this format %s is unavailable" % self._format.type)

ValueError: resource to create this format swap is unavailable

You can explore the various error cases at e.g.:

https://openqa.fedoraproject.org/tests/overview?distri=fedora&version=Rawhide&build=Fedora-Rawhide-20171010.n.1&groupid=1

which is all the results for the Fedora-Rawhide-20171010.n.1 compose. Note that live installs succeed, for some reason. The same 'Swap attempt of 0.0' appears in the logs for live installs, but they manage to complete, I'm not sure why.

Proposing as an F28 Beta blocker as this breaks all installs, which violates all kinds of basic and Beta criteria.

--- Additional comment from Vendula Poncova on 2017-10-12 04:12:15 EDT ---

The fix for this problem is already in lorax: https://github.com/rhinstaller/lorax/pull/253

Comment 1 Vojtech Trefny 2017-10-12 09:27:03 UTC
Blivet should init libblockdev with the new runtime dependecy checking enabled so loading the swap module (in this case) won't fail only because swaplabel tool is missing.

Comment 2 Geoffrey Marr 2017-11-27 18:35:20 UTC
Discussed during the 2017-11-27 blocker review meeting: [1]

The decision to delay the classification of this as a bug was made as we're not sure why this duplicate bug has been submitted. We will get with the original submitter of the bug and discuss at next week's meeting.

[1] https://meetbot.fedoraproject.org/fedora-blocker-review/2017-11-27/f27-8-blocker-review.2017-11-27-17.01.txt

Comment 3 Adam Williamson 2017-11-27 21:31:40 UTC
Vojtech, can you explain precisely why this duplicate was needed? Is it still needed, or should it be closed? Thanks!

Comment 4 Vojtech Trefny 2017-11-29 08:00:02 UTC
The initial issue here was missing swaplabel binary on the CD (blivet depends on util-linux package, but lorax is removing some "unused" files to make the image smaller and it removed swaplabel too). This is fixed in lorax now (no longer removes swaplabel), but there is still issue in blivet -- it shouldn't fail just because the binary is missing (we don't even use swaplabel in Anaconda).

So, this bug is still needed, but the original blocker is fixed.

Comment 5 Adam Williamson 2017-11-29 16:43:45 UTC
I see. So I've updated the summary to something more useful and removed the proposed blocker status.