code: def _start_and_verify_execution_with_retry(
      pipeline: Pipeline, parameters: dict
  ) -> list:
      for _ in retries(
          max_retry_count=3,
          exception_message_prefix="Waiting for a successful execution of pipeline",
          seconds_to_sleep=10,
      ):
          execution = pipeline.start(parameters=parameters)
          wait_pipeline_execution(execution=execution)
          execution_steps = execution.list_steps()
  
          for execution_step in execution_steps:
              failure_reason = execution_step.get("FailureReason", "")
              if failure_reason != "":
                  logging.error(
                      f"Pipeline execution failed with error: {failure_reason}. Retrying.."
                  )
                  continue
  
          for execution_step in execution_steps:
              if execution_step["StepStatus"] != "Succeeded":
                  logging.error(f"execution_steps: {execution_steps}")
              assert execution_step["StepStatus"] == "Succeeded"
          return execution_steps
  
imports: from __future__ import absolute_import
  import os.path
  import tarfile
  import logging
  import nbformat
  import pytest
  from sagemaker import get_execution_role
  from sagemaker.s3 import S3Downloader
  from sagemaker.s3_utils import s3_path_join
  from sagemaker.utils import name_from_base
  from sagemaker.workflow import ParameterString
  from sagemaker.workflow.notebook_job_step import NotebookJobStep
  from sagemaker.workflow.parameters import ParameterInteger, ParameterBoolean
  from sagemaker.workflow.pipeline import Pipeline
  from sagemaker.utils import _tmpdir
  from tests.integ.retry import retries
  from tests.integ.sagemaker.workflow.helpers import wait_pipeline_execution
  from tests.integ import kms_utils
  from sagemaker.workflow.function_step import step
label_desc: Use image node_id 9 for calling a global function with example usage: _start_and_verify_execution_with_retry(pipeline, parameters) and returns: execution_steps