1. 14 Nov, 2007 1 commit
  2. 07 Nov, 2007 1 commit
    • Iustin Pop's avatar
      Enhance secondary node replace for drbd8 · 0834c866
      Iustin Pop authored
      This (big) patch does two things:
        - add "local disk status" to the block device checks
          (BlockDevice.GetSyncStatus and the rpc calls that call this
          function, and therefore cmdlib._CheckDiskConsistency)
        - improve the drbd8 secondary replace operation using the above
      The "local disk status" adds a new variable to the result of
      GetSyncStatus that shows the degradation of the local storage of the
      device. Of course, not all device support this - for now, we only modify
      LogicalVolumes and DRBD8 to return degraded in some cases, other devices
      always return non-degraded. This variable should be a subset of
      is_degraded - whenever this variable is true, the is_degraded should
      also be true.
      The drbd8 secondary replace uses this variable as we don't care if the
      primary drbd device is network-degraded, only if it has good local disk
      data (ldisk is False).
      The patch also increases the protocol version (due to rpc changes).
      Reviewed-by: imsnah
  3. 06 Nov, 2007 5 commits
    • Iustin Pop's avatar
      Implement degraded status for logical volumes · 9db6dbce
      Iustin Pop authored
      Logical volumes can be 'degraded' in a similar way to mirrored devices,
      when their underlying storage has gone away (i.e. after a physical disk
      failure and 'vgreduce --removemissing'). If we can detect this, we can
      prevent mistaken replaces of disks that would use this LV (or its
      parent) as source data.
      This patch adds support for computing the degraded attribute and
      modifies gnt-instance to warn if the LV is virtual.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Enhance mirror operations for DRBD8 · 03ece5f3
      Iustin Pop authored
      Currently, the mirror operations (add and remove children) test against
      the instance's attributes. This patch changes the check tests to work
      against the actual status of the device (i.e. live data) which is more
      The changes are:
        - allow add children if the device doesn't have local storage (even if
          we believe it has)
        - early return from remove children if the device is already without
          local storage
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Allow DRBD8 operation without backing storage · fc1dc9d7
      Iustin Pop authored
      This patch adds the following functionality:
        - DRBD8 devices can assemble without local storage (done by allowing
          None in the list of children, and making DRBD8 to ignore all
          children if any is None)
        - DRBD8 devices can attach (i.e. identify a device) which is not
          connected to backing storage but to the correct network ports; this
          is a rare case in normal operation (it's what would happen if one
          manually detaches the local disk, and the backing LV still exists)
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Make DRBD8 disks show 'degraded' status if diskless · 583e3f6f
      Iustin Pop authored
      This patch enables the bdev.DRBD8 class report a degraded status if the
      local disk is missing. This allows `gnt-instance info` to report the
      actual situation in this case.
      Note that DRBD7 should also behave like this, however the diskless case
      is less often met there and we also don't want to change behaviour.
      The patch also fixes some docstrings for the GetSyncStatus methods.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Change the way remove children is called in bdev · e739bd57
      Iustin Pop authored
      For some cases, we don't have to have access to the children of a device
      in order to remove them (e.g. md over lvs, or drbd over lvs). In order
      to ease the removal process, skip over finding the child if it provides
      a static dev path.
      This is needed in order to support removal of children when the
      underlying storage has gone away.
      Reviewed-by: imsnah
  4. 05 Nov, 2007 1 commit
    • Iustin Pop's avatar
      Miscellaneous style fixes · 65fe4693
      Iustin Pop authored
      This patch fixes some minor pylint warnings (unused variables, wrong
      indentation, etc.) and a real bug in the recovery for drbd8 rename
      Reviewed-by: imsnah
  5. 02 Nov, 2007 1 commit
    • Iustin Pop's avatar
      Update the dev_path on LVs on rename · be345db0
      Iustin Pop authored
      When renaming a logical volume, we should change the dev_path (and other
      internal variables) in order to be consistent.
      Reviewed-by: imsnah
  6. 29 Oct, 2007 4 commits
  7. 25 Oct, 2007 1 commit
    • Iustin Pop's avatar
      Modify two mirror-device related rpc calls · 153d9724
      Iustin Pop authored
      The two calls mirror_addchild and mirror_removechild take only one child
      for addition/removal. While this is enough for our md usage, for local
      disk replacement in drbd8, we need to be able to specify both the data
      and metadata device. This patch modifies these two rpc calls (and their
      backend implementation and their usage in cmdlib) to take a list of
      children to add/remove.
      Reviewed-by: imsnah
  8. 24 Oct, 2007 7 commits
    • Iustin Pop's avatar
      Initial implementation of drbd8 template type · a1f445d3
      Iustin Pop authored
      This is a partially working drbd8 template type. It does:
        - add/remove
        - startup/failover/shutdown
      Not working is replace disks, which needs custom code for this template.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Allow DRBD8 to sync after sb1-pri with no changes · f38478b2
      Iustin Pop authored
      Currently the way we shutdown or startup disks seems to make DRBD8
      unhappy. Until we rewrite the sequence of (de)activation, allow DRBD to
      connect after a sb1-pri condition with no changes to the data.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Add DRBD8 class for handling drbd version 8.x · a2cfdea2
      Iustin Pop authored
      This duplicates some code from the DRBDev class, but not very much, and
      it will be expanded with the new functionality available for the 8.x
      version. Currently the code is not accessible outside the module.
      This patch introduces a dependency on the pyparsing module.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Move/rename _IsValidMeta to base drbd class · ae26a287
      Iustin Pop authored
      The DRBDev._IsValidMeta only checks for the metadata device size. Since
      this is a useful check (but not complete) for DRBD8, move it to the base
      class and name it _CheckMetaSize.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      More abstractions from DRBD7 to base class · 5a47ad20
      Iustin Pop authored
      This moves the _SetFromMinor and _MassageProcData to the base class.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Improve out-of-minors handling · 0caf6485
      Iustin Pop authored
      Currently, the out-of-minors handling is not very good: though both MD
      and DRBD functions for finding an unused minor can return None, only the
      DRBD code checks for this case.
      This patch improves this by making the functions _FindUnusedMinor raise
      an error instead of None, and gets rid of the one manual check for the
      return value.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Move some methods from DRBDev to BaseDRBD · 770fe0f9
      Iustin Pop authored
      Since some of the methods and constants are valid for both 0.7 and 8.x
      versions, we move them to the base class.
      Reviewed-by: imsnah
  9. 19 Oct, 2007 2 commits
    • Iustin Pop's avatar
      Split some DRBD functionality based on versions · 0f7f32d9
      Iustin Pop authored
      This is a small split of some functionality from the DRBDev class into a
      base drbd class that holds just a few things, in order to make migration
      to drbd 8.x easier.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Abstract more strings values into constants · fe96220b
      Iustin Pop authored
      Currently, the disk types are defined using constants in the code.
      Convert those into constants so that we can easily find them and check
      their usage.
      Note that we don't rename the values of the constants as they are used
      in the configuration file, and as such it's best to leave them as they
      Reviewed-by: imsnah
  10. 10 Oct, 2007 1 commit
    • Iustin Pop's avatar
      Remove the shebang from modules · 2f31098c
      Iustin Pop authored
      Since modules are not directly executables, remove the shebang from
      them. This helps with lintian warnings.
      Also make the autogenerated _autoconf.py contain two comment lines at
      the beginning, like the other modules.
      Reviewed-by: ultrotter
  11. 30 Aug, 2007 1 commit
  12. 28 Aug, 2007 1 commit
  13. 14 Aug, 2007 1 commit
    • Iustin Pop's avatar
      Style changes for pep-8 and python-3000 compliance. · 3ecf6786
      Iustin Pop authored
      This changes the raising of exceptions from:
        raise Exception, value
        raise Exception(value)
      as the first form will be removed in python-3000 and the second form is
      preferred now.
      The changes also involve a few cases of changing from raising standard
      exceptions and use our own ones.
      The new version also fixes many pylint-generated warnings, especially in
      ganeti-noded where I changed many methods to @staticmethod.
      There is no functionality changed (barring any bugs).
  14. 03 Aug, 2007 1 commit
  15. 26 Jul, 2007 1 commit
  16. 23 Jul, 2007 1 commit
  17. 16 Jul, 2007 1 commit