import json import requests import subprocess stagingUrl = "https://us-west-2.staging.shared.aws.tidbcloud.com" nightlyUrl = "https://us-west-2.nightly.shared.aws.tidbcloud.com" def fetch_dev_infra_backups_json(): cmd = "KUBECONFIG=dev-infra-apiserver /usr/local/bin/kubectl get backup -A -o json" inputDomain = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) jsonS = json.dumps(inputDomain.communicate()[0].decode('utf-8')) return json.loads(jsonS) def fetch_staging_infra_backups_json(): cmd = "KUBECONFIG=staging-infra-apiserver /usr/local/bin/kubectl get backup -A -o json" inputDomain = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) jsonS = json.dumps(inputDomain.communicate()[0].decode('utf-8')) return json.loads(jsonS) def fetch_backups( dev ): backupResult = {} rawData = None if dev == 'nightly': rawData = fetch_dev_infra_backups_json() else: rawData = fetch_staging_infra_backups_json() backups = json.loads(rawData) for backup in backups['items']: name = backup['metadata']['name'] nameSeps = name.split('-') backupId = nameSeps[ len(nameSeps) - 1 ] namespace = backup['metadata']['namespace'] namespaceSeps = namespace.split('-') projectId = namespaceSeps[ len(namespaceSeps) - 1 ] if projectId == '1': continue clusterId = backup['spec']['clusterName'] if dev in namespace: if projectId not in backupResult: backupResult[projectId] = {} if clusterId not in backupResult[projectId]: backupResult[projectId][clusterId] = [] backupResult[projectId][clusterId].append( backupId ) return backupResult def delete_backups(tokens, env, tenantId, projectid, clusterid, backupid): baseUrl = "" if env == 'nightly': baseUrl = nightlyUrl if env == 'staging': baseUrl = stagingUrl header = {'Authorization': tokens} print("delete backups " + baseUrl + "/api/v1/orgs/{}/projects/{}/clusters/{}/backups/{}".format( tenantId, projectid, clusterid, backupid )) r = requests.delete( baseUrl + "/api/v1/orgs/{}/projects/{}/clusters/{}/backups/{}". format( tenantId, projectid, clusterid, backupid ), headers = header ) print( r.text ) if "__main__" == __name__: # nightlyBackupResult, stagingBackupResult = fetch_backups() # print(nightlyBackupResult) # print(stagingBackupResult) token = 'Bearer CLOUD59_zyocQDvHwrWrqwobTVB7GEknG6bS3yCiU2GTBzTU9m3e1U_AOFMcArqekre467iS0TcIsl41QeVXHcZ9qzQ==' delete_backups(token, 'staging', '1369847559690647294', "1369847559691367403", "1373933076657974066", '722024')