From: Michael Tremer Date: Fri, 15 Jul 2022 10:15:35 +0000 (+0000) Subject: jobs: Add properties for logs X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ba4d413b546bbd7b162846286d1f6d7eeb60a40c;p=pbs.git jobs: Add properties for logs Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/__init__.py b/src/buildservice/__init__.py index 8c256f6b..4362fd9a 100644 --- a/src/buildservice/__init__.py +++ b/src/buildservice/__init__.py @@ -6,6 +6,7 @@ import logging import os import pakfire import tempfile +import urllib.parse from . import aws from . import bugtracker @@ -127,6 +128,21 @@ class Backend(object): return database.Connection(hostname, name, user=user, password=password) + def path_to_url(self, path): + """ + Takes a path to a file on the file system and converts it into a URL + """ + # The base URL + baseurl = self.settings.get("baseurl") + + # Path to package + path = os.path.join( + "files", os.path.relpath(path, PAKFIRE_DIR), + ) + + # Join it all together + return urllib.parse.urljoin(baseurl, path) + def pakfire(self, config, offline=True, **kwargs): """ Launches a new Pakfire instance with the given configuration diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 04dcefc7..54f1e74b 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -315,6 +315,30 @@ class Job(base.DataObject): return job + # Log + + def has_log(self): + if self.log_path: + return True + + return False + + @property + def log_url(self): + return self.backend.path_to_url(self.log_path) + + @property + def log_path(self): + return self.data.log_path + + @property + def log_size(self): + return self.data.log_size + + @property + def log_digest_blake2s(self): + return self.data.log_digest_blake2s + async def _import_log(self, upload): # Create some destination path path = os.path.join( @@ -365,7 +389,7 @@ class Job(base.DataObject): """ assert os.path.exists(filename) - elif filename.endswith(".%s" % PACKAGE_EXTENSION): + if filename.endswith(".%s" % PACKAGE_EXTENSION): # It is not allowed to upload packages on test builds. if self.test: return diff --git a/src/buildservice/packages.py b/src/buildservice/packages.py index cfd0fd4c..3d964a6f 100644 --- a/src/buildservice/packages.py +++ b/src/buildservice/packages.py @@ -338,17 +338,7 @@ class Package(base.DataObject): @property def download_url(self): - # The base URL - baseurl = self.settings.get("baseurl") - - # Path to package - path = os.path.join( - "files", - os.path.relpath(self.path, PAKFIRE_DIR), - ) - - # Join it all together - return urllib.parse.urljoin(baseurl, path) + return self.backend.path_to_url(self.path) @property def filename(self): diff --git a/src/database.sql b/src/database.sql index faa9f7a4..d1cb7b51 100644 --- a/src/database.sql +++ b/src/database.sql @@ -484,7 +484,10 @@ CREATE TABLE public.jobs ( dependency_check_succeeded boolean, dependency_check_at timestamp without time zone, deleted boolean DEFAULT false NOT NULL, - failed boolean DEFAULT false NOT NULL + failed boolean DEFAULT false NOT NULL, + log_path text, + log_size bigint, + log_digest_blake2s bytea );