diff --git a/tcp_tests/utils/run_jenkins_job.py b/tcp_tests/utils/run_jenkins_job.py
index bf3bb01..403cc00 100755
--- a/tcp_tests/utils/run_jenkins_job.py
+++ b/tcp_tests/utils/run_jenkins_job.py
@@ -127,24 +127,39 @@
     if job_parameters is not None:  # job_parameters = {}
         job_params.update(job_parameters)
 
-    build = jenkins.run_build(job_name,
-                              job_params,
-                              verbose=verbose,
-                              timeout=start_timeout)
-    if verbose:
-        print_build_header(build, job_params, build_timeout)
+    job_attempts = 2
+    count = 1
+    while (job_attempts != 0):
+        print('Attempt ' + str(count))
+        count += 1
+        job_attempts -= 1
+        build = jenkins.run_build(job_name,
+                                  job_params,
+                                  verbose=verbose,
+                                  timeout=start_timeout)
 
-    try:
-        jenkins.wait_end_of_build(
-            name=build[0],
-            build_id=build[1],
-            timeout=build_timeout,
-            interval=1,
-            verbose=verbose,
-            job_output_prefix=job_output_prefix)
-    except Exception as e:
-        print(str(e))
-        raise
+        if verbose:
+            print_build_header(build, job_params, build_timeout)
+
+        try:
+            jenkins.wait_end_of_build(
+                name=build[0],
+                build_id=build[1],
+                timeout=build_timeout,
+                interval=1,
+                verbose=verbose,
+                job_output_prefix=job_output_prefix)
+        except Exception as e:
+            print(str(e))
+            raise
+        job_log = jenkins.get_build_output(job_name, build[1])
+        # Workaround for restart jobs that failed by salt-timeout errors
+        # or by sporadic fail in attach disks
+        if ('SaltReqTimeoutError' not in job_log and
+                'not a block device' not in job_log):
+            break
+        else:
+            print('Job returns known infra fail!')
 
     result = jenkins.build_info(name=build[0],
                                 build_id=build[1])['result']
