github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/tests/openapi/client/openapi_cluster_check (about) 1 #!/usr/bin/env python 2 import sys 3 import time 4 import requests 5 6 7 API_ENDPOINT = "http://127.0.0.1:8261/api/v1/cluster" 8 9 10 def list_master_success(master_count): 11 url = API_ENDPOINT + "/masters" 12 resp = requests.get(url=url) 13 assert resp.status_code == 200 14 data = resp.json() 15 print("list_master_success resp=", data) 16 assert data["total"] == int(master_count) 17 18 19 def delete_master_with_retry_success(master_name): 20 """ 21 offline dm-master node is done by offline etcd member but operate etcd cluster may met `etcdserver: unhealthy cluster` 22 so add some retry here 23 """ 24 url = API_ENDPOINT + "/masters/" + master_name 25 for i in range(0, 30): 26 resp = requests.delete(url=url) 27 if resp.status_code != 204: 28 print("delete_master_failed resp=", resp.json(), "retry cnt=", i) 29 time.sleep(1) 30 else: 31 assert resp.status_code == 204 32 print("delete_master_with_retry_success") 33 return 34 raise Exception("delete_master_with_retry_success failed") 35 36 37 def list_worker_success(worker_count): 38 url = API_ENDPOINT + "/workers" 39 resp = requests.get(url=url) 40 assert resp.status_code == 200 41 data = resp.json() 42 print("list_worker_success resp=", data) 43 assert data["total"] == int(worker_count) 44 45 46 def delete_worker_failed(worker_name): 47 url = API_ENDPOINT + "/workers/" + worker_name 48 resp = requests.delete(url=url) 49 assert resp.status_code == 400 50 print("delete_worker_failed resp=", resp.json()) 51 52 53 def delete_worker_with_retry_success(worker_name): 54 """ 55 offline dm-worker node is done by offline etcd member but operate etcd cluster may met `etcdserver: unhealthy cluster` 56 so add some retry here 57 """ 58 url = API_ENDPOINT + "/workers/" + worker_name 59 for i in range(0, 30): 60 resp = requests.delete(url=url) 61 if resp.status_code != 204: 62 print("delete_worker_failed resp=", resp.json(), "retry cnt=", i) 63 time.sleep(1) 64 else: 65 assert resp.status_code == 204 66 print("delete_worker_with_retry_success") 67 return 68 raise Exception("delete_master_with_retry_success failed") 69 70 71 if __name__ == "__main__": 72 FUNC_MAP = { 73 "list_master_success": list_master_success, 74 "delete_master_with_retry_success": delete_master_with_retry_success, 75 "list_worker_success": list_worker_success, 76 "delete_worker_failed": delete_worker_failed, 77 "delete_worker_with_retry_success": delete_worker_with_retry_success, 78 } 79 80 func = FUNC_MAP[sys.argv[1]] 81 if len(sys.argv) >= 2: 82 func(*sys.argv[2:]) 83 else: 84 func()