in mozperftest_tools/mozperftest_tools/lull_scheduler.py [0:0]
def fetch_all_data(self):
"""Performs all the requests required to get all data for decisions.
:return tuple: A tuple containing the following (in order):
1. Average time a task takes to run.
2. Average time it takes for a task to run on a platform.
3. Number of tasks currently scheduled per platform.
4. Number of machines that are currently available to use.
5. Last time a given task was run (days elapsed since).
"""
# Get information for requests
provision_ids = list(
set([d["provisionerId"] for k, d in self.platform_to_worker_type.items()])
)
# Make the requests, and reformat the data into dicts
avg_task_time_data = {}
avg_task_time = fetch_data(AVG_TASK_TIME_URL)["query_result"]["data"]["rows"]
for task_time in avg_task_time:
avg_task_time_data[task_time["name"]] = task_time
avg_platform_time_data = {}
avg_platform_time = fetch_data(AVG_PLATFORM_TIME_URL)["query_result"]["data"][
"rows"
]
for platform_time in avg_platform_time:
avg_platform_time_data[platform_time["platform"]] = platform_time
last_task_run_dates_data = {}
last_task_run_dates = fetch_data(LAST_TASK_RUN_DATES)["query_result"]["data"][
"rows"
]
for last_task_run_date in last_task_run_dates:
last_task_run_dates_data[last_task_run_date["name"]] = last_task_run_date
number_tasks_scheduled = {}
for provision_id in provision_ids:
NUMBER_TASKS_SCHEDULED_POST_DATA["variables"][
"provisionerId"
] = provision_id
number_tasks_scheduled[provision_id] = fetch_post_data(
NUMBER_TASKS_SCHEDULED_URL, NUMBER_TASKS_SCHEDULED_POST_DATA
)["data"]["workerTypes"]["edges"]
number_machines_available = {}
for platform, info in self.platform_to_worker_type.items():
NUMBER_MACHINES_AVAILABLE_POST_DATA["variables"]["provisionerId"] = info[
"provisionerId"
]
NUMBER_MACHINES_AVAILABLE_POST_DATA["variables"]["workerType"] = info[
"workerType"
]
number_machines_available[platform] = fetch_post_data(
NUMBER_MACHINES_AVAILABLE_URL, NUMBER_MACHINES_AVAILABLE_POST_DATA
)["data"]["workers"]["edges"]
return (
avg_task_time_data,
avg_platform_time_data,
number_tasks_scheduled,
number_machines_available,
last_task_run_dates_data,
)