Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
netem 1.19 KiB
#! /usr/bin/env python

import json
import subprocess

def main():
    module = AnsibleModule(argument_spec=dict(
        state=dict(required=True),
        name=dict(required=True,type='str'),
        device=dict(required=True,type='str'),
    ))

    j = json.loads(module.params['state'])
    name = module.params['name']
    device = module.params['device']
    changed = False
    args = ["/sbin/ip",
            "netns", "exec", name,
            "tc", "qdisc", "change", "dev", device, "root",
            "netem"]
    if 'delay' in j:
        args.append("delay")
        args.append(j['delay'])
        changed = True
    if 'rate' in j:
        args.append("rate")
        args.append(j['rate'])
        changed = True
    if 'loss' in j:
        args.append("loss")
        args.append(j['loss'])
        changed = True
    if changed:
        cmd = reduce( lambda x,y: "%s %s" % (x,y), args )
        sargs = map( lambda x: str(x), args )
        try:
            subprocess.check_output(sargs,stderr=subprocess.STDOUT)
        except subprocess.CalledProcessError as e:
            module.fail_json(msg=e.output)
    module.exit_json(changed=changed,cmd=cmd)

from ansible.module_utils.basic import *
main()