From 5ef9a04815411a38816c44e6caa2c807d4679703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de> Date: Wed, 5 Dec 2018 16:56:03 +0100 Subject: [PATCH] Option to temporarily disable repos in mpcdf_setup_repos --- mpcdf_common.py | 11 ++++++++--- mpcdf_setup_repositories.py | 4 +++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/mpcdf_common.py b/mpcdf_common.py index 840c2f1..958f178 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -142,10 +142,13 @@ def remove_attribute(api_url, project, package, attribute_name): raise osc.oscerr.APIError("Could not remove attribute") -def mpcdf_enable_repositories(api_url, project, package, verbose=False): +def mpcdf_enable_repositories(api_url, project, package, verbose=False, filter_repos=None): from itertools import product import sys + if filter_repos is None: + filter_repos = () + root = ElementTree.fromstringlist(osc.core.show_package_meta(api_url, project, package)) build = root.find("./build") if build is None: @@ -178,6 +181,8 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False): default_cudas = try_get_attribute(None, "default_cuda") def enable(name): + if any(filtered_repo in name for filtered_repo in filter_repos): + return node = ElementTree.Element("enable") node.set("repository", name) node.tail = "\n " @@ -251,7 +256,7 @@ def mpcdf_enable_repositories(api_url, project, package, verbose=False): return True -def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, packages=None, dry_run=False): +def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, packages=None, dry_run=False, filter_repos=None): if parent: for attribute in ["compiler_modules", "default_compiler", "mpi_modules", "default_mpi", "cuda_modules", "default_cuda"]: print("Copying attribute 'MPCDF:{0}' from parent project".format(attribute)) @@ -400,7 +405,7 @@ def mpcdf_setup_repositories(api_url, project, distribution=None, parent=None, p packages = osc.core.meta_get_packagelist(api_url, project) for package in packages: print("Updating repositories for", package) - if not mpcdf_enable_repositories(api_url, project, package): + if not mpcdf_enable_repositories(api_url, project, package, filter_repos=filter_repos): print("ATTENTION: Not changing unmanaged package {0}".format(package)) # Update repositories diff --git a/mpcdf_setup_repositories.py b/mpcdf_setup_repositories.py index b9725e7..13e6db9 100644 --- a/mpcdf_setup_repositories.py +++ b/mpcdf_setup_repositories.py @@ -16,6 +16,8 @@ import osc.cmdln help="Setup the repositories to be based on the upstream project PARENT (e.g. for home: projects)") @osc.cmdln.option('--distribution', help="Base distribution, necessary argument unless set previously for this project") +@osc.cmdln.option('--disable-repo', metavar="REPO", action="append", + help="Temporarily disable all repositories containing REPO") @osc.cmdln.alias("mpcdf_setup_repos") def do_mpcdf_setup_repositories(self, subcmd, opts, *args): """${cmd_name}: Create all repository combinations for an MPCDF project @@ -41,4 +43,4 @@ def do_mpcdf_setup_repositories(self, subcmd, opts, *args): else: raise osc.oscerr.WrongArgs("Too many arguments") - mpcdf_setup_repositories(self.get_api_url(), project, opts.distribution, parent=opts.parent, dry_run=opts.dry_run) + mpcdf_setup_repositories(self.get_api_url(), project, opts.distribution, parent=opts.parent, dry_run=opts.dry_run, filter_repos=opts.disable_repo) -- GitLab