1. 18 Jul, 2011 2 commits
  2. 07 Jul, 2011 1 commit
  3. 05 Jul, 2011 2 commits
  4. 29 Jun, 2011 1 commit
    • Mike Hibler's avatar
      Allow for more flexible setup of pxe_boot_path. · 2abf13da
      Mike Hibler authored
      If nodes.pxe_boot_path is set to '/tftpboot/pxelinux/<something>', then
      dhcpd_makeconf will set the (pxeboot) filename to /tftpboot/pxelinux.0
      and symlink the node's config file (/tftpboot/pxelinux.cfg/<mac>) to
      /tftpboot/pxelinux.cfg/<something>.
      
      In other words, we can customize pxelinux to some small degree, using one
      of some small number of pre-existing configurations. We were using pxelinux
      before for plab-in-elab and we will also need it for loading WinPE for
      configuring Windows7 images. For the latter we will set the pxe_boot_path
      to /tftpboot/pxelinux/winpe.
      
      Anyway, ideally we would allow the user to specify a pxelinux config file
      through the NS file, but need to think about the implications of that some
      more. Small steps...
      2abf13da
  5. 27 Jun, 2011 1 commit
  6. 23 Jun, 2011 1 commit
  7. 20 Jun, 2011 1 commit
    • Leigh Stoller's avatar
      "Improvements" to protogeni tunnels and UpdateSliver(); previously we · b9b443a6
      Leigh Stoller authored
      were tearing down and recreating tunnels during UpdateSliver(), cause
      Experiment->RemovePhysicalState() assumes that all physical state is
      created in the mapper, but in Protogeni tunnels are created outside
      the mapper, and so we were losing the tunnels. My original hack was to
      notice that and recreate them. But then I added sliver ids to tunnel
      interfaces, and if the tunnels are recreated, the sliver ids are going
      to change, and that will annoy users. So this change deals with this
      by preventing protogeni tunnels from getting removed by the mapper.
      b9b443a6
  8. 08 Jun, 2011 1 commit
  9. 31 May, 2011 1 commit
    • Ryan Jackson's avatar
      Restart dhcpd on all subbosses · 4fb4ab9c
      Ryan Jackson authored
      When rebuilding the dhcpd.conf file, make sure to restart dhcpd on all
      subbosses and not just the ones that are listed in the subbosses
      table.  Otherwise if all nodes are moved from one subboss to another
      the old subboss will continue to try serving dhcp leases when it
      shouldn't.
      4fb4ab9c
  10. 26 May, 2011 1 commit
  11. 25 May, 2011 5 commits
  12. 19 May, 2011 1 commit
  13. 18 May, 2011 1 commit
    • Mike Hibler's avatar
      Support image PUT (aka, "upload") and assorted minor changes. · 77dbad39
      Mike Hibler authored
      1. Support for PUT.
      
      The big change is support for uploading via the master server, based heavily
      on the prototype that Grant did. Currently only host-based (IP-based)
      authentication is done as is the case with download. Grant's SSL-based
      authentication code is "integrated" but has not even been compiled in.
      
      The PUT protocol allows for assorted gewgaws, like specifying a maximum size,
      setting a timeout value, returning size and signature info, etc.
      
      There is a new, awkwardly-named client utility "frisupload" which, like the
      download client, takes an "image ID" as an argument and requests to upload
      (PUT) that image via the master server. As with download, the image ID can
      be either of the form "<pid>/<emulab-image-name>", to upload/update an actual
      Emulab image or it can start with a "/" in which case it is considered to
      be a pathname on the server.
      
      On the server side, the master server takes PUT requests, verifies permission
      to upload the image, fires up a separate instance of an upload daemon (with
      the even catchier moniker "frisuploadd"), and returns the unicast addr/port
      info to the client which then begins the upload. The master server also acts
      as a traffic cop to make sure that downloads and uploads (or uploads and
      uploads) don't overlap.
      
      This has been integrated into the Emulab "create image" process in a
      backward-compatible way (i.e., so old admin MFSes will continue to work).
      Boy, was that fun. One not-so-desirable effect of this integration is that
      images now traverse our network twice, once to upload from node to boss and
      once for boss to write out the image file across NFS to ops. This is not
      really something that should be "fixed" in frisbee, it is only "undesirable"
      because we have a crappy NFS server.
      
      What has NOT been done includes: support of hierarchical PUT operations
      (we don't need it for either the elabinelab or subboss case), support for
      uploading standard images stored on boss (we really want something better
      than host-based authentication here), and the aforementioned support of
      SSL-based authentication.
      
      2. Other tidbits that got mixed in with PUT support:
      
      Added two new site variables:
          images/frisbee/maxrate_std
          images/frisbee/maxrate_usr
      which replace the hardwired (in mfrisbeed and frisbeelauncher before that)
      bandwidth limits for image download. mfrisbeed reads these (and the
      images/create/* variables) when it starts up or receives a HUP signal.
      These could be read from the DB on every GET/PUT, but they really don't change
      much and I needed something to test the reread-the-config-on-a-HUP code!
      
      Fixed avoidance of "problematic multicast addresses" so it would actually
      work as intended.
      
      Lots of internal "refactoring" to make up for things I did wrong the first
      time and to give the general impression that "Wow, Mike did a LOT!"
      77dbad39
  14. 17 May, 2011 1 commit
    • David Johnson's avatar
      Add per-experiment switch support. · ea496d44
      David Johnson authored
      Per-experiment switch stacks only come into being if the experiment
      actually has a switch allocated to it.  If not, tbswap and snmpit
      should function unchanged.  If there is a per-experiment stack that needs
      configuration, we first invoke normal snmpit in the normal place, but we
      use the new snmpit option `--skip-supplied' in combination with -S to skip
      the per-experiment stack.  We then configure the per-experiment stack by
      itself with -S after os_setup has completed.
      
      There are some new functions in the db backend stuff to create, modify,
      and remove per-experiment switches.
      
      There is some new code in snmpit to do the --skip-supplied filtering.  I
      also put all the -S, -i, and --skip-supplied stuff into portstats...
      because we also can't call portstats on a per-experiment switch in tbswap;
      otherwise it will hang and/or fail.
      ea496d44
  15. 16 May, 2011 1 commit
  16. 12 May, 2011 1 commit
  17. 11 May, 2011 3 commits
  18. 06 May, 2011 3 commits
  19. 05 May, 2011 3 commits
  20. 04 May, 2011 1 commit
  21. 27 Apr, 2011 2 commits
  22. 26 Apr, 2011 3 commits
  23. 25 Apr, 2011 1 commit
    • David Johnson's avatar
      Split out a ResetNextOpMode method from OSSelect (which now calls it). · 5d54f373
      David Johnson authored
      This allows other things that don't need to change the OS, but *do* need
      to make sure that a mode transition gets setup if necessary, to setup that
      transition too.  Currently the only case that needs this is push-based
      reloads, when the reload has been setup (and then not performed because it
      was optimized away).
      5d54f373
  24. 21 Apr, 2011 1 commit
  25. 20 Apr, 2011 1 commit
    • Leigh Stoller's avatar
      Changes our ssh key/account handling in RedeemTicket() and · 03c2107c
      Leigh Stoller authored
      CreateSliver(), to handle multiple accounts.  This somewhat reflects
      the Geni AM API for keys, which allows the client to specify multiple
      users, each with a set of ssh keys.
      
      The keys argument to the CM now looks like the following (note that
      the old format is still accepted and will be for a while).
      
      [{'urn'   => 'urn:blabla'
        'login' => 'dopey',
        'keys'  => [ list of keys like before ]},
       {'login' => "leebee",
        'keys'  => [ list of keys ... ]}];
      
      Key Points:
      
      1. You can supply a urn or a login or both. Typically, it is going to
         be the result of getkeys() at the PG SA, and so it will include
         both.
      
      2. If a login is provided, use that. Otherwise use the id from the urn.
      
      3. No matter what, verify that the token is valid for Emulab an uid
         (standard 8 char unix login that is good on just about any unix
         variant), and transform it if not.
      
      4. For now, getkeys() at the SA will continue to return the old format
         (unless you supply version=2 argument) since we do not want to
         default to a keylist that most CMs will barf on.
      
      5. I have modified the AM code to transform the Geni AM version of the
         "users" argument into the above structure. Bottom line here, is
         that users of the AM interface will not actually need to do
         anything, although now multiple users are actually supported
         instead of ignored.
      
      Still to be done are the changes to the login services structure in
      the manifest. We have yet to settle on what these changes will look
      like, but since people generally supply valid login ids, you probably
      will not need this, since no transformation will take place.
      03c2107c