Skip to content
Snippets Groups Projects
Commit 975fae7a authored by Michael Marsh's avatar Michael Marsh
Browse files

updating network emulation

parent 08efa405
No related branches found
No related tags found
No related merge requests found
#! /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()
netem.py 0 → 100755
#! /usr/bin/env python
import json
import subprocess
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('-n', '--namespace',
dest='namespace',
help='network namespace for the link to modify'
)
parser.add_argument('-d', '--device',
dest='device',
help='device to modify'
)
parser.add_argument('-B, '--bandwidth',
dest='bandwidth',
help='bandwidth to set'
)
parser.add_argument('-D, '--delay',
dest='delay',
help='link latency'
)
parser.add_argument('-L, '--loss',
dest='loss',
help='loss rate'
)
args = parser.parse_args()
# Enable network emulation on the device.
cmd = ["sudo", "/sbin/ip",
"netns", "exec", args.namespace,
"tc", "qdisc", "change", "dev", args.device, "root",
"netem"]
if args.delay is not None:
cmd.append("delay")
cmd.append(str(args.delay))
if args.bandwidth is not None:
cmd.append("rate")
cmd.append(str(args.bandwidth))
if args.loss is not None:
cmd.append("loss")
cmd.append(str(args.loss))
subprocess.check_output(cmd,stderr=subprocess.STDOUT)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment