From 1e7215a18ea96fbba60bb5df4f33bb15a90d434e Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Sat, 29 Apr 2017 13:19:27 +0200 Subject: README.md: update with JFed-specific instructions to access nodes --- README.md | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index d6e0839..c854772 100644 --- a/README.md +++ b/README.md @@ -82,16 +82,28 @@ a look at the examples/ folder. Here the experiment name is rochefort10, the user's name is ricksanchez, and the certificate can be found in - /home/morty/cert.pem. Please use an absolute path for cert_file for - now. + /home/morty/cert.pem. An absolute path must be used for cert_file. - Before running the experiment it is wise to use an SSH agent to - avoid having to enter the passphrase for every login to a node by - the framework if you are not on an IPv6 enabled network. (Apart - from asking for the passphrase to login to the nodes, the framework + Before running the rumba you must run an SSH agent in same terminal. + This will also avoid you having to enter the passphrase for every + login to a node by the framework if you are not on an IPv6 enabled network. + (Apart from asking for the passphrase to login to the nodes, the framework will always ask for the passphrase since it is needed by the jFed CLI as well.) In order to start an SSH agent and to add the - certificate, simply perform the following commands: + certificate, type the following commands: - eval `ssh-agent` - ssh-add /home/morty/cert.pem + $ eval `ssh-agent` + $ ssh-add /home/morty/cert.pem + + To access a node once the experiment swapped in, use the following + command (in the same terminal where ssh-agent was run): + + $ ssh -A -oProxyCommand="ssh -i $CERTPATH + -o StrictHostKeyChecking=no $USER@bastion.test.iminds.be + nc $NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be 22" + $USER@$NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be + + where $CERTPATH is the absolute path of the certificate (e.g. + /home/morty/cert.pem), $USER is the jFed username (e.g. "ricksanchez"), + $NODENAME is the name of the node you want to access (e.g. "a"), + and $EXP is the name of the experiment (e.g. "rochefort10"). -- cgit v1.2.3 From 24c375545c6ef7d03e8a18dea2cb06763059b1b9 Mon Sep 17 00:00:00 2001 From: Vincenzo Maffione Date: Wed, 31 May 2017 15:51:41 +0200 Subject: README: add info about dependencies Fixes #8. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index c854772..9bd7d38 100644 --- a/README.md +++ b/README.md @@ -37,12 +37,19 @@ a look at the examples/ folder. ## Installation + For Debian and Ubuntu, the following command will ensure that the + required dependencies are installed (replace python-dev with python3-dev + if using Python 3): + + # apt-get install build-essential libssl-dev libffi-dev python-dev + Rumba can be found on the [PyPi](https://pypi.python.org/pypi/Rumba) and can thus be installed through pip, by using `pip install rumba`. However, to install the latest version, after cloning the repository, a user can also issue `python setup.py install`. + ## Supported prototypes * [IRATI](https://github.com/IRATI/stack) is an open source -- cgit v1.2.3 From 0cb3ff13b092d6a96f60aaa4bff4d9609b067a86 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 7 Jun 2017 09:45:58 +0200 Subject: Update README.md This updates the README to explain the API a bit better. --- README.md | 68 +++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 21 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 9bd7d38..cbe1015 100644 --- a/README.md +++ b/README.md @@ -3,17 +3,20 @@ Rumba is part of ARCFIRE 2020, Work Package 3. It is a framework in Python which allows user to write a Python script to define a RINA network. The physical graph needed for this RINA network is then -calculated and realised on one of the supported testbeds. Next, one of -the supported RINA prototypes is installed. After installation, the -network is bootstrapped. For an example of such a Python script, have -a look at the examples/ folder. +calculated and realised on one of the supported testbeds. Next, if the +user requests this, one of the supported RINA prototypes is +installed. The network is then bootstrapped on the available +nodes. Finally, the experiment can be swapped out of the testbed. For +an example of such a Python script, have a look at the examples/ +folder. ## Workflow, both external and internal: 1. User defines the network graph, creating instances of model.Node - and model.DIF classes + and model.DIF classes - 2. User creates an instance of a Testbed class + 2. User creates an instance of a Testbed class. See below for + testbed specific configuration 3. User creates an instance of prototype.Experiment class, passing the testbed instance and a list of Node instances @@ -23,17 +26,19 @@ a look at the examples/ folder. per-node IPCPs, registrations and enrollment, ready to be used by the plugins - 4. User calls run() on the prototype.Experiment instance: + 4. User calls methods on the prototype.Experiment instance: - 1. run() calls Testbed.swap_in(), passing the Experiment, and - filling in the missing information + 1. swap_in() swaps the experiment in on the testbed, and fills in + the missing information in the model. - 2. run() calls a prototype-specific setup function, to create the - required IPCPs, perform registrations, enrollments, etc. + 2. install_prototype() installs the chosen prototype on the + testbed. Currently an Ubuntu image is assumed. - 3. Perform tests (TODO) + 3. bootstrap_prototype() calls a prototype-specific setup function, + to create the required IPCPs, perform registrations, + enrollments, etc. - 4. run() calls Testbed.swap_out() + 4. swap_out() swaps the experiment out of the testbed. ## Installation @@ -69,10 +74,30 @@ a look at the examples/ folder. * [QEMU](http://wiki.qemu-project.org/Main_Page) is a generic and open source machine emulator and virtualizer. + A minimal QEMU testbed is defined as follows: + + tb = qemu.Testbed(exp_name = "twolayers", + username = "root", + password = "root") + + A user can optionally also specify the path to a bzImage and to an + initramfs. If they are not specified, the latest buildroot image + for the specific prototype will be downloaded. (Around 40 MB in + size) The login to those images is root/root. + * [Emulab](https://www.emulab.net/) is a network testbed, giving researchers a wide range of environments in which to develop, debug, and evaluate their systems. + An emulab testbed instance is defined as follows: + + tb = emulab.Testbed(exp_name = "rochefort10", + username = "ricksanchez") + + A password can also be provided but is not necessary when an SSH + key has been added. Optionally, a project name, a different testbed + URL and a custom image can be specified. + * [jFed](http://jfed.iminds.be/) is a Java-based framework for testbed federation. @@ -89,7 +114,8 @@ a look at the examples/ folder. Here the experiment name is rochefort10, the user's name is ricksanchez, and the certificate can be found in - /home/morty/cert.pem. An absolute path must be used for cert_file. + /home/morty/cert.pem. An absolute path must be used for + cert_file. Optionally a custom image can be selected. Before running the rumba you must run an SSH agent in same terminal. This will also avoid you having to enter the passphrase for every @@ -102,15 +128,15 @@ a look at the examples/ folder. $ eval `ssh-agent` $ ssh-add /home/morty/cert.pem - To access a node once the experiment swapped in, use the following - command (in the same terminal where ssh-agent was run): + To access a node once the experiment swapped in, use the following + command (in the same terminal where ssh-agent was run): - $ ssh -A -oProxyCommand="ssh -i $CERTPATH + $ ssh -A -oProxyCommand="ssh -i $CERTPATH -o StrictHostKeyChecking=no $USER@bastion.test.iminds.be nc $NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be 22" $USER@$NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be - where $CERTPATH is the absolute path of the certificate (e.g. - /home/morty/cert.pem), $USER is the jFed username (e.g. "ricksanchez"), - $NODENAME is the name of the node you want to access (e.g. "a"), - and $EXP is the name of the experiment (e.g. "rochefort10"). + where $CERTPATH is the absolute path of the certificate (e.g. + /home/morty/cert.pem), $USER is the jFed username (e.g. "ricksanchez"), + $NODENAME is the name of the node you want to access (e.g. "a"), + and $EXP is the name of the experiment (e.g. "rochefort10"). -- cgit v1.2.3 From a530847d9a47dceb121eac00d42f456239f643a6 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 7 Jun 2017 11:31:24 +0200 Subject: Update README.md to use access script This changes the README so that users will use the rumba-access script. --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index cbe1015..7d416f6 100644 --- a/README.md +++ b/README.md @@ -128,15 +128,12 @@ folder. $ eval `ssh-agent` $ ssh-add /home/morty/cert.pem +## Accessing nodes after swap-in + To access a node once the experiment swapped in, use the following - command (in the same terminal where ssh-agent was run): + command (in the same terminal where ssh-agent was run in case of jFed): - $ ssh -A -oProxyCommand="ssh -i $CERTPATH - -o StrictHostKeyChecking=no $USER@bastion.test.iminds.be - nc $NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be 22" - $USER@$NODENAME.$EXP.wall2-ilabt-iminds-be.wall2.ilabt.iminds.be + $ $RUMBA/tools/rumba-access $NODE_NAME - where $CERTPATH is the absolute path of the certificate (e.g. - /home/morty/cert.pem), $USER is the jFed username (e.g. "ricksanchez"), - $NODENAME is the name of the node you want to access (e.g. "a"), - and $EXP is the name of the experiment (e.g. "rochefort10"). + Where $RUMBA is the location to the rumba repository and $NODE_NAME + is the name of the node to access. \ No newline at end of file -- cgit v1.2.3 From 4dced04d238234c98a7c8221c1a7c9cfb84bf88b Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 7 Jun 2017 11:52:22 +0200 Subject: rumba: Install rumba-access on setup This will install rumba-access on setup so that it can be used anywhere. --- README.md | 5 ++--- setup.py | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 7d416f6..25d79fd 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,6 @@ folder. To access a node once the experiment swapped in, use the following command (in the same terminal where ssh-agent was run in case of jFed): - $ $RUMBA/tools/rumba-access $NODE_NAME + $ rumba-access $NODE_NAME - Where $RUMBA is the location to the rumba repository and $NODE_NAME - is the name of the node to access. \ No newline at end of file + Where $NODE_NAME is the name of the node to access. \ No newline at end of file diff --git a/setup.py b/setup.py index 316b6da..85760f2 100755 --- a/setup.py +++ b/setup.py @@ -20,5 +20,6 @@ setup( description="Rumba measurement framework for RINA", long_description=long_description, packages=["rumba", "rumba.testbeds", "rumba.prototypes"], - install_requires=["paramiko", "wheel", "wget"] + install_requires=["paramiko", "wheel", "wget"], + scripts = ['tools/rumba-access'] ) -- cgit v1.2.3