if result.failed:
_ThrowError("drbd%d: can't attach local disk: %s", minor, result.output)
- @classmethod
- def _AssembleNet(cls, minor, net_info, protocol,
+ def _AssembleNet(self, minor, net_info, protocol,
dual_pri=False, hmac=None, secret=None):
"""Configure the network part of the device.
if None in net_info:
# we don't want network connection and actually want to make
# sure its shutdown
- cls._ShutdownNet(minor)
+ self._ShutdownNet(minor)
return
# Workaround for a race condition. When DRBD is doing its dance to
# sync speed only after setting up both sides can race with DRBD
# connecting, hence we set it here before telling DRBD anything
# about its peer.
- cls._SetMinorSyncSpeed(minor, constants.SYNC_SPEED)
+ sync_speed = self.params.get(constants.RESYNC_RATE)
+ self._SetMinorSyncSpeed(minor, sync_speed)
if netutils.IP6Address.IsValid(lhost):
if not netutils.IP6Address.IsValid(rhost):
else:
_ThrowError("drbd%d: Invalid ip %s" % (minor, lhost))
- args = ["drbdsetup", cls._DevPath(minor), "net",
+ args = ["drbdsetup", self._DevPath(minor), "net",
"%s:%s:%s" % (family, lhost, lport),
"%s:%s:%s" % (family, rhost, rport), protocol,
"-A", "discard-zero-changes",
minor, result.fail_reason, result.output)
def _CheckNetworkConfig():
- info = cls._GetDevInfo(cls._GetShowData(minor))
+ info = self._GetDevInfo(self._GetShowData(minor))
if not "local_addr" in info or not "remote_addr" in info:
raise utils.RetryAgain()
# the device
self._SlowAssemble()
- self.SetSyncSpeed(constants.SYNC_SPEED)
+ sync_speed = self.params.get(constants.RESYNC_RATE)
+ self.SetSyncSpeed(sync_speed)
def _SlowAssemble(self):
"""Assembles the DRBD device from a (partially) configured device.
raise errors.ProgrammerError("Unknown disk template %s" % disk_template)
result = list()
+ dt_params = disk_params[disk_template]
if disk_template == constants.DT_DRBD8:
- result.append(constants.DISK_LD_DEFAULTS[constants.LD_DRBD8])
+ params = {
+ constants.RESYNC_RATE: dt_params[constants.DRBD_RESYNC_RATE]
+ }
+
+ drbd_params = \
+ objects.FillDict(constants.DISK_LD_DEFAULTS[constants.LD_DRBD8], params)
+
+ result.append(drbd_params)
result.append(constants.DISK_LD_DEFAULTS[constants.LD_LV])
result.append(constants.DISK_LD_DEFAULTS[constants.LD_LV])
+
elif (disk_template == constants.DT_FILE or
disk_template == constants.DT_SHARED_FILE):
result.append(constants.DISK_LD_DEFAULTS[constants.LD_FILE])
# others
DEFAULT_BRIDGE = "xen-br0"
-SYNC_SPEED = 60 * 1024
+CLASSIC_DRBD_SYNC_SPEED = 60 * 1024 # 60 MiB, expressed in KiB
IP4_ADDRESS_LOCALHOST = "127.0.0.1"
IP4_ADDRESS_ANY = "0.0.0.0"
IP6_ADDRESS_LOCALHOST = "::1"
NDS_PARAMETERS = frozenset(NDS_PARAMETER_TYPES.keys())
# Logical Disks parameters
+RESYNC_RATE = "resync-rate"
DISK_LD_TYPES = {
+ RESYNC_RATE: VTYPE_INT,
}
DISK_LD_PARAMETERS = frozenset(DISK_LD_TYPES.keys())
# Disk template parameters
+DRBD_RESYNC_RATE = "resync-rate"
DISK_DT_TYPES = {
+ DRBD_RESYNC_RATE: VTYPE_INT,
}
DISK_DT_PARAMETERS = frozenset(DISK_DT_TYPES.keys())
DISK_LD_DEFAULTS = {
LD_DRBD8: {
+ RESYNC_RATE: CLASSIC_DRBD_SYNC_SPEED,
},
LD_LV: {
},
DT_PLAIN: {
},
DT_DRBD8: {
+ DRBD_RESYNC_RATE: DISK_LD_DEFAULTS[LD_DRBD8][RESYNC_RATE]
},
DT_DISKLESS: {
},