From eccb9efdc93724a04d45609c7473062db219a718 Mon Sep 17 00:00:00 2001 From: Ana Aviles <ana@greenhost.nl> Date: Wed, 15 May 2019 06:19:02 +0000 Subject: [PATCH] Resolve "Remove stale CI droplets after a given time" --- test/cosmos.py | 19 +++++++++++++------ test/requirements.txt | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/test/cosmos.py b/test/cosmos.py index 02c785695..eabfd1510 100755 --- a/test/cosmos.py +++ b/test/cosmos.py @@ -9,7 +9,9 @@ import requests import socket from tabulate import tabulate from time import sleep - +from datetime import datetime +from datetime import timedelta +from pytz import timezone # Helper functions def request_api(resource: str, request_type: str = 'GET', @@ -265,18 +267,23 @@ def terminate_droplet(id: int): delete_droplet(id) -def terminate_droplets_by_name(name_regex: str): +def terminate_droplets_by_name(name_regex: str, ndays: int = 0, domain: str = 'openappstack.net'): r""" - Terminate droplets matching a regex in their names. + Terminate droplets matching a regex and for x days older than current day. Example how to terminate all CI instances: - terminate_droplets_by_name(name_regex='^ci\d+') - will match i.e. 'ci1234', 'ci1', etc + terminate_old_droplets(name_regex='^ci\d+', ndays=5) + will match i.e 'ci1234' , 'ci1', with a creation time older than 5 days """ + + threshold_time = (datetime.now(tz=timezone('Europe/Stockholm')) - timedelta(days=ndays)).strftime("%Y-%m-%dT%H:%M:%S+00:00") all = get_droplets() for droplet in all: if re.match(name_regex, droplet['name']): - terminate_droplet(droplet['id']) + if droplet['created_at'] < threshold_time: + delete_domain_records_by_name(domain, '^\*.'+droplet['name']) + delete_domain_records_by_name(domain, '^'+droplet['name']) + terminate_droplet(droplet['id']) def wait_for_ssh(ip: str): diff --git a/test/requirements.txt b/test/requirements.txt index e3927fc39..ad875e9dd 100644 --- a/test/requirements.txt +++ b/test/requirements.txt @@ -12,3 +12,4 @@ tabulate>=0.8.3 testinfra>=2.0.0 setuptools>=40.6.2 wheel>=0.33.1 +pytz>=2019.1 -- GitLab