diff --git a/test/ci-bootstrap.py b/test/ci-bootstrap.py index cc2559c5bc1671019c6c69fcc77d5d243a72706d..72f8e14376118716abe429c54a4b336b42d76e18 100755 --- a/test/ci-bootstrap.py +++ b/test/ci-bootstrap.py @@ -11,7 +11,6 @@ Prerequisites Env vars needed: - COSMOS_API_TOKEN -- CI_JOB_ID: Gitlab job ID In Debian: apt-get install -y --no-install-recommends ansible gcc libc6-dev @@ -22,6 +21,8 @@ import ansible_runner import argparse import cosmos import os +import random +import string import sys import traceback import yaml @@ -72,13 +73,21 @@ if __name__ == "__main__": # - 411: ci, ed25519 # - 407: varac - new_name = "ci{0}".format(os.environ['CI_JOB_ID']) + if "CI_JOB_ID" in os.environ: + instance_id = os.environ['CI_JOB_ID'] + else: + # Use random generated ID in case we're not running in gitlab CI + # and there's no CI_JOB_ID env var + instance_id = ''.join( + random.choice(string.ascii_lowercase + string.digits) + for _ in range(10)) + droplet = cosmos.create_droplet( - name=new_name, + name='ci-' + instance_id, ssh_key_id=args.ssh_key_id, region='ams1', size=2048, - disk=20, + disk=5, image=18) id = droplet['droplet']['id'] print('Created droplet id:', id) diff --git a/test/cosmos.py b/test/cosmos.py index 75114d5ffd5db17035b6bd09ba82787ab79c5780..d4ce5f3ec6b622311d1a95764eea04807b53568f 100755 --- a/test/cosmos.py +++ b/test/cosmos.py @@ -6,6 +6,7 @@ import os import re import requests import socket +import sys from tabulate import tabulate from time import sleep @@ -15,7 +16,12 @@ from time import sleep def request_api(resource: str, request_type: str = 'GET', data: str = '', verbose: bool = False): """Query the cosmos API.""" - api_token = os.environ['COSMOS_API_TOKEN'] + if 'COSMOS_API_TOKEN' in os.environ: + api_token = os.environ['COSMOS_API_TOKEN'] + else: + print('Please export the COSMOS_API_TOKEN environment variable.') + sys.exit(1) + headers = {'Content-Type': 'application/json', 'Authorization': 'Bearer {0}'.format(api_token)} api_url_base = 'https://service.greenhost.net/api/v2' @@ -66,7 +72,6 @@ def create_droplet(name: str, ssh_key_id: int, region: str = 'ams1', size: int = 2048, disk: int = 20, image: int = 7): """Create a droplet.""" print('Creating droplet') - name = "ci{0}".format(os.environ['CI_JOB_ID']) data = { "name": name,