class_docstr: Common utilities for kubeflow engine.
class_docstr_tok: ["Common","utilities","for","kubeflow","engine","."]
code: def _wait_until_completed(self, run_id: str):
      end_state = kubeflow_test_utils.poll_kfp_with_retry(
          self._endpoint,
          run_id,
          self._RETRY_LIMIT,
          self._TIME_OUT,
          self._POLLING_INTERVAL_IN_SECONDS,
      )
      self.assertEqual(
          end_state.lower(), kubeflow_test_utils.KFP_SUCCESS_STATUS
      )
  
imports: import datetime
  import os
  import subprocess
  import tarfile
  from absl import logging
  from google.cloud import aiplatform
  import kfp
  from tfx.dsl.io import fileio
  from tfx.experimental.templates import test_utils
  from tfx.orchestration import test_utils
  from tfx.orchestration.kubeflow import test_utils
  from tfx.orchestration.kubeflow.v2 import vertex_client_utils
  from tfx.utils import docker_utils
  from tfx.utils import io_utils
  from tfx.utils import retry
  from tfx.utils import telemetry_utils
  from tfx.utils import test_case_utils
  import yaml
label_desc: Use image node_id 8 for calling the BaseKubeflowEndToEndTest obj's underlying member method code with example usage: obj._wait_until_completed(run_id) without return types