# Buggy code
def run(module, result):
    match = module.params["match"]
    replace = module.params["replace"]
    replace_config = replace == "config"
    path = module.params["parents"]
    comment = module.params["comment"]
    admin = module.params["admin"]
    check_mode = module.check_mode
    label = module.params["label"]

    candidate_config = get_candidate(module)
    running_config = get_running_config(module)

    commands = None
    if match != "none" and replace != "config":
        commands = candidate_config.difference(
            running_config, path=path, match=match, replace=replace
        )
    elif replace_config:
        can_config = candidate_config.difference(
            running_config, path=path, match=match, replace=replace
        )
        candidate = dumps(can_config, "commands").split("\n")
        run_config = running_config.difference(
            candidate_config, path=path, match=match, replace=replace
        )
        running = dumps(run_config, "commands").split("\n")

        if len(candidate) > 1 or len(running) > 1:
            ret = copy_file_to_node(module)
            if not ret:
                module.fail_json(msg="Copy of config file to the node failed")

            commands = ["load harddisk:/ansible_config.txt"]
    else:
        commands = candidate_config.items

    if commands:
        if not replace_config:
            commands = dumps(commands, "commands").split("\n")

        if any((module.params["lines"], module.params["src"])):
            if module.params["before"]:
                commands[:0] = module.params["before"]

            if module.params["after"]:
                commands.extend(module.params["after"])

            result["commands"] = commands

        commit = not check_mode
        diff = load_config(
            module,
            commands,
            commit=commit,
            replace=replace_config,
            comment=comment,
            admin=admin,
            label=label,
        )
        if diff:
            result["diff"] = dict(prepared=diff)

        result["changed"] = True


# Traceback (TypeError)
TASK [azure_load_balancer : Get lbs] *********************************************************************************************
task path: /home/vmadmin/cluster_build/roles/azure_load_balancer/tasks/main.yaml:15
Using module file /home/vmadmin/.local/lib/python2.7/site-packages/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: vmadmin
<localhost> EXEC /bin/sh -c 'echo ~ &amp;&amp; sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 &amp;&amp; mkdir -p "` echo /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814 `" &amp;&amp; echo ansible-tmp-1504708358.3-41710485333814="` echo /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814 `" ) &amp;&amp; sleep 0'
<localhost> PUT /tmp/tmpy_CiqC TO /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814/azure_rm_loadbalancer_facts.py
<localhost> EXEC /bin/sh -c 'chmod u+x /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814/ /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814/azure_rm_loadbalancer_facts.py &amp;&amp; sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python /home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814/azure_rm_loadbalancer_facts.py; rm -rf "/home/vmadmin/.ansible/tmp/ansible-tmp-1504708358.3-41710485333814/" > /dev/null 2>&amp;1 &amp;&amp; sleep 0'
The full traceback is:
Traceback (most recent call last):
File "/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py", line 180, in <module>
main()
File "/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py", line 177, in main
AzureRMLoadBalancerFacts()
File "/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py", line 123, in __init__
facts_module=True
File "/tmp/ansible_VTaHxN/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py", line 255, in __init__
File "/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py", line 133, in exec_module
else self.list_items()
File "/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py", line 162, in list_items
response = self.network_client.load_balancers.list()
TypeError: list() takes at least 2 arguments (1 given)

fatal: [localhost]: FAILED! => {
"changed": false,
"failed": true,
"module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py\", line 180, in <module>\n    main()\n  File \"/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py\", line 177, in main\n    AzureRMLoadBalancerFacts()\n  File \"/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py\", line 123, in __init__\n    facts_module=True\n  File \"/tmp/ansible_VTaHxN/ansible_modlib.zip/ansible/module_utils/azure_rm_common.py\", line 255, in __init__\n  File \"/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py\", line 133, in exec_module\n    else self.list_items()\n  File \"/tmp/ansible_VTaHxN/ansible_module_azure_rm_loadbalancer_facts.py\", line 162, in list_items\n    response = self.network_client.load_balancers.list()\nTypeError: list() takes at least 2 arguments (1 given)\n",
"module_stdout": "",
"msg": "MODULE FAILURE",
"rc": 0
}

# Fixed code
def run(module, result):
    match = module.params["match"]
    replace = module.params["replace"]
    replace_config = replace == "config"
    path = module.params["parents"]
    comment = module.params["comment"]
    admin = module.params["admin"]
    check_mode = module.check_mode
    label = module.params["label"]

    candidate_config = get_candidate(module)
    running_config = get_running_config(module)

    commands = None
    replace_file_path = None

    if match != "none" and replace != "config":
        commands = candidate_config.difference(
            running_config, path=path, match=match, replace=replace
        )
    elif replace_config:
        can_config = candidate_config.difference(
            running_config, path=path, match=match, replace=replace
        )
        candidate = dumps(can_config, "commands").split("\n")
        run_config = running_config.difference(
            candidate_config, path=path, match=match, replace=replace
        )
        running = dumps(run_config, "commands").split("\n")

        if len(candidate) > 1 or len(running) > 1:
            ret = copy_file_to_node(module)
            if not ret:
                module.fail_json(msg="Copy of config file to the node failed")

            commands = ["load harddisk:/ansible_config.txt"]
            replace_file_path = "harddisk:/ansible_config.txt"
    else:
        commands = candidate_config.items

    if commands:
        if not replace_config:
            commands = dumps(commands, "commands").split("\n")

        if any((module.params["lines"], module.params["src"])):
            if module.params["before"]:
                commands[:0] = module.params["before"]

            if module.params["after"]:
                commands.extend(module.params["after"])

            result["commands"] = commands

        commit = not check_mode
        diff = load_config(
            module,
            commands,
            commit=commit,
            replace=replace_file_path,
            comment=comment,
            admin=admin,
            label=label,
        )
        if diff:
            result["diff"] = dict(prepared=diff)

        result["changed"] = True