1. 06 Mar, 2019 5 commits
  2. 05 Mar, 2019 1 commit
  3. 28 Feb, 2019 8 commits
  4. 19 Feb, 2019 2 commits
  5. 15 Feb, 2019 1 commit
  6. 14 Feb, 2019 1 commit
  7. 12 Feb, 2019 1 commit
    • Leigh Stoller's avatar
      Recovery mode: · bde6c94d
      Leigh Stoller authored
      * Add a new Portal context menu option to nodes, to boot into "recovery"
        mode, which will be a Linux MFS (rather then the FreeBSD MFS, which
        99% of user will not know what to do with).
      
      * Plumb all through to the Geni RPC interface, which invokes node_admin
        with a new option, to use the recovery mfs nodetype attribute.
      
      * recoverymfs_osid is a distinct osid from adminmfs_osid, we use that in
        the CM to add an Emulab name space attribute to the manifest, that
        tells the Portal that a node supports recovery mode (and thus gets a
        context menu option).
      
      * Add an inrecovery flag to the sliver status blob, which the Portal
        uses to determine that a node is currently in recovery mode, so that
        we can indicate that in the topology and list tabs.
      bde6c94d
  8. 28 Jan, 2019 1 commit
  9. 22 Jan, 2019 1 commit
  10. 11 Jan, 2019 1 commit
  11. 04 Jan, 2019 1 commit
  12. 12 Dec, 2018 1 commit
  13. 11 Dec, 2018 1 commit
  14. 07 Dec, 2018 1 commit
    • Leigh Stoller's avatar
      Rationalize execute services: · 241b3ab5
      Leigh Stoller authored
      This has been bothering me for a while; A single execute service
      operates like a traditional Emulab startup command, with output going to
      /proj/pid/exp/eid/logs, which is a pain in the ass cause I don't know
      the name of the file and there 1000s of file in the directory.
      
      But when there are multiple execute services, we wrap them in a script
      and redirect the output to easy an easy to find spot; /var/tmp. Much
      nicer.
      
      Now we always wrap them up in a script so the output files go to
      /var/tmp. And drop a note in the original file that says where to go
      look.
      
      The script is written to /proj/pid/exp/eid, but thinking to the future
      when there are no NFS mounts at all, we now bundle that script into a
      little tarball and append that to the install services. Tarballs already
      handle a no-NFS world, asking the web server for the file. QED
      241b3ab5
  15. 06 Dec, 2018 1 commit
  16. 14 Nov, 2018 1 commit
  17. 06 Nov, 2018 1 commit
  18. 05 Nov, 2018 1 commit
    • Leigh Stoller's avatar
      Changes to how we handle/report mapping failures that also fail the · 11074445
      Leigh Stoller authored
      empty testbed test.
      
      Prior to this commit, we were not invoking the empty testbed case
      consitently. Now we do, but that exposed another problem; reporting that
      to the error to the Portal in a meaningful way. Basically, we can report
      a different error code for an impossible to map error, but then we lose
      the info we store now about what the actual failure was (which we show
      to the user with additional helpful info). Since we cannot (easily)
      change the Geni API for CreateSliver(), I have elected to continue the
      practice of returning the specific error codes (which also go into the
      database for long term historical info), and add more helpful text that
      for the Portal user that explains clearly that the mapping is impossible
      on the target cluster. This extra text also go into the database in the
      attached message field, so we ccan come back later and post process if
      we decide to do something different.
      11074445
  19. 25 Oct, 2018 2 commits
    • David Johnson's avatar
      Replace the Docker entrypoint/cmd/env implementation for augmented images. · a986a085
      David Johnson authored
      (Also, add support for user to change container entrypoint at runtime.
      Note also that the server side now stores the entrypoint/cmd/env
      attributes as base64url-encoded virt_node_attributes, so that we can
      just use the existing table_regex for those values.)
      
      We add a new runit service (/etc/service/dockerentrypoint) to
      clientside/tmcc/linux/docker/dockerfiles/common to handle the
      entrypoint/cmd/env/workingdir/user emulation.  From the comments:
      
        Docker's semantics for ENTRYPOINT/CMD vary depending on if those
        values are specified as arrays of string, or simple as single strings
        (which must be interpreted by /bin/sh -c).
      
        Handling all the quoting possibilities in the shell is a major pain.
        So, this script handles the basic stuff (in particular, sourcing env
        vars, because we want the shell to interpret them!) -- then execs our
        perl companion script (run.pl) to deal with the entrypoint/command
        files that libvnode_docker::emulabizeImage and
        libvnode_docker::vnodeCreate populated.
      
        libvnode_docker creates these single-line files in /etc/emulab/docker
        as either string:hexstr(<entrypoint-or-cmd-string>), or
        array:hexstr(a[0]),hexstr(a[1])... .  This allows us to preserve the
        original type of the image's entrypoint/cmd as well as the runtime
        entrypoint/cmd, and to preserve the exact bytes for the eventual final
        call to exec.
      
        The static files builtin to an emulabized image are
        /etc/emulab/docker/{entrypoint.image,cmd.image}, and those created
        dynamically at runtime if user changes the entrypoint or cmd are
        bind-mounted to /etc/emulab/docker{entrypoint.runtime,cmd.runtime}.
      
        Given the presence (or absence!) of those files, this script
        implements the emulation, based upon the content in those files.
      a986a085
    • David Johnson's avatar
      993e9f8c
  20. 24 Oct, 2018 1 commit
    • Leigh Stoller's avatar
      Fixes for DeleteNodes(): · c14472f9
      Leigh Stoller authored
      * When deleting a lan can there is only one interface left, need to go
        back and delete the interface from the last node. Else its a malformed
        rpsec (which we have been ignoring), but it was passing through to the
        manifest, which made it a malformed manifest.
      
      * But a later bug was causing that now removed interface to sneak back
        in via the old copy of the manifest in the database.
      
      * Also fix a bug that was causing multiple versions of the site_info
        element to get inserted during an update.
      
      * Remove code that updates the manifest in the DB, use the existing
        Aggregate->UpdateManifest() method instead.
      c14472f9
  21. 23 Oct, 2018 1 commit
  22. 11 Oct, 2018 1 commit
  23. 02 Oct, 2018 1 commit
  24. 01 Oct, 2018 1 commit
  25. 21 Sep, 2018 2 commits
  26. 17 Sep, 2018 1 commit