Save jobs artifacts to files

Change-Id: Ia0966c7bfe2ab47edb7ed6ff53aaabec7194fbb8
Related-prod: PROD-29326
diff --git a/save_jenkins_console/save_jenkins_console/jenkins_api.py b/save_jenkins_console/save_jenkins_console/jenkins_api.py
index c20c5a0..d2f21c5 100644
--- a/save_jenkins_console/save_jenkins_console/jenkins_api.py
+++ b/save_jenkins_console/save_jenkins_console/jenkins_api.py
@@ -1,4 +1,5 @@
 import config
+import os
 import requests
 import time
 import utils
@@ -38,7 +39,6 @@
         self.job = self.server.get_job(pipeline_job_name)
         self.pipeline_job_name = pipeline_job_name
 
-
     def get_all_jobs_ids(self):
         """
         Gets all the builds ID's for the particular job name.
@@ -60,6 +60,33 @@
         except requests.exceptions.HTTPError:
             logger.warning('404 Client Error: Not Found for url')
 
+    def manage_build_artifacts(self, job_build, build, build_date):
+        build_artifacts = job_build.get_artifacts()
+
+        for build_artfact in build_artifacts:
+            if build_artfact:
+                patch_to_artifact_file = utils.generate_patch_to_artifact_file(
+                    logs_directory=LOGS_DIRECTORY,
+                    job_name=self.pipeline_job_name)
+                saved_artifact_file_patch = build_artfact.save_to_dir(
+                    patch_to_artifact_file)
+                # rename saved file
+
+                new_artifact_file_patch = utils.generate_artifact_file_patch(
+                    saved_artifact_file_patch=saved_artifact_file_patch,
+                    patch_to_artifact_file=patch_to_artifact_file,
+                    pipeline_job_name=self.pipeline_job_name,
+                    build_id=build,
+                    build_date=build_date)
+                if not utils.check_if_file_exists(patch_to_file=new_artifact_file_patch):
+                    new_artifact_filename = utils.rename_artifact_file(
+                        old_artifact_file_patch=saved_artifact_file_patch,
+                        new_artifact_file_patch=new_artifact_file_patch)
+                    logger.info(
+                        f'new_artifact_filename: {new_artifact_filename}')
+
+                if utils.check_if_file_exists(patch_to_file=saved_artifact_file_patch):
+                    os.remove(saved_artifact_file_patch)
 
     def get_build_artifacts(self, jobs_ids_list):
         """
@@ -93,10 +120,15 @@
                             len(jobs_ids_list)))
                         build_counter += 1
 
-                        # When job finished
+                        # When job is finished
                         job_timestamp = job_build.get_timestamp().timestamp()
                         build_date = utils.get_date_from_timestamp(job_timestamp)
 
+                        # save build artifacts
+                        self.manage_build_artifacts(job_build=job_build,
+                                                    build=build,
+                                                    build_date=build_date)
+
                         # Save data th the file
                         utils.save_job_console_to_file(
                             logs_directory=LOGS_DIRECTORY,
diff --git a/save_jenkins_console/save_jenkins_console/utils.py b/save_jenkins_console/save_jenkins_console/utils.py
index 163a46c..1f3ac90 100644
--- a/save_jenkins_console/save_jenkins_console/utils.py
+++ b/save_jenkins_console/save_jenkins_console/utils.py
@@ -174,16 +174,21 @@
     save_to_file(filename=filename, data_to_write=data_to_write)
 
 
-def archive_files(files_to_archive, patch_to_archive):
-    """
-    Archives files
-
-    :param files_to_archive: list
-    :param patch_to_archive: string
-
-    :return: full patch + name to archive
-    """
-
-    pass
+def generate_patch_to_artifact_file(logs_directory, job_name):
+    return '{0}{1}/'.format(logs_directory, job_name)
 
 
+def generate_artifact_file_patch(saved_artifact_file_patch,
+                                 patch_to_artifact_file,
+                                 pipeline_job_name,
+                                 build_id,
+                                 build_date):
+    artifact_extention = saved_artifact_file_patch.split('.')[-1]
+    filename = f'{str(build_id)}_{build_date}_{pipeline_job_name}.{artifact_extention}'
+    full_patch = patch_to_artifact_file + filename
+    return full_patch
+
+
+def rename_artifact_file(old_artifact_file_patch, new_artifact_file_patch):
+    os.rename(old_artifact_file_patch, new_artifact_file_patch)
+    return new_artifact_file_patch