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 1848718

Summary: NFS ISO installs fail since anaconda-33.18-1.fc33 if ISO name is included in repo definition
Product: [Fedora] Fedora Reporter: Adam Williamson <awilliam>
Component: anacondaAssignee: Jiri Konecny <jkonecny>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: unspecified    
Version: rawhideCC: anaconda-maint-list, jkonecny, jonathan, kellin, robatino, vanmeeuwen+fedora, vponcova, wwoods
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard: openqa
Fixed In Version: anaconda-33.20-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1849083 (view as bug list) Environment:
Last Closed: 2020-07-03 23:35:38 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:    
Bug Blocks: 1766777    

Description Adam Williamson 2020-06-18 20:01:52 UTC
This is a follow-up to https://bugzilla.redhat.com/show_bug.cgi?id=1844287 specifically for this NFS ISO case, which appears to be unambiguously broken.

This is supposed to work: `inst.repo=nfs:nfsvers=4:10.0.2.110:/iso/image.iso` , assuming 10.0.2.110:/iso/ is a valid and accessible NFS share, and it contains the file 'image.iso', which is an installer image with a file repo on it (i.e. a DVD image). anaconda should mount 10.0.2.110:/iso , loopback mount the specified ISO file from it, and use the repository from within the image. This is what the test case https://fedoraproject.org/wiki/QA:Testcase_install_repository_NFSISO_variation covers. Up till anaconda-33.18-1.fc33 , that's what happened.

Since that build, though, it doesn't work any more. Instead, anaconda tries literally to mount '10.0.2.110:/iso/image.iso', and that fails:

18:01:40,672 WARNING org.fedoraproject.Anaconda.Modules.Payloads:DEBUG:anaconda.modules.payloads.source.nfs.initialization:Setting up NFS source: nfs:nfsvers=4:10.0.2.110:/iso/image.iso
18:01:40,673 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:program:Running... mount -t nfs -o nfsvers=4,nolock 10.0.2.110:/iso/image.iso /run/install/source/mount-0000-nfs-device
18:01:40,779 NOTICE kernel:FS-Cache: Loaded
18:01:40,903 NOTICE kernel:FS-Cache: Netfs 'nfs' registered for caching
18:01:40,927 NOTICE kernel:Key type dns_resolver registered
18:01:41,158 NOTICE kernel:NFS: Registering the id_resolver key type
18:01:41,158 NOTICE kernel:Key type id_resolver registered
18:01:41,158 NOTICE kernel:Key type id_legacy registered
18:01:41,269 INFO kernel:mount.nfs (1899) used greatest stack depth: 12072 bytes left
18:01:41,271 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:program:stderr:
18:01:41,271 WARNING org.fedoraproject.Anaconda.Modules.Payloads:INFO:program:b'mount.nfs: mount spec 10.0.2.110:/iso/image.iso or point /run/install/source/mount-0000-nfs-device is not a directory'

I guess it may work if you do it the other possible way - just specifying `inst.repo=nfs:nfsvers=4:10.0.2.110:/iso` and relying on anaconda to look through the mount and find the ISO file - but both methods are meant to work, and the one that's failing is the one we use in the openQA test.

Proposing as a Final blocker as a violation of "The installer must be able to use all supported local and remote package and installer sources" - https://fedoraproject.org/wiki/Fedora_33_Final_Release_Criteria#package-and-installer-sources . It's a *bit* arguable as there is the option of not specifying the ISO name, but that option does exist for a reason: if the share contains multiple ISO files, you may need to explicitly specify the right one.

Comment 1 Adam Williamson 2020-06-19 00:30:31 UTC
So it looks to me like jknoecny completely rewrote this code, initially left out ISO support entirely, then added it back in in https://github.com/rhinstaller/anaconda/commit/af627cd8f68406896b4684ac5b634208d1365f40 but didn't handle this specific path - that code doesn't seem to have any way of accounting for the possibility of the ISO name being specified in the argument. So I think that needs to be added back. If he has time for this I'll leave this to Jiri as I guess he knows how the new code works so he knows where it would make sense to do the parsing for this :)

Comment 2 Jiri Konecny 2020-06-19 08:03:59 UTC
Interesting, I thought I've added this possibility in. I'll try to fix this soon. Thanks a lot for investigating.

Comment 3 Jiri Konecny 2020-06-19 11:45:42 UTC
PR: https://github.com/rhinstaller/anaconda/pull/2673

Comment 4 Jiri Konecny 2020-06-19 11:50:19 UTC
Sorry for this. I've thought I've taken this into account and I did but not completely and somehow forget to test this or create tests. Now tests are there too.

About the rewrote. We did rewrite / moved whole logic how we are working with sources. Before everything touched everything, so it was hard to change something without changing the behavior of completely different source. Right now each source has it's own directories and classes, so it is nicely separated and easier to maintain and enhance.

Comment 5 Adam Williamson 2020-07-03 23:35:38 UTC
Confirmed fixed in recent composes.