1. 18 Jan, 2015 1 commit
    • Mike Hibler's avatar
      Change tiplines urlstamp to be an expiration time for the urlhash. · a40fb744
      Mike Hibler authored
      Previously it was the creation stamp for the hash. By making it the
      expiration time, we can do different times for different nodes.
      
      Note that there is no serious compatibility issue with re-purposing
      the DB field. It is almost always zero (since they are only valid
      for 5 minutes) and if it isn't zero when the new code is installed,
      the hash will just immediately become invalid. So what? Big deal!
      a40fb744
  2. 12 Jan, 2015 3 commits
  3. 09 Jan, 2015 2 commits
  4. 08 Jan, 2015 2 commits
    • Kirk Webb's avatar
      Backend support for simultaneous read-only dataset access. · 9b6e1a59
      Kirk Webb authored
      Any number of users/experiments can mount a given dataset (given that
      they have permission) in read-only mode.  Attempts to mount RW will
      fail if the dataset is currently in use.  Attempts to mount RO while
      the dataset is in use RW are also prohibited.
      
      Under the hood, iSCSI lease exports (targets) are now managed per-lease
      instead of per-experiment.  The set of authorized initiators (based
      on network) is manipulated as consumers come and go.  When the last
      consumer goes, the export is torn down. Likewise, if there are no
      current consumers, a new consumer will cause an iSCSI export to be
      created for the lease.
      
      Also included in this commit is a small tweak to implicit lease permissions.
      9b6e1a59
    • Leigh B Stoller's avatar
      55388928
  5. 03 Jan, 2015 1 commit
  6. 29 Dec, 2014 1 commit
  7. 14 Dec, 2014 2 commits
  8. 06 Dec, 2014 1 commit
  9. 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
  10. 03 Dec, 2014 1 commit
  11. 02 Dec, 2014 1 commit
  12. 01 Dec, 2014 1 commit
  13. 25 Nov, 2014 4 commits
  14. 18 Nov, 2014 1 commit
  15. 13 Nov, 2014 1 commit
  16. 12 Nov, 2014 3 commits
    • 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
    • Kirk Webb's avatar
      Add method to list all leases a user or project has access to. · b162d8de
      Kirk Webb authored
      Also adjust some of the existing lease enumeration functions to take
      a lease type selector argument.  Here is the comment above the
      new GetAllowedLeases() method:
      
       Return a list of leases for which a user OR entire project has access.
      
       Permissions are determined as follows:
       * The owner of a lease always has full (RW) access
       * Users in a project with group_root or above trust always have full (RW)
         access to leases associated with that project.
       * Explicitly granted per-user and per-project permissions are extracted
         from the lease_permissions tables.
      
       Arguments:
       * upid - User OR Project object to lookup lease access for.
       * type - Optional lease type selector.  Restrict results to this type
                of lease.
      
       Returns: Array of lease objects the given principal (user or project) has
                access to.  To each of these lease objects, an "allow_modify"
                boolean is set, accessible via $leaseobj->allow_modify().
      b162d8de
    • Leigh B Stoller's avatar
      Minor bug fix to previous revision. · 7371b368
      Leigh B Stoller authored
      7371b368
  17. 11 Nov, 2014 4 commits
    • Leigh B Stoller's avatar
      Minor bug fix. · 5e618d1a
      Leigh B Stoller authored
      5e618d1a
    • Kirk Webb's avatar
      More TaintState management updates. · d24df9d2
      Kirk Webb authored
      * Do not "reset" taint states to match partitions after OS load.
      
      Encumber node with any additional taint states found across the
      OSes loaded on a node's partitions (union of states).  Change the
      name of the associated Node object method to better represent the
      functionality.
      
      * Clear all taint states when a node exits "reloading"
      
      When the reload_daemon is finished with a node and ready to release it,
      it will now clear any/all taint states set on the node.  This is the
      only automatic way to have a node's taint states cleared.  Users
      cannot clear node taint states by os_load'ing away all tainted
      partitions after this commit; nodes must travel through reloading
      to get cleared.
      d24df9d2
    • Leigh B Stoller's avatar
      Add gid to project_leases, and allow creation in subgroups. · d859078e
      Leigh B Stoller authored
      This is not exposed to users, the main reason for this is so that the name
      space for leases (datasets) is per-group instead of per-project. We need
      this when creating datasets via the geni interface (backend to APT), since
      all leases are created in the holding project. Without a subgroup, we would
      run into name collisions on the backend. It also gives us finer access
      permission control for the same reason.
      
      Note that I yanked out the lease cache from Lease.pm (not worth the
      trouble), and I expanded Lookup to allow for the usual variety of
      possibilities that we allow in other Lookup methods.
      d859078e
    • Leigh B Stoller's avatar
      Oops, forgot to load Time::Local. · a9440d74
      Leigh B Stoller authored
      a9440d74
  18. 10 Nov, 2014 1 commit
  19. 06 Nov, 2014 1 commit
  20. 05 Nov, 2014 2 commits
  21. 04 Nov, 2014 2 commits
  22. 30 Oct, 2014 1 commit
  23. 28 Oct, 2014 3 commits