Skip to content
Snippets Groups Projects
  1. Oct 02, 2009
    • Iustin Pop's avatar
      Move some more type definitions to Types.hs · 92e32d76
      Iustin Pop authored
      92e32d76
    • Iustin Pop's avatar
      Add a function converting Placements into Jobs · 6b20875c
      Iustin Pop authored
      This converts from htools-specific Placements into Ganeti standard
      OpCodes, which will later allow execution via Luxi.
      6b20875c
    • Iustin Pop's avatar
      Add a small implementation of OpCodes · 702a4ee0
      Iustin Pop authored
      These are just a few opcodes we need for executing instance moves.
      702a4ee0
    • Iustin Pop's avatar
      Record the move being performed in a Placement · 3173c987
      Iustin Pop authored
      This will allow a more descriptive output later in the solution list, as
      opposed to trying to reconstruct the move from the node indices.
      
      The patch also documents the Placement members.
      3173c987
    • Iustin Pop's avatar
      Add definitions for more Luxi calls · a1b5eeaf
      Iustin Pop authored
      a1b5eeaf
    • Iustin Pop's avatar
      Split the Luxi generic parts from the loader · 6583e677
      Iustin Pop authored
      The Luxi loader implements both a generic Ganeti Luxi client and the
      loader; it is better if these two are separated. The patch adds a
      Ganeti/Luxi.hs (not under HTools!) since that is generic for Ganeti, and
      not related necessarily to htools.
      6583e677
    • Iustin Pop's avatar
      hbal: Implement grouping of moves into jobsets · 0e8ae201
      Iustin Pop authored
      Since moving two instances between different node-quadruples (inst X: A,
      B → C, D and inst Y: E, F → G, H) can be parallelised by Ganeti, it
      makes sense to split the operation list into jobsets whose execution
      must be serialised, but whose individual jobs can be parallelised.
      
      Of course, this doesn't help, because today a single logical job is for
      some cases split in multiple gnt-instance invocations, which (if run
      using ‘--submit’) might be wrongly parallelised by Ganeti. So while for
      now this is mostly a cosmetic hint to the user, and it just a step for
      future improvements.
      0e8ae201
  2. Sep 30, 2009
    • Iustin Pop's avatar
      Change ExtLoader to only handle I/O errors · 1cf97474
      Iustin Pop authored
      Due to the Control.Exception changes between 6.8 and 6.10, using it
      portably is difficult. Since we're only interested in handling I/O
      errors, we can use prelude's catch and not have to deal with
      Control.Exception at all.
      
      The use in Luxi.hs where we just use bracket is fine across the two
      versions, so we keep that.
      1cf97474
  3. Sep 29, 2009
  4. Sep 28, 2009
    • Iustin Pop's avatar
      Turn on, and fix, more warnings · fbb95f28
      Iustin Pop authored
      The Makefile was intented to be -Wall and not simply -W, but I missed
      that. This enables more warnings and also enables -Werror (except for
      the tests).
      fbb95f28
    • Iustin Pop's avatar
      Brown bag fix: invert a test · 685f5bc6
      Iustin Pop authored
      During testing I used the test inversely to see it triggers correctly,
      and committed by mistake the inverted test. Fixing it.
      685f5bc6
    • Iustin Pop's avatar
      Add support for building without curl · 45ab6a8d
      Iustin Pop authored
      Since curl is not always needed (e.g. when only using luxi or less
      likely file backends only) and is also not always available, it is
      useful for building without it. This of course disabled the RAPI
      backend.
      
      This patch changes ExtLoader to build with the ‘-cpp’ option which makes
      ghc run it through cpp first; and based on whether ‘NO_CURL’ is defined
      or not, this toggles RAPI/curl inclusion. The patch also removes the
      import of Rapi in QC.hs since it's not actually used in tests.
      
      Invoking make as ‘make HEXTRA=-DNO_CURL’ is enough to trigger the new
      build mode.
      45ab6a8d
    • Iustin Pop's avatar
      Split the exernal data loader out of CLI.hs · e8f89bb6
      Iustin Pop authored
      Currently the external data loader is in CLI.hs, which makes all
      programs that need cli functionality (options, etc.) link against the
      network modules (most importantly curl). This patch splits this
      functionality into a new module such that (for example) hail which only
      deals with file I/O doesn't link against these libraries.
      e8f89bb6
  5. Sep 02, 2009
  6. Aug 31, 2009
  7. Aug 30, 2009
    • Iustin Pop's avatar
      Split the balancing algorithm in two parts · f25e5aac
      Iustin Pop authored
      Currently the computation, recursing part and the IO part (progress
      updates) of the balancing main function (iterateDepth) are all in the
      same function, which makes it hard to test. This patch moves the
      decision/computation part (whether to proceed one more round, whether we
      got a good result, etc.) into Cluster.hs, and leaves only the iteration
      and screen update in hbal.hs.
      f25e5aac
  8. Aug 26, 2009
    • Iustin Pop's avatar
      Implement support for 'cheap' moves only · c0501c69
      Iustin Pop authored
      This patch adds support for cheap (failover/migrate) operations only in
      the balancing algorithm and in the hbal command line options.
      
      This allows a very quick balancing (compared to allowing replace-disks)
      which can be useful as a scheduled operation.
      c0501c69
    • Iustin Pop's avatar
      Simplify the wrapIO function · 633e6bcb
      Iustin Pop authored
      This fixes one warning from hlint.
      633e6bcb
    • Iustin Pop's avatar
      Use migrate or failover based on instance state · c9926b22
      Iustin Pop authored
      While we can't guarantee that the instance will be in the same state by
      the time the migrate/failover command will be run, we can at least try
      to do the right thing assuming no other changes to the cluster state.
      
      Of course, the right fix would be for Ganeti to accept a
      migrate-or-failover opcode that atomically does the move…
      c9926b22
  9. Aug 19, 2009
  10. Aug 18, 2009
  11. Jul 28, 2009
  12. Jul 15, 2009
    • Iustin Pop's avatar
      CLI: Handle error better · 175cc337
      Iustin Pop authored
      This patch adds an error handler for any exceptions that are raised
      during the external data load phase. This can be improved further, but
      it's a good start.
      175cc337
    • Iustin Pop's avatar
      Unify the command line options and structures · 0427285d
      Iustin Pop authored
      This patch moves all the command line options and their internal
      representation into CLI.hs. This means that duplicated options between
      any two binaries are no longer declared twice, and that we no longer
      need the two *Option classes.
      0427285d
  13. Jul 14, 2009
  14. Jul 09, 2009
    • Iustin Pop's avatar
      Update NEWS file for the 0.1.5 release · d8de9112
      Iustin Pop authored
      This is basically a hspace release, so the changelog is small.
      htools-v0.1.5
      d8de9112
    • Iustin Pop's avatar
      Fix a haddoc issue · 7d11799b
      Iustin Pop authored
      7d11799b
    • Iustin Pop's avatar
      hspace: fix failure handling of tryAlloc results · 31e7ac17
      Iustin Pop authored
      Currently hspace doesn't handle failures from tryAlloc correctly; this
      patch changes the iterateDepth function in hspace to return a Result (…)
      so that errors can be propagated correctly.
      
      The patch also changes one output key to be more clear and a typo in
      Cluster.hs
      31e7ac17
    • Iustin Pop's avatar
      Change the tryAlloc/tryReloc workflow · 478df686
      Iustin Pop authored
      Currently, the tryAlloc and tryReloc function return a list with all the
      results, both failures and successes. This is fine for hail, which does
      one round of allocations, but is not so good for hspace, which does
      iterative rounds; since at each (successful) step we only take the best
      solution, it means that we're using lots of heap space to compute and
      store node lists which are thrown away at the end of the step.
      
      This patch changes these two functions and their callers in hail/hspace
      to only return the best solution, and error/success counters. This
      allows hspace to run in a much smaller space, and reduces GC cost
      greatly.
      
      Overall, it is a cleanup, as hail/hspace did a lot of work to chose this
      best solution, whereas now it's automatically promoted within
      Cluster.concatAllocs.
      478df686
Loading