#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import json import requests import base64 import pymysql import time from jira import JIRA def get_token(baseurl, email, auth0ClientSecret, auth0ClientId, auth0Domain): url = '%s/api/v1/test-token' % (baseurl) body = {"auth0_client_secret": auth0ClientSecret, "auth0_client_id": auth0ClientId, "auth0_domain": auth0Domain, "email": email} try: resp = requests.post(url, data=json.dumps(body)) print("response:", resp) except: print('get_token report failed') token = json.loads(resp.text).get('token') return token def get_project(baseurl, tanantId, token): url = '%s/api/v1/orgs/%s/projects' % (baseurl, tanantId) header = {"authorization": "Bearer " + token} param = {"page": 1, "per_page": 1000} project_list = [] try: resp = requests.get(url, headers=header, params=param) print("response:", resp) except: print('get_project report failed') projects = json.loads(resp.text).get('items') for project in projects: if "keep" not in project["name"]: project_list.append(project["id"]) return project_list def get_recycle_bin(baseurl, tanantId, projectId, token): url = '%s/api/v1/orgs/%s/projects/%s/recycle-bin' % (baseurl, tanantId, projectId) header = {"authorization": "Bearer " + token} param = {"page": 1, "per_page": 1000} recycle_list = [] try: resp = requests.get(url, headers=header, params=param) print("response:", resp) except: print('get_recycle_bin report failed') recycle_bin_list = json.loads(resp.text).get('items') for recycle_bin in recycle_bin_list: recycle_list.append(recycle_bin["id"]) return recycle_list def delete_recycle_bin(baseurl, token, tanantId, projectId): recycle_bin_list = get_recycle_bin(baseurl, tanantId, projectId, token) for recycle_id in recycle_bin_list: url = '%s/api/v1/orgs/%s/projects/%s/recycle-bin/%s/backups' % (baseurl, tanantId, projectId, recycle_id) header = {"authorization": "Bearer " + token} try: resp = requests.delete(url, headers=header) print("response:", resp) except: print('delete_recycle_bin report failed') def delete_project(baseurl, token, tanantId, projectId): url = '%s/api/v1/orgs/%s/projects/%s' % (baseurl, tanantId, projectId) header = {"authorization": "Bearer " + token} try: resp = requests.delete(url, headers=header) print("response:", resp) except: print('delete_project report failed') if __name__ == '__main__': base_url = "https://us-west-2.staging.shared.aws.tidbcloud.com" auth0ClientSecret = "7Mscj-t2WywzEW0MfkZxhOjbuSH9Idv4KiHOMacnCiN3AuiYYOeYX4Sh3ysEcLIY" auth0ClientId = "cDDAEOmwqb53IL1tgoSf4JaB4chVTviY" auth0Domain = "tidb-staging.us.auth0.com" #email = "zhangyueyuan@pingcap.com" #tenantId = "1369847559690857266" email = "dbaas_test8@163.com" tenantId = "1369847559690647294" token = get_token(base_url, email, auth0ClientSecret, auth0ClientId, auth0Domain) projectList = get_project(base_url, tenantId, token) for projectId in projectList: delete_recycle_bin(base_url, token, tenantId, projectId) time.sleep(60) delete_project(base_url, token, tenantId, projectId)