def validate_backend_server_info()

in src/ansible_collections/alibaba/apsarastack/plugins/modules/ali_slb_server.py [0:0]


def validate_backend_server_info(module, backend_servers, default_weight):
    """
    Validate backend server information provided by user for add, set and remove action

    :param module: Ansible module object
    :param backend_servers: backend severs information to validate (list of dictionaries or string)
    :param default_weight: assigns default weight, if provided, for a backend server to set/add
    """
    VALID_PARAMS = ['server_id', 'server_ids', 'weight', 'type']

    for backend_server in backend_servers:

        if not isinstance(backend_server, dict):
            module.fail_json(msg='Invalid backend_servers parameter type [%s] for state=present.' % type(backend_server))

        for k in backend_server:
            if k not in VALID_PARAMS:
                module.fail_json(msg='Invalid backend_server parameter {}'.format(k))

        if "server_id" not in backend_server and "server_ids" not in backend_server:
            module.fail_json(msg="'server_id' or 'server_ids': required field is set")

        # verifying weight parameter for non numeral string and limit validation
        if "weight" in backend_server:
            try:
                w = int(backend_server['weight'])
                if w < 0 or w > 100:
                    module.fail_json(msg="'weight': field value is invalid. Expect to [0-100].")
            except Exception as e:
                module.fail_json(msg="'weight': field value is invalid. Expect to positive integer [0-100].")