1. 26 Jul, 2016 1 commit
    • Leigh B Stoller's avatar
      Add new status for users, "inactive". Mostly to support not having so · 68e019a5
      Leigh B Stoller authored
      many ZFS mounts on ops. which on the Mothership is on the order of 8000
      or so. Deactivate/reactivate a user with:
      
      	boss> wap tbacct deactivate -u <user>
      	boss> wap tbacct reactivate -u <user>
      
      Deactivate will set the shell to nologin and set the ZFS mountpoint=none.
      Reactivate will undo that. Note that these do not HUP mountd.
      68e019a5
  2. 14 Mar, 2016 1 commit
  3. 10 Feb, 2016 1 commit
  4. 05 Feb, 2016 1 commit
  5. 27 Jan, 2016 1 commit
  6. 02 Oct, 2015 1 commit
  7. 01 Oct, 2015 1 commit
  8. 21 Aug, 2015 1 commit
  9. 04 May, 2015 1 commit
  10. 24 Apr, 2015 1 commit
  11. 22 Jan, 2015 1 commit
  12. 12 Jan, 2015 1 commit
  13. 05 Dec, 2014 1 commit
    • Mike Hibler's avatar
      Support dynamically created NFS-root filesystems for admin MFS. · f36bcfab
      Mike Hibler authored
      Significant hackary involved. Similar to exports_setup, there is a boss-side
      script and an ops-side script to handle creation and destruction of the ZFS
      clones that are used for the NFS filesystem. The rest was all about when to
      invoke said scripts.
      
      Creation is easy, we just do a clone whenever the TBAdminMfsSelect is called
      to "turn on" node admin mode. Destruction is not so simple. If we destroyed
      the clone on the corresponding TBAdminMfsSelect "off" call, then we could
      yank the filesystem out from under the node if it was still running in the
      MFS (e.g., "node_admin -n off node"). While that would probably be okay in
      most uses, where at worst we would have to apod or power cycle the node, we
      try to do better. TBAdminMfsSelect "off" instead just renames the clone
      (to "<nodeid>-DEAD") so that it stays available if the node is running on
      it at the time, but ensures that it will not get accidentally used by any
      future boot. We check for, and destroy, any previous versions for a node
      every time we invoke the nfsmfs_setup code for that node. We also destroy
      live or dead clones whenever we call nfree. This ensures that all MFSes
      get cleaned up at experiment swapout time.
      f36bcfab
  14. 12 Nov, 2014 1 commit
    • Kirk Webb's avatar
      Add global permissions support for leases. · 00b57bf4
      Kirk Webb authored
      Two types of global permissions are supported:
      
      * Anonymous read-only (to support users without local accounts).
      * Read-only for users with local accounts.
      
      Global permissions are added to leases by way of entries of type "global"
      in the lease_permissions table.  The lease mod tool still needs to be
      updated to make use of the updated library support here.
      
      The new GetAllowedLeases() method in Lease.pm was reworked - it became
      clear that this was needed as I did the global RO permissions stuff.
      00b57bf4
  15. 17 Mar, 2014 1 commit
    • Kirk Webb's avatar
      Add taint state tracking for OSes and Nodes. · 1de4e516
      Kirk Webb authored
      Emulab can now propagate OS taint traits on to nodes that load these OSes.
      The primary reason for doing this is for loading images which
      require special treatment of the node.  For example, an OS that has
      proprietary software, and which will be used as an appliance (blackbox)
      can be marked (tainted) as such.  Code that manages user accounts on such
      OSes, along with other side channel providers (console, node admin, image
      creation) can key off of these taint states to prevent or alter access.
      
      Taint states are defined as SQL sets in the 'os_info' and 'nodes' tables,
      kept in the 'taint_states' column in both.  Currently these sets are comprised
      of the following entries:
      
      * usermode: OS/node should only allow user level access (not root)
      * blackbox: OS/node should allow no direct interaction via shell, console, etc.
      * dangerous: OS image may contain malicious software.
      
      Taint states are inherited by a node from OSes it loads during the OS load
      process.  Similarly, they are cleared from nodes as these OSes are removed.
      Any taint state applied to a node will currently enforce disk zeroing.
      
      No other tools/subsystems consider the taint states currently, but that will
      change soon.
      
      Setting taint states for an OS has to be done via SQL presently.
      1de4e516
  16. 03 Jan, 2014 2 commits
    • Mike Hibler's avatar
      Add project CREATELEASE permission. · 8a4dd1f7
      Mike Hibler authored
      Also distinguished error for leases to indicate that a lease has been
      destroyed (returned from WaitLock).
      8a4dd1f7
    • Mike Hibler's avatar
      First attempt to cleanup some hack jobs. · c5a1812c
      Mike Hibler authored
      Make a createdataset to handle dataset leases and move dataset specific
      code out of approvelease and into Lease.pm (which is now Lease.pm.in as
      it needs to be configured). Lease.pm still needs a bunch of OO-ification
      to properly make datasets a subclass of leases. But, another day...
      c5a1812c
  17. 11 Dec, 2013 3 commits
  18. 17 Sep, 2013 2 commits
    • Kirk Webb's avatar
      8a959b8e
    • Kirk Webb's avatar
      Update Ports abstraction module to better distinguish nodes vs. switches. · 7f422242
      Kirk Webb authored
      The lookup functions now look at the wire type and which location the
      requested node is in (node_id1 or node_id2) to decide which side of the
      link the port represents (switch vs. endpoint).  We don't (yet) query the
      nodes table for the role since we consistently use the node_id1 (and
      related) columns to hold the endpoint (node) information for wires of
      type "Node".
      
      For inter-switch
      trunks, we always mark the port object as being the "switch" side.  Both
      sides are the switch side...  Functions like getPCPort() and getSwitchPort()
      are ambiguous when invoked on a switch port object, and will always return
      a reference to the object the method was invoked on.
      
      Also update the HP snmpit module to explicitly check the wire type for a port
      before deciding whether or not to get the port at the other end in the
      listVlans() function.
      7f422242
  19. 30 Jul, 2013 1 commit
  20. 22 May, 2013 1 commit
  21. 10 Apr, 2013 1 commit
  22. 10 Jan, 2013 1 commit
  23. 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
  24. 27 Aug, 2012 1 commit
  25. 21 Apr, 2012 1 commit
  26. 27 Mar, 2012 1 commit
  27. 30 Jan, 2012 1 commit
  28. 15 Dec, 2011 1 commit
  29. 10 Oct, 2011 1 commit
    • Leigh B Stoller's avatar
      Add support for sharing images between projects. New table called · 646b64f6
      Leigh B Stoller authored
      image_permissions stores access info for images. You can share an
      image with a user or a group (project), and you can specify write
      access to allow updating the image in place. Note that write access
      does not allow the descriptor to be modified, only the image itself.
      Well, that is how it will be after Mike changes mfrisbeed.
      
      The front end script to modify permissions is grantimage:
      
      	boss> grantimage -u stoller -w tbres,myimage
      	boss> grantimage -u stoller -w tbres,myimage
      
      which grants write access to stoller. Or:
      
      	boss> grantimage -g testbed,testbed tbres,myimage
      
      which grants access to the testbed project. Notice that you can
      specify subgroups this way.
      
      	boss> grantimage -l tbres,myimage
      
      will give you a list of current permissions. To revoke, just add -r
      option:
      
      	boss> grantimage -g testbed,testbed -r tbres,myimage
      
      Who is allowed to grant access to an image? 1) An adminstrator of
      course, 2) the image creator, and 3) any group_root in the group that
      the image belongs to. Being granted access to use an image does not
      confer permission to grant access to others.
      
      One last task; while the web interface displays the permissions, there
      is no web interface to modify the permissions; users will still have
      to ask us for now.
      646b64f6
  30. 30 Aug, 2011 1 commit
  31. 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
  32. 27 Jun, 2011 1 commit
  33. 07 Mar, 2011 1 commit
  34. 07 Dec, 2010 1 commit
  35. 17 Nov, 2010 1 commit
  36. 04 Nov, 2010 1 commit
    • David Johnson's avatar
      Add a new RELOAD-PUSH mode. · d658ea4d
      David Johnson authored
      This op_mode is intended for nodes that require configure to be pushed
      to them.  Initially, it's accessible from MINIMAL.
      d658ea4d