#! /usr/bin/env python

import os

def daemon_spawn(module,namespace,file,device):
    import os
    import sys
    
    try:
        pid = os.fork()
    except OSError, e:
        module.fail_json(msg="Exception {}: {}".format(e.errno,e.strerror))
    if 0 == pid:
        os.setsid()
        try:
            pid = os.fork()
        except OSError, e:
            os._exit(1)
        if 0 != pid:
            os._exit(0)
    else:
        module.exit_json(changed=True)
    
    maxfd = 2
    for fd in range(0, maxfd):
        try:
            os.close(fd)
        except OSError:
            pass
    os.open(os.devnull, os.O_RDWR)
    os.open("{}.log".format(file),os.O_RDWR|os.O_CREAT)
    os.dup2(1, 2)
    
    os.system("ip netns exec {} tcpdump -w {} -i {}".format(namespace,file,device))
    os._exit(0)

def main():
    module = AnsibleModule(argument_spec=dict(
        namespace=dict(required=True),
        file=dict(required=True),
        device=dict(required=True),
    ))
    
    changed=True
    namespace = module.params['namespace']
    file = module.params['file']
    device = module.params['device']
    daemon_spawn(module,namespace, file, device)

from ansible.module_utils.basic import *
main()
