urlfetcher: Use inst.repo kernel option for new RH distros (bz 1026841)

This commit is contained in:
Cole Robinson 2014-01-18 13:04:47 -05:00
parent 962994f72f
commit 073b3a69e3

View File

@ -365,7 +365,6 @@ class Distro(object):
_boot_iso_paths = []
_hvm_kernel_paths = []
_xen_kernel_paths = []
_method_arg = "method"
uses_treeinfo = False
def __init__(self, fetcher, arch, vmtype):
@ -439,6 +438,9 @@ class Distro(object):
return self.os_variant
def _get_method_arg(self):
return "method"
def _hasTreeinfo(self):
# all Red Hat based distros should have .treeinfo, perhaps others
# will in time
@ -498,7 +500,7 @@ class Distro(object):
args = ''
if not self.fetcher.location.startswith("/"):
args += "%s=%s" % (self._method_arg, self.fetcher.location)
args += "%s=%s" % (self._get_method_arg(), self.fetcher.location)
if guest.installer.extraargs:
args += " " + guest.installer.extraargs
@ -609,6 +611,7 @@ class RedHatDistro(Distro):
a common layout
"""
os_variant = "linux"
_version_number = None
uses_treeinfo = True
_boot_iso_paths = ["images/boot.iso"]
@ -620,35 +623,23 @@ class RedHatDistro(Distro):
def isValidStore(self):
raise NotImplementedError()
def _get_method_arg(self):
if (self._version_number is not None and
((self.urldistro is "rhel" and self._version_number >= 7) or
(self.urldistro is "fedora" and self._version_number >= 19))):
return "inst.repo"
return "method"
# Fedora distro check
class FedoraDistro(RedHatDistro):
name = "Fedora"
urldistro = "fedora"
def isValidStore(self):
if self._hasTreeinfo():
m = re.match(".*Fedora.*", self.treeinfo.get("general", "family"))
ret = (m is not None)
if ret:
lateststr, latestnum = self._latestFedoraVariant()
ver = self.treeinfo.get("general", "version")
if ver == "development" or ver == "rawhide":
self.os_variant = lateststr
elif ver:
vernum = int(str(ver).split("-")[0])
if vernum > latestnum:
self.os_variant = lateststr
else:
self.os_variant = "fedora" + str(vernum)
return ret
return self.fetcher.hasFile("Fedora")
def _latestFedoraVariant(self):
"""
Search osdict list, find newest fedora version listed
"""
ret = None
for osinfo in osdict.list_os(typename="linux"):
if osinfo.name.startswith("fedora"):
@ -658,6 +649,28 @@ class FedoraDistro(RedHatDistro):
return ret, int(ret[6:])
def isValidStore(self):
if not self._hasTreeinfo():
return self.fetcher.hasFile("Fedora")
if not re.match(".*Fedora.*", self.treeinfo.get("general", "family")):
return False
lateststr, latestnum = self._latestFedoraVariant()
ver = self.treeinfo.get("general", "version")
if ver == "development" or ver == "rawhide":
vernum = latestnum
self.os_variant = lateststr
elif ver:
vernum = int(str(ver).split("-")[0])
if vernum > latestnum:
self.os_variant = lateststr
else:
self.os_variant = "fedora" + str(vernum)
self._version_number = vernum
return True
# Red Hat Enterprise Linux distro check
class RHELDistro(RedHatDistro):
@ -711,6 +724,7 @@ class RHELDistro(RedHatDistro):
return
version, update = self._parseTreeinfoVersion(ver)
self._version_number = version
self._setRHELVariant(version, update)
def _setRHELVariant(self, version, update):
@ -776,14 +790,11 @@ class SLDistro(RHELDistro):
return self.fetcher.hasFile("SL")
# Suse image store is harder - we fetch the kernel RPM and a helper
# RPM and then munge bits together to generate a initrd
class SuseDistro(Distro):
name = "SUSE"
urldistro = "suse"
os_variant = "linux"
_method_arg = "install"
_boot_iso_paths = ["boot/boot.iso"]
def __init__(self, *args, **kwargs):
@ -815,6 +826,8 @@ class SuseDistro(Distro):
self.os_variant = self._detect_osdict_from_url()
return True
def _get_method_arg(self):
return "install"
################################
# osdict autodetection helpers #