Today I had to implement a check to see if a disk contains a UEFI ESP partition.
Here it is, it also works on disk image files instead of devices:
def get_uefi_partition(self, disk_dev):
"""
Return the partition device of the UEFI ESP partition for the device in
disk_dev.
Returns None if disk_dev contains no UEFI ESP partition.
"""
import parted
pdev = parted.getDevice(disk_dev)
pdisk = parted.newDisk(pdev)
if pdisk.type != "gpt":
log.error("device %s has partition table type %s instead of gpt", disk_dev, pdisk.type)
return None
for part in pdisk.partitions:
if part.getFlag(18):
log.info("Found ESP partition in %s", part.path)
return part.path
log.info("No ESP partition found in %s", disk_dev)
return None