From 51b1144b70e450ef82c9a20be688fbede637fb97 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Nov 28 2019 14:12:05 +0000 Subject: runroot: Log different commands to different files JIRA: COMPOSE-3980 Signed-off-by: Lubomír Sedlář --- diff --git a/pungi/runroot.py b/pungi/runroot.py index 6c29873..f830bb7 100644 --- a/pungi/runroot.py +++ b/pungi/runroot.py @@ -97,6 +97,9 @@ class Runroot(kobo.log.LoggingBase): ssh_cmd = ["ssh", "-oBatchMode=yes", "-n", "-l", user, hostname, formatted_cmd] return run(ssh_cmd, show_cmd=True, logfile=log_file)[1] + def _log_file(self, base, suffix): + return base.replace(".log", "." + suffix + ".log") + def _run_openssh(self, command, log_file=None, arch=None, packages=None, chown_paths=None, **kwargs): """ @@ -128,7 +131,12 @@ class Runroot(kobo.log.LoggingBase): if init_template: fmt_dict = {"runroot_tag": runroot_tag} runroot_key = self._ssh_run( - hostname, user, init_template, fmt_dict, log_file=log_file) + hostname, + user, + init_template, + fmt_dict, + log_file=self._log_file(log_file, "init"), + ) runroot_key = runroot_key.rstrip("\n\r") else: runroot_key = None @@ -139,7 +147,11 @@ class Runroot(kobo.log.LoggingBase): if runroot_key: fmt_dict["runroot_key"] = runroot_key self._ssh_run( - hostname, user, install_packages_template, fmt_dict, log_file=log_file + hostname, + user, + install_packages_template, + fmt_dict, + log_file=self._log_file(log_file, "install_packages"), ) # Run the runroot task and get the buildroot RPMs. @@ -151,7 +163,11 @@ class Runroot(kobo.log.LoggingBase): fmt_dict["command"] = "rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'" buildroot_rpms = self._ssh_run( - hostname, user, run_template, fmt_dict, log_file=log_file + hostname, + user, + run_template, + fmt_dict, + log_file=self._log_file(log_file, "rpms"), ) else: self._ssh_run(hostname, user, command, log_file=log_file) @@ -159,7 +175,7 @@ class Runroot(kobo.log.LoggingBase): hostname, user, "rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", - log_file=log_file, + log_file=self._log_file(log_file, "rpms"), ) # Parse the buildroot_rpms and store it in self._result. diff --git a/tests/test_runroot.py b/tests/test_runroot.py index 63d2cd6..e168b64 100644 --- a/tests/test_runroot.py +++ b/tests/test_runroot.py @@ -29,13 +29,14 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): method = self.runroot.get_runroot_method() self.assertEqual(method, "openssh") - def _ssh_call(self, cmd): + def _ssh_call(self, cmd, suffix=None): """ Helper method returning default SSH mock.call with given command `cmd`. """ + logfile = ("/foo/runroot." + suffix + ".log") if suffix else "/foo/runroot.log" return mock.call( ['ssh', '-oBatchMode=yes', '-n', '-l', 'root', 'localhost', cmd], - logfile='/foo/runroot.log', + logfile=logfile, show_cmd=True, ) @@ -45,7 +46,9 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): self.runroot.run("df -h", log_file="/foo/runroot.log", arch="x86_64") run.assert_has_calls([ self._ssh_call('df -h'), - self._ssh_call("rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", suffix="rpms" + ), ]) @mock.patch("pungi.runroot.run") @@ -69,10 +72,13 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): self.runroot.run("df -h", log_file="/foo/runroot.log", arch="x86_64", packages=["lorax", "automake"]) run.assert_has_calls([ - self._ssh_call('/usr/sbin/init_runroot f28-build'), - self._ssh_call('install key lorax automake'), + self._ssh_call('/usr/sbin/init_runroot f28-build', suffix="init"), + self._ssh_call('install key lorax automake', suffix="install_packages"), self._ssh_call('run key df -h'), - self._ssh_call("run key rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "run key rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", + suffix="rpms", + ), ]) @mock.patch("pungi.runroot.run") @@ -85,9 +91,12 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): self.runroot.run("df -h", log_file="/foo/runroot.log", arch="x86_64", packages=["lorax", "automake"]) run.assert_has_calls([ - self._ssh_call('install lorax automake'), + self._ssh_call('install lorax automake', suffix="install_packages"), self._ssh_call('run df -h'), - self._ssh_call("run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", + suffix="rpms", + ), ]) @mock.patch("pungi.runroot.run") @@ -100,7 +109,10 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): self.runroot.run("df -h", log_file="/foo/runroot.log", arch="x86_64") run.assert_has_calls([ self._ssh_call('run df -h'), - self._ssh_call("run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", + suffix="rpms", + ), ]) @mock.patch("pungi.runroot.run") @@ -112,7 +124,10 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): packages=["lorax", "automake"]) run.assert_has_calls([ self._ssh_call('run df -h'), - self._ssh_call("run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", + suffix="rpms", + ), ]) @mock.patch("pungi.runroot.run") @@ -127,5 +142,8 @@ class TestRunrootOpenSSH(helpers.PungiTestCase): self._ssh_call( "run df -h && chmod -R a+r /mnt/foo/compose /mnt/foo/x && " "chown -R %d /mnt/foo/compose /mnt/foo/x" % os.getuid()), - self._ssh_call("run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'"), + self._ssh_call( + "run rpm -qa --qf='%{name}-%{version}-%{release}.%{arch}\n'", + suffix="rpms", + ), ])