1. 28 Jan, 2019 1 commit
  2. 22 Jan, 2019 1 commit
  3. 11 Jan, 2019 1 commit
  4. 04 Jan, 2019 1 commit
  5. 12 Dec, 2018 1 commit
  6. 11 Dec, 2018 1 commit
  7. 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
  8. 06 Dec, 2018 1 commit
  9. 14 Nov, 2018 1 commit
  10. 06 Nov, 2018 1 commit
  11. 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
  12. 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
  13. 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
  14. 23 Oct, 2018 1 commit
  15. 11 Oct, 2018 1 commit
  16. 02 Oct, 2018 1 commit
  17. 01 Oct, 2018 1 commit
  18. 21 Sep, 2018 2 commits
  19. 17 Sep, 2018 1 commit
  20. 12 Sep, 2018 1 commit
  21. 06 Sep, 2018 1 commit
  22. 29 Aug, 2018 1 commit
  23. 16 Aug, 2018 1 commit
    • David Johnson's avatar
      When user supplies external Docker image or Dockerfile, validate them. · fdcd1b4d
      David Johnson authored
      We try to emulate the standard Docker CLI's image handling.  Thus, if
      user specifies an image like 'ubuntu', we turn that into
      'ubuntu:latest'.  If user does not supply a registry host, we try
      'registry.hub.docker.com'.  If they do not specify a registry host or
      specify a registry host that is either registry-1.docker.io or
      registry.hub.docker.com, and their image does not contain a /, we
      prepend 'library/' to it (I *think* this is the right heuristic, but
      it's inference).
      
      For Dockerfiles, we must be able to download it, and it must contain a
      line matching ^\s*FROM (i.e. a valid FROM instruction, which all
      Dockerfiles must have).  We try to support DOS-mode textfiles too, but
      only ASCII.
      
      Might need to loosen these checks.
      fdcd1b4d
  24. 14 Aug, 2018 1 commit
  25. 13 Aug, 2018 1 commit
    • Leigh Stoller's avatar
      Possible fix using shared lan and wanting to use the 10G interface: · 7b5eb1bb
      Leigh Stoller authored
      * In the CM we have always ignored the BW settings on a shared lan,
        since there is no way to set the properties in geni-lib for such a
        lan. There is the local hack I added (linkwide properties), but that
        was also ignored for shared vlans. Now I am looking to see if there is
        a bandwidth specification there, and using that. I assume we do not
        care about delay/loss since well, we never have before.
      
      * But even so, the mapper was ignoring it too. But we also have the code
        that tries to not use 10G interfaces unless explicitly asked for a 10G
        link, and that is not in the shared vlan path. So ... I made a few
        changes, the worst that can happen is that I broke share vlans for
        everyone except this one case.
      7b5eb1bb
  26. 07 Aug, 2018 2 commits
  27. 30 Jul, 2018 5 commits
  28. 16 Jul, 2018 4 commits
  29. 12 Jul, 2018 1 commit
  30. 09 Jul, 2018 1 commit