1. 26 Jun, 2003 4 commits
    • Mac Newbold's avatar
    • Mac Newbold's avatar
      Add three characters I left out last time... · 03ee2f54
      Mac Newbold authored
    • Mac Newbold's avatar
    • Robert Ricci's avatar
      Major changes to the way assign handles LAN nodes. · 83cfa8ec
      Robert Ricci authored
      LAN nodes are no longer treated specially. Instead, I've introduced
      the idea of 'static' types (old-style types retroactively become
      'dynamic' types). While a pnode can only satisfy one dynamic type at a
      time, it can always satisfy its static types (assuming it has enough
      capacity left.) Static types are flagged by prepending them with a '*'
      in the ptop file. So, for example, you may give switches the
      '*lan:10000' type so that they can satisfy virtual LAN nodes. Of
      course, other pnodes can have this type too, so that we can get
      'trivial LANs'.
      Actually, removing special treatment for LANs cleans up a lot of code.
      However, it may have some negative impacts on solutions, since we're
      not as smart about where to place LAN nodes as we used to be (they get
      annealed along with everything else, and not migrated.) I haven't seen
      any evidence of this yet, however.
      This leaves us with a single type of special pnode, a switch.
      Also added a new bit of syntax in ptop files - when '*' is given as a
      the maxiumum load for a type, the node is allowed to take on an
      infinite (well, actually, just a really big number of) vnodes of that
      ptopgen was modified to always report switches as being capable of
      hosting LANs, and assign_wrapper now understands direct links to LANs,
      which is what we get when the LAN is hosted directly on a switch.
      Fixed a bug in scoring direct links, in which the penatly was being
      added once when a direct link was mapped, but subtracted only once
      when it was freed.
      Added a '-T' option for doing simple self-testing. When adding a node
      to the solution, assign records the score, adds the node, removes it
      again, and checks to make sure that the resulting score is the same as
      the original score. The usefulness of this feature in debugging
      scoring problems cannot be understated...
  2. 25 Jun, 2003 9 commits
  3. 24 Jun, 2003 4 commits
  4. 23 Jun, 2003 9 commits
  5. 20 Jun, 2003 5 commits
  6. 19 Jun, 2003 6 commits
  7. 18 Jun, 2003 3 commits
    • Leigh B. Stoller's avatar
      Allow inet addrs to be (which indirectly indicates DHCP mode). · 53b461cb
      Leigh B. Stoller authored
      Also fix bug in "info" mode, that was causing it to be less than
    • Mac Newbold's avatar
      The first working version of the StateWait library. The API changed a bit: · 33251a18
      Mac Newbold authored
      # $rv = initStateWait(\@states, @nodes);
      # Call this first. Make sure to call it _before_ performing any
      # action that may trigger one or more of the states you're
      # expecting to see. Each node must see the list of states in the
      # proper order, ie if @states=(stateA, stateB), it will not
      # complete until the first time stateB is seen after stateA has
      # been seen. Returns 0 on success.
      # $rv = waitForState(\@finished, \@failed[, $timeout);
      # Do the actual waiting. Blocks until each node has either reached the
      # desired state(s) or failed, or timeout is reached (if given and
      # non-zero). Returns lists of nodes.
      # $rv = endStateWait();
      # Stop listening for states. Call this soon after waitForState.
      # This must be called before calling initStateWait again.
      Also, commit a command line tool that uses the lib. The waitForState
      script can be used by other programs to do the state waiting for you, or
      you can use the lib directly for more control, using this script as an
      example of how to do it.
    • Mac Newbold's avatar
      Fix the comments table so that rerunning db-fill doesn't bloat things. (If · 8a7a353f
      Mac Newbold authored
      a null field is part of a primary key, there are no collisions. So
      table_name "foo" and column_name NULL can have multiple rows, which is
      Also updated some state timeouts.