1. 23 Nov, 2014 1 commit
  2. 06 Jan, 2014 1 commit
    • Mike Hibler's avatar
      First reasonably functional lease_daemon. · 595a118c
      Mike Hibler authored
      Walks leases through their various states, enforces expiration and idle
      times and grace periods, and expires/locks leases.
      
      As always, probably sends too much email.
      595a118c
  3. 11 Dec, 2013 1 commit
  4. 04 Nov, 2013 2 commits
    • Kirk Webb's avatar
      7cb7effc
    • Kirk Webb's avatar
      Commit portfix version of snmpit and the Port module. · 264500e2
      Kirk Webb authored
      This commit pushes the changes located in the temporary snmpit_portfix
      subdirectory into the mainline snmpit_test directory, and updates
      db/Ports.pm with the 'portfix' changes.  These changes ensure better
      consistency with port lookup/resolution.  In particular, interswitch
      trunk lookup will return the switch-local side of the link.
      
      This commit also adds an installer script to cleanup the temporary files
      introduced for burning in the snmpit_portfix changes.
      264500e2
  5. 17 Sep, 2013 2 commits
  6. 14 May, 2013 1 commit
    • Leigh Stoller's avatar
      Add new script to do arp lockdown on boss. · f5cc889a
      Leigh Stoller authored
      The other version is only for the client side (subboss,ops), but does
      not work on real boss. Also hooked into tbswap so that the arps are
      updated during swapin/swapout. Also change tmcd to return arp
      directives for all containers, not just on shared nodes.
      f5cc889a
  7. 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
  8. 26 Sep, 2012 1 commit
  9. 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
  10. 04 Sep, 2012 1 commit
    • Leigh Stoller's avatar
      Add image import utilities. · e468f885
      Leigh Stoller authored
      image_setup is run from tbprerun to verify and create image
      descriptors, and then later from tbswap to actually download
      and verify the image (ndz) file.
      
      image_import does the actual work for a specific image (url).
      e468f885
  11. 29 Aug, 2012 1 commit
  12. 18 Jun, 2012 1 commit
  13. 04 Jun, 2012 3 commits
  14. 30 Apr, 2012 1 commit
  15. 07 Nov, 2011 1 commit
  16. 20 Sep, 2011 1 commit
  17. 11 Aug, 2011 1 commit
    • Mike Hibler's avatar
      Initial support for loading Windows7 .wim images via WinPE/ImageX. · ac711ea5
      Mike Hibler authored
      1. Support for "one-shot" PXE booting ala the one-shot osid. Switches to
         pxelinux to boot WinPE and then switch back after done. Painful now
         because we have to HUP dhcpd everytime we change the PXE path, but we
         may be able to fix this in the future by going all-pxelinux-all-the-time.
      
      2. Added pxe_select, analogous to os_select, for changing the pxe_boot_path
         including the one time path.
      
      3. Added the WIMRELOAD state machine to shepherd a node through the process.
         Still has some rough edges and may need refining.
      ac711ea5
  18. 28 Jul, 2011 1 commit
    • Leigh Stoller's avatar
      Power "saving" additions from Barry Trent, who got them from Kevin · 03478fb9
      Leigh Stoller authored
      Lahey.
      
      Power saving turns off nodes that have been sitting in PXEWAIT (and
      are thus free) for more then a set amount of time (see sitevar
      general/idlepower_idletime, which defaults to 3600 seconds).
      
      The driver script is tbsetup/idlepower.in and needs to be added to
      /etc/crontab at sites that want to do this. Even so, operation is
      enabled by the sitevar general/idlepower_enable. Each time it runs, it
      checks for nodes that need to be turned off, and then calls power.
      Note: This should be a daemon not a cron job.
      
      To be considered for power saving, you must add an attribute to the
      node_type_attributes table called 'idlepower_enable', set to 1.
      
      Locally, I hacked up stated and power to make the state transitions
      legal so that stated does not whine. I added POWEROFF as a valid
      transition from any state, to opmodes NORMAL, NORMALv1, and NORMALv2.
      Barry's original patch already had a state transition for PXEKERNEL.
      In power, I added code to look at the actual operation, and in the
      case of "on", do not send an event if the node is not in POWEROFF,
      since a user can foolishly say power on anytime, and the node is on
      nothing is every going to change, and the state transition would be
      wrong.
      
      node_reboot takes of powering nodes on, when they are in POWEROFF.
      
      Barry on copyright issues:
       "I'm not sure those rights are mine to grant! Remember that this code
       came originally from Kevin Lahey (kml@patheticgeek.net) and
       originated at DETER (although he's apparently not there anymore). I
       don't foresee a problem from our point of view (but I'll double
       check, of course). Shall I try to contact Kevin try to sort this mess
       out, or do you think it's better to coordinate from your end?"
      03478fb9
  19. 19 Jul, 2011 1 commit
  20. 29 May, 2011 1 commit
  21. 10 May, 2011 1 commit
  22. 05 May, 2011 1 commit
  23. 28 Apr, 2011 1 commit
  24. 05 Apr, 2011 1 commit
  25. 16 Mar, 2011 1 commit
  26. 14 Mar, 2011 1 commit
    • Ryan Jackson's avatar
      Power control for Linux NetworX ICE Boxes · 9513a57e
      Ryan Jackson authored
      Added support for power control and status on Linux NetworkX ICE Boxes.
      Note that the 'reset' command is tied to the node's hardware reset line
      through the special ICE Box connector on the back of the node rather.
      than a simple power cycle, so this needs to be connected.
      9513a57e
  27. 08 Mar, 2011 1 commit
    • Leigh Stoller's avatar
      Modified version of snmpit to be run as a "feature" while · 31812eae
      Leigh Stoller authored
      testing. Changes include:
      
      * syncvlans option that compares the switches and the DB and makes
        everything consistent, including creating backing DB objects for the
        dozens of hand created vlans, since all vlans must have a DB object
        so that vlan tag reservations can be consistent across all stacks.
      
      * Clean up the tag stuff a bit. No longer store tag in the
        lan_attributes table since that is a transient table, prone to
        getting out of sync with reality.
      
      * Changes to how the set of devices in a stack is chosen; ensure that
        we do not reference switches that are not needed (no ports on that
        switch and does not traverse a trunk on that switch). This should
        allow us to move the Backbone switches back into the Experimental
        stack, without fear that normal swapin will block cause the long
        distance links to those switches is down.
      31812eae
  28. 03 Feb, 2011 1 commit
  29. 01 Feb, 2011 1 commit
    • Mike Hibler's avatar
      Implement limited backward compatibility with the old frisbee setup. · 1017ccce
      Mike Hibler authored
      The big backward compatibility issue is that we no longer store running
      frisbeed info in the DB.  This means that loadinfo could not return
      address:port info to clients and thus old frisbee MFSes could no longer
      work.  While not a show stopper to require people to update their MFS first,
      I made a token effort to implement backward compat as follows.
      
      When an old frisbee MFS does "tmcc loadinfo" (as identified by a tmcd
      version < 33), tmcd will invoke "frisbeehelper" to startup a daemon.
      Sound like frisbeelauncher?  Well sorta, but vastly simplified and I only
      want this to be temporary.  The helper just uses the frisbee client to make
      a "proxy" request to the localhost master server.  The Emulab configuration
      of the master server now allows requests from localhost to proxy for another
      node.
      
      frisbeehelper is also used by webfrisbeekiller to kill a running daemon
      (yes, just like frisbeelauncher).  It makes a proxy status request on
      localhost and uses the returned info to identify the particular instance
      and kill it.
      1017ccce
  30. 18 Jan, 2011 1 commit
  31. 04 Nov, 2010 1 commit
    • David Johnson's avatar
      libosload rewrite and HP Procurve switch support. · 7cfa7aa6
      David Johnson authored
      libosload_new contains the new libosload.  It provides the same
      API as the original libosload, but the functionality has been
      split out into well-defined methods that can be overridden by
      per-node type subclasses in small chunks.  This is all protected
      by the NewOsload feature.
      
      libosload_switch.pm.in and libossetup_switch.pm.in contain the HP
      switch support, which requires the new libosload and new
      libossetup.  libossetup_switch doesn't do anything too radical, but
      it does support running a node it is "lighting up" through multiple
      operations -- i.e., first a RELOAD, then a RECONFIG.  This was
      necessary because switches require a config to be pushed to them
      (well, they do in the way I elected to support them), and they
      cannot fetch configuration in the normal Emulab way via tmcd.
      
      Eventually, that multi-op support will be factored out into
      libossetup more generically so that other node types which require
      push-based configuration can leverage it.
      
      libosload_switch contains the HP switch loading code.  It's built
      around expect-like interaction on the serial console.  It supports
      xmodem and tftp uploads, but tries to only flash the switch lazily.
      Thus, if the switch is already loaded with an image and a user
      (or the reload daemon, or anybody) reloads it with the same image,
      it won't actually get reloaded.  You can now force this reload
      with os_load.
      
      libosload_switch also contains reconfig code (i.e., to wipe
      switch configs and recreate based on which experiment it is in).
      libossetup_switch directly invokes this instead of going through
      libosload, since configuring is not really part of loading.  It
      is just convenient since configuration also happens over the
      serial console, and all the osload code for the switch can be
      reused.
      
      Also, of course, there are miscellaneous changes to support the
      new libosload in os_load itself.
      7cfa7aa6
  32. 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
  33. 21 Sep, 2010 1 commit
  34. 15 Sep, 2010 1 commit
  35. 03 Sep, 2010 1 commit
    • Ryan Jackson's avatar
      XML-RPC: Run frisbeelauncher as root for subboss · 59857b38
      Ryan Jackson authored
      Subbosses authenticate to the XML-RPC server as elabman, which means the
      resulting server process runs as the elabman user.  Unfortunately, this
      doesn't work well when the subboss wants to launch a frisbeed for an
      image for which elabman doesn't have read permission (like images under
      /proj).
      
      To fix this, a setuid wrapper script is run instead of trying to run
      frisbeelauncher directly.  This script makes sure the calling user is
      elabman, and then becomes root and execs frisbee_launcher.
      59857b38
  36. 23 Jun, 2010 1 commit