[releng] block_retired: Fix description
by Till Maas
commit e72d193166342b69f13e1aefd8332dcfecf9e20c
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 09:10:36 2015 +0200
block_retired: Fix description
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index 19f75b5..83263f7 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -310,7 +310,7 @@ def setup_logging(debug=False, mail=False):
if __name__ == "__main__":
- parser = argparse.ArgumentParser("Block retired packages")
+ parser = argparse.ArgumentParser(description="Block retired packages")
parser.add_argument("--debug", default=False, action="store_true")
parser.add_argument("packages", nargs="*", metavar="package",
help="Packages to block, default all retired packages")
8 years, 11 months
[releng] Add find_tagged_retired_epel_builds.py
by Till Maas
commit f69d0f55b0a15c12c898b2624254989b15978afe
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 09:10:08 2015 +0200
Add find_tagged_retired_epel_builds.py
Signed-off-by: Till Maas <opensource(a)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"])
8 years, 11 months
[releng] block_retired: Add get_packages()
by Till Maas
commit 39084c58601c750dd73c404c38b9ea6c97357ae8
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 08:57:12 2015 +0200
block_retired: Add get_packages()
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 25 +++++++++++++++++++++----
1 files changed, 21 insertions(+), 4 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index 57e098b..19f75b5 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -70,16 +70,33 @@ class ReleaseMapper(object):
return None
+def get_packages(tag, staging=False):
+ """
+ Get a list of all blocked and unblocked packages in a branch.
+ """
+ url = PRODUCTION_KOJI if not staging else STAGING_KOJI
+ kojisession = koji.ClientSession(url)
+ pkglist = kojisession.listPackages(tagID=tag, inherited=True)
+ blocked = []
+ unblocked = []
+
+ for p in pkglist:
+ pkgname = p["package_name"]
+ if p.get("blocked"):
+ blocked.append(pkgname)
+ else:
+ unblocked.append(pkgname)
+
+ return unblocked, blocked
+
+
def unblocked_packages(branch="master", staging=False):
"""
Get a list of all unblocked pacakges in a branch.
"""
mapper = ReleaseMapper(staging=staging)
tag = mapper.koji_tag(branch)
- url = PRODUCTION_KOJI if not staging else STAGING_KOJI
- kojisession = koji.ClientSession(url)
- pkglist = kojisession.listPackages(tagID=tag, inherited=True)
- unblocked = [p["package_name"] for p in pkglist if not p.get("blocked")]
+ unblocked, _ = get_packages(tag, staging)
return unblocked
8 years, 11 months
[releng] block_retired: Try blocking all packages at once
by Till Maas
commit a057af6923ada990b6654ff838e8526f91c11697
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 08:56:53 2015 +0200
block_retired: Try blocking all packages at once
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index 6a79d7c..57e098b 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -247,13 +247,17 @@ def block_all_retired(branches=RETIRING_BRANCHES, staging=False):
if pkg in allunblocked:
unblocked.append(pkg)
+ errors = block_package(unblocked, branch, staging=staging)
# Block packages individually so that errors with one package does not
# stop the other packages to be blocked
- for package in unblocked:
- errors = block_package(package, branch, staging=staging)
- log.info("Blocked %s on %s", package, branch)
+ if errors:
for error in errors:
log.error(error)
+ for package in unblocked:
+ errors = block_package(package, branch, staging=staging)
+ log.info("Blocked %s on %s", package, branch)
+ for error in errors:
+ log.error(error)
def setup_logging(debug=False, mail=False):
8 years, 11 months
[releng] Updated tag rawhide-stable
by Till Maas
The lightweight tag 'rawhide-stable' was updated to point to:
d1283eb... block_retired: Block packages individually
It previously pointed to:
9c30085... block_retired: Simplify/Fix packages check
NOTE: People pulling from the repository will not get the new tag.
For more information, please see:
http://live.gnome.org/Git/Help/TagUpdates
8 years, 11 months
[releng] block_retired: Block packages individually
by Till Maas
commit d1283eb65a09a260b6364894344174d9f28d0870
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 08:03:40 2015 +0200
block_retired: Block packages individually
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index 64d7638..6a79d7c 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -247,9 +247,11 @@ def block_all_retired(branches=RETIRING_BRANCHES, staging=False):
if pkg in allunblocked:
unblocked.append(pkg)
- if unblocked:
- errors = block_package(unblocked, branch, staging=staging)
- log.info("Blocked packages %s on %s", unblocked, branch)
+ # Block packages individually so that errors with one package does not
+ # stop the other packages to be blocked
+ for package in unblocked:
+ errors = block_package(package, branch, staging=staging)
+ log.info("Blocked %s on %s", package, branch)
for error in errors:
log.error(error)
8 years, 11 months
[releng] block_retired: Log errors
by Till Maas
commit c3f92409daad9ee84493524c467ad4c0089a8905
Author: Till Maas <opensource(a)till.name>
Date: Sat May 9 08:01:55 2015 +0200
block_retired: Log errors
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 33 ++++++++++++++++++++++++---------
1 files changed, 24 insertions(+), 9 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index b2b1156..64d7638 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -153,15 +153,15 @@ def get_retirement_info(message):
return None
-def run_koji(koji_params, output=False, staging=False):
+def run_koji(koji_params, staging=False):
url = PRODUCTION_KOJI if not staging else STAGING_KOJI
koji_cmd = ["koji", "--server", url]
cmd = koji_cmd + koji_params
log.debug("Running: %s", " ".join(cmd))
- if output:
- return subprocess.check_output(cmd)
- else:
- return subprocess.check_call(cmd)
+ process = subprocess.Popen(cmd, stderr=subprocess.PIPE,
+ stdout=subprocess.PIPE)
+ stdout, stderr = process.communicate()
+ return process, stdout, stderr
def block_package(packages, branch="master", staging=False):
@@ -175,17 +175,30 @@ def block_package(packages, branch="master", staging=False):
tag = mapper.koji_tag(branch)
epel_build_tag = mapper.epel_build_tag(branch)
+ errors = []
+
+ def catch_koji_errors(cmd):
+ process, stdout, stderr = run_koji(cmd, staging=staging)
+ if process.returncode != 0:
+ errors.append("{0} stdout: {1!r} stderr: {2!r}".format(cmd, stdout,
+ stderr))
+
# Untag builds first due to koji/mash bug:
# https://fedorahosted.org/koji/ticket/299
# FIXME: This introduces a theoretical race condition when a package is
# built after all builds were untagged and before the package is blocked
if epel_build_tag:
- run_koji(["untag-build", "--all", tag] + packages, staging=staging)
+ cmd = ["untag-build", "--all", tag] + packages
+ catch_koji_errors(cmd)
- run_koji(["block-pkg", tag] + packages, staging=staging)
+ cmd = ["block-pkg", tag] + packages
+ catch_koji_errors(cmd)
if epel_build_tag:
- run_koji(["unblock-pkg", epel_build_tag] + packages, staging=staging)
+ cmd = ["unblock-pkg", epel_build_tag] + packages
+ catch_koji_errors(cmd)
+
+ return errors
def handle_message(message, retiring_branches=RETIRING_BRANCHES,
@@ -235,8 +248,10 @@ def block_all_retired(branches=RETIRING_BRANCHES, staging=False):
unblocked.append(pkg)
if unblocked:
+ errors = block_package(unblocked, branch, staging=staging)
log.info("Blocked packages %s on %s", unblocked, branch)
- block_package(unblocked, branch, staging=staging)
+ for error in errors:
+ log.error(error)
def setup_logging(debug=False, mail=False):
8 years, 11 months
[releng] block_retired: Move run_koji() to top level
by Till Maas
commit 04a315311c4ef903567e6558e489650d9e1a53ea
Author: Till Maas <opensource(a)till.name>
Date: Fri May 8 22:45:53 2015 +0200
block_retired: Move run_koji() to top level
Signed-off-by: Till Maas <opensource(a)till.name>
scripts/block_retired.py | 27 ++++++++++++++-------------
1 files changed, 14 insertions(+), 13 deletions(-)
---
diff --git a/scripts/block_retired.py b/scripts/block_retired.py
index 41dd5d5..b2b1156 100755
--- a/scripts/block_retired.py
+++ b/scripts/block_retired.py
@@ -153,6 +153,17 @@ def get_retirement_info(message):
return None
+def run_koji(koji_params, output=False, staging=False):
+ url = PRODUCTION_KOJI if not staging else STAGING_KOJI
+ koji_cmd = ["koji", "--server", url]
+ cmd = koji_cmd + koji_params
+ log.debug("Running: %s", " ".join(cmd))
+ if output:
+ return subprocess.check_output(cmd)
+ else:
+ return subprocess.check_call(cmd)
+
+
def block_package(packages, branch="master", staging=False):
if isinstance(packages, basestring):
packages = [packages]
@@ -160,16 +171,6 @@ def block_package(packages, branch="master", staging=False):
if len(packages) == 0:
return None
- def run_koji(koji_params, output=False):
- url = PRODUCTION_KOJI if not staging else STAGING_KOJI
- koji_cmd = ["koji", "--server", url]
- cmd = koji_cmd + koji_params
- log.debug("Running: %s", " ".join(cmd))
- if output:
- return subprocess.check_output(cmd)
- else:
- return subprocess.check_call(cmd)
-
mapper = ReleaseMapper(staging=staging)
tag = mapper.koji_tag(branch)
epel_build_tag = mapper.epel_build_tag(branch)
@@ -179,12 +180,12 @@ def block_package(packages, branch="master", staging=False):
# FIXME: This introduces a theoretical race condition when a package is
# built after all builds were untagged and before the package is blocked
if epel_build_tag:
- run_koji(["untag-build", "--all", tag] + packages)
+ run_koji(["untag-build", "--all", tag] + packages, staging=staging)
- run_koji(["block-pkg", tag] + packages)
+ run_koji(["block-pkg", tag] + packages, staging=staging)
if epel_build_tag:
- run_koji(["unblock-pkg", epel_build_tag] + packages)
+ run_koji(["unblock-pkg", epel_build_tag] + packages, staging=staging)
def handle_message(message, retiring_branches=RETIRING_BRANCHES,
8 years, 11 months