Browse Source

update group status check

supeng 4 months ago
parent
commit
d63eaa2ffd
1 changed files with 30 additions and 30 deletions
  1. 30 30
      longvideoapi/utils.py

+ 30 - 30
longvideoapi/utils.py

@@ -446,36 +446,6 @@ def list_server_group_servers(alb_client, server_group_id):
         return []
 
 
-def list_server_groups(alb_client, server_group_id):
-    list_server_groups_request = alb_20200616_models.ListServerGroupsRequest(
-        server_group_ids=[server_group_id],
-        max_results=100
-    )
-    runtime = util_models.RuntimeOptions()
-    try:
-        retries = 3
-        while retries > 0:
-            response = alb_client.list_server_groups_with_options(list_server_groups_request, runtime)
-            server_groups = response.ServerGroups
-            for server_group in server_groups:
-                server_group_status = server_group.get("ServerGroupStatus")
-                if server_group_status == "Available":
-                    logging.info(f"Server group {server_group_id} is available.")
-                    return server_group_status
-                else:
-                    logging.warning(
-                        f"Server group {server_group_id} is not available. Current status: {server_group_status}.")
-                    logging.info("Sleeping for 3 seconds...")
-                    time.sleep(3)
-                    retries -= 1
-                    if retries == 0:
-                        logging.error(f"Server group {server_group_id} is not available after 3 attempts. Exiting.")
-                        sys.exit()
-    except Exception as e:
-        logging.error(e)
-        sys.exit()
-
-
 def update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port):
     """
     更指定服务器在服务器组中的权重
@@ -526,4 +496,34 @@ def update_server_group_servers_attribute(alb_client, server_group_id_list, inst
     for weight, sleep_time in weight_list:
         update_server_group_server_weight(alb_client, server_group_id_list, instance_id_list, weight, port)
         time.sleep(sleep_time)
+        check_server_group_status(alb_client, server_group_id_list)
+
 
+def check_server_group_status(alb_client, server_group_id_list):
+    list_server_groups_request = alb_20200616_models.ListServerGroupsRequest(
+        server_group_ids=server_group_id_list,
+        max_results=100
+    )
+    flag = False
+    runtime = util_models.RuntimeOptions()
+    for i in range(10):
+        try:
+            response = alb_client.list_server_groups_with_options(list_server_groups_request, runtime)
+            count = 0
+            if response.body:
+                map = UtilClient.to_map(response.body)
+                logging.info(f"response.body.servers {map}.")
+                server_groups = map.get("ServerGroups")
+                if server_groups:
+                    for server_group in server_groups:
+                        if server_group.get("ServerGroupStatus") == "Available":
+                            logging.info(f"Server group {server_group} is available.")
+                            count +=1
+            if count == len(server_group_id_list):
+                flag = True
+                break
+            time.sleep(2)
+        except Exception as e:
+            logging.error(e)
+    if not flag:
+        sys.exit()