1. 20 Dec, 2010 2 commits
    • David Johnson's avatar
      Xmodem work; bugfixes; reorg. · e3bd42ea
      David Johnson authored
      Allow xmodem reloads if explicitly specified requested via os_load.
      Make power cycles asynch; we want to track their outcome via the console.
      Make sure to reload switches that have no entries in the partitions
      table too.
      Misc bugfixes and reorganization.
    • David Johnson's avatar
      Restore widearea reload support. · f76fd8a1
      David Johnson authored
      Add back in widearea support by setting the access_key field for each
      image that is going to be loaded on a widearea node.
  2. 12 Nov, 2010 1 commit
    • David Johnson's avatar
      Bugfix, and protect switch flashes via feature. · 1ca84a0d
      David Johnson authored
      We now protect switch reloads via the SwitchFlash feature.  We
      don't really give people a lot of advance warning about this,
      and we wait long enough that it will irritatingly fail your
      experiment swapin.  Ideally we should check before anything
      starts happening, but we don't know if we *have* to reload
      until we see what's on the nswitch node that gets allocated
      to us... and by the time nodes are allocated, I think they
      end up having to go through reloading if *any* of them fails.
      Not sure though.
      Also fixup handling of multiple libossetup_switch ops; if one
      fails, abort the list instead of continuing on.
  3. 11 Nov, 2010 1 commit
  4. 09 Nov, 2010 3 commits
    • David Johnson's avatar
      Avoid extra reboot for switches for reload+reconfig. · 3ec054c4
      David Johnson authored
      Actually check the flag that libossetup_switch sets for us, and
      boot into the ROM monitor instead of the OS.  Also bump up the
      TFTP reload timeout to two mins instead of one.
    • David Johnson's avatar
      Avoid extra reboot for switches for reload+reconfig. · 59debb2c
      David Johnson authored
      If a switch is doing both a reload, then a separate reconfig
      (i.e., separate in the sense that the first reload osload
      invocation doesn't do both, but that there is a separate
      invocation of the libosload_switch->Reconfigure method),
      have the switch reboot to teh ROM monitor so that
      Reconfigure is all ready to do its work -- Reconfigure starts
      within the ROM monitor so it can wipe the current config
      and keys.
    • David Johnson's avatar
      Clean up osload flag argument handling. · b3fd6031
      David Johnson authored
      Streamline osload flag argument handling, and fix a bug that was
      not propagating per-node flag arguments properly.
  5. 08 Nov, 2010 1 commit
    • David Johnson's avatar
      If we don't flash the switch, restore its osid/partition info. · 7f5fa6bf
      David Johnson authored
      If a switch reload fails, and we're sure we didn't flash the
      switch, then revert the changes to osid info in the nodes table
      and the partitions table entries.  This way, we don't lie about
      what's actually on the switch.  Otherwise, there could be a
      problem on a subsequent reload -- a user could request something
      that failed to load last time, but Emulab thinks that's what's
      really on the switch, so it doesn't reload... but that wasn't
      really what was installed on the switch.  So, this will help
      us stay in synch.
      Also remove all the os_select script invocations in favor of
      using the Node->OSSelect method instead.  Save a fork, save a
  6. 04 Nov, 2010 6 commits
    • David Johnson's avatar
      libosload rewrite and HP Procurve switch support. · 7cfa7aa6
      David Johnson authored
      libosload_new contains the new libosload.  It provides the same
      API as the original libosload, but the functionality has been
      split out into well-defined methods that can be overridden by
      per-node type subclasses in small chunks.  This is all protected
      by the NewOsload feature.
      libosload_switch.pm.in and libossetup_switch.pm.in contain the HP
      switch support, which requires the new libosload and new
      libossetup.  libossetup_switch doesn't do anything too radical, but
      it does support running a node it is "lighting up" through multiple
      operations -- i.e., first a RELOAD, then a RECONFIG.  This was
      necessary because switches require a config to be pushed to them
      (well, they do in the way I elected to support them), and they
      cannot fetch configuration in the normal Emulab way via tmcd.
      Eventually, that multi-op support will be factored out into
      libossetup more generically so that other node types which require
      push-based configuration can leverage it.
      libosload_switch contains the HP switch loading code.  It's built
      around expect-like interaction on the serial console.  It supports
      xmodem and tftp uploads, but tries to only flash the switch lazily.
      Thus, if the switch is already loaded with an image and a user
      (or the reload daemon, or anybody) reloads it with the same image,
      it won't actually get reloaded.  You can now force this reload
      with os_load.
      libosload_switch also contains reconfig code (i.e., to wipe
      switch configs and recreate based on which experiment it is in).
      libossetup_switch directly invokes this instead of going through
      libosload, since configuring is not really part of loading.  It
      is just convenient since configuration also happens over the
      serial console, and all the osload code for the switch can be
      Also, of course, there are miscellaneous changes to support the
      new libosload in os_load itself.
    • David Johnson's avatar
      Add a method that explicitly returns *only* Emulab-generated pubkeys. · 649a30ac
      David Johnson authored
      This method looks to see if these keys were *likely* generated by us.
      The regular GetSSHKeys specifically filters these out.  This new method
      should be used carefully, since these keys are not passphrase-protected.
      For instance, I'm only using it for loading keys on switches that are
      only locally accessible right now.
    • David Johnson's avatar
    • David Johnson's avatar
      Add a new RELOAD-PUSH mode. · d658ea4d
      David Johnson authored
      This op_mode is intended for nodes that require configure to be pushed
      to them.  Initially, it's accessible from MINIMAL.
    • David Johnson's avatar
    • David Johnson's avatar
      Allow tiptunnel to set serial device options via capture. · e6a0977e
      David Johnson authored
      For now, I made it possible to set speed of the capture with
      tiptunnel.  Later we could expose more options... but the right
      thing to do is build a ConsoleAgent that is much more flexible.
      I think we now know what we need as far as a good feature set
      for that program.
  7. 03 Nov, 2010 1 commit
  8. 02 Nov, 2010 2 commits
  9. 31 Oct, 2010 6 commits
  10. 29 Oct, 2010 9 commits
    • Gary Wong's avatar
      Automate the handout and slide build process. · 61ae568b
      Gary Wong authored
    • Gary Wong's avatar
    • Jonathon Duerig's avatar
    • Jonathon Duerig's avatar
      More tweaks for GEC9 · 80fdaa74
      Jonathon Duerig authored
    • Mike Hibler's avatar
      My old notes about the libvnode API. · cb0b549e
      Mike Hibler authored
      Cons up when I was updating the Xen vnode support last year.
    • Mike Hibler's avatar
      Merge remote branch 'central/master' · 2bac630e
      Mike Hibler authored
    • Mike Hibler's avatar
      Improve regular (non-image) file transfer via frisbee. · 78f3f8d3
      Mike Hibler authored
      Basically, make it possible to transfer a non imagezip image.  Previously
      you had to wrap a regular file as an image in order to transfer it.  The
      big hang up was that the frisbee protocol could only transfer files that
      were a multiple of 1MB (the chunk size).
      This commit changes the frisbee protocol slightly to allow transfer of
      non-1MB-multiple files.  The protocol change was to add a new JOIN message
      that returns the size of the file in bytes rather than in blocks.  This
      allows the client to know that the file in question is not a multiple of 1MB
      and allows it to request the correct partial number of blocks for the
      final chunk and to extract the correct amount of data from the final 1K block
      (that block is still padded to 1K by the server).  For the server side, the
      request mostly allows it to do some sanity checking.  The fact that the
      server is started with a file that is not a multiple of 1MB is what triggers
      it to know about partial chunks.  The sanity checking is that the server will
      not acknowledge clients that attempt to join with a version 1 JOIN message,
      since nothing good would come of that pairing.
      On the client side, frisbee must be invoked with the -N (nodecompress) option
      in order to issue a v2 JOIN.  See the comment in the code for the rationale,
      but it is largely a backward compat feature.
      While I was changing the JOIN message, I added a couple of other future
      features.  One is that by passing back a 64-bit value for the size of the
      image in bytes, we can feed bigger images.  However there is still much to
      be done to realize this.  The other was to add blocksize/chunksize fields
      in the message so that the server/client can negotiate the transfer parameters,
      e.g., 1024 blocks of 1024 bytes vs. 256 blocks of 8192 bytes, the latter being
      for "jumbo" packets on a Gb ethernet.  But there is still more to be done to
      get this working too.
    • Leigh B Stoller's avatar
    • Mike Hibler's avatar
      Fix a couple of comments. · 0569e748
      Mike Hibler authored
  11. 28 Oct, 2010 8 commits