Преглед на файлове

update add_backend_servers & remove_backend_servers

liqian преди 2 години
родител
ревизия
e52bc2c168
променени са 1 файла, в които са добавени 32 реда и са изтрити 20 реда
  1. 32 20
      utils.py

+ 32 - 20
utils.py

@@ -347,15 +347,19 @@ def add_backend_servers(client, slb_id, instances):
     :return:
     """
     try:
-        request = AddBackendServersRequest()
-        request.set_accept_format('json')
-        request.set_LoadBalancerId(slb_id)
-        backend_servers = [
-            {"ServerId": instance_id, "Weight": "0", "Type": "ecs", "ServerIp": ip_address}
-            for instance_id, ip_address in instances]
-        request.set_BackendServers(backend_servers)
-        response = client.do_action_with_exception(request)
-        return response
+        for i in range(len(instances) // 20 + 1):
+            instances_list = instances[i * 20:(i + 1) * 20]
+            if len(instances_list) == 0:
+                return
+            request = AddBackendServersRequest()
+            request.set_accept_format('json')
+            request.set_LoadBalancerId(slb_id)
+            backend_servers = [
+                {"ServerId": instance_id, "Weight": "0", "Type": "ecs", "ServerIp": ip_address}
+                for instance_id, ip_address in instances_list]
+            request.set_BackendServers(backend_servers)
+            response = client.do_action_with_exception(request)
+            return response
     except Exception as e:
         logging.error(e)
         sys.exit()
@@ -366,18 +370,26 @@ def remove_backend_servers(client, slb_id, instances):
     服务器从负载均衡移除(一次调用最多可以移除20个后端服务器)
     :param client:
     :param slb_id:
-    :param instances: 实例列表 [(instance_id, ip), ...]
+    :param instances: 实例列表 [instance_id, ...]
     :return:
     """
-    request = RemoveBackendServersRequest()
-    request.set_accept_format('json')
-    request.set_LoadBalancerId(slb_id)
-    backend_servers = [
-        {"ServerId": instance_id, "Weight": "0", "Type": "ecs"}
-        for instance_id in instances]
-    request.set_BackendServers(backend_servers)
-    response = client.do_action_with_exception(request)
-    return response
+    try:
+        for i in range(len(instances) // 20 + 1):
+            instances_list = instances[i * 20:(i + 1) * 20]
+            if len(instances_list) == 0:
+                return
+            request = RemoveBackendServersRequest()
+            request.set_accept_format('json')
+            request.set_LoadBalancerId(slb_id)
+            backend_servers = [
+                {"ServerId": instance_id, "Weight": "0", "Type": "ecs"}
+                for instance_id in instances_list]
+            request.set_BackendServers(backend_servers)
+            response = client.do_action_with_exception(request)
+            return response
+    except Exception as e:
+        logging.error(e)
+        sys.exit()
 
 
 def set_instance_weight_process_with_slbs(client, slb_id_list, instance_id_list, weight_list):
@@ -439,7 +451,7 @@ def remove_backend_servers_with_slbs(client, slb_id_list, instances):
     服务器从负载均衡移除(一次调用最多可以移除20个后端服务器)
     :param client:
     :param slb_id_list:
-    :param instances: 实例列表 [(instance_id, ip), ...]
+    :param instances: 实例列表 [instance_id, ...]
     :return:
     """
     try: