in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_slb_server_info.py [0:0]
def main():
argument_spec = common_argument_spec()
argument_spec.update(dict(
load_balancer_id=dict(required=True, aliases=['lb_id']),
listener_ports=dict(type='list', elements='int', aliases=['ports']),
))
module = AnsibleModule(argument_spec=argument_spec)
if HAS_FOOTMARK is False:
module.fail_json(msg="Package 'footmark' required for this module.")
load_balancer_id = module.params['load_balancer_id']
ports = module.params['listener_ports']
result = []
if ports and (not isinstance(ports, list) or len(ports)) < 1:
module.fail_json(msg='backend_server_ports should be a list of backend server ports, aborting')
try:
slb = slb_connect(module)
# check whether server load balancer exist or not
laod_balancer = slb.describe_load_balancers(load_balancer_id=load_balancer_id)
if laod_balancer and len(laod_balancer) == 1:
if ports:
# list slb servers by port no.
for port in ports:
for backend_server in slb.describe_backend_servers_health_status(
load_balancer_id=load_balancer_id, port=port):
result.append(get_info(backend_server))
else:
# list all slb servers
for backend_server in slb.describe_backend_servers_health_status(load_balancer_id=load_balancer_id):
result.append(get_info(backend_server))
module.exit_json(changed=False, load_balancer_id=load_balancer_id, backend_servers=result)
else:
module.fail_json(msg="Unable to list slb backend server health status, invalid load balancer id")
except Exception as e:
module.fail_json(msg="Unable to list slb backend server health status, and got an error: {0}.".format(e))