# Buggy code
def map_config_to_obj(module):
    obj = []

    data = get_config(module, flags=["| section logging"])

    for line in data.split("\n"):
        match = re.search(r"logging (\S+)", line, re.M)

        if match:
            if match.group(1) in DEST_GROUP:
                dest = match.group(1)
                facility = None

                if dest == "server":
                    facility = parse_facility(line)

            elif match.group(1) == "level":
                match_facility = re.search(r"logging level (\S+)", line, re.M)
                facility = match_facility.group(1)
                dest = None

            else:
                dest = None
                facility = None

            obj.append(
                {
                    "dest": dest,
                    "remote_server": parse_remote_server(line, dest),
                    "name": parse_name(line, dest),
                    "facility": facility,
                    "dest_level": parse_dest_level(line, dest, parse_name(line, dest)),
                    "facility_level": parse_facility_level(line, facility),
                }
            )

    cmd = [
        {
            "command": "show logging | section enabled | section console",
            "output": "text",
        },
        {
            "command": "show logging | section enabled | section monitor",
            "output": "text",
        },
    ]

    default_data = run_commands(module, cmd)

    for line in default_data:
        flag = False
        match = re.search(
            r"Logging (\w+):(?:\s+) (?:\w+) (?:\W)Severity: (\w+)", str(line), re.M
        )
        if match:
            if match.group(1) == "console" and match.group(2) == "critical":
                dest_level = "2"
                flag = True
            elif match.group(1) == "monitor" and match.group(2) == "notifications":
                dest_level = "5"
                flag = True
        if flag:
            obj.append(
                {
                    "dest": match.group(1),
                    "remote_server": None,
                    "name": None,
                    "facility": None,
                    "dest_level": dest_level,
                    "facility_level": None,
                }
            )

    return obj


# 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 map_config_to_obj(module):
    obj = []

    data = get_config(module, flags=["| section logging"])

    for line in data.split("\n"):
        match = re.search(r"logging (\S+)", line, re.M)

        if match:
            if match.group(1) in DEST_GROUP:
                dest = match.group(1)
                facility = None

                if dest == "server":
                    facility = parse_facility(line)

            elif match.group(1) == "level":
                match_facility = re.search(r"logging level (\S+)", line, re.M)
                facility = match_facility.group(1)
                dest = None

            else:
                dest = None
                facility = None

            obj.append(
                {
                    "dest": dest,
                    "remote_server": parse_remote_server(line, dest),
                    "use_vrf": parse_use_vrf(line, dest),
                    "name": parse_name(line, dest),
                    "facility": facility,
                    "dest_level": parse_dest_level(line, dest, parse_name(line, dest)),
                    "facility_level": parse_facility_level(line, facility, dest),
                    "interface_type": parse_interface_type(line),
                    "interface": parse_interface(line),
                }
            )

    cmd = [
        {
            "command": "show logging | section enabled | section console",
            "output": "text",
        },
        {
            "command": "show logging | section enabled | section monitor",
            "output": "text",
        },
    ]

    default_data = run_commands(module, cmd)

    for line in default_data:
        flag = False
        match = re.search(
            r"Logging (\w+):(?:\s+) (?:\w+) (?:\W)Severity: (\w+)", str(line), re.M
        )
        if match:
            if match.group(1) == "console" and match.group(2) == "critical":
                dest_level = "2"
                flag = True
            elif match.group(1) == "monitor" and match.group(2) == "notifications":
                dest_level = "5"
                flag = True
        if flag:
            obj.append(
                {
                    "dest": match.group(1),
                    "remote_server": None,
                    "name": None,
                    "facility": None,
                    "dest_level": dest_level,
                    "facility_level": None,
                    "use_vrf": None,
                    "interface_type": None,
                    "interface": None,
                }
            )

    return obj