1. 13 Apr, 2016 1 commit
    • Robert Ricci's avatar
      Add a no_interswitch flag to virtual links · b37b819f
      Robert Ricci authored
      When set, assign is not allowed to map this link to an interswitch link;
      this is to force a link to be resolved by two nodes connected to the
      same switch.
      
      Part of ticket #64
      b37b819f
  2. 01 Feb, 2016 1 commit
  3. 14 Nov, 2015 1 commit
    • Robert Ricci's avatar
      Turn LOAD_BALANCE and PACK_TIGHT into command line args · 15ef05a4
      Robert Ricci authored
      Looks like we are going to want the ability to tweak vnode placement per
      run rather than by building new assign binaries. So, add new '-S
      balance' and '-S pack' options. I suspect it would also be useful to add
      '-S spread' to try to spread vnodes out across as many hosts as
      possible, some people want this when using shared hosts.
      15ef05a4
  4. 12 Nov, 2015 2 commits
    • Robert Ricci's avatar
      Experimental PACK_TIGHT compile time option · c59e6d4a
      Robert Ricci authored
      When set, the goal is to pack vnodes as tightly as possible - that is,
      to penalize wasted slots in assignments.
      
      One downside is that this will tend to make really lopsided mappings:
      eg. if you have 50 slots per pnode, and 51 vodes, you will end up
      mapping 50 to one and 1 to the other.
      
      The other downside is that I have not yet thought about how to balance
      this with link weights.
      c59e6d4a
    • Robert Ricci's avatar
      Rescue LOAD_BALANCE option from bitrot · 467f38f4
      Robert Ricci authored
      467f38f4
  5. 04 Apr, 2014 1 commit
  6. 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
  7. 19 Jul, 2011 2 commits
    • Robert Ricci's avatar
      Handle new property_list.hpp location in boost · 1c333acd
      Robert Ricci authored
      Have I mentioned that I hate it when library developers move their
      headers around? Change the location of the property_list.hpp header
      to a macro and add a new -DNEWER_BOOT define that swtiches this to
      the newer location.
      
      Not automatically detected yet; should be checked in configure.
      (cherry picked from commit 2403b264)
      1c333acd
    • Robert Ricci's avatar
      Handle new property_list.hpp location in boost · 2403b264
      Robert Ricci authored
      Have I mentioned that I hate it when library developers move their
      headers around? Change the location of the property_list.hpp header
      to a macro and add a new -DNEWER_BOOT define that swtiches this to
      the newer location.
      
      Not automatically detected yet; should be checked in configure.
      2403b264
  8. 10 Nov, 2010 4 commits
    • Robert Ricci's avatar
      Fix up copyright dates · bd6f3dbc
      Robert Ricci authored
      bd6f3dbc
    • Robert Ricci's avatar
      Fix another old, and significant, bug · 65506d22
      Robert Ricci authored
      Each pclass hold a mapping from type names to nodes of that type
      that are currently available for use. This structure was not being
      properly maintained; when a mapping was removed, only the entry
      for the pnodes *current* type was being put back. When the pnode
      goes empty, *all* of its possible types should be marked as available.
      
      The consequence was that for pnodes that could take on multiple types
      (which is the common case in Emulab), once a node had been considered
      for a certain type (say, 'pc', 'pcvm', or 'delay'), it would *never*
      be considered for another type again.
      
      Add a new function that gets called when a pnode goes empty, to reset
      *all* of its type mappings in its pclass.
      
      Fixing this bug could have some serious positive consequences.
      65506d22
    • Robert Ricci's avatar
      Remove vestiges of SMART_UNMAP compile-time option. · 2175000c
      Robert Ricci authored
      It was a good idea, but we've never used it in production, it hasn't
      compiled in years, and it was just cluttering up the code.
      2175000c
    • Robert Ricci's avatar
      Re-think no_connect violations · 26e0a6c6
      Robert Ricci authored
      Re-think a very old idea in assign - that no_connect violations for
      unmapped links should not be assessed against links whose endpoints are
      not mapped. The problem with this is that assign is too hesitant to map
      nodes - if there is more than one link that can't be mapped or whose
      other end isn't mapped yet, then assign thinks it's better to leave the
      node unmapped. This leads to confusing solutions (in which nodes remain
      unmapped when really it's the links that are the problem), and I beleive
      it keeps assign from exploring valuable parts of the solution space.
      
      This patch chanes the behavior, so that no_connect violations get scored
      even when the endpoints of the link are not mapped.
      
      Not well enough tested to run in production.
      26e0a6c6
  9. 13 Oct, 2010 1 commit
    • Robert Ricci's avatar
      Fifth attempt at fixing fixed interfaces in assign · a773d833
      Robert Ricci authored
      Think I got it this time (yeah, I've said that four times before).
      It requires some extra bookkeeping; we were recording source and
      dest interface names in tb_plink, but not source and dest node
      names. With this new information, find_best_link() now has sole
      responsibility for figuring out if the vlink and plink go in the
      same direction, and the callers of find_best_link() are now
      responsible for knowing which direction they are traversing the
      vlink in (and thus whether they should tell find_best_link() to
      check the source or dest of the vlink.)
      a773d833
  10. 30 Sep, 2010 1 commit
    • Robert Ricci's avatar
      Fix fixed interfaces for the fourth time · 51b20429
      Robert Ricci authored
      Okay, I know I said this the first three times, but I think I've got it
      this time - the problem had to do with how I was handling the flipped
      flag (of course). Many of the calls find_best_link() give the dest_pv
      of a link instead of the pv (source pnode). When we do this, we have to
      invert the flipped flag, 'cause we're effectively reversing the order
      of the link.
      51b20429
  11. 03 Aug, 2010 1 commit
  12. 18 Jun, 2010 4 commits
  13. 09 Mar, 2010 3 commits
  14. 05 Feb, 2010 1 commit
    • Robert Ricci's avatar
      Handle the case of links between a switch and a node - I thought · f0cc1b90
      Robert Ricci authored
      I had disallowed this in the parser, but I hadn't thought about
      LAN nodes, which typically get assigned to switches. So, handle
      this case correctly.
      
      We still do *not* handle links between two switches (eg. directly
      between two LANs). However, what the semantics of this should be
      is totally unclear - do we use the *whole* interswtich bandwidth?
      Since we are not likely to hit this in our regular usage, we punt
      for now with an error if it happens.
      
      Also, remove the parser check, since we now handle correctly the
      case it was trying to disallow.
      f0cc1b90
  15. 01 Feb, 2010 3 commits
    • Robert Ricci's avatar
      Working version of auto speed selection for vlinks · eac6b811
      Robert Ricci authored
      Use '*' as the bandwidth on the link line in the .top file to have
      assign auto-select the speed for the link - it uses the slower of the
      two interfaces selected as endpoints for the link.
      
      Tested, but not heavily.
      
      Known limitations:
      
      * Doesn't work with trivial or emulated links, it's not clear what the
      semantics would be.
      
      * Doesn't work on links that go directly to switches, for complicated
      reasons of code strcutre. We never use these in practice anyway.
      
      * Not yet supported in XML parser; it should be a special tag or
      attribute in that format.
      
      * Might not find valid solutions in a very unlikely case: if a single
      node has interfaces of different speeds on the same physical switch,
      this code will always select the faster interface that's not already in
      use. If the faster interface is faster than the inter-switch bandwidth,
      and the slower interface is slower than it, assign *could* find a
      feasible solution by using the slower interface.  However, it will never
      try this solution.
      
      * Assign doesn't print the speed it picks; its up to the wrapper to know
      how fast the interface is. However, this shouldn't be an undue burden,
      as assign *never* prints out link speeds.
      eac6b811
    • Robert Ricci's avatar
      Modify link mapping function to handle auto-adjustment of · eaac88f0
      Robert Ricci authored
      vlink speed to native interface speed.
      
      Nearly, but not quite completely, functional
      eaac88f0
    • Robert Ricci's avatar
      Modify assign bandwidth checks so that when a bandwidth of '*' · 9339c47f
      Robert Ricci authored
      is given, it skips bandwidth checks.
      
      Not well tested yet.
      9339c47f
  16. 26 Jan, 2010 1 commit
  17. 09 Dec, 2009 1 commit
  18. 07 Oct, 2009 1 commit
    • Robert Ricci's avatar
      Change how fixed links are done - instead of filtering non-matching · 5e3968c3
      Robert Ricci authored
      links *after* doing find_best_link(), we do it directly inside of
      find_best_link().
      
      This fixes some cases when both the source and dest interfaces are
      fixed - it make sure we only report intra and inter switch links that
      have the right interface pair.
      
      We still make bad assumptions about node/switch order on links.
      5e3968c3
  19. 20 May, 2009 1 commit
  20. 01 May, 2009 1 commit
  21. 20 Dec, 2007 1 commit
  22. 17 Dec, 2007 1 commit
    • Robert Ricci's avatar
      Fix for fixed interfaces: move the code that filters interfaces whose · 43333bb7
      Robert Ricci authored
      name's don't match from resolve_link() to find_best_link() - the latter
      returns only one link of each type, so it's too late to find the right
      interface by the time we get back out to resolve_link(). Also fixed
      a built-in assmption about the 'direction' that physical links go in.
      The old code (explicity) assumed that links to from node to switch - now
      we flip around our comparison if the directions of the links do not
      match.
      
      This was a bugger, even though it didn't involve much code, since the
      'flipping' involves a 'parity' issue - it's really easy to mess up the
      parity in several places and get it to work under *some* circumstances.
      
      As a side effect, added some more information to the plink strucutre.
      This turned out to not be necessary for the solution I finally came
      up with - it was part of an earlier, abandoned one. But, it's probably
      good information to have around in the future.
      43333bb7
  23. 01 Mar, 2007 1 commit
  24. 25 Jan, 2006 1 commit
    • Robert Ricci's avatar
      Merge in changes from the assign-devel branch. This includes: · ed3cbc13
      Robert Ricci authored
      Ripping out crope and replacing (almost) all cropes, char*s and
      strings with fstring
      
      Beginnings of XML parser support (not built by default yet).
      
      Significant re-org of code.
      
      Should now compile with the latest gcc.
      
      Putting link information in stored solutions.
      
      Support for fixing interfaces.
      ed3cbc13
  25. 13 Sep, 2005 1 commit
  26. 10 May, 2005 1 commit
  27. 19 Jan, 2005 1 commit
    • Robert Ricci's avatar
      Add support for the set-type-limit command in the ptop file. · 8eaec842
      Robert Ricci authored
      It looks like this:
      set-type-limit <type> <count>
      
      This can be placed anywhere in the ptop file.  It limits the number of
      physical nodes of a given type that an experimenter is allowed to use.
      
      For example, we may limit a user to 10 PCs, or 5 pc850s. In the latter
      case, if the experimenter had simply asked for 10 generic PCs, then we
      will try to find them some mapping of nodes that uses types of PCs
      other than pc850s.
      
      Added a precheck to tell the user up-front if they asked for more
      nodes than they are allowed to use of a given type.
      8eaec842
  28. 11 Aug, 2004 1 commit