1. 11 Apr, 2018 2 commits
  2. 22 Jan, 2018 1 commit
  3. 11 Sep, 2017 1 commit
  4. 08 Sep, 2017 2 commits
  5. 23 Aug, 2017 1 commit
  6. 09 Aug, 2017 1 commit
    • Leigh Stoller's avatar
      Various changes to MLE support, related to issue #317: · 57def35b
      Leigh Stoller authored
      1. We now allow lans to be implemented by a path. We did not allow this
         before, cause some of the sanity checking code was a pain to
         implement for lans. Well, no more sanity checking, the user is
         responsible for doing things correctly (after all, they are doing
         experiments with their own switches!).
      
      2. We now allow topologies with more then one switch to be wired
         together. The wires between switches are marked as "trunk" wires,
         which informs the configuration generation code in libosload_switch
         to create the trunks and do the little tagged/untagged magic that is
         required on procurve switches. The same information is used to mark
         the the logical wires between switches as trunks.
      
         Aside: this stuff needs some work; we have spanning tree on by
         default, which causes the trunks to not work correctly. When I turn
         that off, things start working. So need some help from others who now
         about spanning tree stuff.
      
      3. Serious kludging in the Interface and Port libraries related to
         choice of primary keys in the wires table. In order to insert a
         logical wire (or interface) that represents a connection setup by the
         apcon, we have to overload the primary key since the node_id1 side of
         the logical wires is the same as the physical wire to the apcon. We
         have to have overload the node_id2 side too, but that is really just
         a problem when wiring two switches together. Anyway, the kludge just
         maps card1 to a different id, and the Port library unmaps it. It will
         do for now, but really need logical wires to be done better then
         this.
      57def35b
  7. 31 May, 2017 1 commit
  8. 15 Jul, 2015 1 commit
  9. 14 Jul, 2015 1 commit
    • David Johnson's avatar
      Support newer HP 5400zl firmware versions in libosload_switch. · db93beed
      David Johnson authored
      First, firmwares are bigger and take longer to write, so bump the TFTP
      load timeout to 5 minutes instead of 2.
      
      Second, newer HP firmwares won't let you load unsigned firmware images
      into flash, unless you specify a special param in your flash command.
      Unfortunately, older firmwares don't support that param.  So we just use
      trial and error to figure out if a switch has it or not, and we always
      are willing to flash unsigned firmwares... just have to trust, because
      we have no way of knowing which version should be signed, or how to tell
      which version a particular blob is.  At least not that I know of, not
      that I looked hard.
      
      Finally, our expect-based interface has to be a bit more flexible
      with some of the regexps it looks for.
      db93beed
  10. 23 Jun, 2015 1 commit
  11. 15 May, 2015 1 commit
    • Leigh Stoller's avatar
      Directory based image paths. · 3a21f39e
      Leigh Stoller authored
      Soon, we will have images with both full images and deltas, for the same
      image version. To make this possible, the image path will now be a
      directory instead of a file, and all of the versions (ndz,sig,sha1,delta)
      files will reside in the directory.
      
      A new config variable IMAGEDIRECTORIES turns this on, there is also a check
      for the ImageDiretories feature. This is applied only when a brand new
      image is created; a clone version of the image inherits the path it started
      with. Yes, you can have a mix of directory based and file based image
      descriptors.
      
      When it is time to convert all images over, there is a script called
      imagetodir that will go through all image descriptors, create the
      directory, move/rename all the files, and update the descriptors.
      Ultimately, we will not support file based image paths.
      
      I also added versioning to the image metadata descriptors so that going
      forward, old clients can handle a descriptor from a new server.
      3a21f39e
  12. 01 May, 2015 1 commit
    • David Johnson's avatar
      Don't let switches out of reloading until they finish reconfiguring too. · 8cb118b0
      David Johnson authored
      I'm not sure exactly why this was originally like this (let the node out
      of reloading before doing the console-based reconfiguration --- cleaning
      out the old config and writing a default one, via the console), but it
      now fails because the node gets released from reloading (and thus its
      reservation is cleared) before the reconfiguration step can grab the
      console line via tiptunnel --- and a subsequent tiptunnel connect fails,
      presumably because the reload_daemon no longer has permission to grab
      the line.
      
      Anyway, we'll try this... I can't see any obvious negative side
      effects.
      8cb118b0
  13. 26 Apr, 2013 1 commit
    • David Johnson's avatar
      Fix suddenly-appearing bug in libosload_new dynamic module loading code. · f8434aad
      David Johnson authored
      Not sure why this change was needed, but it wasn't working anymore.
      Maybe this is a perl 5.10 -> 5.12 thing; how I was doing an eval of a
      require to load an libosload_X module was no longer working.  The new
      way is better anyway, but even after looking through the perlXdelta
      pages, I didn't see a reason for this.
      
      Oh well.
      f8434aad
  14. 09 May, 2011 1 commit
    • David Johnson's avatar
      Tweaks to default layer2 HP switch config. · aac97d1b
      David Johnson authored
      Set snmp community appropriately.  Turn on spanning tree.
      
      Also make sure that VLAN 1 hasn't gotten a control net addr via DHCP.
      When we remove the current switch config and the switch reverts to
      its default, it turns on DHCP for VLAN 1.  Then, if it manages to get
      a control net address (i.e., from the new node pool), we have to make
      sure to unset any IP address in VLAN 1 before assigning one in VLAN 999
      (the control net VLAN we use in this static configuration).  Otherwise we
      might end up trying to configure an IP addr in the same subnet on two
      different VLANs, which the switch won't allow.
      aac97d1b
  15. 25 Apr, 2011 1 commit
  16. 23 Apr, 2011 1 commit
  17. 20 Dec, 2010 1 commit
    • 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.
      e3bd42ea
  18. 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.
      1ca84a0d
  19. 11 Nov, 2010 1 commit
  20. 09 Nov, 2010 1 commit
  21. 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
      life.
      7f5fa6bf
  22. 04 Nov, 2010 1 commit
    • 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
      reused.
      
      Also, of course, there are miscellaneous changes to support the
      new libosload in os_load itself.
      7cfa7aa6