diff --git a/test/cosmos.py b/test/cosmos.py index a4449e60c8a6a573adb3d27925d428c75f95eb2b..02c7856951850a381bcf56c3da7efc046cee7d07 100755 --- a/test/cosmos.py +++ b/test/cosmos.py @@ -7,7 +7,6 @@ import os import re import requests import socket -import sys from tabulate import tabulate from time import sleep @@ -118,6 +117,26 @@ def create_droplet(name: str, ssh_key_id: int, region: str = 'ams1', return response +def delete_domain_record(domain: str, id: int): + """Delete a domain record.""" + log.info('Deleting domain record %s', id) + response = request_api('domains/{0}/records/{1}'.format(domain, id), + 'DELETE') + return response + + +def delete_domain_records_by_name(domain: str, name_regex: str): + """Delete all domain records in a given domain matching a regex. + + Examples: + delete_domain_records_by_name('openappstack.net', '^\*.ci-') + delete_domain_records_by_name('openappstack.net', '^ci-') + """ + all = get_domain_records_by_name(domain, name_regex) + for record in all: + delete_domain_record(domain, record['id']) + + def delete_droplet(id: int): """Delete a droplet. Droplet needs to be stopped first.""" log.info('Deleting %s', id) @@ -131,6 +150,12 @@ def get_domain_record(domain: str, id: int): return response['domain_record'] +def get_domain_records(domain: str): + """Get domain records for given domain.""" + response = request_api('domains/{0}/records'.format(domain)) + return response['domain_records'] + + def get_domain_record_by_name(domain: str, name: str, record_type: str = 'A'): """ @@ -151,10 +176,17 @@ def get_domain_record_by_name(domain: str, name: str, return matching -def get_domain_records(domain: str): - """Get domain records for given domain.""" - response = request_api('domains/{0}/records'.format(domain)) - return response['domain_records'] +def get_domain_records_by_name(domain: str, name_regex: str): + r""" + Get all information about domain records matching a regex in their names. + + Example: + get_domain_records_by_name(name_regex='^ci\d+') + """ + all_records = get_domain_records(domain) + matching = [record for record in all_records + if re.match(name_regex, record['name'])] + return matching def get_droplets():