class_docstr: A Kubernetes job runner that launches and executes pipeline components in kubernetes cluster.
docstr: Wait until the processs is completed.
docstr_tok: ["Wait","until","the","processs","is","completed","."]
code: def _wait_until_completion(self) -> None:
      """Wait until the processs is completed."""
      pod = kube_utils.wait_pod(
          self._k8s_core_api,
          self._pod_name,
          self._namespace,
          exit_condition_lambda=kube_utils.pod_is_done,
          condition_description="done state",
          exponential_backoff=True,
      )
      pod_phase = kube_utils.PodPhase(pod.status.phase)
      if pod_phase == kube_utils.PodPhase.FAILED:
          raise JobExceptionError(
              message='Pod "%s" failed with status "%s".'
              % (self._pod_name, pod.status)
          )
      if pod_phase.is_done:
          logging.info(
              "Job completed! Ending log streaming for pod %s:%s.",
              self._namespace,
              self._pod_name,
          )
  
      if self.ttl_seconds:
          logging.info(
              "Job %s will be deleted after %d seconds.",
              self._job_name,
              self.ttl_seconds,
          )
      else:
          logging.info(
              "To delete the job, please run the following command:\n\n"
              "kubectl delete jobs/%s",
              self._job_name,
          )
  
imports: import abc
  import datetime
  import random
  import string
  import time
  from absl import logging
  from kubernetes import client
  from tfx.orchestration.experimental.core import task_scheduler
  from tfx.orchestration.python_execution_binary import python_execution_binary_utils
  from tfx.utils import kube_utils
  from tfx.utils import status
label_desc: Use image node_id 6 for calling the KubernetesJobRunner obj's underlying member method code with example usage: obj._wait_until_completion() without return types