iso-wrapper: Remove the class
It really is just a group of independent functions, so we can simplify it by removing the unused wrapper class. Instead of importing the wrapper, instantiating it and calling its methods we can import the module and call its functions directly. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
b2b5dd919b
commit
e58c78fd2f
@ -6,7 +6,7 @@ import os
|
||||
import pipes
|
||||
from collections import namedtuple
|
||||
|
||||
from .wrappers.iso import IsoWrapper
|
||||
from .wrappers import iso
|
||||
from .wrappers.jigdo import JigdoWrapper
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ fi
|
||||
""".replace('\n', '')
|
||||
|
||||
|
||||
def make_image(f, iso, opts):
|
||||
def make_image(f, opts):
|
||||
mkisofs_kwargs = {}
|
||||
|
||||
if opts.buildinstall_method:
|
||||
@ -62,12 +62,12 @@ def make_image(f, iso, opts):
|
||||
emit(f, cmd)
|
||||
|
||||
|
||||
def implant_md5(f, iso, opts):
|
||||
def implant_md5(f, opts):
|
||||
cmd = iso.get_implantisomd5_cmd(opts.iso_name, opts.supported)
|
||||
emit(f, cmd)
|
||||
|
||||
|
||||
def run_isohybrid(f, iso, opts):
|
||||
def run_isohybrid(f, opts):
|
||||
"""If the image is bootable, it should include an MBR or GPT so that it can
|
||||
be booted when written to USB disk. This is done by running isohybrid on
|
||||
the image.
|
||||
@ -77,7 +77,7 @@ def run_isohybrid(f, iso, opts):
|
||||
emit(f, cmd)
|
||||
|
||||
|
||||
def make_manifest(f, iso, opts):
|
||||
def make_manifest(f, opts):
|
||||
emit(f, iso.get_manifest_cmd(opts.iso_name))
|
||||
|
||||
|
||||
@ -103,10 +103,9 @@ def write_script(opts, f):
|
||||
emit(f, "#!/bin/bash")
|
||||
emit(f, "set -ex")
|
||||
emit(f, "cd %s" % opts.output_dir)
|
||||
iso = IsoWrapper()
|
||||
make_image(f, iso, opts)
|
||||
run_isohybrid(f, iso, opts)
|
||||
implant_md5(f, iso, opts)
|
||||
make_manifest(f, iso, opts)
|
||||
make_image(f, opts)
|
||||
run_isohybrid(f, opts)
|
||||
implant_md5(f, opts)
|
||||
make_manifest(f, opts)
|
||||
if opts.jigdo_dir:
|
||||
make_jigdo(f, opts)
|
||||
|
@ -31,7 +31,7 @@ from pungi.util import get_buildroot_rpms, get_volid, get_arch_variant_data
|
||||
from pungi.util import get_file_size, get_mtime, failable
|
||||
from pungi.wrappers.lorax import LoraxWrapper
|
||||
from pungi.wrappers.kojiwrapper import KojiWrapper
|
||||
from pungi.wrappers.iso import IsoWrapper
|
||||
from pungi.wrappers import iso
|
||||
from pungi.wrappers.scm import get_file_from_scm
|
||||
from pungi.phases.base import PhaseBase
|
||||
|
||||
@ -312,7 +312,6 @@ def link_boot_iso(compose, arch, variant, can_fail):
|
||||
except OSError:
|
||||
shutil.copy2(boot_iso_path, new_boot_iso_path)
|
||||
|
||||
iso = IsoWrapper()
|
||||
implant_md5 = iso.get_implanted_md5(new_boot_iso_path)
|
||||
iso_name = os.path.basename(new_boot_iso_path)
|
||||
iso_dir = os.path.dirname(new_boot_iso_path)
|
||||
|
@ -25,7 +25,7 @@ from productmd.images import Image
|
||||
from kobo.threads import ThreadPool, WorkerThread
|
||||
from kobo.shortcuts import run, relative_path
|
||||
|
||||
from pungi.wrappers.iso import IsoWrapper
|
||||
from pungi.wrappers import iso
|
||||
from pungi.wrappers.createrepo import CreaterepoWrapper
|
||||
from pungi.wrappers.kojiwrapper import KojiWrapper
|
||||
from pungi.phases.base import PhaseBase
|
||||
@ -246,8 +246,6 @@ class CreateIsoThread(WorkerThread):
|
||||
self.fail(compose, cmd, variant, arch)
|
||||
raise
|
||||
|
||||
iso = IsoWrapper()
|
||||
|
||||
img = Image(compose.im)
|
||||
img.path = cmd["iso_path"].replace(compose.paths.compose.topdir(), '').lstrip('/')
|
||||
img.mtime = get_mtime(cmd["iso_path"])
|
||||
@ -412,13 +410,12 @@ def prepare_iso(compose, arch, variant, disc_num=1, disc_count=None, split_iso_d
|
||||
new_di_path = os.path.join(iso_dir, ".discinfo")
|
||||
write_discinfo(new_di_path, **data)
|
||||
|
||||
i = IsoWrapper()
|
||||
if not disc_count or disc_count == 1:
|
||||
data = i.get_graft_points([tree_dir, iso_dir])
|
||||
data = iso.get_graft_points([tree_dir, iso_dir])
|
||||
else:
|
||||
data = i.get_graft_points([i._paths_from_list(tree_dir, split_iso_data["files"]), iso_dir])
|
||||
data = iso.get_graft_points([iso._paths_from_list(tree_dir, split_iso_data["files"]), iso_dir])
|
||||
|
||||
# TODO: /content /graft-points
|
||||
gp = "%s-graft-points" % iso_dir
|
||||
i.write_graft_points(gp, data, exclude=["*/lost+found", "*/boot.iso"])
|
||||
iso.write_graft_points(gp, data, exclude=["*/lost+found", "*/boot.iso"])
|
||||
return gp
|
||||
|
@ -25,7 +25,7 @@ from kobo.shortcuts import run, save_to_file, force_list
|
||||
from productmd.images import Image
|
||||
|
||||
from pungi.wrappers.kojiwrapper import KojiWrapper
|
||||
from pungi.wrappers.iso import IsoWrapper
|
||||
from pungi.wrappers import iso
|
||||
from pungi.phases import base
|
||||
from pungi.util import get_arch_variant_data, makedirs, get_mtime, get_file_size, failable
|
||||
from pungi.paths import translate_path
|
||||
@ -268,7 +268,6 @@ class CreateLiveImageThread(WorkerThread):
|
||||
:param iso_path: (str) absolute path to the ISO
|
||||
"""
|
||||
dir, filename = os.path.split(iso_path)
|
||||
iso = IsoWrapper()
|
||||
run("cd %s && %s" % (pipes.quote(dir), iso.get_manifest_cmd(filename)))
|
||||
|
||||
def _sign_image(self, koji_wrapper, compose, cmd, koji_task_id):
|
||||
|
@ -100,8 +100,7 @@ class OstreeInstallerThread(WorkerThread):
|
||||
def _add_to_manifest(self, compose, variant, arch, filename):
|
||||
full_iso_path = compose.paths.compose.iso_path(arch, variant, filename)
|
||||
iso_path = compose.paths.compose.iso_path(arch, variant, filename, relative=True)
|
||||
iso_wrapper = iso.IsoWrapper()
|
||||
implant_md5 = iso_wrapper.get_implanted_md5(full_iso_path)
|
||||
implant_md5 = iso.get_implanted_md5(full_iso_path)
|
||||
|
||||
img = images.Image(compose.im)
|
||||
img.path = iso_path
|
||||
@ -118,7 +117,7 @@ class OstreeInstallerThread(WorkerThread):
|
||||
setattr(img, 'can_fail', self.can_fail)
|
||||
setattr(img, 'deliverable', 'ostree-installer')
|
||||
try:
|
||||
img.volume_id = iso_wrapper.get_volume_id(full_iso_path)
|
||||
img.volume_id = iso.get_volume_id(full_iso_path)
|
||||
except RuntimeError:
|
||||
pass
|
||||
compose.im.add(variant.uid, arch, img)
|
||||
|
@ -47,7 +47,7 @@ from kobo.shortcuts import run
|
||||
from pungi.arch import split_name_arch
|
||||
from pungi.util import makedirs, pkg_is_rpm
|
||||
from pungi.phases.base import PhaseBase
|
||||
from pungi.wrappers.iso import IsoWrapper
|
||||
from pungi.wrappers import iso
|
||||
from pungi.wrappers.scm import get_file_from_scm, get_dir_from_scm
|
||||
|
||||
|
||||
@ -178,8 +178,6 @@ def rebuild_boot_iso(compose, arch, variant, package_sets):
|
||||
|
||||
compose.log_info("[BEGIN] %s" % msg)
|
||||
|
||||
iso = IsoWrapper()
|
||||
|
||||
# read the original volume id
|
||||
volume_id = iso.get_volume_id(boot_iso)
|
||||
|
||||
|
@ -380,10 +380,6 @@ def get_volid(compose, arch, variant=None, escape_spaces=False, disc_type=False)
|
||||
if len(volid) <= 32:
|
||||
break
|
||||
|
||||
# from wrappers.iso import IsoWrapper
|
||||
# iso = IsoWrapper(logger=compose._logger)
|
||||
# volid = iso._truncate_volid(volid)
|
||||
|
||||
if volid and len(volid) > 32:
|
||||
raise ValueError("Could not create volume ID <= 32 characters")
|
||||
|
||||
|
@ -29,309 +29,312 @@ if sys.version_info[0] == 3:
|
||||
return (a > b) - (a < b)
|
||||
|
||||
|
||||
class IsoWrapper(kobo.log.LoggingBase):
|
||||
def get_boot_options(arch, createfrom, efi=True):
|
||||
"""Checks to see what we need as the -b option for mkisofs"""
|
||||
|
||||
def get_boot_options(self, arch, createfrom, efi=True):
|
||||
"""Checks to see what we need as the -b option for mkisofs"""
|
||||
if arch in ("arm", "armhfp"):
|
||||
result = []
|
||||
return result
|
||||
|
||||
if arch in ("arm", "armhfp"):
|
||||
result = []
|
||||
return result
|
||||
if arch in ("aarch64", ):
|
||||
result = [
|
||||
'-eltorito-alt-boot',
|
||||
'-e', 'images/efiboot.img',
|
||||
'-no-emul-boot',
|
||||
]
|
||||
return result
|
||||
|
||||
if arch in ("aarch64", ):
|
||||
result = [
|
||||
if arch in ("i386", "i686", "x86_64"):
|
||||
result = [
|
||||
'-b', 'isolinux/isolinux.bin',
|
||||
'-c', 'isolinux/boot.cat',
|
||||
'-no-emul-boot',
|
||||
'-boot-load-size', '4',
|
||||
'-boot-info-table',
|
||||
]
|
||||
|
||||
# EFI args
|
||||
if arch == "x86_64":
|
||||
result.extend([
|
||||
'-eltorito-alt-boot',
|
||||
'-e', 'images/efiboot.img',
|
||||
'-no-emul-boot',
|
||||
]
|
||||
return result
|
||||
])
|
||||
return result
|
||||
|
||||
if arch in ("i386", "i686", "x86_64"):
|
||||
result = [
|
||||
'-b', 'isolinux/isolinux.bin',
|
||||
'-c', 'isolinux/boot.cat',
|
||||
'-no-emul-boot',
|
||||
'-boot-load-size', '4',
|
||||
'-boot-info-table',
|
||||
]
|
||||
if arch == "ia64":
|
||||
result = [
|
||||
'-b', 'images/boot.img',
|
||||
'-no-emul-boot',
|
||||
]
|
||||
return result
|
||||
|
||||
# EFI args
|
||||
if arch == "x86_64":
|
||||
result.extend([
|
||||
'-eltorito-alt-boot',
|
||||
'-e', 'images/efiboot.img',
|
||||
'-no-emul-boot',
|
||||
])
|
||||
return result
|
||||
if arch in ("ppc", "ppc64", "ppc64le"):
|
||||
result = [
|
||||
'-part',
|
||||
'-hfs',
|
||||
'-r',
|
||||
'-l',
|
||||
'-sysid', 'PPC',
|
||||
'-no-desktop',
|
||||
'-allow-multidot',
|
||||
'-chrp-boot',
|
||||
"-map", os.path.join(createfrom, 'mapping'), # -map %s/ppc/mapping
|
||||
'-hfs-bless', "/ppc/mac", # must be the last
|
||||
]
|
||||
return result
|
||||
|
||||
if arch == "ia64":
|
||||
result = [
|
||||
'-b', 'images/boot.img',
|
||||
'-no-emul-boot',
|
||||
]
|
||||
return result
|
||||
if arch == "sparc":
|
||||
result = [
|
||||
'-G', '/boot/isofs.b',
|
||||
'-B', '...',
|
||||
'-s', '/boot/silo.conf',
|
||||
'-sparc-label', '"sparc"',
|
||||
]
|
||||
return result
|
||||
|
||||
if arch in ("ppc", "ppc64", "ppc64le"):
|
||||
result = [
|
||||
'-part',
|
||||
'-hfs',
|
||||
'-r',
|
||||
'-l',
|
||||
'-sysid', 'PPC',
|
||||
'-no-desktop',
|
||||
'-allow-multidot',
|
||||
'-chrp-boot',
|
||||
"-map", os.path.join(createfrom, 'mapping'), # -map %s/ppc/mapping
|
||||
'-hfs-bless', "/ppc/mac", # must be the last
|
||||
]
|
||||
return result
|
||||
if arch in ("s390", "s390x"):
|
||||
result = [
|
||||
# "-no-emul-boot",
|
||||
# "-b", "images/cdboot.img",
|
||||
# "-c", "boot.cat",
|
||||
]
|
||||
return result
|
||||
|
||||
if arch == "sparc":
|
||||
result = [
|
||||
'-G', '/boot/isofs.b',
|
||||
'-B', '...',
|
||||
'-s', '/boot/silo.conf',
|
||||
'-sparc-label', '"sparc"',
|
||||
]
|
||||
return result
|
||||
raise ValueError("Unknown arch: %s" % arch)
|
||||
|
||||
if arch in ("s390", "s390x"):
|
||||
result = [
|
||||
# "-no-emul-boot",
|
||||
# "-b", "images/cdboot.img",
|
||||
# "-c", "boot.cat",
|
||||
]
|
||||
return result
|
||||
|
||||
raise ValueError("Unknown arch: %s" % arch)
|
||||
def _truncate_volid(volid):
|
||||
if len(volid) > 32:
|
||||
volid = volid.replace("-", "")
|
||||
|
||||
def _truncate_volid(self, volid):
|
||||
if len(volid) > 32:
|
||||
old_volid = volid
|
||||
volid = volid.replace("-", "")
|
||||
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
|
||||
if len(volid) > 32:
|
||||
volid = volid.replace(" ", "")
|
||||
|
||||
if len(volid) > 32:
|
||||
old_volid = volid
|
||||
volid = volid.replace(" ", "")
|
||||
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
|
||||
if len(volid) > 32:
|
||||
volid = volid.replace("Supplementary", "Supp")
|
||||
|
||||
if len(volid) > 32:
|
||||
old_volid = volid
|
||||
volid = volid.replace("Supplementary", "Supp")
|
||||
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
|
||||
if len(volid) > 32:
|
||||
raise ValueError("Volume ID must be less than 32 character: %s" % volid)
|
||||
|
||||
if len(volid) > 32:
|
||||
raise ValueError("Volume ID must be less than 32 character: %s" % volid)
|
||||
return volid
|
||||
|
||||
return volid
|
||||
|
||||
def get_mkisofs_cmd(self, iso, paths, appid=None, volid=None, volset=None, exclude=None, verbose=False, boot_args=None, input_charset="utf-8", graft_points=None):
|
||||
# following options are always enabled
|
||||
untranslated_filenames = True
|
||||
translation_table = True
|
||||
joliet = True
|
||||
joliet_long = True
|
||||
rock = True
|
||||
def get_mkisofs_cmd(iso, paths, appid=None, volid=None, volset=None, exclude=None, verbose=False, boot_args=None, input_charset="utf-8", graft_points=None):
|
||||
# following options are always enabled
|
||||
untranslated_filenames = True
|
||||
translation_table = True
|
||||
joliet = True
|
||||
joliet_long = True
|
||||
rock = True
|
||||
|
||||
cmd = ["/usr/bin/genisoimage"]
|
||||
if appid:
|
||||
cmd.extend(["-appid", appid])
|
||||
cmd = ["/usr/bin/genisoimage"]
|
||||
if appid:
|
||||
cmd.extend(["-appid", appid])
|
||||
|
||||
if untranslated_filenames:
|
||||
cmd.append("-untranslated-filenames")
|
||||
if untranslated_filenames:
|
||||
cmd.append("-untranslated-filenames")
|
||||
|
||||
if volid:
|
||||
cmd.extend(["-volid", self._truncate_volid(volid)])
|
||||
if volid:
|
||||
cmd.extend(["-volid", _truncate_volid(volid)])
|
||||
|
||||
if joliet:
|
||||
cmd.append("-J")
|
||||
if joliet:
|
||||
cmd.append("-J")
|
||||
|
||||
if joliet_long:
|
||||
cmd.append("-joliet-long")
|
||||
if joliet_long:
|
||||
cmd.append("-joliet-long")
|
||||
|
||||
if volset:
|
||||
cmd.extend(["-volset", volset])
|
||||
if volset:
|
||||
cmd.extend(["-volset", volset])
|
||||
|
||||
if rock:
|
||||
cmd.append("-rational-rock")
|
||||
if rock:
|
||||
cmd.append("-rational-rock")
|
||||
|
||||
if verbose:
|
||||
cmd.append("-verbose")
|
||||
if verbose:
|
||||
cmd.append("-verbose")
|
||||
|
||||
if translation_table:
|
||||
cmd.append("-translation-table")
|
||||
if translation_table:
|
||||
cmd.append("-translation-table")
|
||||
|
||||
if input_charset:
|
||||
cmd.extend(["-input-charset", input_charset])
|
||||
if input_charset:
|
||||
cmd.extend(["-input-charset", input_charset])
|
||||
|
||||
if exclude:
|
||||
for i in force_list(exclude):
|
||||
cmd.extend(["-x", i])
|
||||
if exclude:
|
||||
for i in force_list(exclude):
|
||||
cmd.extend(["-x", i])
|
||||
|
||||
if boot_args:
|
||||
cmd.extend(boot_args)
|
||||
if boot_args:
|
||||
cmd.extend(boot_args)
|
||||
|
||||
cmd.extend(["-o", iso])
|
||||
cmd.extend(["-o", iso])
|
||||
|
||||
if graft_points:
|
||||
cmd.append("-graft-points")
|
||||
cmd.extend(["-path-list", graft_points])
|
||||
if graft_points:
|
||||
cmd.append("-graft-points")
|
||||
cmd.extend(["-path-list", graft_points])
|
||||
else:
|
||||
# we're either using graft points or file lists, not both
|
||||
cmd.extend(force_list(paths))
|
||||
|
||||
return cmd
|
||||
|
||||
|
||||
def get_implantisomd5_cmd(iso_path, supported=False):
|
||||
cmd = ["/usr/bin/implantisomd5"]
|
||||
if supported:
|
||||
cmd.append("--supported-iso")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
|
||||
|
||||
def get_checkisomd5_cmd(iso_path, just_print=False):
|
||||
cmd = ["/usr/bin/checkisomd5"]
|
||||
if just_print:
|
||||
cmd.append("--md5sumonly")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
|
||||
|
||||
def get_implanted_md5(iso_path):
|
||||
cmd = get_checkisomd5_cmd(iso_path, just_print=True)
|
||||
retcode, output = run(cmd)
|
||||
line = output.splitlines()[0]
|
||||
return line.rsplit(":")[-1].strip()
|
||||
|
||||
|
||||
def get_isohybrid_cmd(iso_path, arch):
|
||||
# isohybrid is in syslinux which is x86 only
|
||||
cmd = ["/usr/bin/isohybrid"]
|
||||
# uefi is only supported on x86_64
|
||||
if arch == "x86_64":
|
||||
cmd.append("--uefi")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
|
||||
|
||||
def get_manifest_cmd(iso_name):
|
||||
return "isoinfo -R -f -i %s | grep -v '/TRANS.TBL$' | sort >> %s.manifest" % (pipes.quote(iso_name), pipes.quote(iso_name))
|
||||
|
||||
|
||||
def get_volume_id(path):
|
||||
cmd = ["isoinfo", "-d", "-i", path]
|
||||
retcode, output = run(cmd)
|
||||
|
||||
for line in output.splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith("Volume id:"):
|
||||
return line[11:].strip()
|
||||
|
||||
raise RuntimeError("Could not read Volume ID")
|
||||
|
||||
|
||||
def get_graft_points(paths, exclusive_paths=None, exclude=None):
|
||||
# path priority in ascending order (1st = lowest prio)
|
||||
# paths merge according to priority
|
||||
# exclusive paths override whole dirs
|
||||
|
||||
result = {}
|
||||
exclude = exclude or []
|
||||
exclusive_paths = exclusive_paths or []
|
||||
|
||||
for i in paths:
|
||||
if isinstance(i, dict):
|
||||
tree = i
|
||||
else:
|
||||
# we're either using graft points or file lists, not both
|
||||
cmd.extend(force_list(paths))
|
||||
tree = _scan_tree(i)
|
||||
result = _merge_trees(result, tree)
|
||||
|
||||
return cmd
|
||||
for i in exclusive_paths:
|
||||
tree = _scan_tree(i)
|
||||
result = _merge_trees(result, tree, exclusive=True)
|
||||
|
||||
def get_implantisomd5_cmd(self, iso_path, supported=False):
|
||||
cmd = ["/usr/bin/implantisomd5"]
|
||||
if supported:
|
||||
cmd.append("--supported-iso")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
# TODO: exclude
|
||||
return result
|
||||
|
||||
def get_checkisomd5_cmd(self, iso_path, just_print=False):
|
||||
cmd = ["/usr/bin/checkisomd5"]
|
||||
if just_print:
|
||||
cmd.append("--md5sumonly")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
def _paths_from_list(root, paths):
|
||||
root = os.path.abspath(root).rstrip("/") + "/"
|
||||
result = {}
|
||||
for i in paths:
|
||||
i = os.path.normpath(os.path.join(root, i))
|
||||
key = i[len(root):]
|
||||
result[key] = i
|
||||
return result
|
||||
|
||||
def get_implanted_md5(self, iso_path):
|
||||
cmd = self.get_checkisomd5_cmd(iso_path, just_print=True)
|
||||
retcode, output = run(cmd)
|
||||
line = output.splitlines()[0]
|
||||
result = line.rsplit(":")[-1].strip()
|
||||
return result
|
||||
|
||||
def get_isohybrid_cmd(self, iso_path, arch):
|
||||
# isohybrid is in syslinux which is x86 only
|
||||
cmd = ["/usr/bin/isohybrid"]
|
||||
# uefi is only supported on x86_64
|
||||
if arch == "x86_64":
|
||||
cmd.append("--uefi")
|
||||
cmd.append(iso_path)
|
||||
return cmd
|
||||
def _scan_tree(path):
|
||||
path = os.path.abspath(path)
|
||||
result = {}
|
||||
for root, dirs, files in os.walk(path):
|
||||
for f in files:
|
||||
abspath = os.path.join(root, f)
|
||||
relpath = relative_path(abspath, path.rstrip("/") + "/")
|
||||
result[relpath] = abspath
|
||||
|
||||
def get_manifest_cmd(self, iso_name):
|
||||
return "isoinfo -R -f -i %s | grep -v '/TRANS.TBL$' | sort >> %s.manifest" % (pipes.quote(iso_name), pipes.quote(iso_name))
|
||||
# include empty dirs
|
||||
if root != path:
|
||||
abspath = os.path.join(root, "")
|
||||
relpath = relative_path(abspath, path.rstrip("/") + "/")
|
||||
result[relpath] = abspath
|
||||
|
||||
def get_volume_id(self, path):
|
||||
cmd = ["isoinfo", "-d", "-i", path]
|
||||
retcode, output = run(cmd)
|
||||
return result
|
||||
|
||||
for line in output.splitlines():
|
||||
line = line.strip()
|
||||
if line.startswith("Volume id:"):
|
||||
return line[11:].strip()
|
||||
|
||||
raise RuntimeError("Could not read Volume ID")
|
||||
def _merge_trees(tree1, tree2, exclusive=False):
|
||||
# tree2 has higher priority
|
||||
result = tree2.copy()
|
||||
all_dirs = set([os.path.dirname(i).rstrip("/") for i in result if os.path.dirname(i) != ""])
|
||||
|
||||
def get_graft_points(self, paths, exclusive_paths=None, exclude=None):
|
||||
# path priority in ascending order (1st = lowest prio)
|
||||
# paths merge according to priority
|
||||
# exclusive paths override whole dirs
|
||||
|
||||
result = {}
|
||||
exclude = exclude or []
|
||||
exclusive_paths = exclusive_paths or []
|
||||
|
||||
for i in paths:
|
||||
if isinstance(i, dict):
|
||||
tree = i
|
||||
else:
|
||||
tree = self._scan_tree(i)
|
||||
result = self._merge_trees(result, tree)
|
||||
|
||||
for i in exclusive_paths:
|
||||
tree = self._scan_tree(i)
|
||||
result = self._merge_trees(result, tree, exclusive=True)
|
||||
|
||||
# TODO: exclude
|
||||
return result
|
||||
|
||||
def _paths_from_list(self, root, paths):
|
||||
root = os.path.abspath(root).rstrip("/") + "/"
|
||||
result = {}
|
||||
for i in paths:
|
||||
i = os.path.normpath(os.path.join(root, i))
|
||||
key = i[len(root):]
|
||||
result[key] = i
|
||||
return result
|
||||
|
||||
def _scan_tree(self, path):
|
||||
path = os.path.abspath(path)
|
||||
result = {}
|
||||
for root, dirs, files in os.walk(path):
|
||||
for f in files:
|
||||
abspath = os.path.join(root, f)
|
||||
relpath = relative_path(abspath, path.rstrip("/") + "/")
|
||||
result[relpath] = abspath
|
||||
|
||||
# include empty dirs
|
||||
if root != path:
|
||||
abspath = os.path.join(root, "")
|
||||
relpath = relative_path(abspath, path.rstrip("/") + "/")
|
||||
result[relpath] = abspath
|
||||
|
||||
return result
|
||||
|
||||
def _merge_trees(self, tree1, tree2, exclusive=False):
|
||||
# tree2 has higher priority
|
||||
result = tree2.copy()
|
||||
all_dirs = set([os.path.dirname(i).rstrip("/") for i in result if os.path.dirname(i) != ""])
|
||||
|
||||
for i in tree1:
|
||||
dn = os.path.dirname(i)
|
||||
if exclusive:
|
||||
match = False
|
||||
for a in all_dirs:
|
||||
if dn == a or dn.startswith("%s/" % a):
|
||||
match = True
|
||||
break
|
||||
if match:
|
||||
continue
|
||||
|
||||
if i in result:
|
||||
continue
|
||||
|
||||
result[i] = tree1[i]
|
||||
return result
|
||||
|
||||
def write_graft_points(self, file_name, h, exclude=None):
|
||||
exclude = exclude or []
|
||||
result = {}
|
||||
seen_dirs = set()
|
||||
for i in sorted(h, reverse=True):
|
||||
dn = os.path.dirname(i)
|
||||
|
||||
if not i.endswith("/"):
|
||||
result[i] = h[i]
|
||||
seen_dirs.add(dn)
|
||||
continue
|
||||
|
||||
found = False
|
||||
for j in seen_dirs:
|
||||
if j.startswith(dn):
|
||||
found = True
|
||||
for i in tree1:
|
||||
dn = os.path.dirname(i)
|
||||
if exclusive:
|
||||
match = False
|
||||
for a in all_dirs:
|
||||
if dn == a or dn.startswith("%s/" % a):
|
||||
match = True
|
||||
break
|
||||
if not found:
|
||||
result[i] = h[i]
|
||||
if match:
|
||||
continue
|
||||
|
||||
if i in result:
|
||||
continue
|
||||
|
||||
result[i] = tree1[i]
|
||||
return result
|
||||
|
||||
|
||||
def write_graft_points(file_name, h, exclude=None):
|
||||
exclude = exclude or []
|
||||
result = {}
|
||||
seen_dirs = set()
|
||||
for i in sorted(h, reverse=True):
|
||||
dn = os.path.dirname(i)
|
||||
|
||||
if not i.endswith("/"):
|
||||
result[i] = h[i]
|
||||
seen_dirs.add(dn)
|
||||
continue
|
||||
|
||||
f = open(file_name, "w")
|
||||
for i in sorted(result, cmp=cmp_graft_points):
|
||||
# make sure all files required for boot come first,
|
||||
# otherwise there may be problems with booting (large LBA address, etc.)
|
||||
found = False
|
||||
for excl in exclude:
|
||||
if fnmatch(i, excl):
|
||||
found = True
|
||||
break
|
||||
if found:
|
||||
continue
|
||||
f.write("%s=%s\n" % (i, h[i]))
|
||||
f.close()
|
||||
found = False
|
||||
for j in seen_dirs:
|
||||
if j.startswith(dn):
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
result[i] = h[i]
|
||||
seen_dirs.add(dn)
|
||||
|
||||
f = open(file_name, "w")
|
||||
for i in sorted(result, cmp=cmp_graft_points):
|
||||
# make sure all files required for boot come first,
|
||||
# otherwise there may be problems with booting (large LBA address, etc.)
|
||||
found = False
|
||||
for excl in exclude:
|
||||
if fnmatch(i, excl):
|
||||
found = True
|
||||
break
|
||||
if found:
|
||||
continue
|
||||
f.write("%s=%s\n" % (i, h[i]))
|
||||
f.close()
|
||||
|
||||
|
||||
def _is_rpm(path):
|
||||
|
@ -636,11 +636,10 @@ class TestSymlinkIso(PungiTestCase):
|
||||
@mock.patch('pungi.phases.buildinstall.Image')
|
||||
@mock.patch('pungi.phases.buildinstall.get_mtime')
|
||||
@mock.patch('pungi.phases.buildinstall.get_file_size')
|
||||
@mock.patch('pungi.phases.buildinstall.IsoWrapper')
|
||||
@mock.patch('pungi.phases.buildinstall.iso')
|
||||
@mock.patch('pungi.phases.buildinstall.run')
|
||||
def test_hardlink(self, run, IsoWrapperCls, get_file_size, get_mtime, ImageCls):
|
||||
def test_hardlink(self, run, iso, get_file_size, get_mtime, ImageCls):
|
||||
self.compose.conf = {'buildinstall_symlink': False, 'disc_types': {}}
|
||||
IsoWrapper = IsoWrapperCls.return_value
|
||||
get_file_size.return_value = 1024
|
||||
get_mtime.return_value = 13579
|
||||
|
||||
@ -655,14 +654,14 @@ class TestSymlinkIso(PungiTestCase):
|
||||
self.compose.get_image_name.mock_calls,
|
||||
[mock.call('x86_64', self.compose.variants['Server'],
|
||||
disc_type='boot', disc_num=None, suffix='.iso')])
|
||||
self.assertItemsEqual(IsoWrapper.get_implanted_md5.mock_calls,
|
||||
self.assertItemsEqual(iso.get_implanted_md5.mock_calls,
|
||||
[mock.call(tgt)])
|
||||
self.assertItemsEqual(IsoWrapper.get_manifest_cmd.mock_calls,
|
||||
self.assertItemsEqual(iso.get_manifest_cmd.mock_calls,
|
||||
[mock.call('image-name')])
|
||||
self.assertItemsEqual(IsoWrapper.get_volume_id.mock_calls,
|
||||
self.assertItemsEqual(iso.get_volume_id.mock_calls,
|
||||
[mock.call(tgt)])
|
||||
self.assertItemsEqual(run.mock_calls,
|
||||
[mock.call(IsoWrapper.get_manifest_cmd.return_value,
|
||||
[mock.call(iso.get_manifest_cmd.return_value,
|
||||
workdir=self.topdir + '/compose/Server/x86_64/iso')])
|
||||
|
||||
image = ImageCls.return_value
|
||||
@ -675,7 +674,7 @@ class TestSymlinkIso(PungiTestCase):
|
||||
self.assertEqual(image.disc_number, 1)
|
||||
self.assertEqual(image.disc_count, 1)
|
||||
self.assertEqual(image.bootable, True)
|
||||
self.assertEqual(image.implant_md5, IsoWrapper.get_implanted_md5.return_value)
|
||||
self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
|
||||
self.assertEqual(image.can_fail, False)
|
||||
self.assertEqual(self.compose.im.add.mock_calls,
|
||||
[mock.call('Server', 'x86_64', image)])
|
||||
@ -683,14 +682,13 @@ class TestSymlinkIso(PungiTestCase):
|
||||
@mock.patch('pungi.phases.buildinstall.Image')
|
||||
@mock.patch('pungi.phases.buildinstall.get_mtime')
|
||||
@mock.patch('pungi.phases.buildinstall.get_file_size')
|
||||
@mock.patch('pungi.phases.buildinstall.IsoWrapper')
|
||||
@mock.patch('pungi.phases.buildinstall.iso')
|
||||
@mock.patch('pungi.phases.buildinstall.run')
|
||||
def test_hardlink_with_custom_type(self, run, IsoWrapperCls, get_file_size, get_mtime, ImageCls):
|
||||
def test_hardlink_with_custom_type(self, run, iso, get_file_size, get_mtime, ImageCls):
|
||||
self.compose.conf = {
|
||||
'buildinstall_symlink': False,
|
||||
'disc_types': {'boot': 'netinst'},
|
||||
}
|
||||
IsoWrapper = IsoWrapperCls.return_value
|
||||
get_file_size.return_value = 1024
|
||||
get_mtime.return_value = 13579
|
||||
|
||||
@ -705,14 +703,14 @@ class TestSymlinkIso(PungiTestCase):
|
||||
self.compose.get_image_name.mock_calls,
|
||||
[mock.call('x86_64', self.compose.variants['Server'],
|
||||
disc_type='netinst', disc_num=None, suffix='.iso')])
|
||||
self.assertItemsEqual(IsoWrapper.get_implanted_md5.mock_calls,
|
||||
self.assertItemsEqual(iso.get_implanted_md5.mock_calls,
|
||||
[mock.call(tgt)])
|
||||
self.assertItemsEqual(IsoWrapper.get_manifest_cmd.mock_calls,
|
||||
self.assertItemsEqual(iso.get_manifest_cmd.mock_calls,
|
||||
[mock.call('image-name')])
|
||||
self.assertItemsEqual(IsoWrapper.get_volume_id.mock_calls,
|
||||
self.assertItemsEqual(iso.get_volume_id.mock_calls,
|
||||
[mock.call(tgt)])
|
||||
self.assertItemsEqual(run.mock_calls,
|
||||
[mock.call(IsoWrapper.get_manifest_cmd.return_value,
|
||||
[mock.call(iso.get_manifest_cmd.return_value,
|
||||
workdir=self.topdir + '/compose/Server/x86_64/iso')])
|
||||
|
||||
image = ImageCls.return_value
|
||||
@ -725,7 +723,7 @@ class TestSymlinkIso(PungiTestCase):
|
||||
self.assertEqual(image.disc_number, 1)
|
||||
self.assertEqual(image.disc_count, 1)
|
||||
self.assertEqual(image.bootable, True)
|
||||
self.assertEqual(image.implant_md5, IsoWrapper.get_implanted_md5.return_value)
|
||||
self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
|
||||
self.assertEqual(image.can_fail, True)
|
||||
self.assertEqual(self.compose.im.add.mock_calls,
|
||||
[mock.call('Server', 'x86_64', image)])
|
||||
|
@ -208,11 +208,11 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
|
||||
|
||||
class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_in_runroot(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_in_runroot(self, KojiWrapper, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -256,9 +256,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
run_runroot.call_args_list,
|
||||
[mock.call(get_runroot_cmd.return_value,
|
||||
log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)])
|
||||
self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list,
|
||||
self.assertEqual(iso.get_implanted_md5.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list,
|
||||
self.assertEqual(iso.get_volume_id.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
|
||||
self.assertEqual(len(compose.im.add.call_args_list), 1)
|
||||
@ -272,11 +272,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
self.assertEqual(image.type, 'dvd')
|
||||
self.assertEqual(image.subvariant, 'Server')
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_source_iso(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_source_iso(self, KojiWrapper, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -320,9 +320,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
run_runroot.call_args_list,
|
||||
[mock.call(get_runroot_cmd.return_value,
|
||||
log_file='%s/logs/src/createiso-image-name.src.log' % self.topdir)])
|
||||
self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list,
|
||||
self.assertEqual(iso.get_implanted_md5.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list,
|
||||
self.assertEqual(iso.get_volume_id.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
|
||||
self.assertEqual(len(compose.im.add.call_args_list), 2)
|
||||
@ -336,11 +336,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
self.assertEqual(image.type, 'dvd')
|
||||
self.assertEqual(image.subvariant, 'Server')
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_bootable(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_bootable(self, KojiWrapper, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -386,9 +386,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
run_runroot.call_args_list,
|
||||
[mock.call(get_runroot_cmd.return_value,
|
||||
log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)])
|
||||
self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list,
|
||||
self.assertEqual(iso.get_implanted_md5.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list,
|
||||
self.assertEqual(iso.get_volume_id.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
|
||||
self.assertEqual(len(compose.im.add.call_args_list), 1)
|
||||
@ -402,12 +402,12 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
self.assertEqual(image.type, 'dvd')
|
||||
self.assertEqual(image.subvariant, 'Server')
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_in_runroot_non_existing_tag(self, KojiWrapper, get_file_size,
|
||||
get_mtime, IsoWrapper):
|
||||
get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -434,11 +434,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
|
||||
self.assertEqual('Tag "f25-build" does not exist.', str(ctx.exception))
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_in_runroot_crash(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_in_runroot_crash(self, KojiWrapper, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -472,11 +472,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
mock.call('BOOM')
|
||||
])
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_in_runroot_fail(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_in_runroot_fail(self, KojiWrapper, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -515,12 +515,12 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
% (self.topdir + '/logs/x86_64/createiso-image-name.x86_64.log'))
|
||||
])
|
||||
|
||||
@mock.patch('pungi.phases.createiso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.createiso.iso')
|
||||
@mock.patch('pungi.phases.createiso.get_mtime')
|
||||
@mock.patch('pungi.phases.createiso.get_file_size')
|
||||
@mock.patch('pungi.phases.createiso.run')
|
||||
@mock.patch('pungi.phases.createiso.KojiWrapper')
|
||||
def test_process_locally(self, KojiWrapper, run, get_file_size, get_mtime, IsoWrapper):
|
||||
def test_process_locally(self, KojiWrapper, run, get_file_size, get_mtime, iso):
|
||||
compose = helpers.DummyCompose(self.topdir, {
|
||||
'release_short': 'test',
|
||||
'release_version': '1.0',
|
||||
@ -547,9 +547,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
|
||||
run.call_args_list,
|
||||
[mock.call(cmd['cmd'], show_cmd=True,
|
||||
logfile='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)])
|
||||
self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list,
|
||||
self.assertEqual(iso.get_implanted_md5.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list,
|
||||
self.assertEqual(iso.get_volume_id.call_args_list,
|
||||
[mock.call(cmd['iso_path'])])
|
||||
|
||||
self.assertEqual(len(compose.im.add.call_args_list), 1)
|
||||
|
@ -55,7 +55,7 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
'image_volid_formats': ['{release_short}-{variant}-{arch}'],
|
||||
})
|
||||
|
||||
def assertImageAdded(self, compose, ImageCls, IsoWrapper):
|
||||
def assertImageAdded(self, compose, ImageCls, iso):
|
||||
image = ImageCls.return_value
|
||||
self.assertEqual(image.path, 'Everything/x86_64/iso/image-name')
|
||||
self.assertEqual(image.mtime, 13579)
|
||||
@ -66,7 +66,7 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
self.assertEqual(image.disc_number, 1)
|
||||
self.assertEqual(image.disc_count, 1)
|
||||
self.assertEqual(image.bootable, True)
|
||||
self.assertEqual(image.implant_md5, IsoWrapper.return_value.get_implanted_md5.return_value)
|
||||
self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
|
||||
self.assertEqual(compose.im.add.mock_calls,
|
||||
[mock.call('Everything', 'x86_64', image)])
|
||||
|
||||
@ -111,10 +111,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_run(self, KojiWrapper, link, IsoWrapper,
|
||||
def test_run(self, KojiWrapper, link, iso,
|
||||
get_file_size, get_mtime, ImageCls, run):
|
||||
self.compose.supported = False
|
||||
pool = mock.Mock()
|
||||
@ -140,17 +140,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
'file://%s/compose/Everything/x86_64/os' % self.topdir,
|
||||
cfg['release'])
|
||||
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
|
||||
self.assertImageAdded(self.compose, ImageCls, IsoWrapper)
|
||||
self.assertImageAdded(self.compose, ImageCls, iso)
|
||||
self.assertAllCopied(run)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_run_external_source(self, KojiWrapper, link, IsoWrapper,
|
||||
def test_run_external_source(self, KojiWrapper, link, iso,
|
||||
get_file_size, get_mtime, ImageCls, run):
|
||||
pool = mock.Mock()
|
||||
cfg = {
|
||||
@ -173,18 +173,18 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
|
||||
self.assertRunrootCall(koji, 'http://example.com/repo/x86_64/', cfg['release'], isfinal=True)
|
||||
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
|
||||
self.assertImageAdded(self.compose, ImageCls, IsoWrapper)
|
||||
self.assertImageAdded(self.compose, ImageCls, iso)
|
||||
self.assertAllCopied(run)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.wrappers.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_fail_with_relative_template_path_but_no_repo(self, KojiWrapper, link,
|
||||
IsoWrapper, get_file_size,
|
||||
iso, get_file_size,
|
||||
get_mtime, ImageCls, run):
|
||||
pool = mock.Mock()
|
||||
cfg = {
|
||||
@ -213,10 +213,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_run_clone_templates(self, KojiWrapper, link, IsoWrapper,
|
||||
def test_run_clone_templates(self, KojiWrapper, link, iso,
|
||||
get_file_size, get_mtime, ImageCls, run,
|
||||
get_dir_from_scm):
|
||||
pool = mock.Mock()
|
||||
@ -254,17 +254,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
extra=['--add-template=%s/some_file.txt' % templ_dir,
|
||||
'--add-arch-template=%s/other_file.txt' % templ_dir])
|
||||
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
|
||||
self.assertImageAdded(self.compose, ImageCls, IsoWrapper)
|
||||
self.assertImageAdded(self.compose, ImageCls, iso)
|
||||
self.assertAllCopied(run)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_run_with_implicit_release(self, KojiWrapper, link, IsoWrapper,
|
||||
def test_run_with_implicit_release(self, KojiWrapper, link, iso,
|
||||
get_file_size, get_mtime, ImageCls, run):
|
||||
pool = mock.Mock()
|
||||
cfg = {
|
||||
@ -312,17 +312,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
'--add-arch-template-var=ostree_ref=fedora-atomic/Rawhide/x86_64/docker-host']
|
||||
)
|
||||
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
|
||||
self.assertImageAdded(self.compose, ImageCls, IsoWrapper)
|
||||
self.assertImageAdded(self.compose, ImageCls, iso)
|
||||
self.assertAllCopied(run)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_fail_crash(self, KojiWrapper, link, IsoWrapper, get_file_size,
|
||||
def test_fail_crash(self, KojiWrapper, link, iso, get_file_size,
|
||||
get_mtime, ImageCls, run):
|
||||
pool = mock.Mock()
|
||||
cfg = {
|
||||
@ -345,10 +345,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
|
||||
@mock.patch('productmd.images.Image')
|
||||
@mock.patch('pungi.util.get_mtime')
|
||||
@mock.patch('pungi.util.get_file_size')
|
||||
@mock.patch('pungi.wrappers.iso.IsoWrapper')
|
||||
@mock.patch('pungi.phases.ostree_installer.iso')
|
||||
@mock.patch('os.link')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
def test_fail_runroot_fail(self, KojiWrapper, link, IsoWrapper,
|
||||
def test_fail_runroot_fail(self, KojiWrapper, link, iso,
|
||||
get_file_size, get_mtime, ImageCls, run):
|
||||
pool = mock.Mock()
|
||||
cfg = {
|
||||
|
Loading…
Reference in New Issue
Block a user