Handle unformatted/corrupted partition tables, see SWL-3246

- handle more pyparted exceptions
- properly clobber the disk signature
This commit is contained in:
Carl D. Roth
2016-11-03 13:58:40 -07:00
parent abf0e19cc6
commit 6d1aaa134c

View File

@@ -21,6 +21,14 @@ from InstallUtils import ProcMountsParser
import onl.YamlUtils
from onl.sysconfig import sysconfig
try:
PartedException = parted._ped.PartedException
DiskException = parted._ped.DiskException
except AttributeError:
import _ped
PartedException = _ped.PartedException
DiskException = _ped.DiskException
class Base:
class installmeta:
@@ -686,11 +694,17 @@ class UbootInstaller(SubprocessMixin, Base):
return 0
self.log.warn("disk %s has wrong label %s",
self.device, self.partedDisk.type)
except Exception as ex:
except (DiskException, PartedException) as ex:
self.log.error("cannot get partition table from %s: %s",
self.device, str(ex))
except Exception as ex:
self.log.exception("cannot get partition table from %s: %s",
self.device)
self.log.info("creating msdos label on %s")
self.log.info("clobbering disk label on %s", self.device)
self.partedDevice.clobber()
self.log.info("creating msdos label on %s", self.device)
self.partedDisk = parted.freshDisk(self.partedDevice, 'msdos')
return 0