]> git.ipfire.org Git - pbs.git/commitdiff
jobs: Add properties for logs
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 15 Jul 2022 10:15:35 +0000 (10:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 15 Jul 2022 10:15:35 +0000 (10:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/__init__.py
src/buildservice/jobs.py
src/buildservice/packages.py
src/database.sql

index 8c256f6b9749c8d41f52d7ef0bb03525ad3f4ae8..4362fd9a1f53630d433a7ff1da29c8e6580abc3e 100644 (file)
@@ -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
index 04dcefc7104cfa103b3afcdea17952d39ce2f8a7..54f1e74b01adfdf56f888f50e1b06fe2a2f4e499 100644 (file)
@@ -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
index cfd0fd4c5a0e50e3e78356c4cad0e8cea7bdad63..3d964a6fc63817275bb37e08413b966dead6e06d 100644 (file)
@@ -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):
index faa9f7a4eeb606d16bee873d55803878a472f97b..d1cb7b515c30ea6c9da4592233fa6f52db35f565 100644 (file)
@@ -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
 );