buildinstall: Change owner of lorax logs

It's created in runroot, the owner and permissions should be updated so
that anyone can read it and user running compose can delete the files.

JIRA: COMPOSE-3545
Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
Lubomír Sedlář 2019-05-16 11:02:04 +02:00
parent f2bbf35429
commit 1951b0a521
2 changed files with 29 additions and 8 deletions

View File

@ -91,18 +91,13 @@ class BuildinstallPhase(PhaseBase):
# The paths module will modify the filename (by inserting arch). But we
# only care about the directory anyway.
log_filename = 'buildinstall-%s-logs/dummy' % variant.uid
log_dir = os.path.dirname(self.compose.paths.log.log_file(arch, log_filename))
makedirs(log_dir)
log_dir = _get_log_dir(self.compose, variant, arch)
# If the buildinstall_topdir is set, it means Koji is used for
# buildinstall phase and the filesystem with Koji is read-only.
# In that case, we have to write logs to buildinstall_topdir and
# later copy them back to our local log directory.
if self.compose.conf.get("buildinstall_topdir", None):
log_dir = self.compose.paths.work.buildinstall_dir(
arch, allow_topdir_override=True, variant=variant)
log_dir = os.path.join(log_dir, "logs")
output_dir = os.path.join(output_dir, "results")
repos = [repo_baseurl] + get_arch_variant_data(self.compose.conf,
@ -427,8 +422,10 @@ class BuildinstallThread(WorkerThread):
# Get list of packages which are neded in runroot.
packages = []
chown_paths = []
if buildinstall_method == "lorax":
packages += ["lorax"]
chown_paths.append(_get_log_dir(compose, variant, arch))
elif buildinstall_method == "buildinstall":
packages += ["anaconda"]
@ -442,7 +439,9 @@ class BuildinstallThread(WorkerThread):
runroot.run(
cmd, log_file=log_file, arch=arch, packages=packages,
mounts=[compose.topdir], output_dir=output_dir,
weight=compose.conf['runroot_weights'].get('buildinstall'))
weight=compose.conf['runroot_weights'].get('buildinstall'),
chown_paths=chown_paths,
)
if final_output_dir != output_dir:
if not os.path.exists(final_output_dir):
@ -498,3 +497,21 @@ class BuildinstallThread(WorkerThread):
self.pool.kickstart_file,
)
link_boot_iso(compose, arch, var, can_fail)
def _get_log_dir(compose, variant, arch):
"""Find directory where to store lorax logs in. If it's inside the compose,
create the directory.
"""
if compose.conf.get("buildinstall_topdir"):
log_dir = compose.paths.work.buildinstall_dir(
arch, allow_topdir_override=True, variant=variant
)
return os.path.join(log_dir, "logs")
# The paths module will modify the filename (by inserting arch). But we
# only care about the directory anyway.
log_filename = 'buildinstall-%s-logs/dummy' % variant.uid
log_dir = os.path.dirname(compose.paths.log.log_file(arch, log_filename))
makedirs(log_dir)
return log_dir

View File

@ -604,7 +604,10 @@ class BuildinstallThreadTestCase(PungiTestCase):
'rrt', 'x86_64', self.cmd, channel=None,
use_shell=True, task_id=True,
packages=['lorax'], mounts=[self.topdir], weight=123,
chown_paths=[destdir],
chown_paths=[
os.path.join(self.topdir, "logs/x86_64/buildinstall-Server-logs"),
destdir,
],
)])
self.assertItemsEqual(
run_runroot_cmd.mock_calls,
@ -846,6 +849,7 @@ class BuildinstallThreadTestCase(PungiTestCase):
use_shell=True, task_id=True,
packages=['lorax'], mounts=[self.topdir], weight=123,
chown_paths=[
"/buildinstall_topdir/buildinstall-%s/x86_64/Server/logs" % os.path.basename(self.topdir),
"/buildinstall_topdir/buildinstall-%s/x86_64/Server" % os.path.basename(self.topdir),
],
)])