CSIT Trending: Input files
[csit.git] / resources / tools / presentation / input_data_files.py
index 7e19478..6abb325 100644 (file)
@@ -23,13 +23,12 @@ from os import rename, remove
 from os.path import join, getsize
 from shutil import move
 from zipfile import ZipFile, is_zipfile, BadZipfile
-
 from httplib import responses
 from requests import get, codes, RequestException, Timeout, TooManyRedirects, \
     HTTPError, ConnectionError
 
 from errors import PresentationError
-
+from utils import execute_command
 
 # Chunk size used for file download
 CHUNK_SIZE = 512
@@ -37,7 +36,7 @@ CHUNK_SIZE = 512
 # Separator used in file names
 SEPARATOR = "__"
 
-REGEX_RELEASE = re.compile(r'(\D*)(\d{4})(\D*)')
+REGEX_RELEASE = re.compile(r'(\D*)(\d{4}|master)(\D*)')
 
 
 def download_data_files(spec):
@@ -81,6 +80,14 @@ def download_data_files(spec):
             try:
                 response = get(url, stream=True)
                 code = response.status_code
+
+                # temporary workaround, remove when output.log.xml is not needed
+                if code != codes["OK"] and \
+                        spec.input["file-name"].endswith(".gz"):
+                    url = '.'.join(url.split('.')[:-1]) + ".log.gz"
+                    response = get(url, stream=True)
+                    code = response.status_code
+
                 if code != codes["OK"]:
                     logging.warning(
                         "Jenkins: {0}: {1}.".format(code, responses[code]))
@@ -91,7 +98,11 @@ def download_data_files(spec):
                         nexus_file_name = "{job}{sep}{build}{sep}{name}".\
                             format(job=job, sep=SEPARATOR, build=build["build"],
                                    name=file_name)
-                        url = "{url}/rls{release}/{dir}/{file}".\
+                        try:
+                            release = "rls".format(int(release))
+                        except ValueError:
+                            pass
+                        url = "{url}/{release}/{dir}/{file}".\
                             format(url=spec.environment["urls"]["URL[NEXUS]"],
                                    release=release,
                                    dir=spec.environment["urls"]["DIR[NEXUS]"],
@@ -139,11 +150,9 @@ def download_data_files(spec):
                         logging.info("{0}: {1}".format(code, responses[code]))
 
                 elif spec.input["file-name"].endswith(".gz"):
-                    rename(new_name, new_name[:-7])
-                    with open(new_name[:-7], 'r') as xml_file:
-                        with gzip.open(new_name, 'wb') as gz_file:
-                            gz_file.write(xml_file.read())
-                    new_name = new_name[:-7]
+                    rename(new_name, new_name[:-3])
+                    execute_command("gzip --keep {0}".format(new_name[:-3]))
+                    new_name = new_name[:-3]
                     status = "downloaded"
                     logging.info("{0}: {1}".format(code, responses[code]))