def main()

in ansible/library/azure_host_role_map.py [0:0]


def main():

    fields = {
        "hosts": {"required": True, "type": "list"},
        "vars_list": {"required": True, "type": "dict"},
        "cluster_name": {"required": True, "type": "str"},
    }

    module = AnsibleModule(argument_spec=fields)
    vars_list = module.params["vars_list"]
    hosts = module.params["hosts"]
    cluster_name = module.params["cluster_name"]
    mp = {x["name_suffix"]: x["roles"] for x in vars_list["vars_list"]}
    ns_mp = {
        cluster_name + "-" + x["name_suffix"]: x.get("nameservice_id", "")
        for x in vars_list["vars_list"]
    }

    hd = defaultdict(list)
    for host in hosts:
        hd[host["key"]].append(host["value"])

    label_tuples = {
        cluster_name + "-" + k: (hd[cluster_name + "-" + k], v)
        for k, v in mp.items()
    }

    hdfs_ns_tuples = {h: ns_mp[k] for k, v in hd.items() for h in v}

    label_lists = [label(*v) for k, v in label_tuples.items()]
    result_string = str(stringify(label_lists, hdfs_ns_tuples))

    vmss_file = open(join(deploy_path, "conf/azure_vmss_to_hosts.conf"), "w")
    for key in hd:
        vmss_file.write("[" + key.replace("-", "_") + "]\n")
        for value in hd[key]:
            vmss_file.write(value)
            vmss_file.write("\n")
        vmss_file.write("\n")
    vmss_file.write("\n")
    vmss_file.close()

    module.exit_json(result=result_string)