diff --git a/mpcdf_common.py b/mpcdf_common.py index 62b79ed06a115414775be02afc5d586db021f735..60d07b2d2ee32cd1e6984316ce8074ed43c2e459 100644 --- a/mpcdf_common.py +++ b/mpcdf_common.py @@ -924,6 +924,10 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No to_projects = [p for p in osc.core.meta_get_project_list(api_url) if p.startswith("software:") and not (p == "software:dist" or p == "software:images")] + allowed_attribute_values = {} + for attribute in package_attributes + config_attributes: + allowed_attribute_values[attribute] = set(get_allowed_attribute_values(api_url, attribute)) + for to_project in to_projects: print("Syncing {0} with {1}".format(to_project, from_project)) @@ -955,12 +959,13 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No for attribute in package_attributes + config_attributes: try: - attr = get_attribute(api_url, from_project, orig_package, attribute) + values = list(filter(lambda q: q in allowed_attribute_values[attribute], + get_attribute_values(api_url, from_project, orig_package, attribute))) except UnsetAttributeException: if has_attribute(api_url, to_project, orig_package, attribute): remove_attribute(api_url, to_project, orig_package, attribute) continue - set_attribute(api_url, to_project, orig_package, attr) + set_attribute_values(api_url, to_project, orig_package, attribute, values) if add_to_maintainers: from_maintainers = maintainers(api_url, from_project, orig_package)