Reference: bnc#888251 A fix for accessing nfs mounted media. A comment in the code states, "Convert RFC compliant NFS nfs://server/path/to/distro to what mount/anaconda expect nfs:server:/path/to/distro and carry the latter form around internally" We need the RFC version to work correctly whereas redhat's anaconda needs their own modified version. Index: virt-manager-1.4.2/virtinst/util.py =================================================================== --- virt-manager-1.4.2.orig/virtinst/util.py +++ virt-manager-1.4.2/virtinst/util.py @@ -421,3 +421,22 @@ def getInstallRepos(): return (0, []) return lookupZypperRepos(getHostInstallSource()) +def sanitize_url(url): + """ + Do nothing for http or ftp, but make sure nfs is in the expected format + """ + if url.startswith("nfs://"): + # Convert RFC compliant NFS nfs://server/path/to/distro + # to what mount/anaconda expect nfs:server:/path/to/distro + # and carry the latter form around internally + url = "nfs:" + url[6:] + + # If we need to add the : after the server + index = url.find("/", 4) + if index == -1: + raise ValueError(_("Invalid NFS format: No path specified.")) + if url[index - 1] != ":": + url = url[:index] + ":" + url[index:] + + return url + Index: virt-manager-1.4.2/virtinst/distroinstaller.py =================================================================== --- virt-manager-1.4.2.orig/virtinst/distroinstaller.py +++ virt-manager-1.4.2/virtinst/distroinstaller.py @@ -44,6 +44,8 @@ def _sanitize_url(url): """ Do nothing for http or ftp, but make sure nfs is in the expected format """ + # This sanitize will be done later + return url if url.startswith("nfs://"): # Convert RFC compliant NFS nfs://server/path/to/distro # to what mount/anaconda expect nfs:server:/path/to/distro Index: virt-manager-1.4.2/virtinst/urlfetcher.py =================================================================== --- virt-manager-1.4.2.orig/virtinst/urlfetcher.py +++ virt-manager-1.4.2/virtinst/urlfetcher.py @@ -34,6 +34,7 @@ import urlparse import requests from .osdict import OSDB +from virtinst import util ######################################################################### @@ -303,7 +304,8 @@ class _MountedURLFetcher(_LocalURLFetche logging.debug("Preparing mount at " + self._srcdir) if self.location.startswith("nfs:"): - cmd = [mountcmd, "-o", "ro", self.location[4:], self._srcdir] + url = util.sanitize_url(self.location) + cmd = [mountcmd, "-o", "ro", url[4:], self._srcdir] else: if stat.S_ISBLK(os.stat(self.location)[stat.ST_MODE]): mountopt = "ro"