def METHOD_NAME(job_name, namespace, timeout=600, sleep_time=30):
    """
    Wait for given k8s Job to complete.
    Args:
        job_name (str): name of the job to wait for
        namespace (str): name of the namespace where the job is running
        timeout (int): timeout in seconds
        sleep_time (int): sleep time between consequent job status checks in
            seconds
    Raises:
        TimeoutExpiredError: When job fails to complete in given time
    """
    ocp_job = OCP(kind="Job", namespace=namespace, resource_name=job_name)
    try:
        for live_job_d in TimeoutIterator(
            timeout=timeout, sleep=sleep_time, func=ocp_job.get
        ):
            job_status = live_job_d.get("status")
            if job_status is None:
                log.debug("job status not (yet) available")
                continue
            if "completionTime" in job_status:
                log.info(
                    "job %s finished at %s", job_name, job_status["completionTime"]
                )
                break
    except exceptions.TimeoutExpiredError as ex:
        error_msg = f"job/{job_name} failed to complete in {timeout} seconds"
        log.warning(error_msg)
        raise exceptions.TimeoutExpiredError(error_msg) from ex