From d8a0cfae620d20b70c668bea66af5f5e2e348379 Mon Sep 17 00:00:00 2001
From: Sander Vrijders <sander.vrijders@ugent.be>
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