Retry custom requests to Jenkins

Change-Id: I7fbe6434425216d06878aeb6b5727e3996148767
Related-Prod:#PROD-34500(PROD:34500)
diff --git a/tcp_tests/managers/jenkins/client.py b/tcp_tests/managers/jenkins/client.py
index a7c2315..b9f6a02 100644
--- a/tcp_tests/managers/jenkins/client.py
+++ b/tcp_tests/managers/jenkins/client.py
@@ -11,6 +11,37 @@
 from requests.exceptions import ConnectionError
 
 
+def send_request(action, endpoint):
+    """
+    Wait 2 seconds time and retry requests if it fail with connection to
+    endpoint
+    Raises Connection exceptions after 5 unsuccessful steps
+
+    :param action: string
+    :param body: string, url to send request
+    :return: response
+    :raise ConnectionError after several unsuccessful connections
+    """
+    max_retries = 5
+    sleep_time_before_repeat = 2
+
+    step = 0
+    while step < max_retries:
+        try:
+            response = requests.Request(action, endpoint)
+            return response
+        except ConnectionError as error:
+            step = step + 1
+            print("Can't get {} due to error: {}.\nRetry {}/{}".format(
+                endpoint,
+                error,
+                step,
+                max_retries
+            ))
+            time.sleep(sleep_time_before_repeat)
+    raise ConnectionError
+
+
 class JenkinsClient(object):
 
     def __init__(self, host=None, username='admin', password='r00tme'):
@@ -181,7 +212,7 @@
         PROGRESSIVE_CONSOLE_OUTPUT = (
             '%(folder_url)sjob/%(short_name)s/%(build_id)d/'
             'logText/progressiveText?start=%(start)d')
-        req = requests.Request(
+        req = send_request(
                 'GET',
                 self.__client._build_url(PROGRESSIVE_CONSOLE_OUTPUT, locals()))
         return(self.__client.jenkins_request(req))
@@ -204,7 +235,7 @@
         else:
             WORKFLOW_DESCRIPTION = (
                 '%(folder_url)sjob/%(short_name)s/%(build_id)s/wfapi/%(mode)s')
-        req = requests.Request(
+        req = send_request(
                 'GET',
                 self.__client._build_url(WORKFLOW_DESCRIPTION, locals()))
         response = self.__client.jenkins_open(req)
@@ -226,7 +257,7 @@
 
         DOWNLOAD_URL = ('%(folder_url)sjob/%(short_name)s/%(build_id)s/'
                         'artifact/%(artifact_path)s')
-        req = requests.Request(
+        req = send_request(
                 'GET',
                 self.__client._build_url(DOWNLOAD_URL, locals()))