diff --git a/roles/copr/backend/templates/resalloc/ibm-cloud-list.j2 b/roles/copr/backend/templates/resalloc/ibm-cloud-list.j2 new file mode 100755 index 0000000000..9debe68a1d --- /dev/null +++ b/roles/copr/backend/templates/resalloc/ibm-cloud-list.j2 @@ -0,0 +1,47 @@ +#! /usr/bin/python3 + +import argparse +import datetime +import os +import subprocess +import sys + +from ibm_vpc import VpcV1 +from ibm_cloud_sdk_core.authenticators import IAMAuthenticator + +DEFAULT_TOKEN_FILE = "{{ ibmcloud_token_file }}" +SERVICE_URL = "https://jp-tok.iaas.cloud.ibm.com/v1" + + +def _get_arg_parser(): + parser = argparse.ArgumentParser() + parser.add_argument("--token-file", default=DEFAULT_TOKEN_FILE) + parser.add_argument("--pool") + return parser + + +def _main(): + opts = _get_arg_parser().parse_args() + + pool_id = opts.pool or os.getenv("RESALLOC_POOL_ID") + if not pool_id: + print("Specify pool ID by --pool or $RESALLOC_POOL_ID") + sys.exit(1) + + cmd = f"source {opts.token_file} ; echo $IBMCLOUD_API_KEY" + output = subprocess.check_output(cmd, shell=True) + token = output.decode("utf-8").strip().rsplit("\n", maxsplit=1)[-1] + authenticator = IAMAuthenticator(token) + now = datetime.datetime.now() + service = VpcV1(now.strftime('%Y-%m-%d'), authenticator=authenticator) + service.set_service_url(SERVICE_URL) + + resp = service.list_instances() + for server in resp.result["instances"]: + # Resalloc works with underscores, which is not allowed in IBM Cloud + name = server["name"].replace("-", "_") + if name.startswith(pool_id): + print(name) + +if __name__ == "__main__": + sys.exit(_main())