1. 08 Feb, 2019 1 commit
    • Leigh Stoller's avatar
      Fix to Jacks constraint stuff: · 3c5e82d6
      Leigh Stoller authored
      Problem: A user with a reservation at one cluster, was trying to start
      an experiment at a different cluster. But after selecting the other
      cluster and clicking next, that selection was being reset to the cluster
      with the reservation, as part of our overly helpful cluster picker code,
      which is fired off in a callback from Jacks.
      
      Question: Why is that happening when clicking next, to go from the
      Finalize step to the Schedule step, thus silently resetting the user's
      choice.
      
      Reason: There is a call to SwitchJacks("small") to make sure that the
      small version of the topo was visible, in case the user goes back to the
      finalize step. Not sure why ... but in any event, every call to
      SwitchJacks(large|small) results in Jacks firing that callback, and
      resetting the user's cluster choice.
      
      Solution: Null out the callback when calling SwitchJacks().
      
      There is probably a better solution to this, perhaps as part of a code
      reorg on the entire instantiate page, which has grown many appendages
      over time.
      3c5e82d6
  2. 30 Nov, 2018 1 commit
  3. 13 Aug, 2018 1 commit
  4. 08 Aug, 2018 1 commit
    • Leigh Stoller's avatar
      Big set of changes for deferred/scheduled/offline aggregates: · 6f17de73
      Leigh Stoller authored
      * I started out to add just deferred aggregates; those that are offline
        when starting an experiment (and marked in the apt_aggregates table as
        being deferable). When an aggregate is offline, we add an entry to the
        new apt_deferred_aggregates table, and periodically retry to start the
        missing slivers. In order to accomplish this, I split create_instance
        into two scripts, first part to create the instance in the DB, and the
        second (create_slivers) to create slivers for the instance. The daemon
        calls create_slivers for any instances in the deferred table, until
        all deferred aggregates are resolved.
      
        On the UI side, there are various changes to deal with allowing
        experiments to be partially create. For example used to wait till we
        have all the manifests until showing the topology. Now we show the
        topo on the first manifest, and then add them as they come in. Various
        parts of the UI had to change to deal with missing aggregates, I am
        sure I did not get them all.
      
      * And then once I had that, I realized that "scheduled" experiments was
        an "easy" addition, its just a degenerate case of deferred. For this I
        added some new slots to the tables to hold the scheduled start time,
        and added a started stamp so we can distinguish between the time it
        was created and the time it was actually started. Lots of data.
      
        On the UI side, there is a new fourth step on the instantiate page to
        give the user a choice of immediate or scheduled start. I moved the
        experiment duration to this step. I was originally going to add a
        calendar choice for termination, but I did not want to change the
        existing 16 hour max duration policy, yet.
      6f17de73
  5. 01 Mar, 2018 1 commit
  6. 06 Sep, 2017 1 commit
  7. 02 May, 2017 1 commit
    • Leigh Stoller's avatar
      Speed up the instantiate page response time, it was taking forever! · af8cc34f
      Leigh Stoller authored
      1. Okay, 10-15 seconds for me, which is the same as forever.
      
      2. Do not sort in PHP, sort in javascript, let the client burn those
         cycles instead of poor overworked boss.
      
      3. Store global lastused/usecount in the apt_profiles table so that we
         do not have to compute it every time for profile.
      
      4. Compute the user's lastused/usecount for each profile in a single
         query and create local array. Cuts out 100s of queries.
      af8cc34f
  8. 17 Apr, 2017 1 commit
    • Leigh Stoller's avatar
      rspecs are so passe ... · 7c38809d
      Leigh Stoller authored
      Redo the rspectogenilib converter with the goal of supporting both
      translation *and* regression testing. A new library is responsible for
      taking the output of libXML and creating a data structure representing
      the rspec. While this is being done, we look for any constructs or
      attributes we cannot handle with geni-lib and report that as an error;
      we are not going to convert an rspec unless we can do it correctly. and
      completely.
      
      Regression testing is done with another part of this library, that knows
      how to compare each element of two rspecs. Basically start at the root
      and compare all the way down, failing if the two "parses" of the XML are
      not equal at any level.
      
      rspectogenilib now has an option that does regression testing by running
      the new geni-lib and comparing the resulting rspec against the original.
      
      On the UI side, there is a new button on existing rspec based
      profiles (currently only for admin and studs) called "Convert to
      geni-lib" that runs the converter to convert the profile to geni-lib.
      The user does not have to accept the new script of course.
      
      However, a converted profile is marked in the database, and the user can
      still use Jacks on it, we just run rspectogenilib geni-lib again on the
      new rspec. If the user edits the geni-lib, we switch back to normal
      geni-lib (clear the flag) when the new version is saved, and Jacks is
      once again read-only. This is explained in the UI, and is one of the
      things people need to give comment on.
      
      There is also a mode on the Create Profile page for converting new rspec
      based profiles to geni-lib, but that is fully turned off for now, we can
      get to that later.
      7c38809d
  9. 20 Mar, 2017 1 commit
    • Leigh Stoller's avatar
      Support for push webhooks for repo-based profiles: · 10e12b53
      Leigh Stoller authored
      We are running another apache server on boss, on port 51369, which
      invokes a backend perl script that maps the URL path argument to the
      profile, and then calls out to manage_profile to pull from the
      repository and update the profile to reflect the new HEAD branch.
      Using mod_rewrite in the apache config to restrict URLs to exactly
      the one URL that is accepted, modulo the value of the secret token.
      
      I had to refactor a bunch of code in manage_profile to make it easier to
      add a new entrypoint for modification from a git repo. This needed to be
      done for a long time, I had never cleaned up the original profile
      creation code.
      
      On the edit profile web page, there is a new row in the Repository panel
      providing the Push URL, and an explanatory help modal.
      
      There is a new slow polling timer that looks for a change to the repo
      hash and causes the web page to update in place from the repo, as when a
      push hook is invoked and changes the repo.
      10e12b53
  10. 01 Mar, 2017 1 commit
  11. 06 Feb, 2017 1 commit
  12. 25 Jan, 2017 1 commit
  13. 28 Dec, 2016 1 commit
  14. 03 Nov, 2016 1 commit
  15. 22 Sep, 2016 1 commit
  16. 19 Aug, 2016 1 commit
  17. 16 Jul, 2016 1 commit
  18. 21 Dec, 2015 1 commit
  19. 08 Dec, 2015 2 commits
    • Leigh Stoller's avatar
      Export geni API for our panic mode (level 1, since not all clusters can do · 97347528
      Leigh Stoller authored
      control network port modification), and add front end support to the Portal
      status page (admin mode only of course)
      97347528
    • Kirk Webb's avatar
      Batch of changes that creates a PhantomNet portal branding. · ba49a457
      Kirk Webb authored
      Also includes some PhantomNet-specific restrictions (e.g. only
      allows use of the main Utah Emulab testbed  aggregate).
      
      This excercise stretched the limits of what we can reasonably do
      before introducing real per-testbed branding/policy mechanisms to
      the php/web front-end.  My changes ain't exactly pretty...
      
      Please take care when adding any testbed-specific changes to the
      code.  There are three flavors now to consider in the logic.
      ba49a457
  20. 04 Dec, 2015 1 commit
  21. 01 Dec, 2015 1 commit
  22. 04 Nov, 2015 1 commit
    • Leigh Stoller's avatar
      Changes for Keith to develop the new profile picker: · eafff053
      Leigh Stoller authored
      1. Instead of a plain list of profiles, generate a more detailed list that
         includes last used and usage counts and project name and favorite flag,
         so that the new picker can be sorted/grouped.
      
         This list is *ordered* by most recent usage (if a real user), or most
         popular (if a guest). 
      
      2. Move the modal from quickvm_sup to the template, and generate the
         current list from the new json info.
      
      3. Add new table apt_profile_favorites to record favorite profiles for
         users.
      
      4. Add new ajax calls for above, MarkFavorite and ClearFavorite that take a
         single argument, the uuid of the profile. There is no UI for this, Keith
         is going to add that.
      eafff053
  23. 13 Jul, 2015 1 commit
    • David Johnson's avatar
      Add geni-lib script parameter warnings/errors, groups, helpdocs. · c201620c
      David Johnson authored
      (The bulk of the code is in the parameter form formatter/decorator JS
      code; I only applied it to the wizard for now... but it's
      straightforward to copy it into the old parameter code ;))
      
      The portal can now render the parameter form in much more complex ways.
      It supports a notion of advanced parameter groups, a panel containing
      parameters that is closed by default but expandable; generic parameter
      groups; per-parameter detailed helpdocs in an expandable subpanel (and
      an expand-all-help link that will also expand all the parameter group
      panels), and error messages and warnings.  A summary of both errors and
      warnings is displayed at the top of the form, and specific error message
      details are displayed near parameters.  The error message display is
      flexible to generic user messages -- basically if the error is a proper
      geni-lib portal error/warning, but not a parameter error/warning, it
      will be displayed at the top of the parameter form (along with any
      others).  If it's an "improper" one, we'll still do our best to display
      it.  If you warn a user, you can provide a set of parameter values that
      "fix" the warning, and the Portal UI will change the form values and
      tell the user it did so.  You can't do this on error; the assumption is
      the user has to fix the error.
      
      Finally, the portal now tries to rungenilib in warnings-are-fatal mode
      the first time parameter bind (to generate rspec) is attempted.  If they
      go backwards to re-parameterize, warnings should be fatal again.  It's
      too hard to figure out when we should stop warnings-fatal mode; we can't
      block the user's progress if they really want to proceed in the face of
      warnings.
      c201620c
  24. 26 May, 2015 1 commit
  25. 23 Mar, 2015 1 commit
  26. 19 Mar, 2015 2 commits
  27. 13 Mar, 2015 1 commit
    • Leigh Stoller's avatar
      Checkpoint various changes. · 0d09773b
      Leigh Stoller authored
      * Various UI tweaks for profile versioning.
      
      * Roll out profile versioning for all users.
      
      * Disable/Hide publishing for now.
      
      * Move profile/version URLs into a modal that is invoked by a new Share
        button, that explains things a little better.
      
      * Unify profile permissions between APT/Cloudlab. Users now see just two
        choices; project or anyone, where anyone includes guest users in the APT
        interface, for now.
      
      * Get rid of "List on the front page" checkbox, all public profiles will be
        listed, but red-dot can still set that bit.
      
      * Return the publicURL dynamically in the status blob, and set/show the
        sliver info button as soon as we get it.
      
      * Console password support; if the aggregate returns the console password,
        add an item to the context menu to show it.
      
      * Other stuff.
      0d09773b
  28. 11 Mar, 2015 1 commit
  29. 02 Mar, 2015 1 commit
  30. 12 Feb, 2015 1 commit
  31. 09 Feb, 2015 1 commit
  32. 27 Jan, 2015 2 commits
  33. 03 Jan, 2015 1 commit
  34. 05 Dec, 2014 1 commit
  35. 04 Dec, 2014 1 commit
  36. 12 Nov, 2014 1 commit
  37. 12 Sep, 2014 1 commit