diff --git a/pym/calculate/lib/utils/device.py b/pym/calculate/lib/utils/device.py index 3732194..85b1cd0 100644 --- a/pym/calculate/lib/utils/device.py +++ b/pym/calculate/lib/utils/device.py @@ -564,14 +564,12 @@ class MdadmCommand(object): def stop_raid(self, devraid): if not self.mdadm_cmd: return "" - pvdata = files.process(self.mdadm_cmd, "-S", devraid) - return pvdata.success() + return files.process(self.mdadm_cmd, "-S", devraid).success() - def zero_superblock(self, devices): + def zero_superblock(self, dev): if not self.mdadm_cmd: return "" - for dev in devices: - files.process(self.mdadm_cmd, "--zero-superblock", dev).success() + return files.process(self.mdadm_cmd, "--zero-superblock", dev).success() class Raid(object): def __init__(self, commander): @@ -606,12 +604,16 @@ class Raid(object): yield devname def remove_raid(self, raidname): - raidparts = self.devices(udev.get_syspath(name=raidname)) + # итератор не подходит, так как после остановки RAID + # не получится узнать его диски + raidparts = list(self.devices(udev.get_syspath(name=raidname))) failed = False - self.commander.stop_raid(raidname) + failed |= not (self.commander.stop_raid(raidname) or + self.commander.stop_raid(raidname)) for dev in raidparts: - self.commander.zero_superblock(dev) - return failed + failed |= not (self.commander.zero_superblock(dev) or + self.commander.zero_superblock(dev)) + return not failed def loadEfiVars(): """