diff options
| -rw-r--r-- | rumba/elements/experimentation.py | 19 | ||||
| -rw-r--r-- | rumba/prototypes/irati.py | 7 | ||||
| -rw-r--r-- | rumba/prototypes/ouroboros.py | 9 | ||||
| -rw-r--r-- | rumba/prototypes/rlite.py | 6 | ||||
| -rw-r--r-- | rumba/testbeds/jfed.py | 4 | ||||
| -rwxr-xr-x | tools/democonf2rumba.py | 23 | 
6 files changed, 51 insertions, 17 deletions
diff --git a/rumba/elements/experimentation.py b/rumba/elements/experimentation.py index da81c6c..9890975 100644 --- a/rumba/elements/experimentation.py +++ b/rumba/elements/experimentation.py @@ -115,7 +115,9 @@ class Experiment(object):                   git_repo=None,                   git_branch=None,                   log_dir=None, -                 prototype_logs=None): +                 prototype_logs=None, +                 enrollment_strategy='minimal', +                 dt_strategy='full-mesh'):          """          :param testbed: The testbed of the experiment.          :param nodes: The list of nodes in the experiment. @@ -123,6 +125,8 @@ class Experiment(object):          :param git_branch: The git branch of the repository.          :param log_dir: Where to log output of the experiment.          :param prototype_logs: Where the prototype logs its output. +        :param enrollment_strategy: Can be 'full-mesh', 'minimal' or 'manual'. +        :param dt_strategy: For data flows, 'full-mesh', 'minimal' or 'manual'.          """          if nodes is None:              nodes = list() @@ -132,15 +136,22 @@ class Experiment(object):          self.testbed = testbed          # the strategy employed for completing the enrollment phase in          # the different DIFs -        self.enrollment_strategy = 'minimal'  # 'full-mesh', 'manual' +        self.enrollment_strategy = enrollment_strategy  # 'full-mesh', 'manual'          # the strategy employed for setting up the data transfer -        # networks in the DIFs after enrollment -        self.dt_strategy = 'full-mesh'  # 'minimal', 'manual' +        # network in the DIFs after enrollment +        self.dt_strategy = dt_strategy          self.dif_ordering = []          self.enrollments = []  # a list of per-DIF lists of enrollments          self.dt_flows = []  # a list of per-DIF lists of data transfer flows          self.mgmt_flows = []  # a list of per-DIF lists of management flows +        if self.enrollment_strategy not in ['full-mesh', 'minimal', 'manual']: +            raise Exception('Unknown enrollment strategy "%s"' +                                % self.enrollment_strategy) +        if self.dt_strategy not in ['full-mesh', 'minimal', 'manual']: +            raise Exception('Unknown dt strategy "%s"' +                                % self.dt_strategy) +          # Determine log directory          if log_dir is None:              # If it is None, use /tmp/rumba/{project} diff --git a/rumba/prototypes/irati.py b/rumba/prototypes/irati.py index 1967278..ec3e53d 100644 --- a/rumba/prototypes/irati.py +++ b/rumba/prototypes/irati.py @@ -67,7 +67,8 @@ class Experiment(mod.Experiment):                   git_branch='arcfire',                   installpath=None,                   varpath=None, -                 app_mappings=None): +                 app_mappings=None, +                 enrollment_strategy='minimal'):          """          Initializes the experiment class. @@ -81,13 +82,15 @@ class Experiment(mod.Experiment):                               all application which will register to                               any given dif.          :type app_mappings: `List[(str, str)]` +        :param enrollment_strategy: Can be 'full-mesh', 'minimal' or 'manual'.          """          mod.Experiment.__init__(self,                                  testbed,                                  nodes,                                  git_repo,                                  git_branch, -                                prototype_logs=['/tmp/ipcmstart.log']) +                                prototype_logs=['/tmp/ipcmstart.log'], +                                enrollment_strategy=enrollment_strategy)          if installpath is None:              installpath = '/usr'          if varpath is None: diff --git a/rumba/prototypes/ouroboros.py b/rumba/prototypes/ouroboros.py index e72bcf1..016183e 100644 --- a/rumba/prototypes/ouroboros.py +++ b/rumba/prototypes/ouroboros.py @@ -44,7 +44,8 @@ class Experiment(mod.Experiment):      """      def __init__(self, testbed, nodes=None,                   git_repo='git://ouroboros.ilabt.imec.be/ouroboros', -                 git_branch='master'): +                 git_branch='master', enrollment_strategy='minimal', +                 dt_strategy='full-mesh'):          """          Initializes the experiment class. @@ -52,8 +53,12 @@ class Experiment(mod.Experiment):          :param nodes: The list of nodes.          :param git_repo: The git repository to use for installation.          :param git_branch: The branch of the git repository to use. +        :param enrollment_strategy: Can be 'full-mesh', 'minimal' or 'manual'. +        :param dt_strategy: For data flows, 'full-mesh', 'minimal' or 'manual'.          """ -        mod.Experiment.__init__(self, testbed, nodes, git_repo, git_branch) +        mod.Experiment.__init__(self, testbed, nodes, git_repo, git_branch, +                                enrollment_strategy=enrollment_strategy, +                                dt_strategy=dt_strategy)          self.r_ipcps = dict()          self.set_startup_command("irmd") diff --git a/rumba/prototypes/rlite.py b/rumba/prototypes/rlite.py index 32b7df7..1595336 100644 --- a/rumba/prototypes/rlite.py +++ b/rumba/prototypes/rlite.py @@ -42,7 +42,7 @@ class Experiment(mod.Experiment):      def __init__(self, testbed, nodes=None,                   git_repo='https://github.com/vmaffione/rlite', -                 git_branch='master'): +                 git_branch='master', enrollment_strategy='minimal'):          """          Initializes the experiment class. @@ -50,9 +50,11 @@ class Experiment(mod.Experiment):          :param nodes: The list of nodes.          :param git_repo: The git repository to use for installation.          :param git_branch: The branch of the git repository to use. +        :param enrollment_strategy: Can be 'full-mesh', 'minimal' or 'manual'.          """          mod.Experiment.__init__(self, testbed, nodes, git_repo, git_branch, -                                prototype_logs=['/tmp/uipcp.log']) +                                prototype_logs=['/tmp/uipcp.log'], +                                enrollment_strategy=enrollment_strategy)      @staticmethod      def make_executor(node, packages, testbed): diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py index e74e044..924da8f 100644 --- a/rumba/testbeds/jfed.py +++ b/rumba/testbeds/jfed.py @@ -101,9 +101,9 @@ class Testbed(mod.Testbed):          if use_physical_machines is None:              if "wall" in authority or "cloudlab" in authority: -                self.use_physical_machines=True +                self.use_physical_machines = True              else: -                self.use_physical_machines=False +                self.use_physical_machines = False          if image is not None:              if image_owner is None: diff --git a/tools/democonf2rumba.py b/tools/democonf2rumba.py index e398308..795cf22 100755 --- a/tools/democonf2rumba.py +++ b/tools/democonf2rumba.py @@ -106,8 +106,10 @@ def make_experiment(filename, experiment_class, experiment_kwargs,      parsed_difs = {}      for shim_name, shim in shims.items(): -        parsed_difs[shim_name] = (mod.ShimEthDIF(shim_name, -                                                 link_speed=shim['speed'])) +        parsed_difs[shim_name] = (mod.ShimEthDIF( +            shim_name, +            link_quality=mod.LinkQuality(rate=shim['speed'])) +        )      for dif_name, dif in difs.items():          parsed_difs[dif_name] = (mod.NormalDIF(dif_name)) @@ -177,7 +179,7 @@ if __name__ == '__main__':          '--verbosity', metavar='VERBOSITY', type=str,          default='INFO',          choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], -        help='Path to the config file to parse') +        help='Rumba output verbosity')      subparsers = parser.add_subparsers(dest='testbed')      emulab_p = subparsers.add_parser('emulab', help='Use emulab testbed') @@ -188,16 +190,18 @@ if __name__ == '__main__':      for t in [emulab_p, jfed_p, qemu_p, fake_p]:          setup_testbed_common_args(t) -    qemu_p.add_argument('-B', '--bzimage', metavar='BZIMAGE', type=str, +    qemu_p.add_argument('-B', '--bzimage-path', metavar='BZIMAGE', type=str,                          required=True,                          help='path to the bzImage file to use') -    qemu_p.add_argument('-I', '--initramfs', metavar='INITRAMFS', type=str, +    qemu_p.add_argument('-I', '--initramfs-path', metavar='INITRAMFS', type=str,                          required=True,                          help='path to the initramfs file to use')      qemu_p.add_argument('-V', '--use_vhost', action='store_true',                          default=False, help='Use vhost')      qemu_p.add_argument('-Q', '--qemu_logs_dir', metavar='QEMU_LOGS', type=str,                          default=None, help='path to the folder for qemu logs') +    qemu_p.add_argument('--public-key-path', metavar='PATH', type=str, +                        default=None, help='path to the user ssh public key.')      emulab_p.add_argument('-R', '--url', metavar='URL', type=str,                            default="wall2.ilabt.iminds.be", @@ -217,6 +221,15 @@ if __name__ == '__main__':      jfed_p.add_argument('-I', '--image', metavar='IMAGE', type=str,                          default=None,                          help='Image to be used') +    jfed_p.add_argument('--image-custom', metavar='I_CUSTOM', type=bool, +                        default=False, +                        help='Is the image a custom one?') +    jfed_p.add_argument('--image-owner', metavar='I_OWNER', type=str, +                        default=None, +                        help='Creator of the image') +    jfed_p.add_argument('--use-physical-machines', metavar='USE_PM', type=bool, +                        default=None, +                        help='Try to allocate physical machines if True')      args = parser.parse_args()  | 
