@listify<EOL>def wait_for_completion(report, interval=<NUM_LIT:10>):
for jobid in report.collect('<STR_LIT>'):<EOL><INDENT>try:<EOL><INDENT>if not Job.finished(jobid):<EOL><INDENT>logging.info('<STR_LIT>', jobid)<EOL>time.sleep(interval)<EOL>while not Job.finished(jobid):<EOL><INDENT>time.sleep(interval)<EOL><DEDENT><DEDENT>yield Job.fromid(jobid)._asdict()<EOL><DEDENT>except OSError as e:<EOL><INDENT>if e.errno == errno.ENOENT:<EOL><INDENT>yield dict(id=str(jobid))<EOL><DEDENT>else:<EOL><INDENT>raise e<EOL><DEDENT><DEDENT><DEDENT>
Wait for asynchronous jobs stil running in the given campaign.

    :param report: memory representation of a campaign report
    :type campaign: ReportNode
    :param interval: wait interval
    :type interval: int or float
    :return: list of asynchronous job identifiers