buildinstall: Copy files in thread
Instead of running the copy from the main script explicitly, make it part of the thread. This should make things very slightly faster, and the code is much simpler. Fixes: https://pagure.io/pungi/issue/959 JIRA: COMPOSE-2604 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
dc69281025
commit
2dd30008ae
@ -384,9 +384,6 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None):
|
||||
essentials_phase.start()
|
||||
essentials_phase.stop()
|
||||
|
||||
if not buildinstall_phase.skip():
|
||||
buildinstall_phase.copy_files()
|
||||
|
||||
productimg_phase.start()
|
||||
productimg_phase.stop()
|
||||
|
||||
|
@ -143,6 +143,9 @@ class BuildinstallPhase(PhaseBase):
|
||||
release = self.compose.conf["release_version"]
|
||||
disc_type = self.compose.conf['disc_types'].get('dvd', 'dvd')
|
||||
|
||||
# Prepare kickstart file for final images.
|
||||
self.pool.kickstart_file = get_kickstart_file(self.compose)
|
||||
|
||||
for arch in self.compose.get_arches():
|
||||
commands = []
|
||||
|
||||
@ -199,40 +202,6 @@ class BuildinstallPhase(PhaseBase):
|
||||
return (super(BuildinstallPhase, self).skip()
|
||||
or (variant.uid if self.used_lorax else None, arch) in self.pool.finished_tasks)
|
||||
|
||||
def copy_files(self):
|
||||
disc_type = self.compose.conf['disc_types'].get('dvd', 'dvd')
|
||||
|
||||
# copy buildinstall files to the 'os' dir
|
||||
kickstart_file = get_kickstart_file(self.compose)
|
||||
for arch in self.compose.get_arches():
|
||||
for variant in self.compose.get_variants(arch=arch, types=["self", "variant"]):
|
||||
if variant.is_empty:
|
||||
continue
|
||||
if not self.succeeded(variant, arch):
|
||||
self.compose.log_debug(
|
||||
'Buildinstall: skipping copying files for %s.%s due to failed runroot task'
|
||||
% (variant.uid, arch))
|
||||
continue
|
||||
|
||||
buildinstall_dir = self.compose.paths.work.buildinstall_dir(arch)
|
||||
|
||||
# Lorax runs per-variant, so we need to tweak the source path
|
||||
# to include variant.
|
||||
if self.used_lorax:
|
||||
buildinstall_dir = os.path.join(buildinstall_dir, variant.uid)
|
||||
|
||||
if not os.path.isdir(buildinstall_dir) or not os.listdir(buildinstall_dir):
|
||||
continue
|
||||
|
||||
os_tree = self.compose.paths.compose.os_tree(arch, variant)
|
||||
# TODO: label is not used
|
||||
label = ""
|
||||
volid = get_volid(self.compose, arch, variant, disc_type=disc_type)
|
||||
can_fail = self.compose.can_fail(variant, arch, 'buildinstall')
|
||||
with failable(self.compose, can_fail, variant, arch, 'buildinstall'):
|
||||
tweak_buildinstall(self.compose, buildinstall_dir, os_tree, arch, variant.uid, label, volid, kickstart_file)
|
||||
link_boot_iso(self.compose, arch, variant, can_fail)
|
||||
|
||||
|
||||
def get_kickstart_file(compose):
|
||||
scm_dict = compose.conf.get("buildinstall_kickstart")
|
||||
@ -494,4 +463,37 @@ class BuildinstallThread(WorkerThread):
|
||||
f.write("\n".join(rpms))
|
||||
|
||||
self.pool.finished_tasks.add((variant.uid if variant else None, arch))
|
||||
|
||||
self.copy_files(compose, variant, arch)
|
||||
|
||||
self.pool.log_info("[DONE ] %s" % msg)
|
||||
|
||||
def copy_files(self, compose, variant, arch):
|
||||
disc_type = compose.conf['disc_types'].get('dvd', 'dvd')
|
||||
|
||||
buildinstall_dir = compose.paths.work.buildinstall_dir(arch)
|
||||
|
||||
# Lorax runs per-variant, so we need to tweak the source path
|
||||
# to include variant.
|
||||
if variant:
|
||||
buildinstall_dir = os.path.join(buildinstall_dir, variant.uid)
|
||||
|
||||
# Find all relevant variants if lorax is not used.
|
||||
variants = [variant] if variant else compose.get_variants(arch=arch, types=["self", "variant"])
|
||||
for var in variants:
|
||||
os_tree = compose.paths.compose.os_tree(arch, var)
|
||||
# TODO: label is not used
|
||||
label = ""
|
||||
volid = get_volid(compose, arch, var, disc_type=disc_type)
|
||||
can_fail = compose.can_fail(var, arch, 'buildinstall')
|
||||
tweak_buildinstall(
|
||||
compose,
|
||||
buildinstall_dir,
|
||||
os_tree,
|
||||
arch,
|
||||
var.uid,
|
||||
label,
|
||||
volid,
|
||||
self.pool.kickstart_file,
|
||||
)
|
||||
link_boot_iso(compose, arch, var, can_fail)
|
||||
|
@ -15,7 +15,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), ".."))
|
||||
|
||||
from pungi.phases.buildinstall import (BuildinstallPhase, BuildinstallThread, link_boot_iso,
|
||||
BOOT_CONFIGS, tweak_configs)
|
||||
from tests.helpers import DummyCompose, PungiTestCase, touch, boom
|
||||
from tests.helpers import DummyCompose, PungiTestCase, touch
|
||||
|
||||
|
||||
class BuildInstallCompose(DummyCompose):
|
||||
@ -555,179 +555,9 @@ class TestBuildinstallPhase(PungiTestCase):
|
||||
log_dir=self.topdir + '/logs/amd64/buildinstall-Client-logs')])
|
||||
|
||||
|
||||
class TestCopyFiles(PungiTestCase):
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||
@mock.patch('os.listdir')
|
||||
@mock.patch('os.path.isdir')
|
||||
@mock.patch('pungi.phases.buildinstall.get_kickstart_file')
|
||||
def test_copy_files_buildinstall(self, get_kickstart_file, isdir, listdir,
|
||||
get_volid, tweak_buildinstall, link_boot_iso):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'buildinstall'
|
||||
})
|
||||
|
||||
get_volid.side_effect = (
|
||||
lambda compose, arch, variant, disc_type: "%s.%s" % (variant.uid, arch)
|
||||
)
|
||||
get_kickstart_file.return_value = 'kickstart'
|
||||
|
||||
phase = BuildinstallPhase(compose)
|
||||
phase.pool.finished_tasks = set([(None, 'x86_64'), (None, 'amd64')])
|
||||
phase.copy_files()
|
||||
|
||||
self.assertItemsEqual(
|
||||
get_volid.mock_calls,
|
||||
[mock.call(compose, 'x86_64', compose.variants['Server'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Client'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Server'], disc_type='dvd')])
|
||||
self.assertItemsEqual(
|
||||
tweak_buildinstall.mock_calls,
|
||||
[mock.call(compose,
|
||||
self.topdir + '/work/x86_64/buildinstall',
|
||||
self.topdir + '/compose/Server/x86_64/os',
|
||||
'x86_64', 'Server', '', 'Server.x86_64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall',
|
||||
self.topdir + '/compose/Server/amd64/os',
|
||||
'amd64', 'Server', '', 'Server.amd64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall',
|
||||
self.topdir + '/compose/Client/amd64/os',
|
||||
'amd64', 'Client', '', 'Client.amd64', 'kickstart')])
|
||||
self.assertItemsEqual(
|
||||
link_boot_iso.mock_calls,
|
||||
[mock.call(compose, 'x86_64', compose.variants['Server'], False),
|
||||
mock.call(compose, 'amd64', compose.variants['Client'], False),
|
||||
mock.call(compose, 'amd64', compose.variants['Server'], False)])
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||
def test_copy_files_buildinstall_failed_task(self, get_volid, tweak_buildinstall, link_boot_iso):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'buildinstall'
|
||||
})
|
||||
|
||||
phase = BuildinstallPhase(compose)
|
||||
phase.pool.finished_tasks = set()
|
||||
phase.copy_files()
|
||||
|
||||
self.assertItemsEqual(get_volid.mock_calls, [])
|
||||
self.assertItemsEqual(tweak_buildinstall.mock_calls, [])
|
||||
self.assertItemsEqual(link_boot_iso.mock_calls, [])
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||
@mock.patch('os.listdir')
|
||||
@mock.patch('os.path.isdir')
|
||||
@mock.patch('pungi.phases.buildinstall.get_kickstart_file')
|
||||
def test_copy_files_lorax(self, get_kickstart_file, isdir, listdir,
|
||||
get_volid, tweak_buildinstall, link_boot_iso):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'lorax'
|
||||
})
|
||||
|
||||
get_volid.side_effect = (
|
||||
lambda compose, arch, variant, disc_type: "%s.%s" % (variant.uid, arch)
|
||||
)
|
||||
get_kickstart_file.return_value = 'kickstart'
|
||||
|
||||
phase = BuildinstallPhase(compose)
|
||||
phase.pool.finished_tasks = set([('Server', 'x86_64'), ('Server', 'amd64'), ('Client', 'amd64')])
|
||||
phase.copy_files()
|
||||
|
||||
self.assertItemsEqual(
|
||||
get_volid.mock_calls,
|
||||
[mock.call(compose, 'x86_64', compose.variants['Server'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Client'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Server'], disc_type='dvd')])
|
||||
self.assertItemsEqual(
|
||||
tweak_buildinstall.mock_calls,
|
||||
[mock.call(compose,
|
||||
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||
self.topdir + '/compose/Server/x86_64/os',
|
||||
'x86_64', 'Server', '', 'Server.x86_64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall/Server',
|
||||
self.topdir + '/compose/Server/amd64/os',
|
||||
'amd64', 'Server', '', 'Server.amd64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall/Client',
|
||||
self.topdir + '/compose/Client/amd64/os',
|
||||
'amd64', 'Client', '', 'Client.amd64', 'kickstart')])
|
||||
self.assertItemsEqual(
|
||||
link_boot_iso.mock_calls,
|
||||
[mock.call(compose, 'x86_64', compose.variants['Server'], False),
|
||||
mock.call(compose, 'amd64', compose.variants['Client'], False),
|
||||
mock.call(compose, 'amd64', compose.variants['Server'], False)])
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||
def test_copy_files_lorax_failed_task(self, get_volid, tweak_buildinstall, link_boot_iso):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'lorax'
|
||||
})
|
||||
|
||||
phase = BuildinstallPhase(compose)
|
||||
phase.pool.finished_tasks = set()
|
||||
phase.copy_files()
|
||||
|
||||
self.assertItemsEqual(get_volid.mock_calls, [])
|
||||
self.assertItemsEqual(tweak_buildinstall.mock_calls, [])
|
||||
self.assertItemsEqual(link_boot_iso.mock_calls, [])
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||
@mock.patch('os.listdir')
|
||||
@mock.patch('os.path.isdir')
|
||||
@mock.patch('pungi.phases.buildinstall.get_kickstart_file')
|
||||
def test_copy_fail(self, get_kickstart_file, isdir, listdir,
|
||||
get_volid, tweak_buildinstall, link_boot_iso):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'lorax',
|
||||
'failable_deliverables': [
|
||||
('^.+$', {'*': ['buildinstall']})
|
||||
],
|
||||
})
|
||||
|
||||
get_volid.side_effect = (
|
||||
lambda compose, arch, variant, disc_type: "%s.%s" % (variant.uid, arch)
|
||||
)
|
||||
get_kickstart_file.return_value = 'kickstart'
|
||||
tweak_buildinstall.side_effect = boom
|
||||
|
||||
phase = BuildinstallPhase(compose)
|
||||
phase.pool.finished_tasks = set([('Server', 'x86_64'), ('Server', 'amd64'), ('Client', 'amd64')])
|
||||
phase.copy_files()
|
||||
|
||||
self.assertItemsEqual(
|
||||
get_volid.mock_calls,
|
||||
[mock.call(compose, 'x86_64', compose.variants['Server'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Client'], disc_type='dvd'),
|
||||
mock.call(compose, 'amd64', compose.variants['Server'], disc_type='dvd')])
|
||||
self.assertItemsEqual(
|
||||
tweak_buildinstall.mock_calls,
|
||||
[mock.call(compose,
|
||||
self.topdir + '/work/x86_64/buildinstall/Server',
|
||||
self.topdir + '/compose/Server/x86_64/os',
|
||||
'x86_64', 'Server', '', 'Server.x86_64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall/Server',
|
||||
self.topdir + '/compose/Server/amd64/os',
|
||||
'amd64', 'Server', '', 'Server.amd64', 'kickstart'),
|
||||
mock.call(compose,
|
||||
self.topdir + '/work/amd64/buildinstall/Client',
|
||||
self.topdir + '/compose/Client/amd64/os',
|
||||
'amd64', 'Client', '', 'Client.amd64', 'kickstart')])
|
||||
self.assertItemsEqual(link_boot_iso.mock_calls, [])
|
||||
|
||||
|
||||
@mock.patch(
|
||||
'pungi.phases.buildinstall.get_volid', new=lambda *args, **kwargs: "dummy-volid"
|
||||
)
|
||||
class BuildinstallThreadTestCase(PungiTestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -735,10 +565,14 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
self.pool = mock.Mock(finished_tasks=set())
|
||||
self.cmd = mock.Mock()
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.get_buildroot_rpms')
|
||||
@mock.patch('pungi.phases.buildinstall.run')
|
||||
def test_buildinstall_thread_with_lorax_in_runroot(self, run, get_buildroot_rpms, KojiWrapperMock):
|
||||
def test_buildinstall_thread_with_lorax_in_runroot(
|
||||
self, run, get_buildroot_rpms, KojiWrapperMock, mock_tweak, mock_link
|
||||
):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'lorax',
|
||||
'runroot': True,
|
||||
@ -763,13 +597,14 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
with mock.patch('time.sleep'):
|
||||
t.process((compose, 'x86_64', compose.variants['Server'], self.cmd), 0)
|
||||
|
||||
destdir = os.path.join(self.topdir, "work/x86_64/buildinstall/Server")
|
||||
self.assertItemsEqual(
|
||||
get_runroot_cmd.mock_calls,
|
||||
[mock.call(
|
||||
'rrt', 'x86_64', self.cmd, channel=None,
|
||||
use_shell=True, task_id=True,
|
||||
packages=['lorax'], mounts=[self.topdir], weight=123,
|
||||
destdir=os.path.join(self.topdir, "work/x86_64/buildinstall/Server"),
|
||||
destdir=destdir,
|
||||
)])
|
||||
self.assertItemsEqual(
|
||||
run_runroot_cmd.mock_calls,
|
||||
@ -780,10 +615,34 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
self.assertItemsEqual(rpms, ['bash', 'zsh'])
|
||||
self.assertItemsEqual(self.pool.finished_tasks, [('Server', 'x86_64')])
|
||||
|
||||
self.assertEqual(
|
||||
mock_tweak.call_args_list,
|
||||
[
|
||||
mock.call(
|
||||
compose,
|
||||
destdir,
|
||||
os.path.join(self.topdir, "compose/Server/x86_64/os"),
|
||||
"x86_64",
|
||||
"Server",
|
||||
"",
|
||||
"dummy-volid",
|
||||
self.pool.kickstart_file,
|
||||
)
|
||||
],
|
||||
)
|
||||
self.assertEqual(
|
||||
mock_link.call_args_list,
|
||||
[mock.call(compose, "x86_64", compose.variants["Server"], False)],
|
||||
)
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.get_buildroot_rpms')
|
||||
@mock.patch('pungi.phases.buildinstall.run')
|
||||
def test_buildinstall_thread_with_buildinstall_in_runroot(self, run, get_buildroot_rpms, KojiWrapperMock):
|
||||
def test_buildinstall_thread_with_buildinstall_in_runroot(
|
||||
self, run, get_buildroot_rpms, KojiWrapperMock, mock_tweak, mock_link
|
||||
):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'buildinstall',
|
||||
'runroot': True,
|
||||
@ -805,24 +664,48 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
t = BuildinstallThread(self.pool)
|
||||
|
||||
with mock.patch('time.sleep'):
|
||||
t.process((compose, 'x86_64', None, self.cmd), 0)
|
||||
t.process((compose, "amd64", None, self.cmd), 0)
|
||||
|
||||
destdir = os.path.join(self.topdir, "work/amd64/buildinstall")
|
||||
self.assertItemsEqual(
|
||||
get_runroot_cmd.mock_calls,
|
||||
[mock.call(
|
||||
'rrt', 'x86_64', self.cmd, channel=None,
|
||||
"rrt", "amd64", self.cmd, channel=None,
|
||||
use_shell=True, task_id=True,
|
||||
packages=['anaconda'], mounts=[self.topdir], weight=None,
|
||||
destdir=os.path.join(self.topdir, "work/x86_64/buildinstall"),
|
||||
destdir=destdir,
|
||||
)])
|
||||
self.assertItemsEqual(
|
||||
run_runroot_cmd.mock_calls,
|
||||
[mock.call(get_runroot_cmd.return_value,
|
||||
log_file=self.topdir + '/logs/x86_64/buildinstall.x86_64.log')])
|
||||
with open(self.topdir + '/logs/x86_64/buildinstall-RPMs.x86_64.log') as f:
|
||||
log_file=self.topdir + "/logs/amd64/buildinstall.amd64.log")])
|
||||
with open(self.topdir + "/logs/amd64/buildinstall-RPMs.amd64.log") as f:
|
||||
rpms = f.read().strip().split('\n')
|
||||
self.assertItemsEqual(rpms, ['bash', 'zsh'])
|
||||
self.assertItemsEqual(self.pool.finished_tasks, [(None, 'x86_64')])
|
||||
self.assertItemsEqual(self.pool.finished_tasks, [(None, 'amd64')])
|
||||
self.assertItemsEqual(
|
||||
mock_tweak.call_args_list,
|
||||
[
|
||||
mock.call(
|
||||
compose,
|
||||
destdir,
|
||||
os.path.join(self.topdir, "compose", var, "amd64/os"),
|
||||
"amd64",
|
||||
var,
|
||||
"",
|
||||
"dummy-volid",
|
||||
self.pool.kickstart_file,
|
||||
)
|
||||
for var in ["Client", "Server"]
|
||||
],
|
||||
)
|
||||
self.assertItemsEqual(
|
||||
mock_link.call_args_list,
|
||||
[
|
||||
mock.call(compose, "amd64", compose.variants["Client"], False),
|
||||
mock.call(compose, "amd64", compose.variants["Server"], False),
|
||||
],
|
||||
)
|
||||
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.get_buildroot_rpms')
|
||||
@ -922,12 +805,15 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
self.assertTrue(os.path.exists(dummy_file))
|
||||
self.assertItemsEqual(self.pool.finished_tasks, [])
|
||||
|
||||
@mock.patch('pungi.phases.buildinstall.link_boot_iso')
|
||||
@mock.patch('pungi.phases.buildinstall.tweak_buildinstall')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||
@mock.patch('pungi.wrappers.kojiwrapper.get_buildroot_rpms')
|
||||
@mock.patch('pungi.phases.buildinstall.run')
|
||||
@mock.patch('pungi.phases.buildinstall.copy_all')
|
||||
def test_buildinstall_thread_with_lorax_custom_buildinstall_topdir(
|
||||
self, copy_all, run, get_buildroot_rpms, KojiWrapperMock):
|
||||
self, copy_all, run, get_buildroot_rpms, KojiWrapperMock, mock_tweak, mock_link
|
||||
):
|
||||
compose = BuildInstallCompose(self.topdir, {
|
||||
'buildinstall_method': 'lorax',
|
||||
'runroot': True,
|
||||
@ -980,6 +866,26 @@ class BuildinstallThreadTestCase(PungiTestCase):
|
||||
os.path.join(self.topdir, 'logs/x86_64/buildinstall-Server-logs'))]
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
mock_tweak.call_args_list,
|
||||
[
|
||||
mock.call(
|
||||
compose,
|
||||
os.path.join(self.topdir, "work/x86_64/buildinstall/Server"),
|
||||
os.path.join(self.topdir, "compose/Server/x86_64/os"),
|
||||
"x86_64",
|
||||
"Server",
|
||||
"",
|
||||
"dummy-volid",
|
||||
self.pool.kickstart_file,
|
||||
)
|
||||
],
|
||||
)
|
||||
self.assertEqual(
|
||||
mock_link.call_args_list,
|
||||
[mock.call(compose, "x86_64", compose.variants["Server"], False)],
|
||||
)
|
||||
|
||||
|
||||
class TestSymlinkIso(PungiTestCase):
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user