From bc591d36a316e00f31c407db72e0c3aba8801afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de> Date: Wed, 10 Jul 2019 16:06:44 +0200 Subject: [PATCH] mpcdf_refresh_aggregates: only for active repos --- mpcdf_common.py | 15 +++++++++------ mpcdf_refresh_aggregates.py | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/mpcdf_common.py b/mpcdf_common.py index f3b5de0..8631c59 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -41,6 +41,11 @@ mpi_parallel_studio = {value["impi"]: dict({"ps": key}, **value) for key, value compiler_parallel_studio = {value["compiler"]: dict({"ps": key}, **value) for key, value in intel_parallel_studio.items()} +# For the autogenerated software/software:*:* project 'prjconf' sections +prjconf_start_marker = "# Autogenerated by osc mpcdf_setup_repos, do not edit till end of section\n" +prjconf_end_marker = "# End of autogenerated section\n" + + def valid_pgi_mpi(pgi, mpi): if "impi" not in mpi: return False @@ -409,19 +414,17 @@ def mpcdf_setup_repositories(api_url, project, microarchitecture=None, distribut root = project_meta(api_url, project) prjconf = list(map(decode_it, osc.core.show_project_conf(api_url, project))) - start_marker = "# Autogenerated by osc mpcdf_setup_repos, do not edit till end of section\n" - end_marker = "# End of autogenerated section\n" try: - start = prjconf.index(start_marker) - end = prjconf.index(end_marker) + start = prjconf.index(prjconf_start_marker) + end = prjconf.index(prjconf_end_marker) except ValueError: start = None end = len(prjconf) prjconf_head = "".join(prjconf[:start]) prjconf_tail = "".join(prjconf[end + 1:]) - prjconf = [start_marker] + prjconf = [prjconf_start_marker] prjconf.append("Constraint: hostlabel {0}".format(microarchitecture)) prjconf.append( @@ -553,7 +556,7 @@ Macros: root.getchildren()[-1].tail = "\n" prj = ElementTree.tostring(root, encoding=osc.core.ET_ENCODING) - prjconf.append(end_marker) + prjconf.append(prjconf_end_marker) prjconf = prjconf_head + "\n".join(prjconf) + prjconf_tail if dry_run: diff --git a/mpcdf_refresh_aggregates.py b/mpcdf_refresh_aggregates.py index eb7b4ee..4d77015 100644 --- a/mpcdf_refresh_aggregates.py +++ b/mpcdf_refresh_aggregates.py @@ -80,9 +80,19 @@ def do_mpcdf_refresh_aggregates(self, subcmd, opts, *args): projects = [p for p in osc.core.meta_get_project_list(apiurl) if p.startswith("software") and not (p == "software:dist" or p == "software:images")] + def active_repos(project): + lines = map(mpcdf_common.decode_it, osc.core.show_project_conf(apiurl, project)) + for line in lines: + if line == mpcdf_common.prjconf_start_marker: + break + for line in lines: + if line == mpcdf_common.prjconf_end_marker: + break + if line.startswith("%if %_repository == "): + yield line.split(" == ")[1].rstrip() + macros = {} for project in projects: - repos = osc.core.get_repositories_of_project(apiurl, project) if project == "software": # Stupid special case target = "SLE_12_SP3-sandybridge" @@ -95,7 +105,7 @@ def do_mpcdf_refresh_aggregates(self, subcmd, opts, *args): values = mpcdf_common.get_attribute_values(apiurl, project, None, attribute) macros[target].append("%available_{0} {1}".format(name, ",".join(sorted(values)))) - for repo in repos: + for repo in active_repos(project): aggregatename = "zz_aggregate_" + project.replace(":", "-") + "_" + repo refresh_aggregate(aggregatename, project, repo, target) -- GitLab