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()