1. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  2. 20 Jul, 2011 1 commit
  3. 16 Nov, 2010 1 commit
    • Kevin Atkinson's avatar
      Add support for all node "tb-set-tarfiles". · a0d0c95e
      Kevin Atkinson authored
      "tb-set-tarfiles" is like "tb-set-node-tarfiles" except that it
      distributes the tarfile to all nodes rather than just one and that it
      uses frisbee to distribute the file.
      
      These changes involved 1) refactoring frisbee info from images table
      into a new table, frisbee_blobs, 2) a new experiment_blobs table, and
      3) a new tmcd command so the node knows how to get the files from the
      server.
      
      The changes where designed to be general purpose enough to eventually
      support:
        1) Distributing arbitrary files (not just tarfiles) to nodes
        2) Perform arbitrary actions on those files
        3) Use arbitrary methods to get the files
      
      As such the tmcd line is as follows:
        URL=* ACTION=*
      
      where URL is currently:
        frisbee.mcast://<ADDR>/<FILE>
      for example
        frisbee.mcast://234.16.184.192:18092/users/kevina/home-dir.tar.gz
      and when we get around to using a master Frisbee server it could be
        frisbee://*
      or it could be a file://, http://, etc.
      
      and ACTION is currently:
        unpack:<LOCATION>
      for example
        unpackt:/users
      with future syntax to be determined.
      a0d0c95e
  4. 17 May, 2010 1 commit
  5. 18 Mar, 2009 1 commit
    • Ryan Jackson's avatar
      Lots of work on mod_tmcd: · b047b06b
      Ryan Jackson authored
      - Arguments are now parsed. mod_tmcd handles 'version', 'redirect', and
        'vnodeid' directly.  Arguments to the called function are encapsulated in the
        'args' argument.
      - The command to execute is now part of the filename, not an argument.
      - Errors are mapped to HTTP protocol status codes (unknown command returns 404,
        redirect from a host other than boss returns 403, errors from inside libtmcd
        return 500, etc).  The status line returned with these errors provides more
        information about why the request failed ("403 Requires Encryption" if SSL is
        required, "400 Invalid Version" if the version argument isn't an integer,
        etc).  This way the client can tell why the request failed.
      - More libtmcd cleanup.
      b047b06b
  6. 17 Mar, 2009 2 commits
    • Ryan Jackson's avatar
      9583c23d
    • Ryan Jackson's avatar
      Semi-working version of mod_tmcd apache module: · d7a67b3b
      Ryan Jackson authored
      - Arguments aren't parsed yet.
      - bootlog is disabled for now since it wants to read from the socket.
        This will be handled with a PUT request eventually.  I'll add it back
        in when I get everything else working.
      - Event system support is disabled due to linking issues (libevent wants
        ssl).
      
      Also, cleanup of libtmcd:
      - We don't pass the socket around anymore.  All of our responses are
        written into a dynamically allocated buffer and returned to the
        caller.  This shouldn't be a problem unless we want to return a large
        amount of data to the client.  We'll deal with that later if
        necessary.
      d7a67b3b
  7. 16 Mar, 2009 1 commit
  8. 13 Mar, 2009 1 commit
  9. 02 Feb, 2009 1 commit
  10. 18 Aug, 2008 1 commit
  11. 12 Aug, 2008 1 commit
  12. 08 Aug, 2008 1 commit
  13. 23 Jul, 2008 1 commit
    • Ryan Jackson's avatar
      Initial commit of the XML-ified tmcd. · 82fc59c1
      Ryan Jackson authored
      - all db query code is in libtmcd.c (will become a separate library).
      - request format the same as previous versions
      - most responses are in XML (except for the ltmap, ltpmap, and topomap commands)
      82fc59c1
  14. 24 Jun, 2008 1 commit
  15. 30 May, 2008 1 commit
  16. 16 May, 2008 1 commit
  17. 16 Apr, 2008 1 commit
  18. 15 Apr, 2008 4 commits
  19. 07 Feb, 2008 1 commit
  20. 06 Feb, 2008 1 commit
  21. 31 Jan, 2008 1 commit
    • Leigh Stoller's avatar
      When looking for virtnodes on their physical nodes, look at the jailip · 904eda19
      Leigh Stoller authored
      in the nodes table if there is no match in the interfaces table. This
      is probably temporary until we get the vserver networking straightened
      out. Unlike jails, packets from vservers actually have the IP of the
      vserver as the src, not the physical host, but that does not
      correspond to anything in the interfaces table. This change lets me
      test things as they are now.
      904eda19
  22. 14 Jan, 2008 1 commit
  23. 10 Jan, 2008 2 commits
  24. 14 Sep, 2007 1 commit
    • Mike Hibler's avatar
      Fix some nits: · 84ef9202
      Mike Hibler authored
       * remove extra newline in bootwhat data
       * check command line for custom kernel in FBSD6 delay code
       * de-utahize a hostname lookup in ixpboot
      84ef9202
  25. 07 Sep, 2007 2 commits
  26. 23 Aug, 2007 2 commits
  27. 21 Aug, 2007 1 commit
    • Leigh Stoller's avatar
      Another round of widearea node hacking for CMU. These changes add · 99346dc0
      Leigh Stoller authored
      widearea reloading support.
      
      * New slot in the images table to store an access key which remote
        sites must provide in order to download an image (via https).
      
      * tmcd returns a different kind of ADDRESS field from doloadinfo.
        Instead of the multicast stuff, return a URL that points to boss'
        web server. The URL is of the form:
      
         https://www.myemulab.net/spewimage.php?imageid=10013&access_key=abcdef
      
        which as you can see is fully specified; the client does not need
        to know anything else.
      
      * New webpage and backend scripts appropriately called "spewimage"
        which also includes support for the http HEAD request (from wget) to
        avoid downloading images that are already on the node. I just
        learned about this HEAD request stuff today ... but otherwise these
        operate as expected, spewing the image if the access key is provided.
      
      * Changes to rc.frisbee to deal with remote loading. In addition to
        URL support, I also added support for simple paths, the intent being
        that we will probably distribute images offline (say, at night) so
        that when a node reboots it doesn't actually have to wait 60 minutes
        for an image to download. I have not added any server side support
        for this yet though. Maybe later this week.
      
      * Other bits and pieces and fixes to make this work.
      99346dc0
  28. 17 Aug, 2007 1 commit
    • Leigh Stoller's avatar
      Widearea support. · ea2cca4b
      Leigh Stoller authored
      * Add a bootwhat command that can be used instead of the bootinfo
        protocol, which is not appropriate for widearea cause its UDP. We
        lose the ability to have nodes "pxewait", but that is not actually
        necessary for widearea nodes since they are always allocated and up.
      
        Rather then duplicate code, I reorganized the bootinfo code so that
        I can link in the guts of it. There is some hackery to deal with the
        events that bootinfo sends, but so be it.
      
      * Initial support for setting up accounts for the CMU widearea nodes,
        adding yet another way to specify accounts for a node. In this case,
        its a new node_type_attributes slot called "project_accounts" that
        is a comma separated list of group idx's. This is just a temporary
        measure to make sure that accounts are always set up on the nodes,
        the way they are for RON nodes. This will all need to change since
        we want to also create accounts on the fly for people creating
        experiments using the virtual nodes on each widearea node, but I
        have not figured that part out yet.
      ea2cca4b
  29. 12 Jun, 2007 1 commit
  30. 04 May, 2007 1 commit
  31. 26 Apr, 2007 1 commit
    • Robert Ricci's avatar
      Changes proposed by Jason Shupe and Keith Sklower from DETER. Some of the · 733ebb12
      Robert Ricci authored
      relevant email:
      
      Date: Wed, 18 Apr 2007 21:20:37 -0700
      From: Jason Shupe <jshupe@ISI.EDU>
      To: Testbed Ops <testbed-ops@emulab.net>
      Subject: [patches] tmcd.c (Jason) and elabinelab.in (Keith)
      
      Included in this email are my description of the problem, and my patches
      to tmcd.c, followed by more descriptions of the problem and Keith's
      patch to elabinelab.in.  I apologize in advance for misquoting,
      changing and other wise abusing Keith's prose.
      
      An elab in elab experiment was started from the DeterTest project.  A
      simple inner experiment was then started from the emulab-ops project.
      During experiment swap in the program agent would fail to start.  If the
      same simple inner experiment was started under the DeterTest project or
      on the main testbed it would start normally.
      
      It turned out that Keith's account (among others) wasn't getting created
      on the inner experimental node.
      
      tmcd was only sending a subset of accounts to the experimental nodes.
      By digging through the database queries from tmcd.c I noticed one of the
      database responses contained a NULL in the g.unix_gid field.  By
      removing the only user from the emulab-ops sub group 'ops-test' it was
      then possible to successfully swap in the inner experiment.
      
      I've included two different versions of an untested tmcd.c patch.  Both
      versions include changes only to the mysql statement.  Both versions of
      the modified mysql statements were tested on the elab in elab database
      after the only member of emulab-ops was re-added to the 'ops-test'
      group.  Both queries returned all results of the original statements
      except the offending record with the 'NULL' value for g.unix_gid.
      
      The first patch directly excludes the offending record(s), and the
      second patch simple changes the _left join_'s to just _join_'s (Keith's
      suggestion) which also produces the same result for the data set tested.
      
      Ted reminded me that "is not NULL" is better than my initial "!='NULL'",
      which also produces the same results.  Other suggestions on this end
      include specifically using "inner join", and to use both "inner join"
      and "is not NULL".
      
      Date: Tue, 24 Apr 2007 14:44:08 -0700
      From: Leigh Stoller <stoller@flux.utah.edu>
      Subject: Re: [patches] tmcd.c (Jason) and elabinelab.in (Keith)
      
      Well, unix_gid is not supposed to be null, so we should fix that problem
      instead, I would think.
      
      Date: Wed, 25 Apr 2007 00:35:30 -0700 (PDT)
      From: Keith Sklower <sklower@vangogh.CS.Berkeley.EDU>
      Subject: Re: [Deter-ops] [patches] tmcd.c (Jason) and elabinelab.in (Keith)
      
      It became null because of using an outer join instead of an inner join.
      
      I'll repeat the condition:
      1.) the DETER emulab-ops has subgroups
      2.) the inner elab group membership table and references to a group
          which was not inherited from the outer boss [pid=emulab-ops,
          gid=test-grup, uid=jhickey]
      
      So, my initial proposal was to be a bit tidier in specifying what
      group membership entries should be subsetted.
      
      (the was a phrase which intended to catch the group membership
      for anybody currently active in emulab-ops, but it was too encompassing).
      
      Date: Wed, 25 Apr 2007 13:15:51 -0600
      From: Robert P Ricci <ricci@cs.utah.edu>
      Subject: Re: [Deter-ops] [patches] tmcd.c (Jason) and elabinelab.in (Keith)
      
      I guess, then, I will commit both proposed changes to tmcd - both to
      make the existing join more 'correct', and to guard against other ways
      (ie. bad/inconsistent DB state) the gid might show up as null.
      733ebb12
  32. 16 Apr, 2007 1 commit
    • Mike Hibler's avatar
      Make sure exptidx gets properly recorded in the port_registration table. · b86a004b
      Mike Hibler authored
      Previously it was not being filled in and would wind up '0'.  Since it was
      part of the primary key along with the service, this basically meant that
      only one experiment at a time could successfully use the sync-server; i.e.,
      only one could have (0, 'emulab-syncd') as their primary key.
      b86a004b
  33. 12 Apr, 2007 1 commit
    • Mike Hibler's avatar
      Fix an incorrect error return in a seldom used DB routine. · ae097403
      Mike Hibler authored
      Also, attempt reconnect once if DB access fails:
      >               /*
      >                * Try once to reconnect.  In theory, the caller (client)
      >                * will retry the tmcc call and we will reconnect and
      >                * everything will be fine.  The problem is that the
      >                * client may get a different tmcd process each time,
      >                * and every one of those will fail once before
      >                * reconnecting.  Hence, the client could wind up failing
      >                * even if it retried.
      >                */
      ae097403