[releng] Add find_tagged_retired_epel_builds.py

Till Maas till at fedoraproject.org
Sat May 9 07:11:00 UTC 2015


commit f69d0f55b0a15c12c898b2624254989b15978afe
Author: Till Maas <opensource at till.name>
Date:   Sat May 9 09:10:08 2015 +0200

    Add find_tagged_retired_epel_builds.py
    
    Signed-off-by: Till Maas <opensource at till.name>

 scripts/find_tagged_retired_epel_builds.py |   91 ++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 0 deletions(-)
---
diff --git a/scripts/find_tagged_retired_epel_builds.py b/scripts/find_tagged_retired_epel_builds.py
new file mode 100755
index 0000000..8dbaea0
--- /dev/null
+++ b/scripts/find_tagged_retired_epel_builds.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python -tt
+# vim: fileencoding=utf8
+# SPDX-License-Identifier: GPL-2.0+
+
+import argparse
+import getpass
+import logging
+import time
+
+
+from autosigner import SubjectSMTPHandler
+from block_retired import get_packages, run_koji
+
+
+log = logging.getLogger(__name__)
+
+
+# copied from block_retired.py
+def setup_logging(debug=False, mail=False):
+    if debug:
+        log.setLevel(logging.DEBUG)
+    else:
+        log.setLevel(logging.INFO)
+
+    formatter = logging.Formatter(
+        '%(asctime)s: %(levelname)s: %(message)s',
+    )
+    # Log in UTC
+    formatter.converter = time.gmtime
+
+    console_logger = logging.StreamHandler()
+    if debug:
+        console_logger.setLevel(logging.DEBUG)
+    else:
+        console_logger.setLevel(logging.INFO)
+    console_logger.setFormatter(formatter)
+    log.addHandler(console_logger)
+
+    if mail:
+        # FIXME: Make this a config option
+        fedora_user = getpass.getuser()
+        mail_logger = SubjectSMTPHandler(
+            "127.0.0.1", fedora_user, [fedora_user],
+            "EPEL retired build monitor event")
+        if debug:
+            mail_logger.setLevel(logging.DEBUG)
+        mail_logger.setFormatter(formatter)
+        mail_logger.subject_prefix = "EPEL retired builld monitor: "
+        log.addHandler(mail_logger)
+
+
+def check_tag(tag, staging):
+    buildtag = tag + "-build"
+    _, blocked_in_tag = get_packages(tag)
+    unblocked_in_buildtag, _ = get_packages(buildtag)
+
+    for package in sorted(blocked_in_tag):
+        if package in unblocked_in_buildtag:
+            log.debug("Checking %s", package)
+            cmd = ["latest-build", buildtag, package]
+            process, latest_build, stderr = run_koji(cmd, staging=staging)
+            if tag in latest_build and buildtag not in latest_build:
+                yield dict(package=package, latest_build=latest_build)
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="Check if there are EPEL builds from retired packages "
+        "still in the buildroot.")
+    parser.add_argument("--debug", default=False, action="store_true")
+    parser.add_argument("--tag", default=None,
+                        help="Tag to check, default: all")
+    parser.add_argument(
+        "--staging", default=False, action="store_true",
+        help="Talk to staging services (pkgdb), instead of production")
+    args = parser.parse_args()
+
+    setup_logging(args.debug)
+
+    if args.tag is None:
+        for tag in ["dist-5E-epel", "dist-6E-epel", "epel7"]:
+            print("Tag: " + tag)
+            problems = check_tag(tag, args.staging)
+            for problem in problems:
+                print problem["package"]
+                log.debug(problem["latest_build"])
+    else:
+        problems = check_tag(args.tag, args.staging)
+        for problem in problems:
+            print problem["package"]
+            log.debug(problem["latest_build"])


More information about the rel-eng mailing list