in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_slb_server.py [0:0]
def add_set_backend_servers(module, slb, load_balancer_id, backend_servers):
"""
Add and/or Set backend servers to an slb
:param module: Ansible module object
:param slb: authenticated slb connection object
:param load_balancer_id: load balancer id to add/set backend servers to
:param backend_servers: backend severs information to add/set
:return: returns changed state, current added backend servers and custom message.
"""
changed = False
server_id_param = 'server_id'
backend_servers_to_set = []
backend_servers_to_add = []
result = []
current_backend_servers = []
changed_after_add = False
changed_after_set = False
try:
load_balancer_info = slb.describe_load_balancer_attribute(load_balancer_id=load_balancer_id)
# Verifying if server load balancer Object is present
if load_balancer_info:
existing_backend_servers = str(load_balancer_info.backend_servers['backend_server'])
# Segregating existing backend servers from new backend servers from the provided backend servers
for backend_server in backend_servers:
backend_server_string = backend_server[server_id_param] + '\''
if backend_server_string in existing_backend_servers:
backend_servers_to_set.append(backend_server)
else:
backend_servers_to_add.append(backend_server)
# Adding new backend servers if provided
if len(backend_servers_to_add) > 0:
current_backend_servers.extend(slb.add_backend_servers(load_balancer_id=load_balancer_id, backend_servers=backend_servers_to_add))
changed = True
# Setting exisiting backend servers if provided
if len(backend_servers_to_set) > 0:
backen_servers = slb.set_backend_servers(load_balancer_id=load_balancer_id, backend_servers=backend_servers_to_set)
changed = True
# If backend server result after set action is available then clearing actual list
# and adding new result to it.
if len(backen_servers) > 0:
# Below operation clears list using slice operation
current_backend_servers[:] = []
current_backend_servers.extend(backen_servers)
if changed_after_add or changed_after_set:
changed = True
else:
module.fail_json(msg="Could not find provided load balancer instance")
except SLBResponseError as ex:
module.fail_json(msg='Unable to add backend servers, error: {0}'.format(ex))
return changed, current_backend_servers