1. 22 Jan, 2018 1 commit
  2. 16 Apr, 2014 1 commit
  3. 15 Apr, 2014 1 commit
    • Leigh Stoller's avatar
      Latest attempt to improve vnode booting. See below. · 850b5ab7
      Leigh Stoller authored
      1. Change hackwaitandexit on the client, to return zero if the guest
         has not finished setting up. We used to treat 30 seconds as too
         long must have failed, but this is really not the case, especially
         on busy machines.
      
      2. Fix up vnode_setup exit code handling, we were losing non-zero
         status cause of not shifting it down, and so failures were never
         being reported.
      
         New: If the vnode setup does return failure, set its event state to
         TBFAILED to cut short the wait in os_setup and the IG monitor
         process. On the surface this seems like an obviously good idea, but
         I'm sure it will come and bite me when I least expect it.
      
      3. Change GeniAggregate Start/Restart to ignore vnode_setup failures,
         and let the monitor watch for TBFAILED or timeout. There are just
         too many ways for it to fail, and we want to allow vnodes that did
         not fail to set up normally, and give the user the choice to
         restart the ones that failed.
      
      4. Don't let frisbee run forever, protect with timeout. I need to use
         Mike's new -T option, but not till I actually get new frisbee
         pushed out.
      850b5ab7
  4. 07 Apr, 2014 1 commit
  5. 14 Nov, 2012 1 commit
    • Leigh Stoller's avatar
      Move rpm/tar download from boss to ops, to avoid wasted network traffic. · f37cd9dc
      Leigh Stoller authored
      To turn this option on, define SPEWFROMOPS=1 in your defs file. This
      will result in a redirect message from boss which will send the wget
      client over to ops. 
      
      A perl setuid root cgi script is run from the webserver on ops when a
      /spewrpmtar request is made. This script sends the key,nodeid,file
      over to boss via XMLRPC (as elabman). The return is simple yes or no,
      the caller is allowed (not allowed) to have that file. Since the
      ops script runs as root, it can spew the file back to the caller.
      
      Note that the elabinelab checks for the elabinelab source code are
      gone; we are now open source. Also, we spew that file from /share now,
      to be consistent.
      f37cd9dc
  6. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  7. 07 Dec, 2010 1 commit
  8. 02 Nov, 2010 1 commit
  9. 11 Oct, 2010 1 commit
    • Leigh Stoller's avatar
      Work on an optimization to the perl code. Maybe you have noticed, but · 92f83e48
      Leigh Stoller authored
      starting any one of our scripts can take a second or two. That time is
      spent including and compiling 10000s of thousands of lines of perl
      code, both from our libraries and from the perl libraries.
      
      Mostly this is just a maintenance thing; we just never thought about
      it much and we have a lot more code these days.
      
      So I have done two things.
      
      1) I have used SelfLoader() on some of our biggest perl modules.
         SelfLoader delays compilation until code is used. This is not as
         good as AutoLoader() though, and so I did it with just a few 
         modules (the biggest ones).
      
      2) Mostly I reorganized things:
      
        a) Split libdb into an EmulabConstants module and all the rest of
           the code, which is slowly getting phased out.
      
        b) Move little things around to avoid including libdb or Experiment
           (the biggest files).
      
        c) Change "use foo" in many places to a "require foo" in the
           function that actually uses that module. This was really a big
           win cause we have dozens of cases where we would include a
           module, but use it in only one place and typically not all.
      
      Most things are now starting up in 1/3 the time. I am hoping this will
      help to reduce the load spiking we see on boss, and also help with the
      upcoming Geni tutorial (which kill boss last time).
      92f83e48
  10. 18 Dec, 2009 1 commit
    • Leigh Stoller's avatar
      Changes to support the SPP nodes. My approach was a little odd. · fd015646
      Leigh Stoller authored
      What I did was create node table entries for the three SPP nodes.
      These are designated as local, shared nodes, reserved to a holding
      experiment. This allowed me to use all of the existing shared node
      pool support, albeit with a couple of tweaks in libvtop that I will
      not bother to mention since they are hideous (another thing I need to
      fix).
      
      The virtual nodes that are created on the spp nodes are figments; they
      will never be setup, booted or torn down. They exist simply as place
      holders in the DB, in order hold the reserved bandwidth on the network
      interfaces. In other words, you can create as many of these imaginary
      spp nodes (in different slices if you like) as there are interfaces on
      the spp node. Or you can create a single spp imaginary node with all
      of the interfaces. You get the idea; its the reserved bandwidth that
      drives the allocation.
      
      There are also some minor spp specific changes in vnode_setup.in to
      avoid trying to generalize things. I will return to this later as
      needed.
      
      See this wiki page for info and sample rspecs:
      
      https://www.protogeni.net/trac/protogeni/wiki/SPPNodes
      fd015646
  11. 24 Sep, 2009 1 commit
  12. 19 Aug, 2009 1 commit
  13. 17 Aug, 2009 1 commit
  14. 11 Jun, 2009 1 commit
  15. 08 Dec, 2008 1 commit
  16. 02 Dec, 2008 1 commit
  17. 08 Sep, 2008 2 commits
  18. 03 Sep, 2008 1 commit
  19. 06 Feb, 2008 1 commit
    • David Johnson's avatar
      Add support for including nodes from multiple PLCs in experiments. Right · c44c47c9
      David Johnson authored
      now, this is keyed off nodetype.  Lots of hardcoded constants and config
      stuff moved to attributes in the db.  You can now set per-PLC and
      per-slice attributes, so you can (for instance) use different auth info
      whenever you want.  Experiments can use preexisting slices if somebody
      sets up the db before swapin.  Also, we no longer have to rely on
      slices.xml to sync up nodes/sites with PLC... can use xmlrpc instead.
      
      Lots of code cleanup, improved some abstractions, etc.
      c44c47c9
  20. 29 Aug, 2007 2 commits
  21. 16 Aug, 2007 1 commit
  22. 18 Dec, 2006 1 commit
    • David Johnson's avatar
      Bugfix for plab nodes. This problem was tripped by Kevin. What was · e53e402f
      David Johnson authored
      happening was that when Kevin swapmod'd to get rid of failed nodes,
      he just took the bad ones out.  This forced a change in the
      vname<->vnode mapping, and the failed node got put in a state
      (RES_INIT_CLEAN) that vnode_setup couldn't handle for plab nodes.
      Basically, the problem is that vnode_setup was assuming that the
      RES_INIT_CLEAN meant that the plab vnode needed to be allocated --
      but it was already allocated in the previous swap.
      e53e402f
  23. 11 Oct, 2006 1 commit
    • Kirk Webb's avatar
      · 471d1d26
      Kirk Webb authored
      Change the way vnode_setup handles plab nodes a bit to avoid a couple of
      buggy situations.
      
        * Don't try vnodesetup -h on plab nodes
      
      This can hang, or even fail.  Since nothing useful is conveyed by this
      step, just skip it, set the node's state to SHUTDOWN, and ask pl_conf
      on the node to remove the vserver.
      
        * Set plab node's alloc state to TBDB_ALLOCSTATE_RES_INIT_DIRTY after
          instantiation.
      
      This avoids a bug where Emulab cluster nodes fail to come up, and so
      os_setup never waits on the plab vnodes (now that they are started in
      parallel with physical node setup).  Previously their alloc state made
      them look clean, and so the vservers would not be reaped during
      teardown.
      471d1d26
  24. 08 Sep, 2006 1 commit
    • Kirk Webb's avatar
      · 3a3c95fb
      Kirk Webb authored
      Parallelize the setup of plab vnodes alongside the loading of local
      physical nodes.  We fork vnode_setup to operate on the plab vnodes just
      before firing off local reload/reboot/reconfig operations.  The status
      of the plab vnode setup setup is checked just before firing off vnode_setup
      for any local vnodes.  The ISUP wait for plab vnodes continues to fall
      within the same stage as wating for local vnodes.  New arguments have been
      added to vnode_setup to tell it to only operate on specific vnode types.
      '-j' for local jail nodes, and '-p' for plab nodes.  If neither are
      specified, the default is to operate on all types.
      3a3c95fb
  25. 13 Jun, 2006 2 commits
    • Kirk Webb's avatar
      · 726cf6bd
      Kirk Webb authored
      Fix the last fix...
      726cf6bd
    • Kirk Webb's avatar
      · ef07c4cc
      Kirk Webb authored
      Fix up how vnode_setup wait()s for it's children to deal with a change in how
      perl deals with interrupted system calls.  What the script was doing
      previsiously was iffy anyway.
      ef07c4cc
  26. 22 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · c4d0c78a
      Kirk Webb authored
      libplab.py.in:
      
      Exit right away when signalled while trying to perform a remote command.
      
      vnode_setup.in:
      
      More info when a timeout occurs, and reduce the execution spacing a little.
      c4d0c78a
  27. 21 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · 21f627fa
      Kirk Webb authored
      Add a bit of additional output info, and fix a little bug in rc.inplab
      21f627fa
  28. 20 May, 2004 1 commit
  29. 19 Mar, 2004 1 commit
  30. 17 Mar, 2004 2 commits
    • Kirk Webb's avatar
      More plab updates: · bbccd21a
      Kirk Webb authored
      * created "-w" vnode_setup option that specifies how long to wait (per-vnode)
        for setup to complete before giving up.
      * added sitevars for plab batch parallelism size and vnode setup timeout
      * modified os_setup to use above sitevars when invoking vnode_setup for an
        experiment containing plab vnodes.
      bbccd21a
    • Kirk Webb's avatar
      Snapshot. · 856c2509
      Kirk Webb authored
      * Changed the way options are parsed in the python scripts so that modules
        can easily add and use their own options independent of top-level scripts.
      
      * Added --noIS and --pollNodes module options.
      
      * Added batch option to vnode_setup (degree of parallelization)
        - defaults to 10
      
      * Major updates to plamonitord
        - batches testing, currently to 40
      856c2509
  31. 11 Mar, 2004 1 commit
  32. 26 Feb, 2004 1 commit
  33. 03 Jan, 2004 1 commit
    • Kirk Webb's avatar
      Some plab PLC updates: · 8a669aa2
      Kirk Webb authored
      * use IP addr rather than finickey hostname when communicating with PLC.
      * make Node._create() aware of "already assigned" condition.
      * Bump vnode_setup timeout back to two minutes (for now).
      8a669aa2
  34. 30 Dec, 2003 1 commit
    • Kirk Webb's avatar
      Commit to usher in the new PLC regime. Added a config variable to · 6d205dc5
      Kirk Webb authored
      vnode_setup for the timeout on waiting for child processes.  I've
      set it to 10 minutes since all ancillary setup programs have their own
      time bounds (I think - the plab ones do anyway).
      
      The function of plabmonitord has changed slightly.  Instead of setting
      up and tearing down vnodes, its job is to just setup the emulab management
      sliver on plab nodes in hwdown.  Once the vserver comes up and reports isalive,
      it moves the node out of hwdown.  Currently, it first tries to tear down the
      vserver before reinstantiating it.  In the future, we could get fancier and
      try interacting with the service sliver directly before simply tearing it down.
      
      All new plab nodes now start life in hwdown, and must be summoned forth
      into production by plabmonitord.
      
      This commit does NOT include support for the node-local httpd.  That will
      come soon.
      6d205dc5
  35. 12 Dec, 2003 1 commit
  36. 17 Nov, 2003 1 commit
    • Leigh Stoller's avatar
      Merge the two state machines (batchstate and state) into a single · 2025e0bd
      Leigh Stoller authored
      state machine (state). All of the stuff that was previously handled by
      using batchstate is now embedded into the one state machine. Of
      course, these mostly overlapped, so its not that much of a change,
      except that we also redid the machine, adding more states (for
      example, modify phases are now explicit. To get a picture of the
      actual state machine, on boss:
      
      		stategraph -o newstates EXPTSTATE
      		gv newstates.ps
      
      Things to note:
      
      * The "batchstate" slot of the experiments table is now used solely to
        provide a lock for batch daemon. A secondary change will be to
        change the slot name to something more appropriate, but it can
        happen anytime after this new stuff is installed.
      
      * I have left expt_locked for now, but another later change will be to remove
        expt_locked, and change it to active_busy or some such new state name in
        the state machine. I have removed most uses of expt_locked, except those
        that were necessary until there is a new state to replace it.
      
      * These new changes are an implementation of the new state machine,
        but I have not done anything fancy. Most of the code is the same as
        it was before.
      
      * I suspect that there are races with the batch daemon now, but they
        are going to be rare, and the end result is probably that a
        cancelation is delayed a little bit.
      2025e0bd