| | import argparse |
| | import json |
| | import subprocess |
| |
|
| |
|
| | def get_runner_status(target_runners, token): |
| | offline_runners = [] |
| |
|
| | cmd = ( |
| | f'curl -H "Accept: application/vnd.github+json" -H "Authorization: Bearer {token}"' |
| | " https://api.github.com/repos/huggingface/transformers/actions/runners" |
| | ) |
| | output = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE) |
| | o = output.stdout.decode("utf-8") |
| | status = json.loads(o) |
| |
|
| | runners = status["runners"] |
| | for runner in runners: |
| | if runner["name"] in target_runners: |
| | if runner["status"] == "offline": |
| | offline_runners.append(runner) |
| |
|
| | |
| | with open("offline_runners.txt", "w") as fp: |
| | fp.write(json.dumps(offline_runners)) |
| |
|
| | if len(offline_runners) > 0: |
| | failed = "\n".join([x["name"] for x in offline_runners]) |
| | raise ValueError(f"The following runners are offline:\n{failed}") |
| |
|
| |
|
| | if __name__ == "__main__": |
| |
|
| | def list_str(values): |
| | return values.split(",") |
| |
|
| | parser = argparse.ArgumentParser() |
| | |
| | parser.add_argument( |
| | "--target_runners", |
| | default=None, |
| | type=list_str, |
| | required=True, |
| | help="Comma-separated list of runners to check status.", |
| | ) |
| |
|
| | parser.add_argument( |
| | "--token", default=None, type=str, required=True, help="A token that has actions:read permission." |
| | ) |
| | args = parser.parse_args() |
| |
|
| | get_runner_status(args.target_runners, args.token) |
| |
|