48 lines
1.4 KiB
Django/Jinja
Executable file
48 lines
1.4 KiB
Django/Jinja
Executable file
#! /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:
|
|
sys.stderr.write("Specify pool ID by --pool or $RESALLOC_POOL_ID\n")
|
|
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):
|
|
# The only stdout output comes here!
|
|
print(name)
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(_main())
|