for child in self._children:
child.SetInfo(text)
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Grow the block device.
@type amount: integer
@type dryrun: boolean
@param dryrun: whether to execute the operation in simulation mode
only, without actually increasing the size
+ @param backingstore: whether to execute the operation on backing storage
+ only, or on "logical" storage only; e.g. DRBD is logical storage,
+ whereas LVM, file, RBD are backing storage
"""
raise NotImplementedError
_ThrowError("Command: %s error: %s - %s", result.cmd, result.fail_reason,
result.output)
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Grow the logical volume.
"""
+ if not backingstore:
+ return
if self.pe_size is None or self.stripe_count is None:
if not self.Attach():
_ThrowError("Can't attach to LV during Grow()")
first_line)
values = version.groups()
- retval = {"k_major": int(values[0]),
- "k_minor": int(values[1]),
- "k_point": int(values[2]),
- "api": int(values[3]),
- "proto": int(values[4]),
- }
+ retval = {
+ "k_major": int(values[0]),
+ "k_minor": int(values[1]),
+ "k_point": int(values[2]),
+ "api": int(values[3]),
+ "proto": int(values[4]),
+ }
if values[5] is not None:
retval["proto2"] = values[5]
doesn't do anything to the supposed peer. If you need a fully
connected DRBD pair, you need to use this class on both hosts.
- The unique_id for the drbd device is the (local_ip, local_port,
- remote_ip, remote_port) tuple, and it must have two children: the
- data device and the meta_device. The meta device is checked for
- valid size and is zeroed on create.
+ The unique_id for the drbd device is a (local_ip, local_port,
+ remote_ip, remote_port, local_minor, secret) tuple, and it must have
+ two children: the data device and the meta_device. The meta device
+ is checked for valid size and is zeroed on create.
"""
_MAX_MINORS = 255
@classmethod
def _ComputeDiskBarrierArgs(cls, vmaj, vmin, vrel, disabled_barriers,
- disable_meta_flush):
+ disable_meta_flush):
"""Compute the DRBD command line parameters for disk barriers
Returns a list of the disk barrier parameters as requested via the
"--c-delay-target", params[constants.LDP_DELAY_TARGET],
"--c-max-rate", params[constants.LDP_MAX_RATE],
"--c-min-rate", params[constants.LDP_MIN_RATE],
- ])
+ ])
else:
args.extend(["-r", "%d" % params[constants.LDP_RESYNC_RATE]])
msg = ("Can't change syncer rate: %s - %s" %
(result.fail_reason, result.output))
logging.error(msg)
- return msg
+ return [msg]
return []
cls._InitMeta(aminor, meta.dev_path)
return cls(unique_id, children, size, params)
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Resize the DRBD device and its backing storage.
"""
_ThrowError("drbd%d: Grow called while not attached", self._aminor)
if len(self._children) != 2 or None in self._children:
_ThrowError("drbd%d: cannot grow diskless device", self.minor)
- self._children[0].Grow(amount, dryrun)
- if dryrun:
- # DRBD does not support dry-run mode, so we'll return here
+ self._children[0].Grow(amount, dryrun, backingstore)
+ if dryrun or backingstore:
+ # DRBD does not support dry-run mode and is not backing storage,
+ # so we'll return here
return
result = utils.RunCmd(["drbdsetup", self.dev_path, "resize", "-s",
"%dm" % (self.size + amount)])
# TODO: implement rename for file-based storage
_ThrowError("Rename is not supported for file-based storage")
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Grow the file
@param amount: the amount (in mebibytes) to grow with
"""
+ if not backingstore:
+ return
# Check that the file exists
self.Assemble()
current_size = self.GetActualSize()
"""
pass
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Grow the logical volume.
"""
"""
pass
- def Grow(self, amount, dryrun):
+ def Grow(self, amount, dryrun, backingstore):
"""Grow the Volume.
@type amount: integer
only, without actually increasing the size
"""
+ if not backingstore:
+ return
if not self.Attach():
_ThrowError("Can't attach to rbd device during Grow()")