1. 19 Mar, 2012 1 commit
  2. 25 Jan, 2012 1 commit
    • Michael Hanselmann's avatar
      Fix cluster verification issues on multi-group clusters · 2c2f257d
      Michael Hanselmann authored
      
      
      This patch attempts to fix a number of issues with “gnt-cluster verify”
      in presence of multiple node groups and DRBD8 instances split over nodes
      in more than one group.
      
      - Look up instances in a group only by their primary node (otherwise
        split instances would be considered when verifying any of their node's
        groups)
      - When gathering additional nodes for LV checks, just compare instance's
        node's groups with the currently verified group instead of comparing
        against the primary node's group
      - Exclude nodes in other groups when calculating N+1 errors and checking
        logical volumes
      
      Not directly related, but a small error text is also clarified.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      2c2f257d
  3. 20 Jan, 2012 1 commit
  4. 24 Nov, 2011 3 commits
    • Michael Hanselmann's avatar
      LUGroupAssignNodes: Fix node membership corruption · 54c31fd3
      Michael Hanselmann authored
      
      
      Note: This bug only manifests itself in Ganeti 2.5, but since the
      problematic code also exists in 2.4, I decided to fix it there.
      
      If a node was assigned to a new group using “gnt-group assign-nodes” the
      node object's group would be changed, but not the duplicate member list
      in the group object. The latter is an optimization to require fewer
      locks for other operations. The per-group member list is only kept in
      memory and not written to disk.
      
      Ganeti 2.5 starts to make use of the data kept in the per-group member
      list and consequently fails when it is out of date. The following
      commands can be used to reproduce the issue in 2.5 (in 2.4 the issue was
      confirmed using additional logging):
      
        $ gnt-group add foo
        $ gnt-group assign-nodes foo $(gnt-node list --no-header -o name)
        $ gnt-cluster verify  # Fails with KeyError
      
      This patch moves the code modifying node and group objects into
      “config.ConfigWriter” to do the complete operation under the config
      lock, and also to avoid making use of side-effects of modifying objects
      without calling “ConfigWriter.Update”. A unittest is included.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      (cherry picked from commit 218f4c3d)
      54c31fd3
    • Michael Hanselmann's avatar
      LUGroupAssignNodes: Fix node membership corruption · 218f4c3d
      Michael Hanselmann authored
      
      
      Note: This bug only manifests itself in Ganeti 2.5, but since the
      problematic code also exists in 2.4, I decided to fix it there.
      
      If a node was assigned to a new group using “gnt-group assign-nodes” the
      node object's group would be changed, but not the duplicate member list
      in the group object. The latter is an optimization to require fewer
      locks for other operations. The per-group member list is only kept in
      memory and not written to disk.
      
      Ganeti 2.5 starts to make use of the data kept in the per-group member
      list and consequently fails when it is out of date. The following
      commands can be used to reproduce the issue in 2.5 (in 2.4 the issue was
      confirmed using additional logging):
      
        $ gnt-group add foo
        $ gnt-group assign-nodes foo $(gnt-node list --no-header -o name)
        $ gnt-cluster verify  # Fails with KeyError
      
      This patch moves the code modifying node and group objects into
      “config.ConfigWriter” to do the complete operation under the config
      lock, and also to avoid making use of side-effects of modifying objects
      without calling “ConfigWriter.Update”. A unittest is included.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      218f4c3d
    • Michael Hanselmann's avatar
      Fix pylint warning on unreachable code · 9c4f4dd6
      Michael Hanselmann authored
      Commit c50452c3
      
       added an exception when all instances should be
      evacuated off a node, but did so in a way which made pylint complain
      about unreachable code.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      9c4f4dd6
  5. 23 Nov, 2011 3 commits
  6. 14 Nov, 2011 1 commit
  7. 08 Nov, 2011 1 commit
  8. 04 Nov, 2011 2 commits
  9. 19 Oct, 2011 1 commit
  10. 04 Oct, 2011 1 commit
  11. 03 Oct, 2011 1 commit
  12. 30 Sep, 2011 1 commit
  13. 28 Sep, 2011 2 commits
  14. 30 Aug, 2011 1 commit
  15. 26 Aug, 2011 1 commit
  16. 25 Aug, 2011 1 commit
  17. 23 Aug, 2011 1 commit
  18. 19 Aug, 2011 1 commit
  19. 12 Aug, 2011 4 commits
  20. 08 Aug, 2011 3 commits
    • Iustin Pop's avatar
      Allow fixing of split instances via relocate · e3a19474
      Iustin Pop authored
      
      
      Currently, the IAllocator code requests strictly that the (set of) groups of
      the nodes we're relocating from is equal to the set of groups we're
      relocating to.
      
      This, however, makes is impossible to fix split instances, since (by
      definition) the secondary of a split instance is not in the same group
      as the primary node, and after the fixing is it the same.
      
      The patch changes the test from group equality to check that the final
      group set (across both primary and secondary nodes) is a subset of the
      initial group set (again across both nodes). This means we can't
      "extend" the group of nodes but keeping the same or decreasing it is
      allowed.
      
      After this patch, one can finally fix (automatically) split instances
      via a gnt-instance replace-disks.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      e3a19474
    • Iustin Pop's avatar
      Further cleanup after multi-evacuate removal · f5fab862
      Iustin Pop authored
      Commit f0edfcf6
      
       removed the parsing of multi-evacuate result, but the
      code went from:
      
        if mode in (multi-evac, relocate):
          …
          if mode == relocate:
            …
      
      to:
      
        if mode == relocate:
          …
          if mode == relocate
            …
      
      This patch simply removes the nested if.
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      f5fab862
    • Iustin Pop's avatar
      Fix bug in IAllocator parsing of Evacuate result · 2f41ea77
      Iustin Pop authored
      Commit 342f9172
      
       added stricter checks for the iallocator result in
      evacuate mode, but it does this irrespective of the result
      status. When the result has failed and (according to the design) the
      list of nodes is empty, this code will trigger the following:
      
          node1# gnt-instance replace-disks -I hail instance14
          Failure: command execution error:
          Groups of nodes returned by iallocator () differ from original groups (default)
      
      After the patch, the result is:
      
          node1# gnt-instance replace-disks -I hail instance14
          Failure: prerequisites not met for this operation:
          error type: insufficient_resources, error details:
          Can't compute nodes using iallocator 'hail': Request failed: …
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      2f41ea77
  21. 05 Aug, 2011 4 commits
  22. 04 Aug, 2011 5 commits