From 42f5f82a89b2cb87f0c98dce7cd90c628d34b271 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Apr 22 2021 19:52:19 +0000 Subject: allow setting multiple schedule task names for product pages this adds a new setting, product_pages_schedule_task_names, which is the list version of product_pages_schedule_task_name. --- diff --git a/module_build_service/common/config.py b/module_build_service/common/config.py index 2ec2305..35f22b0 100644 --- a/module_build_service/common/config.py +++ b/module_build_service/common/config.py @@ -671,8 +671,15 @@ class Config(object): "product_pages_schedule_task_name": { "type": str, "default": "", - "desc": "A schedule task name. This is used to check Product schedules for cases where " - "the stream should be used before release." + "desc": "The name of the governing schedule task. The finish date from the matching" + "task is used to determine if a stream suffix should be added ahead of the GA" + "date. The comparison is case insensitive." + }, + "product_pages_schedule_task_names": { + "type": list, + "default": [], + "desc": "Like product_pages_schedule_task_name, but accepts a list. The list is" + "treated as order of preference." }, "num_threads_for_build_submissions": { "type": int, diff --git a/module_build_service/web/submit.py b/module_build_service/web/submit.py index 981b20c..86dd6e7 100644 --- a/module_build_service/web/submit.py +++ b/module_build_service/web/submit.py @@ -410,9 +410,14 @@ def _process_support_streams(db_session, mmd, params): """ Check if the specified scheduled task date has been reached. Returns True if it has. """ - if not conf.product_pages_schedule_task_name: - log.debug(config_msg, "product_pages_schedule_task_name") - return False + names = conf.product_pages_schedule_task_names + if not names: + # also allow for the older, single-valued option + if conf.product_pages_schedule_task_name: + names = [conf.product_pages_schedule_task_name] + else: + log.debug(config_msg, "product_pages_schedule_task_names") + return False schedule_url = "{}/api/v7/releases/{}/schedule-tasks/?fields=name,date_finish".format( conf.product_pages_url.rstrip("/"), pp_release) @@ -430,17 +435,18 @@ def _process_support_streams(db_session, mmd, params): ) return False - name = conf.product_pages_schedule_task_name.lower().strip() - for task in pp_json: - if task['name'].lower().strip() == name: - task_date = task['date_finish'] - if datetime.strptime(task_date, "%Y-%m-%d").date() >= datetime.utcnow().date(): - log.debug( - "The task date %s hasn't been reached yet. Not adding a stream suffix.", - task_date - ) - return False - return True + for name in names: + name = name.lower().strip() + for task in pp_json: + if task['name'].lower().strip() == name: + task_date = task['date_finish'] + if datetime.strptime(task_date, "%Y-%m-%d").date() >= datetime.utcnow().date(): + log.debug( + "The task date %s hasn't been reached yet. Not adding a stream suffix.", + task_date + ) + return False + return True # Schedule task not available; rely on GA date return False