code: def _submit_and_wait(cmd, cores, config, output_dir):
      
      batch_script = "submit_bcl2fastq.sh"
      if not os.path.exists(batch_script + ".finished"):
          if os.path.exists(batch_script + ".failed"):
              os.remove(batch_script + ".failed")
          with open(batch_script, "w") as out_handle:
              out_handle.write(config["process"]["bcl2fastq_batch"].format(
                  cores=cores, bcl2fastq_cmd=" ".join(cmd), batch_script=batch_script))
          submit_cmd = utils.get_in(config, ("process", "submit_cmd"))
          subprocess.check_call(submit_cmd.format(batch_script=batch_script), shell=True)
          # wait until finished or failure checkpoint file
          while 1:
              if os.path.exists(batch_script + ".finished"):
                  break
              if os.path.exists(batch_script + ".failed"):
                  raise ValueError("bcl2fastq batch script failed: %s" %
                                   os.path.join(output_dir, batch_script))
              time.sleep(5)
docs: Submit command with batch script specified in configuration, wait until finished