def main()

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