1. 10 Dec, 2004 1 commit
  2. 09 Dec, 2004 5 commits
    • Leigh B. Stoller's avatar
      By the pervision of TCL, I have hidden the details: · 1c0efe2c
      Leigh B. Stoller authored
      	source tb_compat.tcl
      	set ns [new Simulator]
      
      	tb-elab-in-elab 1
      	tb-set-inner-elab-eid two-simple
      	tb-set-security-level Red
      
      	$ns run
      
      tbsetup/ns2ir/elabinelab.ns has all the goo, which is sourced from the
      NS run subroutine, using "uplevel 1" so that the context is correct.
      You can of course include you own goo, in which case the default goo
      will be skipped.
      1c0efe2c
    • Timothy Stack's avatar
      · 1f16a276
      Timothy Stack authored
      Make the dots move on the robot map web page:
      
      	* configure, configure.in: Add robots/emc/loclistener.
      
      	* event/lib/event.h, event/lib/event.c: Add some helper functions
      	for sending events and parsing args.
      
      	* event/lib/tbevent.py.tail, event/lib/tbevent.py: Add support for
      	clients that register using keyfiles.
      
      	* robots/emc/GNUmakefile.in: Install loclistener on boss.
      
      	* robots/emc/emcd.h, robots/emc/emcd.c: Send update events every
      	two seconds with the node's location.  Fill out a little more of
      	the event callback, not sure what to do with the requested
      	destination though.  Add some code to the vmc callback to store
      	position updates.  Changed the config file format to also include
      	the vname of the robot.
      
      	* robots/emc/loclistener.in: Listen for NODE MODIFY events with
      	coordinates and update the database accordingly.  Kinda sucks, but
      	it works.
      
      	* robots/emc/test_emcd.config: Add vnames to the robots to reflect
      	change in the config file format.
      
      	* tbsetup/ns2ir/node.tcl: Add nodes to the virt_agents table.
      1f16a276
    • Leigh B. Stoller's avatar
      Okay, here is the current development approach for dealing with · 5a4e9df8
      Leigh B. Stoller authored
      ElabinElab experiments that wrap another experiment, either firewalled
      or not. This instead of my security level stuff, that I decided was
      too much of a pain the user, at least for now. New NS syntax:
      
      	tb-set-inner-elab-eid two-simple
      
      In the ElabinElab file, sets the name of an existing experiment in the
      same project. Experiment is parsed, and after the parse we notice in
      tbprerun that we have an inner eid, so we reparse the NS file, only
      this time we pass in the maximum number of nodes needed by the inner
      eid (tbprerun now computes min/max nodes at prerun time, instead of
      later as first part of swapin). This number is used to allocatethe
      appropriate number of inner experimental nodes. Why do it this way?
      Cause the NS parser is the only tool we have for generating the virt
      topology, and I do not want go down the path of inventing a new
      frontend.
      
      Anyway, after the reparse, we now have the proper number of nodes in
      the wrapper experiment. Now its simply a matter of copying over the
      type and fixnode info from the inner experiment to the outer
      experiment.  Why? So that when the outer experiment is swapped in, it
      gets the nodes (of the right type/fixnode) that the inner experiment
      is going to want later, when it is swapped in by the inner emulab!
      
      Another approach would be to make elabinelab and elabinelab_eid
      options to batchexp (and thus the web form and XMLRPC interface) so
      that we can avoid the double parse. I suspect people do not want more
      crap on the web form, so I did not do it this way.
      5a4e9df8
    • Leigh B. Stoller's avatar
      When the elabinelab experiment is also firewalled, ssh into the · 12c44d00
      Leigh B. Stoller authored
      firewall node and disable the rules during the inner elab setup, and
      then turn them back on after the inner boss has rebooted. In the case
      that an experiment is to be launched inside, launch the experiment
      async and then turn rules back on. Technically, this should be proxied
      through the firewall instead of directly, but this is okay for now.
      
      As for experiment teardown, I am not doing anything yet since the
      closed firewall lets ssh through, and thats all I need to teardown the
      inner elab.
      
      Also during teardown, if DHCPD cannot be killed on inner boss, then
      skip rest of the steps and return okay so that the rest of experiment
      teardown proceeds (if need be, inner nodes will be power cycled). Not
      being be able to kill DHCPD can happen for lots of reasons (like,
      experiment never setup in the first place).
      12c44d00
    • Leigh B. Stoller's avatar
      Trivial print statement change. · e1a4917a
      Leigh B. Stoller authored
      e1a4917a
  3. 08 Dec, 2004 1 commit
  4. 07 Dec, 2004 3 commits
    • Leigh B. Stoller's avatar
      A number of changes: · 261b35fe
      Leigh B. Stoller authored
      * Always run assign_wrapper using -t mode. This just runs the top file
        stuff, and writes the min/max nodes into the DB.
      
      * Then look at the security level for the experiment, and if orange or
        red, create a parallel elabinelab experiment to run it in. This is a
        completely new experiement in addition to the original. The two
        experiments are linked with some DB state so we know what experiment
        to fire off inside the inner elab. I am using a template NS file and
        passing in the number of nodes computed in the previous step above.
        The template includes the firewall rules.
      
        This is quote hokey. It should be more invisible to the user.
      
        I have not dealt with yellow (just a firewall).
      
      * I added some stats code so that we update the experiement_stats
        record with the elabinelab status and security level.
      
      * Cleanup how errors were handled and get rid of silly duplicated
        code.
      261b35fe
    • Leigh B. Stoller's avatar
      * After rebooting the inner nodes, ssh into the inner boss and run · dd3b8989
      Leigh B. Stoller authored
        utility script to wait for them to reboot and reach PXEWAIT. This
        indicates inner emulab is raelly ready
      
      * When an inner experiment is defined (elabinelab_eid in experiments
        table) fire that experiment off by doing an ssh into inner boss. I
        am currently doing this with -w (wait mode) but eventually will need
        to do it async for experiments in which the control net is turned
        off. Also, not actually swapping experiment in yet since multicast
        and frisbee are still broken inside.
      
      * Add -k mode for cleaning up. The intent of this is to avoid power
        cycling all the nodes cause outer elab cannot reboot or ipod them.
        Goes like this:
      
        * Clear the inner_elab_role for experiment's nodes from the reserved
          table.
      
        * Clear def_boot_osid,next_boot_osid,temp_boot_osid for nodes. This
          is bogus cause os_select whines about doing this, but the point is
          to make sure that all nodes will go into PXEWAIT when they reboot.
          We could have them go into MFS, but thats bound to cause problems
          if inner elab has a lot of nodes (remember, cannot trust what is
          on disk). This needs more thought.
      
        * Regen and restart outer dhcpd. Nodes will become part of outer
          emulab on next boot cycle.
      
        * SSH into inner boss and kill inner DHCPD so that there will not be
          any DHCPD responses on inner control network.
      
        * SSH into inner boss and have it reboot all inner nodes.
      
        * Wait for node to reach PXEWAIT.
      
        The above needs more thought wrt firewalled experiments and isolated
        control network.
      
      * Kill off some old MFS copy code since we now get those direct from
        website.
      dd3b8989
    • Mike Hibler's avatar
      If osload part of swapin fails and there is a firewall involved, it is likely · f336fe42
      Mike Hibler authored
      that the firewall rules are preventing essential communication and causing the
      failure, so don't retry.
      
      We should probably only do this if the user has specified additional
      firewall rules.  But right now, I may screw up the default rules too!
      f336fe42
  5. 06 Dec, 2004 5 commits
  6. 03 Dec, 2004 6 commits
  7. 02 Dec, 2004 1 commit
  8. 01 Dec, 2004 4 commits
  9. 30 Nov, 2004 1 commit
  10. 29 Nov, 2004 1 commit
  11. 17 Nov, 2004 5 commits
  12. 16 Nov, 2004 2 commits
    • Leigh B. Stoller's avatar
      ElabinElab change: small org change to deal with images that do not · 1efb3ee4
      Leigh B. Stoller authored
      exist; fire up frisbeelauncher early to see if it can get the image.
      This is harmless in that frisbeelauncher can be called multiple times
      anyway, so when its called is not really a big deal.
      1efb3ee4
    • Leigh B. Stoller's avatar
      ElabInElab Addition: New script that uses the frisbee client to · 6777d279
      Leigh B. Stoller authored
      download images from the outer emulab. This script is invoked from
      frisbeelauncher when ELABINELAB=1 and the filename does not exist
      (thus attempting to get the image file before bailing). The
      frisbeeimage script uses a new method in the RPC server to fire up a
      frisbeed (using frisbeelauncher on the outer Emulab), subject to the
      usual permission checks against creator of the elabinelab experiment
      (I assume that the creator will have access to any outer images that
      are used inside the inner emulab). If outer frisbeelauncher succeeds,
      its return value is the load_address (IP:port), which is used to fire
      up a frisbee client to get the image file and write it out (using
      Mike's new -N option that just dumps the raw data to file). Once the
      image is downloaded, control returns to inner frisbeelauncher and
      proceeds as normal.
      
      I whacked this together pretty quickly. Under heavy usage it might hit
      a race condition or two, but I do not expect that to happen in an
      inner elab for a while.
      6777d279
  13. 15 Nov, 2004 3 commits
    • Leigh B. Stoller's avatar
      Move the frisbee mcast address and port (not really needed) into · fc92b2b3
      Leigh B. Stoller authored
      configure so that we can localize it for inner emulab. Not good to
      overlap the address space between inner and outer emulab if inner
      boss is going to use frisbee client to suck images from outer frisbeed.
      fc92b2b3
    • Leigh B. Stoller's avatar
      A bunch of ElabInELab changes. · 10b116e0
      Leigh B. Stoller authored
      * snmpit: When ElabInELabis true, use the routines in the new
        snmpit_remote.pm library for setting up and tearing down vlans for an
        experiment. At present, only these two operations are proxied out to
        the outer emulab.
      
      * snmpit_remote.pm: A new little library that uses the XMLPRC server on
        the outer emulab to setup and destroy vlans for an inner experiment.
        This code is used from snmpit (see above).
      
      * snmpit_lib.pm: A couple of minor changes for the server side of the
        proxy operation.
      
      * snmpit.proxy.in: A new perl module that is invoked from the RPC
        server.  This proxy sets up and tears down vlans for an inner elab.
        The basic model is that the container experiment will have lots of
        vlans for various individual experiments running on the inner emulab.
      
      * swapexp: A couple of minor elabinelab hacks.
      
      * tbswap: For elabinelab experiments, reconfig/restart dhcpd when
        tearing down the experiment, and call out to new elabinelab script
        when setting up an elabinelab experiment. There is no provision for
        swapmod at this time.
      
      * elabinelab: A new script to create the inner emulab. Does all kinds of
        gross DB stuff then more gross stuff on the inner ops and boss.
      10b116e0
    • Leigh B. Stoller's avatar
      ElabInElab: When operating inside an inner emulab, use the libxmlrpc · 9aab7322
      Leigh B. Stoller authored
      library to call out to the outer emulab to do the actual power cycle.
      9aab7322
  14. 12 Nov, 2004 1 commit
  15. 10 Nov, 2004 1 commit