From d8a0cfae620d20b70c668bea66af5f5e2e348379 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 20 Sep 2017 14:27:34 +0200 Subject: examples: Add snake example This adds the snake as an example. It forms a single DIF connected node by node. The number of nodes can be passed as parameter. --- examples/snake.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ rumba/ssh_support.py | 2 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100755 examples/snake.py diff --git a/examples/snake.py b/examples/snake.py new file mode 100755 index 0000000..c6b67b3 --- /dev/null +++ b/examples/snake.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +# An example script using the rumba package + +from rumba.model import * + +# import testbed plugins +import rumba.testbeds.emulab as emulab +import rumba.testbeds.jfed as jfed +import rumba.testbeds.faketestbed as fake +import rumba.testbeds.qemu as qemu + +# import prototype plugins +import rumba.prototypes.ouroboros as our +import rumba.prototypes.rlite as rl +import rumba.prototypes.irati as irati + +import argparse +import sys + +description = "Script to create a snake" + +argparser = argparse.ArgumentParser(description = description) +argparser.add_argument('-n', '--nodes', type = int, default = '10', + help = "Total number of nodes") + +args = argparser.parse_args() + +log.set_logging_level('DEBUG') + +n01 = NormalDIF("n01") + +if (args.nodes < 2): + print("Snake must be longer than 2 nodes") + sys.exit(-1) + +nodes = [] + +shim_prev = None +for i in range(0, args.nodes): + if i is not (args.nodes - 1): + shim = ShimEthDIF("e" + str(i)) + else: + shim = None + + if shim_prev == None and shim != None: + node = Node("node" + str(i), difs = [n01, shim], + dif_registrations = {n01 : [shim]}) + elif shim_prev != None and shim != None: + node = Node("node" + str(i), difs = [n01, shim, shim_prev], + dif_registrations = {n01 : [shim, shim_prev]}) + else: + node = Node("node" + str(i), difs = [n01, shim_prev], + dif_registrations = {n01 : [shim_prev]}) + + shim_prev = shim + nodes.append(node) + +tb = qemu.Testbed(exp_name = "snake") + +exp = rl.Experiment(tb, nodes = nodes) + +print(exp) + +try: + exp.swap_in() + exp.bootstrap_prototype() +finally: + exp.swap_out() diff --git a/rumba/ssh_support.py b/rumba/ssh_support.py index 9c24890..8ceee55 100644 --- a/rumba/ssh_support.py +++ b/rumba/ssh_support.py @@ -60,7 +60,7 @@ def _print_stream(stream): def ssh_connect(ssh_client, hostname, port, username, password, time_out, proxy): retry = 0 - max_retries = 5 + max_retries = 10 while retry < max_retries: time.sleep(retry * 5) try: -- cgit v1.2.3