From cc5ad5953f29e3e9374827b0e63f12a67b3a7d7d Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:06:41 +0100 Subject: Experiment: make run() an abstract method, while realize() swaps in experiments --- rhumba.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rhumba.py b/rhumba.py index fbcfc8f..535b650 100755 --- a/rhumba.py +++ b/rhumba.py @@ -280,10 +280,16 @@ class Experiment: def add_node(self, node): self.nodes.remove(node) - def run(self): + # Realize the experiment topology, using a testbed-specific setup + def realize(self): self.links = get_links(self.nodes) self.testbed.create_experiment(self.nodes, self.links) + @abc.abstractmethod + def run(self): + raise Exception('run() method not implemented') + + # An experiment over the IRATI implementation class IRATIExperiment(Experiment): def __init__(self, testbed, nodes = list()): @@ -291,7 +297,7 @@ class IRATIExperiment(Experiment): def run(self): print("[IRATI experiment] start") - Experiment.run(self) + self.realize() print("[IRATI experiment] end") @@ -302,7 +308,7 @@ class RLITEExperiment(Experiment): def run(self): print("[RLITE experiment] start") - Experiment.run(self) + self.realize() print("[RLITE experiment] end") @@ -314,7 +320,7 @@ class OuroborosExperiment(Experiment): def run(self): print("[Ouroboros experiment] start") print("Creating resources...") - Experiment.run(self) + self.realize() print("Setting up Ouroboros...") our.setup_ouroboros(self.testbed, self.nodes) print("Binding names...") -- cgit v1.2.3 From 38268b9218270ef57402e3c306d8b3bfdcd5103a Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:14:12 +0100 Subject: rhumba: add FakeTestbed to ease development --- rhumba.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/rhumba.py b/rhumba.py index 535b650..5940da0 100755 --- a/rhumba.py +++ b/rhumba.py @@ -41,7 +41,8 @@ class Testbed: @abc.abstractmethod def create_experiment(self, nodes, links): - return + raise Exception('create_experiment() not implemented') + # Represents an emulab testbed info # @@ -62,6 +63,7 @@ class EmulabTestbed: es.wait_until_nodes_up(self) es.complete_experiment_graph(self, nodes, links) + class jFedTestbed: def __init__(self, exp_name, username, cert_file, jfed_jar, exp_hours = "2", proj_name = "ARCFIRE", authority = "wall2.ilabt.iminds.be"): @@ -76,6 +78,17 @@ class jFedTestbed: def create_experiment(self, nodes, links): js.create_experiment(self, nodes, links) + +# Fake testbed, useful for testing +class FakeTestbed: + def __init__(self, exp_name, username, proj_name = "ARCFIRE", + password = ""): + Testbed.__init__(self, exp_name, username, password, proj_name) + + def create_experiment(self, nodes, links): + print("[Fake testbed] experiment swapped in") + + # Represents an interface on a node # # @name [string] interface name -- cgit v1.2.3 From 4bfc9fee5365f2a1aa13c8f8669e2fa3e6264b92 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:24:50 +0100 Subject: move OuroborosExperiment class in its own file --- example.py | 1 + ouroboros_support.py | 50 ++++++++++++++++++++++++++++++++++---------------- rhumba.py | 16 ---------------- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/example.py b/example.py index 931eb73..aa45da5 100644 --- a/example.py +++ b/example.py @@ -3,6 +3,7 @@ # An example script using rhumba.py from rhumba import * +import ouroboros_support as our n1 = NormalDIF("n1", policies = {"rmt.pff": "lfa", "security-manager": "passwd"}) diff --git a/ouroboros_support.py b/ouroboros_support.py index 061c097..8631ad0 100644 --- a/ouroboros_support.py +++ b/ouroboros_support.py @@ -19,24 +19,42 @@ # MA 02110-1301 USA import ssh_support as ssh +import rhumba -def setup_ouroboros(testbed, nodes): - cmds = list() - cmds.append("sudo apt-get update") - cmds.append("sudo apt-get install cmake protobuf-c-compiler git --yes") - cmds.append("sudo rm -r ~/ouroboros/build") - cmds.append("cd ~/ouroboros; sudo ./install_release.sh") - cmds.append("sudo nohup irmd > /dev/null &") +# An experiment over the Ouroboros implementation +class OuroborosExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) - for node in nodes: - ssh.execute_commands(testbed, node.full_name, cmds, time_out = None) - return - -def bind_names(testbed, nodes): - for node in nodes: + def setup_ouroboros(self): cmds = list() - for name, ap in node.bindings.items(): - cmds.append("irm b ap " + ap + " n " + name) - ssh.execute_commands(testbed, node.full_name, cmds, time_out = None) + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install cmake protobuf-c-compiler git --yes") + cmds.append("sudo rm -r ~/ouroboros/build") + cmds.append("cd ~/ouroboros; sudo ./install_release.sh") + cmds.append("sudo nohup irmd > /dev/null &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + return + + def bind_names(self): + for node in self.nodes: + cmds = list() + for name, ap in node.bindings.items(): + cmds.append("irm b ap " + ap + " n " + name) + + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[Ouroboros experiment] start") + print("Creating resources...") + self.realize() + print("Setting up Ouroboros...") + self.setup_ouroboros() + print("Binding names...") + self.bind_names() + print("[Ouroboros experiment] end") + diff --git a/rhumba.py b/rhumba.py index 5940da0..1bd33a6 100755 --- a/rhumba.py +++ b/rhumba.py @@ -23,7 +23,6 @@ import emulab_support as es import jfed_support as js import abc import getpass -import ouroboros_support as our # Represents generic testbed info # @@ -324,18 +323,3 @@ class RLITEExperiment(Experiment): self.realize() print("[RLITE experiment] end") - -# An experiment over the Ouroboros implementation -class OuroborosExperiment(Experiment): - def __init__(self, testbed, nodes = list()): - Experiment.__init__(self, testbed, nodes) - - def run(self): - print("[Ouroboros experiment] start") - print("Creating resources...") - self.realize() - print("Setting up Ouroboros...") - our.setup_ouroboros(self.testbed, self.nodes) - print("Binding names...") - our.bind_names(self.testbed, self.nodes) - print("[Ouroboros experiment] end") -- cgit v1.2.3 From 05b7264c9834293d97637194a9c447a1da0fd9a8 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:35:24 +0100 Subject: move RLITEExperiment class in its own file --- example.py | 1 + rhumba.py | 10 ---------- rlite_support.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 rlite_support.py diff --git a/example.py b/example.py index aa45da5..3c437c0 100644 --- a/example.py +++ b/example.py @@ -4,6 +4,7 @@ from rhumba import * import ouroboros_support as our +import rlite_support as rl n1 = NormalDIF("n1", policies = {"rmt.pff": "lfa", "security-manager": "passwd"}) diff --git a/rhumba.py b/rhumba.py index 1bd33a6..5688861 100755 --- a/rhumba.py +++ b/rhumba.py @@ -313,13 +313,3 @@ class IRATIExperiment(Experiment): print("[IRATI experiment] end") -# An experiment over the RLITE implementation -class RLITEExperiment(Experiment): - def __init__(self, testbed, nodes = list()): - Experiment.__init__(self, testbed, nodes) - - def run(self): - print("[RLITE experiment] start") - self.realize() - print("[RLITE experiment] end") - diff --git a/rlite_support.py b/rlite_support.py new file mode 100644 index 0000000..f240fee --- /dev/null +++ b/rlite_support.py @@ -0,0 +1,51 @@ +# +# Commands to setup and instruct rlite +# +# Vincenzo Maffione +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import ssh_support as ssh +import rhumba + + +# An experiment over the RLITE implementation +class RLITEExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) + + def setup(self): + cmds = list() + + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install g++ gcc cmake " + "linux-headers-$(uname -r) " + "protobuf-compiler libprotobuf-dev git --yes") + cmds.append("sudo rm -rf ~/rlite") + cmds.append("cd ~; git clone https://github.com/vmaffione/rlite") + cmds.append("./configure && make && sudo make install") + cmds.append("sudo rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[RLITE experiment] start") + self.realize() + print("Setting up rlite on the nodes...") + self.setup() + print("[RLITE experiment] end") + -- cgit v1.2.3 From 4a1221b5e20122717302d6518a057e5601936b08 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:40:18 +0100 Subject: move IRATIExperiment class in its own file --- example.py | 1 + irati_support.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ rhumba.py | 12 ------------ 3 files changed, 56 insertions(+), 12 deletions(-) create mode 100644 irati_support.py diff --git a/example.py b/example.py index 3c437c0..076bcc6 100644 --- a/example.py +++ b/example.py @@ -5,6 +5,7 @@ from rhumba import * import ouroboros_support as our import rlite_support as rl +import irati_support as irati n1 = NormalDIF("n1", policies = {"rmt.pff": "lfa", "security-manager": "passwd"}) diff --git a/irati_support.py b/irati_support.py new file mode 100644 index 0000000..0432e29 --- /dev/null +++ b/irati_support.py @@ -0,0 +1,55 @@ +# +# Commands to setup and instruct rlite +# +# Vincenzo Maffione +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import ssh_support as ssh +import rhumba + + +# An experiment over the IRATI implementation +class IRATIExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) + + def run(self): + print("[IRATI experiment] start") + self.realize() + print("[IRATI experiment] end") + + def setup(self): + cmds = list() + + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install g++ gcc " + "protobuf-compiler libprotobuf-dev git --yes") + cmds.append("sudo rm -rf ~/irati") + cmds.append("cd ~; git clone https://github.com/IRATI/stack") + cmds.append("sudo ./install-from-scratch") + cmds.append("sudo ipcm &> ipcm.log &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[RLITE experiment] start") + self.realize() + print("Setting up IRATI on the nodes...") + self.setup() + print("[RLITE experiment] end") + diff --git a/rhumba.py b/rhumba.py index 5688861..195bf15 100755 --- a/rhumba.py +++ b/rhumba.py @@ -301,15 +301,3 @@ class Experiment: def run(self): raise Exception('run() method not implemented') - -# An experiment over the IRATI implementation -class IRATIExperiment(Experiment): - def __init__(self, testbed, nodes = list()): - Experiment.__init__(self, testbed, nodes) - - def run(self): - print("[IRATI experiment] start") - self.realize() - print("[IRATI experiment] end") - - -- cgit v1.2.3 From b692033cc9a89a483edafb68cc1a68710012722b Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 18:43:48 +0100 Subject: rlite support: add missing cd --- rlite_support.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rlite_support.py b/rlite_support.py index f240fee..eeaf857 100644 --- a/rlite_support.py +++ b/rlite_support.py @@ -36,7 +36,7 @@ class RLITEExperiment(rhumba.Experiment): "protobuf-compiler libprotobuf-dev git --yes") cmds.append("sudo rm -rf ~/rlite") cmds.append("cd ~; git clone https://github.com/vmaffione/rlite") - cmds.append("./configure && make && sudo make install") + cmds.append("cd ~/rlite && ./configure && make && sudo make install") cmds.append("sudo rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") for node in self.nodes: -- cgit v1.2.3 From 9ce6e8f876442847e75664a4c8e658c49de600e1 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 21:20:12 +0100 Subject: fix irati_support.py comments --- irati_support.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/irati_support.py b/irati_support.py index 0432e29..c2815f0 100644 --- a/irati_support.py +++ b/irati_support.py @@ -1,5 +1,5 @@ # -# Commands to setup and instruct rlite +# Commands to setup and instruct IRATI # # Vincenzo Maffione # @@ -47,9 +47,9 @@ class IRATIExperiment(rhumba.Experiment): ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) def run(self): - print("[RLITE experiment] start") + print("[IRATI experiment] start") self.realize() print("Setting up IRATI on the nodes...") self.setup() - print("[RLITE experiment] end") + print("[IRATI experiment] end") -- cgit v1.2.3 From 47a66c667c1c19de39d47b7b3421c58f4b7e323e Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 21:23:32 +0100 Subject: irati_support: setup: change to the right directory --- irati_support.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/irati_support.py b/irati_support.py index c2815f0..8ee5c24 100644 --- a/irati_support.py +++ b/irati_support.py @@ -39,8 +39,8 @@ class IRATIExperiment(rhumba.Experiment): cmds.append("sudo apt-get install g++ gcc " "protobuf-compiler libprotobuf-dev git --yes") cmds.append("sudo rm -rf ~/irati") - cmds.append("cd ~; git clone https://github.com/IRATI/stack") - cmds.append("sudo ./install-from-scratch") + cmds.append("cd && git clone https://github.com/IRATI/stack irati") + cmds.append("cd ~/irati && sudo ./install-from-scratch") cmds.append("sudo ipcm &> ipcm.log &") for node in self.nodes: -- cgit v1.2.3 From d76fd4b3bb896c474b6762ccd930e0d061f365cb Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 21:28:08 +0100 Subject: irati, rlite: use nohup for daemons --- irati_support.py | 2 +- rlite_support.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/irati_support.py b/irati_support.py index 8ee5c24..59e0c63 100644 --- a/irati_support.py +++ b/irati_support.py @@ -41,7 +41,7 @@ class IRATIExperiment(rhumba.Experiment): cmds.append("sudo rm -rf ~/irati") cmds.append("cd && git clone https://github.com/IRATI/stack irati") cmds.append("cd ~/irati && sudo ./install-from-scratch") - cmds.append("sudo ipcm &> ipcm.log &") + cmds.append("sudo nohup ipcm &> ipcm.log &") for node in self.nodes: ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) diff --git a/rlite_support.py b/rlite_support.py index eeaf857..b34a2b1 100644 --- a/rlite_support.py +++ b/rlite_support.py @@ -37,7 +37,7 @@ class RLITEExperiment(rhumba.Experiment): cmds.append("sudo rm -rf ~/rlite") cmds.append("cd ~; git clone https://github.com/vmaffione/rlite") cmds.append("cd ~/rlite && ./configure && make && sudo make install") - cmds.append("sudo rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") + cmds.append("sudo nohup rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") for node in self.nodes: ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) -- cgit v1.2.3 From 896c79348ef28d907fcb571995c54c947f4b5c75 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 21:29:08 +0100 Subject: rhumba: rename add_node --> del_node --- rhumba.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rhumba.py b/rhumba.py index 195bf15..688985c 100755 --- a/rhumba.py +++ b/rhumba.py @@ -289,7 +289,7 @@ class Experiment: def add_node(self, node): self.nodes.append(node) - def add_node(self, node): + def del_node(self, node): self.nodes.remove(node) # Realize the experiment topology, using a testbed-specific setup -- cgit v1.2.3 From 64782b938b12a9c0f7b7bb7a152091f62e4db3a6 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Mon, 6 Feb 2017 21:33:04 +0100 Subject: rhumba: realize --> swap_in, fix double definition in IRATI class --- irati_support.py | 7 +------ ouroboros_support.py | 2 +- rhumba.py | 4 ++-- rlite_support.py | 2 +- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/irati_support.py b/irati_support.py index 59e0c63..d5c66d2 100644 --- a/irati_support.py +++ b/irati_support.py @@ -27,11 +27,6 @@ class IRATIExperiment(rhumba.Experiment): def __init__(self, testbed, nodes = list()): rhumba.Experiment.__init__(self, testbed, nodes) - def run(self): - print("[IRATI experiment] start") - self.realize() - print("[IRATI experiment] end") - def setup(self): cmds = list() @@ -48,7 +43,7 @@ class IRATIExperiment(rhumba.Experiment): def run(self): print("[IRATI experiment] start") - self.realize() + self.swap_in() print("Setting up IRATI on the nodes...") self.setup() print("[IRATI experiment] end") diff --git a/ouroboros_support.py b/ouroboros_support.py index 8631ad0..aca1f5f 100644 --- a/ouroboros_support.py +++ b/ouroboros_support.py @@ -51,7 +51,7 @@ class OuroborosExperiment(rhumba.Experiment): def run(self): print("[Ouroboros experiment] start") print("Creating resources...") - self.realize() + self.swap_in() print("Setting up Ouroboros...") self.setup_ouroboros() print("Binding names...") diff --git a/rhumba.py b/rhumba.py index 688985c..1ffd092 100755 --- a/rhumba.py +++ b/rhumba.py @@ -292,8 +292,8 @@ class Experiment: def del_node(self, node): self.nodes.remove(node) - # Realize the experiment topology, using a testbed-specific setup - def realize(self): + # Realize the experiment, using a testbed-specific setup + def swap_in(self): self.links = get_links(self.nodes) self.testbed.create_experiment(self.nodes, self.links) diff --git a/rlite_support.py b/rlite_support.py index b34a2b1..ac1f081 100644 --- a/rlite_support.py +++ b/rlite_support.py @@ -44,7 +44,7 @@ class RLITEExperiment(rhumba.Experiment): def run(self): print("[RLITE experiment] start") - self.realize() + self.swap_in() print("Setting up rlite on the nodes...") self.setup() print("[RLITE experiment] end") -- cgit v1.2.3 From 0700292bbee309aab483692e98857018840f86ac Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Tue, 7 Feb 2017 11:23:45 +0100 Subject: rename prototype files --- example.py | 6 +++--- irati_support.py | 50 ------------------------------------------- ouroboros_support.py | 60 ---------------------------------------------------- rhumba_irati.py | 50 +++++++++++++++++++++++++++++++++++++++++++ rhumba_ouroboros.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ rhumba_rlite.py | 51 ++++++++++++++++++++++++++++++++++++++++++++ rlite_support.py | 51 -------------------------------------------- 7 files changed, 164 insertions(+), 164 deletions(-) delete mode 100644 irati_support.py delete mode 100644 ouroboros_support.py create mode 100644 rhumba_irati.py create mode 100644 rhumba_ouroboros.py create mode 100644 rhumba_rlite.py delete mode 100644 rlite_support.py diff --git a/example.py b/example.py index 076bcc6..6013173 100644 --- a/example.py +++ b/example.py @@ -3,9 +3,9 @@ # An example script using rhumba.py from rhumba import * -import ouroboros_support as our -import rlite_support as rl -import irati_support as irati +import rhumba_ouroboros as our +import rhumba_rlite as rl +import rhumba_irati as irati n1 = NormalDIF("n1", policies = {"rmt.pff": "lfa", "security-manager": "passwd"}) diff --git a/irati_support.py b/irati_support.py deleted file mode 100644 index d5c66d2..0000000 --- a/irati_support.py +++ /dev/null @@ -1,50 +0,0 @@ -# -# Commands to setup and instruct IRATI -# -# Vincenzo Maffione -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301 USA - -import ssh_support as ssh -import rhumba - - -# An experiment over the IRATI implementation -class IRATIExperiment(rhumba.Experiment): - def __init__(self, testbed, nodes = list()): - rhumba.Experiment.__init__(self, testbed, nodes) - - def setup(self): - cmds = list() - - cmds.append("sudo apt-get update") - cmds.append("sudo apt-get install g++ gcc " - "protobuf-compiler libprotobuf-dev git --yes") - cmds.append("sudo rm -rf ~/irati") - cmds.append("cd && git clone https://github.com/IRATI/stack irati") - cmds.append("cd ~/irati && sudo ./install-from-scratch") - cmds.append("sudo nohup ipcm &> ipcm.log &") - - for node in self.nodes: - ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) - - def run(self): - print("[IRATI experiment] start") - self.swap_in() - print("Setting up IRATI on the nodes...") - self.setup() - print("[IRATI experiment] end") - diff --git a/ouroboros_support.py b/ouroboros_support.py deleted file mode 100644 index aca1f5f..0000000 --- a/ouroboros_support.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Commands to instruct Ouroboros -# -# Sander Vrijders -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301 USA - -import ssh_support as ssh -import rhumba - - -# An experiment over the Ouroboros implementation -class OuroborosExperiment(rhumba.Experiment): - def __init__(self, testbed, nodes = list()): - rhumba.Experiment.__init__(self, testbed, nodes) - - def setup_ouroboros(self): - cmds = list() - - cmds.append("sudo apt-get update") - cmds.append("sudo apt-get install cmake protobuf-c-compiler git --yes") - cmds.append("sudo rm -r ~/ouroboros/build") - cmds.append("cd ~/ouroboros; sudo ./install_release.sh") - cmds.append("sudo nohup irmd > /dev/null &") - - for node in self.nodes: - ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) - return - - def bind_names(self): - for node in self.nodes: - cmds = list() - for name, ap in node.bindings.items(): - cmds.append("irm b ap " + ap + " n " + name) - - ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) - - def run(self): - print("[Ouroboros experiment] start") - print("Creating resources...") - self.swap_in() - print("Setting up Ouroboros...") - self.setup_ouroboros() - print("Binding names...") - self.bind_names() - print("[Ouroboros experiment] end") - diff --git a/rhumba_irati.py b/rhumba_irati.py new file mode 100644 index 0000000..d5c66d2 --- /dev/null +++ b/rhumba_irati.py @@ -0,0 +1,50 @@ +# +# Commands to setup and instruct IRATI +# +# Vincenzo Maffione +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import ssh_support as ssh +import rhumba + + +# An experiment over the IRATI implementation +class IRATIExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) + + def setup(self): + cmds = list() + + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install g++ gcc " + "protobuf-compiler libprotobuf-dev git --yes") + cmds.append("sudo rm -rf ~/irati") + cmds.append("cd && git clone https://github.com/IRATI/stack irati") + cmds.append("cd ~/irati && sudo ./install-from-scratch") + cmds.append("sudo nohup ipcm &> ipcm.log &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[IRATI experiment] start") + self.swap_in() + print("Setting up IRATI on the nodes...") + self.setup() + print("[IRATI experiment] end") + diff --git a/rhumba_ouroboros.py b/rhumba_ouroboros.py new file mode 100644 index 0000000..aca1f5f --- /dev/null +++ b/rhumba_ouroboros.py @@ -0,0 +1,60 @@ +# +# Commands to instruct Ouroboros +# +# Sander Vrijders +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import ssh_support as ssh +import rhumba + + +# An experiment over the Ouroboros implementation +class OuroborosExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) + + def setup_ouroboros(self): + cmds = list() + + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install cmake protobuf-c-compiler git --yes") + cmds.append("sudo rm -r ~/ouroboros/build") + cmds.append("cd ~/ouroboros; sudo ./install_release.sh") + cmds.append("sudo nohup irmd > /dev/null &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + return + + def bind_names(self): + for node in self.nodes: + cmds = list() + for name, ap in node.bindings.items(): + cmds.append("irm b ap " + ap + " n " + name) + + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[Ouroboros experiment] start") + print("Creating resources...") + self.swap_in() + print("Setting up Ouroboros...") + self.setup_ouroboros() + print("Binding names...") + self.bind_names() + print("[Ouroboros experiment] end") + diff --git a/rhumba_rlite.py b/rhumba_rlite.py new file mode 100644 index 0000000..ac1f081 --- /dev/null +++ b/rhumba_rlite.py @@ -0,0 +1,51 @@ +# +# Commands to setup and instruct rlite +# +# Vincenzo Maffione +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301 USA + +import ssh_support as ssh +import rhumba + + +# An experiment over the RLITE implementation +class RLITEExperiment(rhumba.Experiment): + def __init__(self, testbed, nodes = list()): + rhumba.Experiment.__init__(self, testbed, nodes) + + def setup(self): + cmds = list() + + cmds.append("sudo apt-get update") + cmds.append("sudo apt-get install g++ gcc cmake " + "linux-headers-$(uname -r) " + "protobuf-compiler libprotobuf-dev git --yes") + cmds.append("sudo rm -rf ~/rlite") + cmds.append("cd ~; git clone https://github.com/vmaffione/rlite") + cmds.append("cd ~/rlite && ./configure && make && sudo make install") + cmds.append("sudo nohup rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") + + for node in self.nodes: + ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) + + def run(self): + print("[RLITE experiment] start") + self.swap_in() + print("Setting up rlite on the nodes...") + self.setup() + print("[RLITE experiment] end") + diff --git a/rlite_support.py b/rlite_support.py deleted file mode 100644 index ac1f081..0000000 --- a/rlite_support.py +++ /dev/null @@ -1,51 +0,0 @@ -# -# Commands to setup and instruct rlite -# -# Vincenzo Maffione -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301 USA - -import ssh_support as ssh -import rhumba - - -# An experiment over the RLITE implementation -class RLITEExperiment(rhumba.Experiment): - def __init__(self, testbed, nodes = list()): - rhumba.Experiment.__init__(self, testbed, nodes) - - def setup(self): - cmds = list() - - cmds.append("sudo apt-get update") - cmds.append("sudo apt-get install g++ gcc cmake " - "linux-headers-$(uname -r) " - "protobuf-compiler libprotobuf-dev git --yes") - cmds.append("sudo rm -rf ~/rlite") - cmds.append("cd ~; git clone https://github.com/vmaffione/rlite") - cmds.append("cd ~/rlite && ./configure && make && sudo make install") - cmds.append("sudo nohup rlite-uipcps -v DBG -k 0 -U -A &> uipcp.log &") - - for node in self.nodes: - ssh.execute_commands(self.testbed, node.full_name, cmds, time_out = None) - - def run(self): - print("[RLITE experiment] start") - self.swap_in() - print("Setting up rlite on the nodes...") - self.setup() - print("[RLITE experiment] end") - -- cgit v1.2.3