'Return True if the job is complete, False otherwise
:returns: True if the job is complete, False otherwise
:raises: libvirt.libvirtError on error fetching block job info'

def is_job_complete(self):

    status = self.get_job_info()
    if (status is None):
        return True
    if ((status.end != 0) and (status.cur == status.end)):
        disk = self._guest.get_disk(self._disk)
        if (disk and disk.mirror):
            return (disk.mirror.ready == 'yes')
    return False
