transformers
52 строки · 1.5 Кб
1import argparse
2import json
3import subprocess
4
5
6def get_runner_status(target_runners, token):
7offline_runners = []
8
9cmd = (
10f'curl -H "Accept: application/vnd.github+json" -H "Authorization: Bearer {token}"'
11" https://api.github.com/repos/huggingface/transformers/actions/runners"
12)
13output = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE)
14o = output.stdout.decode("utf-8")
15status = json.loads(o)
16
17runners = status["runners"]
18for runner in runners:
19if runner["name"] in target_runners:
20if runner["status"] == "offline":
21offline_runners.append(runner)
22
23# save the result so we can report them on Slack
24with open("offline_runners.txt", "w") as fp:
25fp.write(json.dumps(offline_runners))
26
27if len(offline_runners) > 0:
28failed = "\n".join([x["name"] for x in offline_runners])
29raise ValueError(f"The following runners are offline:\n{failed}")
30
31
32if __name__ == "__main__":
33
34def list_str(values):
35return values.split(",")
36
37parser = argparse.ArgumentParser()
38# Required parameters
39parser.add_argument(
40"--target_runners",
41default=None,
42type=list_str,
43required=True,
44help="Comma-separated list of runners to check status.",
45)
46
47parser.add_argument(
48"--token", default=None, type=str, required=True, help="A token that has actions:read permission."
49)
50args = parser.parse_args()
51
52get_runner_status(args.target_runners, args.token)
53