From c7d1c8fa7bfed8bab604dbe523701e09ae69fd92 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: May 18 2020 12:27:12 +0000 Subject: For failed each operation in MonitorUtils record what failed Basically in MonitorUtils, for each utility function we know what would have failed for this step to fail, so we record this in the `failed` list and that should tell us at the end which tool failed. Signed-off-by: Pierre-Yves Chibon --- diff --git a/utils.py b/utils.py index 411a7a2..8f331ca 100644 --- a/utils.py +++ b/utils.py @@ -49,6 +49,7 @@ class MonitoringUtils: def __init__(self): """ Instanciate the object. """ self.logs = [] + self.failed = [] def print_user(self, content, success=None): """ Prints the specified content to the user. @@ -81,17 +82,24 @@ class MonitoringUtils: [command, "--user", username, "clone", f"{namespace}/{name}"], cwd=folder, ) - clone_folder = os.path.join(folder, name) - run_command( - ["git", "config", "user.name", "packagerbot"], cwd=clone_folder, - ) - run_command( - ["git", "config", "user.email", "admin@fedoraproject.org"], - cwd=clone_folder, - ) - self.print_user(info_log, success=True) except MonitoringException: + self.failed.append("git/dist-git") self.print_user(info_log, success=False) + else: + try: + # Assume these commands can't fail + clone_folder = os.path.join(folder, name) + run_command( + ["git", "config", "user.name", "packagerbot"], cwd=clone_folder, + ) + run_command( + ["git", "config", "user.email", "admin@fedoraproject.org"], + cwd=clone_folder, + ) + self.print_user(info_log, success=True) + except MonitoringException: + self.failed.append("git") + self.print_user(info_log, success=False) def add_remote(self, name, url, folder): """ Add the specified remote to the git repo in the folder with the @@ -103,6 +111,7 @@ class MonitoringUtils: run_command(["git", "remote", "add", name, url], cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed.append("git") self.print_user(info_log, success=False) def switch_branch(self, command, name, folder): @@ -114,6 +123,7 @@ class MonitoringUtils: run_command([command, "switch-branch", f"{name}"], cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("fedpkg") self.print_user(info_log, success=False) def bump_release(self, name, folder): @@ -125,6 +135,7 @@ class MonitoringUtils: run_command(["rpmdev-bumpspec", f"{name}.spec"], cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("rpmdev-bumspec") self.print_user(info_log, success=False) def commit_changes(self, commit_log, folder): @@ -137,6 +148,7 @@ class MonitoringUtils: run_command(["git", "commit", "-asm", commit_log], cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("git") self.print_user(info_log, success=False) def push_changes(self, folder, target, branch, force=False): @@ -151,6 +163,7 @@ class MonitoringUtils: run_command(cmd, cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("git/dist-git") self.print_user(info_log, success=False) def pull_changes(self, folder, target, branch): @@ -163,6 +176,7 @@ class MonitoringUtils: run_command(cmd, cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("git/dist-git") self.print_user(info_log, success=False) def open_pullrequest(self, base_url, username, namespace, name, branch, token): @@ -190,6 +204,7 @@ class MonitoringUtils: success = False pr_id = None pr_uid = None + self.failed("dist-git") else: output = req.json() pr_id = str(output["id"]) @@ -212,6 +227,7 @@ class MonitoringUtils: self.print_user(info_log, success=True) return nevr.strip().decode("utf-8") except MonitoringException: + self.failed("fedpkg") self.print_user(info_log, success=False) def build_package(self, command, folder, target=None): @@ -226,6 +242,7 @@ class MonitoringUtils: run_command(command, cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("koji") self.print_user(info_log, success=False) def chain_build_packages(self, command, packages, folder, target=None): @@ -245,6 +262,7 @@ class MonitoringUtils: run_command(command, cwd=folder) self.print_user(info_log, success=True) except MonitoringException: + self.failed("koji") self.print_user(info_log, success=False) def get_build_tags(self, koji_url, nevr, expected_ends): @@ -301,6 +319,8 @@ class MonitoringUtils: break info_log = f"Retrieving koji tags: {tags}" + if not success: + self.failed("koji") self.print_user(info_log, success=success) def create_update( @@ -334,6 +354,7 @@ class MonitoringUtils: run_command(command) self.print_user(info_log, success=True) except MonitoringException: + self.failed("bodhi") self.print_user(info_log, success=False) def get_update_id(self, nevr, url): @@ -354,6 +375,7 @@ class MonitoringUtils: if (datetime.datetime.utcnow() - start).seconds > (15 * 60): success = False + self.failed("bodhi") info_log = f"Update for {nevr} not created within 15 minutes" break @@ -512,6 +534,8 @@ class MonitoringUtils: end = datetime.datetime.utcnow() info_log += f" - ran for: {(end - start_lookup).seconds}s" self.print_user(info_log, success=success) + if not success: + self.failed("datagrepper") def lookup_ci_resultsdb(self, nevr, name, url): """ Check the CI results in the specified resultsdb for results about @@ -561,6 +585,8 @@ class MonitoringUtils: end = datetime.datetime.utcnow() info_log += f" - ran for: {(end - start).seconds}s" self.print_user(info_log, success=success) + if not success: + self.failed("resultsdb") def waive_update(self, command, updateid, prod=True, username=None, password=None): """ Waive all the tests results for the specified update using bodhi's @@ -586,6 +612,7 @@ class MonitoringUtils: run_command(command) self.print_user(info_log, success=True) except MonitoringException: + self.failed("waiverdb") self.print_user(info_log, success=False) def get_pr_flag( @@ -640,6 +667,8 @@ class MonitoringUtils: break self.print_user(info_log, success=success) + if not success: + self.failed("dist-git") def merge_pr(self, base_url, username, namespace, name, pr_id, token): """ Merge the specified PR @@ -659,6 +688,8 @@ class MonitoringUtils: success = True self.print_user(info_log, success=success) + if not success: + self.failed("dist-git") def finalize(self, start): """ End data returned. """ @@ -681,6 +712,7 @@ class MonitoringUtils: self.print_user(info_log, success=True) except (MonitoringException, Exception) as err: print(err) + self.failed("dist-git") self.print_user(info_log, success=False) return side_tag_name