1. 16 Feb, 2018 1 commit
    • Leigh Stoller's avatar
      A lot of work on the RPC code, among other things. · 56f6d601
      Leigh Stoller authored
      I spent a fair amount of improving error handling along the RPC path,
      as well making the code more consistent across the various files. Also
      be more consistent in how the web interface invokes the backend and gets
      errors back, specifically for errors that are generated when taking to a
      remote cluster.
      
      Add checks before every RPC to make sure the cluster is not disabled in
      the database. Also check that we can actually reach the cluster, and
      that the cluster is not offline (NoLogins()) before we try to do
      anything. I might have to relax this a bit, but in general it takes a
      couple of seconds to check, which is a small fraction of what most RPCs
      take. Return precise errors for clusters that are not available, to the
      web interface and show them to user.
      
      Use webtasks more consistently between the web interface and backend
      scripts. Watch specifically for scripts that exit abnormally (exit
      before setting the exitcode in the webtask) which always means an
      internal failure, do not show those to users.
      
      Show just those RPC errors that would make sense users, stop spewing
      script output to the user, send it just to tbops via the email that is
      already generated when a backend script fails fatally.
      
      But do not spew email for clusters that are not reachable or are
      offline. Ditto for several other cases that were generating mail to
      tbops instead of just showing the user a meaningful error message.
      
      Stop using ParRun for single site experiments; 99% of experiments.
      
      For create_instance, a new "async" mode that tells CreateSliver() to
      return before the first mapper run, which is typically very quickly.
      Then watch for errors or for the manifest with Resolve or for the slice
      to disappear. I expect this to be bounded and so we do not need to worry
      so much about timing this wait out (which is a problem on very big
      topologies). When we see the manifest, the RedeemTicket() part of the
      CreateSliver is done and now we are into the StartSliver() phase.
      
      For the StartSliver phase, watch for errors and show them to users,
      previously we mostly lost those errors and just sent the experiment into
      the failed state. I am still working on this.
      56f6d601
  2. 19 Nov, 2017 1 commit
    • Leigh Stoller's avatar
      Round of changes related to dataset approval: · f431479c
      Leigh Stoller authored
      Previously we forced all Portal datasets to auto approve at the target
      cluster, now we let the local policy settings determine that, and return
      status indicating that the dataset needs to be approved by an admin.
      
      Plumbed through the approval path to the remote cluster.
      
      Fixed up polling to handle unapproved datasets and to watch for new
      failed state that Mike added to indicate that allocation failed.
      f431479c
  3. 25 Jan, 2017 1 commit
  4. 21 Sep, 2016 1 commit
  5. 29 Aug, 2016 3 commits
  6. 04 Jan, 2016 1 commit
  7. 16 Oct, 2015 1 commit
  8. 09 Oct, 2015 1 commit
  9. 17 Mar, 2015 1 commit
  10. 10 Mar, 2015 1 commit
  11. 05 Mar, 2015 2 commits
  12. 27 Jan, 2015 1 commit
    • Leigh Stoller's avatar
      Two co-mingled sets of changes: · 85cb063b
      Leigh Stoller authored
      1) Implement the latest dataset read/write access settings from frontend to
         backend. Also updates for simultaneous read-only usage.
      
      2) New configure options: PROTOGENI_LOCALUSER and PROTOGENI_GENIWEBLOGIN.
      
         The first changes the way that projects and users are treated at the
         CM. When set, we create real accounts (marked as nonlocal) for users and
         also create real projects (also marked as nonlocal). Users are added to
         those projects according to their credentials. The underlying experiment
         is thus owned by the user and in the project, although all the work is
         still done by the geniuser pseudo user. The advantage of this approach
         is that we can use standard emulab access checks to control access to
         objects like datasets. Maybe images too at some point.
      
         NOTE: Users are not removed from projects once they are added; we are
         going to need to deal with this, perhaps by adding an expiration stamp
         to the groups_membership tables, and using the credential expiration to
         mark it.
      
         The second new configure option turns on the web login via the geni
         trusted signer. So, if I create a sliver on a backend cluster when both
         options are set, I can use the trusted signer to log into my newly
         created account on the cluster, and see it (via the emulab classic web
         interface).
      
         All this is in flux, might end up being a bogus approach in the end.
      85cb063b
  13. 04 Jan, 2015 1 commit
  14. 15 Dec, 2014 1 commit
  15. 03 Dec, 2014 1 commit
  16. 12 Nov, 2014 1 commit
    • Leigh Stoller's avatar
      Lots of dataset changes. · 0adc340f
      Leigh Stoller authored
      Project leases are now per-group, so we build a sub authority certificate
      for a remote dataset so that on the remote side, it is created inside the
      group named by the project on the local side.
      
      Many bug fixes.
      0adc340f
  17. 28 Oct, 2014 1 commit