aboutsummaryrefslogtreecommitdiff
path: root/rumba/model.py
Commit message (Collapse)AuthorAgeFilesLines
* rumba: Update copyright on license headersSander Vrijders2018-04-231-4/+2
| | | | | This updates the copyright on the license headers to that it is extended to the current year.
* doc: Reorganize documentationSander Vrijders2018-03-291-1/+3
| | | | | This reorganizes the documentation somewhat to be more tutorial-styled.
* model: split model into two filesMarco Capitani2018-03-291-1341/+53
| | | | | Changed `rumba.model` into a namespace, moved business logic inside the rumba.elements package
* storyboard: add/format docstringsMarco Capitani2018-03-291-14/+34
| | | | | | | | | Also: + small docstring fixes in model + docstring fixes in log + log refactoring + other small refactoring + some small documentation fixes
* model: Add docstrings to modelSander Vrijders2018-03-281-75/+229
| | | | | | This adds docstrings to the model so that Sphinx can parse them. It also adds some changes to the rst files and conf.py so that inherited members are shown and special members are not.
* testbeds, prototypes, model: Add docstringsSander Vrijders2018-03-281-1/+14
| | | | | This adds docstrings for methods of in the testbeds, prototypes and certain things in the model.
* model: make link quality changes scriptableMarco Capitani2018-03-281-0/+93
| | | | | | | | Added method accepting only ints and floats to allow scripting link quality changes (see example-script additions) Also added general purpose `sb.schedule_action` method
* model: fix case where no quality is providedMarco Capitani2018-03-271-2/+13
| | | | Also add overloading in LinkQuality constructor
* linkquality: added link_quality to add delay, loss and rate limit to linkNick Aerts2018-03-271-6/+206
| | | | | | | | | | | | | | This adds the ability to assign delay and loss to links. 4 new object types are introduced: - LinkQuality - Delay - Loss - Rate All attributes are read-only, one attribute link_quality is added to the ShimEthDIF with a callback to the LinkQualityManager which will automatically apply a new link_quality profile when this attribute is written.
* model/sb: fix small bugsMarco Capitani2018-03-271-1/+1
| | | | | + manage spaces in server and client ap when building id + fix typo in node.fetch_file
* storyboard: Add capturing of trafficSander Vrijders2018-03-271-1/+2
| | | | | | | | | This adds the functionality to capture traffic on certain interfaces so that it can be inspected with tools like wireshark. A user needs to pass a start and end time and a node and DIF. Rumba will then determine the correct interface to capture on. Implements #41
* model: make DIFs scriptableMarco Capitani2018-03-261-1/+6
| | | | | | | DIFs instances can now be referenced inside .rsb files. Also changed Node.set_link_state function to accept a DIF as opposed to an IPCP, since IPCPs are not given a name nor mentioned is user scripts.
* testbeds: Add docker testbedNick Aerts2018-03-201-74/+56
| | | | | | | | | | | | This adds support for a testbed based on Docker containers running on the local host. Bridging the containers can be done using built-in Linux bridging or using OpenVSwitch bridges. A new resource 'executor' has been added to abstract away command execution on nodes on the testbed. Executors have been created for local command execution, docker exec based command execution and SSH-based command execution. This has also been changed in the prototypes to execute using the correct executor.
* storyboard: Add link and node up and down eventsSander Vrijders2018-03-191-1/+10
| | | | | | | | | | This adds link and node up and down events to the storyboard, which can be called by a user on a specific time. The user needs to pass the time and the shim Ethernet for a link up or down event and a time and a node for the node up or down event. The interfaces in that layer or on that node will then be brought down. Implements #31
* storyboard: add replayabilityMarco Capitani2018-03-161-0/+4
| | | | implements #27
* prototypes: Add local Ouroboros supportSander Vrijders2018-03-141-0/+6
| | | | | | | | | | | | | | | | This adds local Ouroboros support in case of a fake testbed (i.e. no resources allocated). A next PR will abstract away the mode of communication with the testbed, since the Docker plugin will also need it. This also adds another function to the model, terminate_prototype, which should clean up the prototype gracefully, or can be skipped depending on the testbed. Currently the ouroboros plugin with the fake testbed needs to be run as root. If there is a way to run the command as root in the background and then clean it up properly, I would be happy to know how.
* utils & storyboard: add syslog retrieval functionalityMarco Capitani2018-02-271-5/+7
| | | | | Implements #39. Also updated examples.
* model & more: add prototype/system log fieldsMarco Capitani2018-02-271-2/+31
| | | | | | | | This commit adds the fields necessary to specify the paths and folders related to system logs and prototype logs and fetching them. Defaults are introduced and specific paths for rlite & qemu
* prototypes: Add option to choose git repo and branchSander Vrijders2018-02-131-1/+3
| | | | | | This adds two extra parameters to the Experiment class, so that users can specify their custom repositories and branches for testing new features.
* model: Add check for number of members in ShimEthDIFSander Vrijders2018-01-121-6/+11
| | | | | | This adds a check to see that the number of members in the ShimEthDIF class is not exceeded by two, since it is currently not supported by Rumba.
* model: Add timings for every public Experiment callSander Vrijders2017-12-261-2/+26
| | | | | | | This measures the time for every public function of the Experiment class and logs them. Fixes #40
* storyboard: add logging and log retrievalMarco Capitani2017-11-171-4/+12
|
* storyboard: decouple from experimentMarco Capitani2017-11-171-272/+1
| | | | | | | | + Node no longer has "client" attribute + Client has a "nodes" attribute instead + servers, server nodes and the experiment can be added to a storyboard after instantiation to allow reuse of a SB + moved storyboard machinery to a separate module rumba.storyboard
* rumba: Use saner names and add Dimitri as authorSander Vrijders2017-11-151-0/+1
| | | | | This uses a saner name for multiprocessing_utils and adds some licenses where they were missing and adds Dimitri as author.
* prototypes: Add parallel installation for IRATIMarco Capitani2017-11-151-12/+15
| | | | | | | This adds parallel installation for IRATI, it also adds support for multithread/multiprocess logging. Furthermore prototype-agnostic utilities for multiprocessing have been added. Caching of clients has been re-enabled for the ssh connections.
* storyboard: Add run_command methodMarco Capitani2017-11-131-12/+48
| | | | | This adds a run_command method to allow experimenters to execute a single command at a give time on a specified node.
* prototypes: Fix ouroboros multi-layer enrollmentDimitri Staessens2017-11-131-0/+16
| | | | | | | Enrollments were performed together before connection setup was performed in lower rank DIFs, which caused IPCPs of N+1 DIFs to enroll over DIFs that had no data transfer connectivity. Enrollment and connection establishment are now performed per-DIF to solve this.
* rumba: Add persistent SSH connectionsSander Vrijders2017-10-261-0/+7
| | | | | | This adds persistent SSH connections to Rumba. A new SSH client will be opened for every node in the experiment, which is closed after all experimentation is done.
* ssh_support: Use native Paramiko API for ProxySander Vrijders2017-10-241-3/+3
| | | | | | This uses the native paramiko API for proxycommands instead of invoking OpenSSH on the host after connecting to it since that gives race conditons with Paramiko.
* testbeds: Add support for selecting jfed VMsDimitri Staessens2017-10-241-1/+2
| | | | | | | | | | Allows setting the attribute machine_type="virtual" for experiment nodes. If the attribute is set to something else than "virtual" a bare metal machine will be selected. If the attribute is not set, the default will be chosen from the jfed testbed. For the wall and cloudlab, the default is physical machines, for the others, it's virtual machines. This default can be overriden by setting the jfed testbed attribute use_physical_machines to True or False.
* Model: add check for disconnected difMarco Capitani2017-09-261-0/+2
|
* model-storyboard: do not fail if a storyboard-related SSH fails.Marco Capitani2017-09-191-6/+29
|
* Merge branch 'dt-mgmt-enroll-split' into 'master'MCapitani2017-09-131-26/+50
|\ | | | | | | | | model: Perform split between different flows See merge request !64
| * model: Perform split between different flowsSander Vrijders2017-09-121-26/+50
| | | | | | | | | | This performs a split between enrollment, data transfer and management flows.
* | build: Add continuous integrationSander Vrijders2017-09-131-0/+6
|/ | | | This adds CI to Rumba.
* rumba: Update license headersSander Vrijders2017-09-081-3/+7
| | | | | This makes the license headers uniform and adds the authors and a copyright.
* Model & ssh: ssh-related methods renamingMarco Capitani2017-07-281-6/+6
|
* model: Fixed some commentsMarco Capitani2017-07-281-2/+0
|
* Merge branch 'master' into storyboard-implMarco Capitani2017-07-281-4/+19
|\
| * rumba: Better placement of files created by RumbaSander Vrijders2017-06-191-4/+17
| | | | | | | | | | | | | | | | | | Temporary files such as ssh_info, the rspecs, logs, ... are now created in /tmp/rumba to avoid too many files being created and never removed. The VM images and jFed CLI are kept in ~/.cache/rumba to avoid redownloading every reboot. Closes #18, #19
* | ssh & model-storyboard: changed ssh API, added node.execute* methodsMarco Capitani2017-06-301-33/+90
| |
* | Storyboard testedMarco Capitani2017-06-221-12/+28
| |
* | Merge branch 'master' into storyboard-implMarco Capitani2017-06-211-12/+121
|\|
| * IRATI: added per-node policy support, and revamped policy data model.Marco Capitani2017-06-131-19/+59
| | | | | | | | | | | | additional: + fixed small bug rlated to vhost checking in qemu. + example scripts now correctly use policies.
| * Merge branch 'master' into policiesMarco Capitani2017-06-131-55/+179
| |\
| * | model: added policy class + policy-oriented API fixesMarco Capitani2017-04-281-11/+76
| | | | | | | | | | | | | | | | | | | | | | | | + Added policy class + Adapted NormalDIF class to use new policy class + NormalDIF constructor argument policy has changed format (parameters dict is now mandatory, added empty dicts where it was not passed) + Added Node.policies field (type: dict[DIF -> Policy])
* | | Storyboard implemented, to be testedMarco Capitani2017-06-211-23/+119
| | |
* | | Storyboard: initial implementation commitMarco Capitani2017-06-151-4/+2
| |/ |/|
* | Merge branch 'master' into jfed-irati-fixes (rumba access)Marco Capitani2017-06-131-3/+6
|\ \
| * | tools: Update access script to use proxySander Vrijders2017-06-071-3/+6
| | | | | | | | | | | | | | | | | | The proxy command was not added to the file generated with ssh info. This adds it, and changes the access script to use it if it is there.