1. 24 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 623b9be0
      Kirk Webb authored
      Fix up plab renewal for current scheme.  We must now go out to each sliver
      individually and ask for it to be renewed.  I've added a new script to be
      run out of cron that will run through and attempt to renew all active slices.
      If a node cannot be renewed with its slice and comes sufficiently close to
      it's recorded expiration (currently two weeks out), mail will be sent to
      testbed ops warning about this situation.  Note that there will only be
      one email message per slice, containing a list of all nodes at risk for
      expiration.  The plab renewal daemon will no longer run as a result of
      this change.  Note that this is sort of a hack.  The better way would be
      to have the daemon perisistenly try to renew nodes that have failed until
      success, but that will take more work, and I might farm it off to the
      plab monitoring daemon anyway.
      623b9be0
  2. 15 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 3b7a67ce
      Kirk Webb authored
      Pass experiment description through to Planetlab as the slice description
      when creating a slice.  Also mention the Planetlab AUP and importance of
      providing an accurate slice description in the documentation.  The ez
      interface also briefly mentions the importance of the slice description.
      3b7a67ce
  3. 13 Mar, 2006 1 commit
    • Kirk Webb's avatar
      · 99a5bd48
      Kirk Webb authored
      Use a file to manage the list of ignored/allowed nodes instead of hard coding
      them into the source.  The files are:
      
      @prefix@/etc/plab/{IGNOREDNODES|ALLOWEDNODES}
      99a5bd48
  4. 27 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · a781089f
      Kirk Webb authored
      Added code to insert mappings into the plab_site_mapping table.
      a781089f
  5. 22 Jan, 2006 3 commits
    • Kirk Webb's avatar
      · 0418a8ea
      Kirk Webb authored
      OK - really exit when I say so.  Note: sys.exit() _and_ sys._exit() throw
      exceptions.  Must use os._exit() to exit immediately.
      0418a8ea
    • Kirk Webb's avatar
      · 78d18be0
      Kirk Webb authored
      More info when exiting due to a signal.
      78d18be0
    • 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
  6. 09 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · 55268d31
      Kirk Webb authored
      More turd wrangling.  Be sure to kill off child processes when the parent
      receives a signal.  This should prevent the slow, but steady buildup of
      stuck ssh processes on boss resulting from the monitor daemon trying to
      bring back nodes.
      55268d31
  7. 04 Jan, 2006 1 commit
    • Kirk Webb's avatar
      · af1963ae
      Kirk Webb authored
      Avoid starting an intermediate shell when executing commands.
      af1963ae
  8. 21 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · afdc0742
      Kirk Webb authored
      Um, yeah, update the interfaces and widearea_nodeinfo tables too when a plab
      node's attributes change.  Duh..  DB fixed up.
      afdc0742
  9. 20 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · 58a82518
      Kirk Webb authored
      Slice renewal updated to work with new PLC API.  Emulab-created plab slices
      are no longer in danger of falling out from under our users!
      58a82518
  10. 19 Dec, 2005 2 commits
    • Kirk Webb's avatar
      · d6ac9bcd
      Kirk Webb authored
      Ignore a couple of plab nodes with duplicate MAC addrs until they are fixed.
      These nodes won't be available for allocation in the meantime.
      d6ac9bcd
    • Kirk Webb's avatar
      · a0a39a39
      Kirk Webb authored
      A few fixes for plab.
      
      assign_wrapper:
      
      Assign unique sshd port numbers.  This was only being done for pcvms for some
      reason.
      
      libplab.py:
      
      Make 'nobody' the contact uid for newly createed plab nodes (instead of
      Brent Chun).
      
      rc.inplab"
      
      Create /local/logs inside plab vservers.
      a0a39a39
  11. 15 Dec, 2005 1 commit
    • Kirk Webb's avatar
      · 41c54939
      Kirk Webb authored
      The revived Plab interface is here!
      
      Lots of updates to the plab backend, including improved plab <-> elab node
      id translation and update handling.  Includes support for the current PLC
      API, and the new pl_conf node manager interface API.  Several more db library
      routines were ported from the perl library to the python one to support the
      new code (mostly the node_id tracking stuff).  Fixes to the client side and
      also a rootball creation cleanup (binaries removed from the CVS repo).
      
      There are also enhancements to the experiment view page for experiments
      including plab nodes: site and widearea hostname are now displayed along
      with the other node information.
      
      Note that the way setup timeout for vnodes is calculated has been changed a
      bit.  Instead of using a hardwired base timeout, the base timeout is now
      based on the reload_waittime database field, which comes from the 'OS'
      (e.g., FBSD-JAIL, RHL-PLAB) the vnode runs.
      
      The default max duration for a plab slice created through the plab_ez interface
      is set to 1 year, and linktest is currently disabled and hidden through
      the ez interface.
      
      There is still work to do, but this checkin brings with it a functional
      plab portal!
      41c54939
  12. 13 Sep, 2004 2 commits
    • Kirk Webb's avatar
      Enable polling mode node setup by default until we get v3 plab support · 4372ebac
      Kirk Webb authored
      finished up (waiting for resolution of the service slice bootstrapping
      issue).
      4372ebac
    • Kirk Webb's avatar
      A couple of minor fixups: · 2240b14e
      Kirk Webb authored
      * the python mysql client returns a datetime object rather than a string
        sequence - must convert it to string
      
      * PLAB moved the URL to their programmatic API - adjusted on our end.
      
      * PLAB changed format of expiration time in listSlices() RPC from a
        datetime string to seconds since the epoch in UTC.
      
      There is still an outstanding issue that I have mailed plab support about:
      The listSlices() RPC is only returning the first entry in the list of slices
      we have allocated at PLC (the same call used to grab all slice entries).
      This is causing us to fail on renewal for the unlisted slices.
      2240b14e
  13. 19 Jul, 2004 1 commit
    • Kirk Webb's avatar
      · 03921d0e
      Kirk Webb authored
      A bunch of plab interface updates that I've worked on over the last while.
      Most significant is the revamped renewal code that tries to push the leases
      out to the policy defined maximum of two months during each iteration through
      the plabrenewd daemon loop.
      
      - added python lib code to get SiteVars
      - Fixed up comments to reflect current code operation
      - revamped renewal code (again)
        - changed all times to UTC for consistency
        - removed node-level renew invocation in favor of slice-level
          - if backend module requires node-level renewals, it must handle them
            itself in the slice-level function
          - better reporting
      - set admin bit if creating svc slice
        - other updates to ensure admin bit is preserved
      - update rootball handling function naming
      - updated tryXmlRpcCmd() to accept two new sets of strings, and a callback
        function.  The strings represent Faults that either 1) indicate success,
        or 2) indicate failure.  The callback is another optional error handling
        method, allowing the caller to decide how to treat individual faults as
        they see fit.
      - updated the backend module code to take advantage of the new string
        match status identifiers in tryXmlRpcCmd()
      - completely revamped slice renewal code in mod_PLC backend
        - compare against real lease expiration data gathered direct from PLC
        We used to just infer from our originally requested lease length
        - warn when our notion of expiration doesn't match PLC's
      - added agent caching and lease expiration info caching to mod_PLC
        backend.
      03921d0e
  14. 23 Jun, 2004 1 commit
    • Leigh B. Stoller's avatar
      Switch to "dynamic" creation of certain virtual nodes (jail/pcvm and · 4d5620c2
      Leigh B. Stoller authored
      vserver/pcplab). Rather then 10000s of fixed node entries in the DB,
      create node entries on the fly as needed (assign_wrapper), and then
      delete them when they are no longer used (nfree). When new nodes check
      in, no longer create all those nodes table entries (utils/newnode.in
      and tbsetup/plab/libplab.py.in).
      
      I've added a new library: db/Node.pm which is something I started a
      while back, and decided to commit, along with the support for creating
      and deleting virtual nodes. CreateVnodes() creates a new set of nodes,
      choosing non-conflicting names in the DB, and then immediately
      reserves them to the pid/eid specified. DeleteVnodes takes a list of
      vnodes and deletes them from nodes,reserved,etc. This library does a
      few other things which I am going to be playing with, so you might
      want to go read the comment at the top of the file. Feel free to speak
      up. CreateVnodes() is from called assign_wrapper when a node type has
      the "isdynamic" property. Otherwise does the existing avail/nalloc
      stuff. DeleteVnodes() is called from nfree when the node type has the
      isdynamic property.
      
      I've added a script (sql/delvnodes.pl) to run after updating the DB
      and software. All free pcvm and pcplab virtual nodes are deleted from
      the DB; reserved ones will get deleted whenever their experiment ends.
      I've noted all of this in doc/UPDATING, including setting the
      isdynamic property on pcvm in the node_types table.
      
      I've left tbsetup/plab/libplab.py.in to create a single pcplab node
      for the management sliver (still called -20). We can worry about this
      later.
      
      All this for modelnet?
      4d5620c2
  15. 23 Apr, 2004 1 commit
  16. 19 Apr, 2004 1 commit
  17. 25 Mar, 2004 1 commit
    • Kirk Webb's avatar
      · b6da3a51
      Kirk Webb authored
      * Node.__copy() now uses rsync instead of weird 'dd' pipe
        - can do since sudo now works from square one after sliver instantiation
      
      * Made fixsudo and addgroup operations in emulabify() non-fatal
        - setup sometimes works even if they don't (esp. on dirty sliver)
      
      * option parser fixes
      
      * Shutup stupid warning messages from remote commands (tcgetattr, sudo lecture)
      b6da3a51
  18. 23 Mar, 2004 3 commits
    • Kirk Webb's avatar
      · 97a59692
      Kirk Webb authored
      * add "slicename" arg to Slice() constructor
        - so it can be specified manually
      
      * pushed up vnode setup wait time in plabmonitord to 16 minutes.
      97a59692
    • Kirk Webb's avatar
      Couple of items: · ed848fd5
      Kirk Webb authored
      * Small fix to DBQueryFatal in libdb.py: () is a valid return value,
        don't fail on it(insert/replace); do fail if DBQuery returns None though.
      
      * Fix up libplab.py to not choke on new plab_slices column.
      ed848fd5
    • Kirk Webb's avatar
      Snapshot. · fd6d8cc9
      Kirk Webb authored
      * incompatible option handling and use removed from gen purpose libs
      * Global PLC mutex implemented, but currently disabled
      * plabmonitord parallelization cut in half (for now)
      
      I'm still very frustrated with option handling/passing.  Needs more thought,
      but the primary issue is that there really isn't a global variable space in
      python (global to file, yes, but not global to interpreter invocation).
      
      I've learned that __builtin__ might work for this, but it seems hacky..
      fd6d8cc9
  19. 18 Mar, 2004 1 commit
  20. 17 Mar, 2004 2 commits
    • Kirk Webb's avatar
      More updates: · 3ae7da68
      Kirk Webb authored
      * Added comments
      * Added Emulab copyright
      * made mod_PLC handle the "not assigned" error case in freeNode()
        - optimization and less log clutter.
      * bug fix in plabmonitord (ISUP decection)
      3ae7da68
    • 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
  21. 03 Mar, 2004 1 commit
    • Kirk Webb's avatar
      More plab updates/changes · d4a887e5
      Kirk Webb authored
      * implemented PLC slice renewal
      * restructured daemon code/startup
        - removed getfree daemon (replaced by plabdiscover; run from cron)
        - moved generic daemonizing code into libtestbed (class)
        - created plabrenewd - small script that utilizes daemonizing class
        - removed plabdaemon file.
        - updated bossnode startup scripts
      * changed slice prefix - PLC denies permission w/ anything other than "utah"
      * Minor semantic changes to module API to be more consistent with other parts.
      * Some bug fixes.
      d4a887e5
  22. 02 Mar, 2004 1 commit
    • Kirk Webb's avatar
      Some updates to plab support: · b7c376c3
      Kirk Webb authored
      * removed unused and not generally useful ping checking
      * reorganized node discovery and added node info updating
        - e.g., update IP, SITE, or HOSTNAME when they have changed
        - no longer part of the backend module as this is independent of
          which backend is used; may modularize it due to plab's new "trumpet"
          service, which is basically its node DB available via a decentralized
          transport/API.
      * introduced new method of getting node info - use plab sites.xml file
      * various other cleanups.
      b7c376c3
  23. 26 Feb, 2004 1 commit
  24. 25 Feb, 2004 2 commits
    • Kirk Webb's avatar
      e6075372
    • Kirk Webb's avatar
      Kirk takes the weed whacker to the plab code. This is the first pass result. · ae2eec76
      Kirk Webb authored
      I'll come along for a closer cut in the future.
      
      * Modularized the plab communications 'adaptor' interface and moved the
        dslice- and PLC-specific code into their own modules.
      
      * Wrote an API definition README
      
      * Separated out generic routines from libplab into their own library modules
        (libtestbed.py and libdb.py)
      
      Functionally, not much has changed - this was just a massive re-org with some
      other cleanup.  Should be much easier to code up new PLAB interfaces as the
      plab folks flail around in their attempt to standardize on something.
      
      XXX: may want to re-think where the generic library modules should go.  If
      more python code enters Elab, we'll probably want to move 'em to more standard
      locations.
      
      This isn't the end of the cleanup - I would eventually like to go back and
      rethink the class structures, beef up the comments, and extend the API.
      ae2eec76
  25. 10 Jan, 2004 1 commit
  26. 06 Jan, 2004 1 commit
  27. 03 Jan, 2004 2 commits
  28. 31 Dec, 2003 1 commit
  29. 30 Dec, 2003 3 commits
    • 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
    • Mike Hibler's avatar
    • Kirk Webb's avatar
      Mods to getfree daemon to grab list of available nodes from plab · 5471f18e
      Kirk Webb authored
      central.  Also, back out Mike's hack, and use the ALLOWED_LIST feature
      Austin originally had to limit node scope.
      5471f18e