# /// script # requires-python = ">=3.12" # dependencies = [ # "requests", # ] # /// import argparse import os import requests def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser(description="Delete region from tidbcloud global") parser.add_argument( "--env", type=str, required=True, help="environment of the logical region", choices=["dev", "staging", "prod"], ) parser.add_argument( "--logical-region-name", type=str, required=True, help="logical region name of tidb cloud region", ) parser.add_argument( "--deploy-type", type=str, required=True, help="type of the logical region", choices=["DEPLOY_TYPE_DEDICATED", "DEPLOY_TYPE_NEXTGEN"], ) parser.add_argument( "--service-plan", type=str, default="", help="plan of the region", choices=["", "Starter", "Essential", "Premium", "BYOC"], ) parser.add_argument( "--provider", type=str, required=True, help="type of cloud", choices=["aws", "gcp", "azure", "alicloud"], ) return parser.parse_args() if __name__ == "__main__": args = parse_args() url = f"https://inner-central.{args.env}.tidbcloud.com/inner/mgmt/v1/regions/{args.logical_region_name}" params = { "deploy_type": args.deploy_type, "cloud_provider_id": args.provider.upper(), } if args.service_plan: params["service_plan"] = args.service_plan response = requests.delete( url, params=params, headers={ "Authorization": f"Basic {os.environ['GLOBAL_AUTH_KEY']}", }, ) if response.status_code >= 300: raise Exception( f"delete {args.logical_region_name} failed, global response: \n{response.text}" )