urlfetcher: Bunch of distro detection fixes
And update test_urls to ensure it's passing
This commit is contained in:
parent
95f8b4c6b0
commit
2e7d477156
|
@ -41,11 +41,11 @@ from virtinst.urlfetcher import MandrivaDistro
|
|||
# Access to protected member, needed to unittest stuff
|
||||
|
||||
OLD_FEDORA_URL = "https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/%s/Fedora/%s/os/"
|
||||
DEVFEDORA_URL = "http://download.fedoraproject.org/pub/fedora/linux/development/%s/%s/os/"
|
||||
FEDORA_URL = "http://download.fedoraproject.org/pub/fedora/linux/releases/%s/Fedora/%s/os/"
|
||||
DEVFEDORA_URL = "http://dl.fedoraproject.org/pub/fedora/linux/development/%s/%s/os/"
|
||||
FEDORA_URL = "http://dl.fedoraproject.org/pub/fedora/linux/releases/%s/Fedora/%s/os/"
|
||||
|
||||
OLD_CENTOS_URL = "http://vault.centos.org/%s/os/%s"
|
||||
CENTOS_URL = "http://ftp.linux.ncsu.edu/pub/CentOS/%s/os/%s/"
|
||||
CENTOS_URL = "http://mirrors.mit.edu/centos/%s/os/%s/"
|
||||
OLD_SCIENTIFIC_URL = "http://ftp.scientificlinux.org/linux/scientific/%s/%s/"
|
||||
SCIENTIFIC_URL = "http://ftp.scientificlinux.org/linux/scientific/%s/%s/os"
|
||||
|
||||
|
@ -60,7 +60,7 @@ OLD_DEBIAN_URL = "http://archive.debian.org/debian/dists/%s/main/installer-%s/"
|
|||
DAILY_DEBIAN_URL = "http://d-i.debian.org/daily-images/%s/"
|
||||
DEBIAN_URL = "http://ftp.us.debian.org/debian/dists/%s/main/installer-%s/"
|
||||
|
||||
MANDRIVA_URL = "http://ftp.uwsg.indiana.edu/linux/mandrake/official/%s/%s/"
|
||||
MANDRIVA_URL = "ftp://mirror.cc.columbia.edu/pub/linux/mandriva/official/%s/%s"
|
||||
|
||||
|
||||
urls = {}
|
||||
|
@ -108,14 +108,18 @@ _set_distro(FedoraDistro)
|
|||
_add(OLD_FEDORA_URL % ("14", "x86_64"), "fedora14",
|
||||
i686=OLD_FEDORA_URL % ("14", "i386"))
|
||||
# 2 Latest releases
|
||||
_add(FEDORA_URL % ("18", "x86_64"), "fedora18")
|
||||
_add(FEDORA_URL % ("19", "x86_64"), "fedora19")
|
||||
_add(FEDORA_URL % ("20", "x86_64"), "fedora20")
|
||||
# Any Dev release
|
||||
_add(DEVFEDORA_URL % ("20", "x86_64"), "fedora20")
|
||||
_add(DEVFEDORA_URL % ("21", "x86_64"), "fedora20", name="fedora21")
|
||||
_add(
|
||||
"https://dl.fedoraproject.org/pub/alt/stage/21_Alpha_TC6/Server/x86_64/os/",
|
||||
"fedora20", name="fedora21-tc")
|
||||
# Rawhide w/ i686 test
|
||||
_add(DEVFEDORA_URL % ("rawhide", "x86_64"), "fedora20",
|
||||
i686=DEVFEDORA_URL % ("rawhide", "i386"),
|
||||
name="fedora-rawhide")
|
||||
# XXX: Nowadays rawhide isn't a full install tree
|
||||
# _add(DEVFEDORA_URL % ("rawhide", "x86_64"), "fedora20",
|
||||
# i686=DEVFEDORA_URL % ("rawhide", "i386"),
|
||||
# name="fedora-rawhide")
|
||||
|
||||
|
||||
_set_distro(CentOSDistro)
|
||||
|
@ -125,53 +129,52 @@ _add(OLD_CENTOS_URL % ("4.9", "x86_64"), name="centos-4.9")
|
|||
# One old centos 5
|
||||
_add(OLD_CENTOS_URL % ("5.0", "x86_64"), name="centos-5.0")
|
||||
# Latest centos 5 w/ i686
|
||||
_add(CENTOS_URL % ("5", "x86_64"), "rhel5.4", name="centos-5-latest",
|
||||
_add(CENTOS_URL % ("5", "x86_64"), "rhel5.8", name="centos-5-latest",
|
||||
i686=CENTOS_URL % ("5", "i386"))
|
||||
# Latest centos 6 w/ i686
|
||||
_add(CENTOS_URL % ("6", "x86_64"), "rhel6", name="centos-6-latest",
|
||||
_add(CENTOS_URL % ("6", "x86_64"), "rhel6.5", name="centos-6-latest",
|
||||
i686=CENTOS_URL % ("6", "i386"))
|
||||
# Latest centos 7, but no i686 as of 2014-09-06
|
||||
_add(CENTOS_URL % ("7", "x86_64"), "rhel7.0", name="centos-7-latest")
|
||||
|
||||
|
||||
_set_distro(SLDistro)
|
||||
# Latest scientific 5
|
||||
_add(OLD_SCIENTIFIC_URL % ("55", "x86_64"), "rhel5.4", name="sl-5latest")
|
||||
# scientific 5
|
||||
_add(OLD_SCIENTIFIC_URL % ("55", "x86_64"), "rhel5.5", name="sl-5latest")
|
||||
# Latest scientific 6
|
||||
_add(SCIENTIFIC_URL % ("6", "x86_64"), "rhel6", name="sl-6latest")
|
||||
_add(SCIENTIFIC_URL % ("6", "x86_64"), "rhel6.1", name="sl-6latest")
|
||||
|
||||
|
||||
_set_distro(SuseDistro)
|
||||
# opensuse 10.0 uses different paths, so keep this around
|
||||
_add(OPENSUSE10, i686=OPENSUSE10, hasxen=False, hasbootiso=False,
|
||||
name="opensuse-10.0")
|
||||
# Latest 10 series
|
||||
_add(OLD_OPENSUSE_URL % ("10.3"), hasbootiso=False, name="opensuse-10.3")
|
||||
_add(OLD_OPENSUSE_URL % ("10.3"), "opensuse10.3", hasbootiso=False)
|
||||
# Latest 11 series
|
||||
_add(OLD_OPENSUSE_URL % ("11.4"), "opensuse11", hasbootiso=False)
|
||||
_add(OLD_OPENSUSE_URL % ("11.4"), "opensuse11.4", hasbootiso=False)
|
||||
# Latest 12 series
|
||||
# Only keep i686 for the latest opensuse
|
||||
_add(OPENSUSE_URL % ("12.3"), "opensuse12",
|
||||
_add(OPENSUSE_URL % ("12.3"), "opensuse12.3",
|
||||
i686=OPENSUSE_URL % ("12.3"), hasbootiso=False, testshortcircuit=True)
|
||||
|
||||
|
||||
_set_distro(DebianDistro)
|
||||
# Debian releases rarely enough that we can just do every release since lenny
|
||||
_add(OLD_DEBIAN_URL % ("lenny", "amd64"), "debianlenny", hasxen=False,
|
||||
_add(OLD_DEBIAN_URL % ("lenny", "amd64"), "debian5", hasxen=False,
|
||||
testshortcircuit=True)
|
||||
_add(DEBIAN_URL % ("squeeze", "amd64"), "debiansqueeze")
|
||||
_add(DEBIAN_URL % ("wheezy", "amd64"), "debianwheezy")
|
||||
_add(DEBIAN_URL % ("squeeze", "amd64"), "debian6")
|
||||
_add(DEBIAN_URL % ("wheezy", "amd64"), "debian7")
|
||||
# And daily builds, since we specially handle that URL
|
||||
_add(DAILY_DEBIAN_URL % ("amd64"), "debianwheezy", name="debiandaily")
|
||||
_add(DAILY_DEBIAN_URL % ("amd64"), "debian7", name="debiandaily")
|
||||
|
||||
|
||||
_set_distro(UbuntuDistro)
|
||||
# One old ubuntu
|
||||
_add(OLD_UBUNTU_URL % ("hardy", "amd64"), "ubuntuhardy",
|
||||
_add(OLD_UBUNTU_URL % ("hardy", "amd64"), "ubuntu8.04",
|
||||
i686=OLD_UBUNTU_URL % ("hardy", "i386"), hasxen=False,
|
||||
testshortcircuit=True)
|
||||
# Latest LTS
|
||||
_add(UBUNTU_URL % ("precise", "amd64"), "ubuntuprecise")
|
||||
_add(UBUNTU_URL % ("precise", "amd64"), "ubuntu12.04")
|
||||
# Latest release
|
||||
_add(UBUNTU_URL % ("raring", "amd64"), "ubunturaring")
|
||||
_add(OLD_UBUNTU_URL % ("raring", "amd64"), "ubuntu13.04")
|
||||
|
||||
|
||||
_set_distro(MandrivaDistro)
|
||||
|
|
|
@ -681,15 +681,21 @@ class FedoraDistro(RedHatDistro):
|
|||
|
||||
lateststr, latestnum = self._latestFedoraVariant()
|
||||
ver = self.treeinfo.get("general", "version")
|
||||
if not ver:
|
||||
return False
|
||||
|
||||
if ver == "development" or ver == "rawhide":
|
||||
vernum = latestnum
|
||||
self._version_number = 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)
|
||||
return
|
||||
|
||||
if "_" in ver:
|
||||
ver = ver.split("_")[0]
|
||||
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
|
||||
|
@ -780,15 +786,14 @@ class CentOSDistro(RHELDistro):
|
|||
urldistro = None
|
||||
|
||||
def isValidStore(self):
|
||||
if self._hasTreeinfo():
|
||||
m = re.match(".*CentOS.*", self.treeinfo.get("general", "family"))
|
||||
ret = (m is not None)
|
||||
if not self._hasTreeinfo():
|
||||
return self.fetcher.hasFile("CentOS")
|
||||
|
||||
if ret:
|
||||
self._variantFromVersion()
|
||||
return ret
|
||||
|
||||
return self.fetcher.hasFile("CentOS")
|
||||
m = re.match(".*CentOS.*", self.treeinfo.get("general", "family"))
|
||||
ret = (m is not None)
|
||||
if ret:
|
||||
self._variantFromVersion()
|
||||
return ret
|
||||
|
||||
|
||||
# Scientific Linux distro check
|
||||
|
@ -825,18 +830,9 @@ class SuseDistro(Distro):
|
|||
if re.match(r'i[4-9]86', self.arch):
|
||||
self.arch = 'i386'
|
||||
|
||||
oldkern = "linux"
|
||||
oldinit = "initrd"
|
||||
if self.arch == "x86_64":
|
||||
oldkern += "64"
|
||||
oldinit += "64"
|
||||
|
||||
# Tested with Opensuse >= 10.2, 11, and sles 10
|
||||
self._hvm_kernel_paths = [("boot/%s/loader/linux" % self.arch,
|
||||
"boot/%s/loader/initrd" % self.arch)]
|
||||
# Tested with Opensuse 10.0
|
||||
self._hvm_kernel_paths.append(("boot/loader/%s" % oldkern,
|
||||
"boot/loader/%s" % oldinit))
|
||||
|
||||
# Matches Opensuse > 10.2 and sles 10
|
||||
self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch,
|
||||
|
@ -858,13 +854,12 @@ class SuseDistro(Distro):
|
|||
|
||||
def _detect_osdict_from_url(self):
|
||||
root = "opensuse"
|
||||
our_os_vals = [n.name for n in osdict.list_os() if
|
||||
n.name.startswith(root)]
|
||||
oses = [n for n in osdict.list_os() if n.name.startswith(root)]
|
||||
|
||||
for name in our_os_vals:
|
||||
codename = name[len(root):]
|
||||
if re.search("/%s\.[1-9]/" % codename, self.uri):
|
||||
return name
|
||||
for osobj in oses:
|
||||
codename = osobj.name[len(root):]
|
||||
if re.search("/%s/" % codename, self.uri):
|
||||
return osobj.name
|
||||
return self.os_variant
|
||||
|
||||
|
||||
|
@ -929,15 +924,19 @@ class DebianDistro(Distro):
|
|||
|
||||
def _detect_osdict_from_url(self):
|
||||
root = self.name.lower()
|
||||
our_os_vals = [n.name for n in osdict.list_os() if
|
||||
n.name.startswith(root)]
|
||||
oses = [n for n in osdict.list_os() if n.name.startswith(root)]
|
||||
|
||||
if self._prefix == "daily":
|
||||
return our_os_vals[0]
|
||||
for name in our_os_vals:
|
||||
codename = name[len(root):]
|
||||
return oses[0].name
|
||||
|
||||
for osobj in oses:
|
||||
# name looks like 'Debian Sarge'
|
||||
if " " not in osobj.label:
|
||||
continue
|
||||
|
||||
codename = osobj.label.lower().split()[1]
|
||||
if ("/%s/" % codename) in self.uri:
|
||||
return name
|
||||
return osobj.name
|
||||
return self.os_variant
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue