def reconstruct_disk(self, disk_num): print("Reconstructing Disk") if (self.num_disks - len(self.disks)) > 1: raise DiskReconstructException( "Cannot reconstruct disk: too many disks missing") new_disk = Disk(disk_num, self.disk_cap) for i in range(len(self.disks[0])): block = [] for j in range(len(self.disks)): block.append(self.disks[j].read(i)) self.validate_parity( block + [format(self.calculate_parity(block), bin_format)]) new_disk.write(format(self.calculate_parity(block), bin_format)) self.disks.insert(disk_num, new_disk) self.validate_disks()