]>
git.ipfire.org Git - pbs.git/log
Michael Tremer [Tue, 21 Jan 2025 10:38:58 +0000 (10:38 +0000)]
Migrate to an even more async design
This monster commit replaces our database engine by SQLAlchemy so that
we can utilise eager loading and don't have to implement this on our
own. Although Jinja is a lot more flexible and allows us to
asynchronically fetch any data, we cannot really have async properties.
Therefore it is a good idea to have some eager loading happening when we
fetch certain objects that will always depend on some other objects.
This has been a major rewrite of the backend which still isn't done, but
I needed to commit this somehow. There was little point it doing it
gradually so here is this mountain of a commit. Enjoy.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 15 Jan 2025 19:13:23 +0000 (19:13 +0000)]
backend: Load krb5 and sync settings from config
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 15 Jan 2025 15:59:44 +0000 (15:59 +0000)]
AWS: Read configuration from file
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 15:13:11 +0000 (15:13 +0000)]
web: Implement translation
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 14:03:57 +0000 (14:03 +0000)]
web: Load some useful Jinja extensions
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 13:43:25 +0000 (13:43 +0000)]
web: Convert login page to Jinja
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 13:34:59 +0000 (13:34 +0000)]
web: Set globals to avoid a namespace that is too large
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 13:33:13 +0000 (13:33 +0000)]
templates: Convert the error template to Jinja
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 13:32:46 +0000 (13:32 +0000)]
templates: Convert the base template to Jinja
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 13:32:05 +0000 (13:32 +0000)]
web: Make the request handler as async as possible
This code is mainly copied from upstream and made to work with async
functions for the error handlers.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 12:56:19 +0000 (12:56 +0000)]
web: Make the new template engine async
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 12:44:25 +0000 (12:44 +0000)]
web: Replace the Tornado template engine with Jinja
We need this to support any async code in the templates.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 11:51:21 +0000 (11:51 +0000)]
Try to make this entire application async
We will need this so that we won't run out of database file descriptors
as psycopg3 currently can only use select() which does not support a
file descriptor to have a number over 1024.
We will also need this to scale this application better. However,
Tornado has some limitations in its template engine which is why we will
need to replace the template engine with Jinja.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 11:51:03 +0000 (11:51 +0000)]
httpclient: Read proxy configuration from config file
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 12 Jan 2025 11:50:42 +0000 (11:50 +0000)]
backend: Read base URL from configuration
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 3 Nov 2024 14:10:58 +0000 (14:10 +0000)]
backend: Launch Pakfire with its own context
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 3 Nov 2024 14:09:38 +0000 (14:09 +0000)]
web: jobs: Include the default backend
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 15 Sep 2024 04:53:37 +0000 (04:53 +0000)]
web: Drop the POST-based stats handler
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 15 Sep 2024 02:15:38 +0000 (02:15 +0000)]
uploads: Require authentication when uploading the payload
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 13 Aug 2024 19:03:02 +0000 (19:03 +0000)]
web: Regularly ping WebSocket clients to keep connections alive
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 15 Feb 2024 16:15:55 +0000 (16:15 +0000)]
auth: Disable autocomplete for passwords
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 15 Feb 2024 16:11:13 +0000 (16:11 +0000)]
cookies: Set secure attribute for all cookies
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 1 Nov 2023 10:24:52 +0000 (10:24 +0000)]
Pakfire: Remove deprecated arguments
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 1 Nov 2023 10:18:41 +0000 (10:18 +0000)]
Update setting the cache path
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 1 Nov 2023 10:07:44 +0000 (10:07 +0000)]
jobs: Update API
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 1 Nov 2023 10:06:12 +0000 (10:06 +0000)]
repos: Update API authentication
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 1 Nov 2023 10:05:51 +0000 (10:05 +0000)]
builders: Fix API authentication
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 31 Oct 2023 11:51:07 +0000 (11:51 +0000)]
builders: Make statistics percentage value range from 0 - 1
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Tue, 31 Oct 2023 11:46:37 +0000 (11:46 +0000)]
builders: Add a new stats handler
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:49:05 +0000 (09:49 +0000)]
builds: Update API error response codes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:48:36 +0000 (09:48 +0000)]
uploads: Show if payload has been received and block sending it again
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:34:20 +0000 (09:34 +0000)]
builds: Require SPNEGO
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:33:56 +0000 (09:33 +0000)]
uploads: Use errno codes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:23:40 +0000 (09:23 +0000)]
uploads: Log any incorrect digests
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:19:20 +0000 (09:19 +0000)]
uploads: Align response codes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:18:55 +0000 (09:18 +0000)]
uploads: Fail quickly if no payload was received
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:17:53 +0000 (09:17 +0000)]
uploads: Fix deleting uploads if no payload was received
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 20 Oct 2023 09:17:13 +0000 (09:17 +0000)]
web: Do not try to send (multiline) error messages in status
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 20:43:15 +0000 (20:43 +0000)]
web: Make APIError inherit from HTTPError
This way, tornado will catch the exception and log something useful
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 20:40:37 +0000 (20:40 +0000)]
web: Send better errors for failed upload requests
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 16:03:55 +0000 (16:03 +0000)]
uploads: Rewrite the whole thing
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 13:25:51 +0000 (13:25 +0000)]
web: Add decorator to require clients to do SPNEGO
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 13:03:29 +0000 (13:03 +0000)]
users: Return 0 when no quota has been used
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 10:41:50 +0000 (10:41 +0000)]
config: Create a temporary directory
As a non-privileged user, we cannot mount a ramdisk which is why we
cannot use this and need to pre-create an empty directory.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 10:34:38 +0000 (10:34 +0000)]
repos: Only set priority if configured
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 10:34:08 +0000 (10:34 +0000)]
jobs: Fix quota calculation for release builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 19 Oct 2023 10:33:41 +0000 (10:33 +0000)]
uploads: Fix serialising UUIDs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 6 Oct 2023 15:02:23 +0000 (15:02 +0000)]
packages: Implement sending debuginfo
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 16:02:32 +0000 (16:02 +0000)]
events: Show when builds are moving repository
This keeps the event log shorter and makes it clearer what has happened.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 15:43:54 +0000 (15:43 +0000)]
users: Show used daily build quota
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 15:35:53 +0000 (15:35 +0000)]
users: Obviously we need to account for deleted builds/jobs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 15:23:54 +0000 (15:23 +0000)]
users: Introduce daily build quotas
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:40:32 +0000 (14:40 +0000)]
db: Make scratch builds index more efficient
This should not include any test builds.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:37:30 +0000 (14:37 +0000)]
users: Fix how we are calculating disk usage
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:14:13 +0000 (14:14 +0000)]
users: Set default storage quota for users
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:13:44 +0000 (14:13 +0000)]
users: Remove empty SQL statement
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:13:20 +0000 (14:13 +0000)]
builds: Fix users delete field update
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:08:10 +0000 (14:08 +0000)]
users: Rename quota to storage quota
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 14:02:09 +0000 (14:02 +0000)]
db: Fix remaining index names
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 13:59:15 +0000 (13:59 +0000)]
db: Drop unused repo_builds table
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 13:47:16 +0000 (13:47 +0000)]
db: Update users indexes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 13:43:17 +0000 (13:43 +0000)]
users: Rename deleted to deleted_at
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 13:38:15 +0000 (13:38 +0000)]
jobs: Show when jobs time out
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 12:16:18 +0000 (12:16 +0000)]
jobs: Automatcially abort any jobs after three hours
If builds hang or have some other problem, we will automatically abort
them after three hours so that we don't keep the builders up idle.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 20 Sep 2023 12:15:28 +0000 (12:15 +0000)]
db: Optimise efficiency of the running jobs index
This does not need to contain any deleted jobs and therefore can be
slightly smaller.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Mon, 18 Sep 2023 10:04:35 +0000 (10:04 +0000)]
packages: Allow searching for files with wildcards
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 12:36:39 +0000 (12:36 +0000)]
jobs: Fix sorting of the queue
Scratch builds are now being moved to the top of the queue and packages
will be built by when their dependency check has succeeded.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 12:25:10 +0000 (12:25 +0000)]
Fix Kerberos authentication
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 09:43:24 +0000 (09:43 +0000)]
builds: Add controls to approve builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 08:13:51 +0000 (08:13 +0000)]
builds: Move repos above test builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 08:06:32 +0000 (08:06 +0000)]
builds: Rewrite all relevant repositories when deleting builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 08:05:44 +0000 (08:05 +0000)]
builds: Remove unnecessary task group when deleting builds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sun, 17 Sep 2023 08:05:13 +0000 (08:05 +0000)]
database: Allow up to 1024 concurrent database connections
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 17:44:43 +0000 (17:44 +0000)]
logstream: Fix sending the last messages
Instead, the first messages in the buffer were sent.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 17:43:55 +0000 (17:43 +0000)]
builds: Delete builds one step at a time
Creating a lot of sub-tasks caused some SQL statements to be executed
outside its transaction and the connection pool to starve.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 15:52:19 +0000 (15:52 +0000)]
jobs: Fix UUID comparison that differs in type
We use UUID for PostgreSQL and now receive the UUID in Python's UUID
type which surprisingly does not compare to strings...
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 15:41:10 +0000 (15:41 +0000)]
database: Increase the maximum number of connections again
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 15:40:45 +0000 (15:40 +0000)]
jobs: Import packages one by one
This could have caused the appliance to run out of available database
connections.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 13 Sep 2023 15:40:18 +0000 (15:40 +0000)]
misc: Fix format_size from running out of sizes
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 9 Sep 2023 13:50:18 +0000 (13:50 +0000)]
backend: Move cleanup job into the main thread
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 9 Sep 2023 13:49:15 +0000 (13:49 +0000)]
cron: Remove unneeded cronjobs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 9 Sep 2023 13:49:02 +0000 (13:49 +0000)]
database: Close connections after 5 seconds
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 9 Sep 2023 13:47:13 +0000 (13:47 +0000)]
backend: Sync mirrors from the main thread
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 9 Sep 2023 13:45:56 +0000 (13:45 +0000)]
backend: Define background tasks here
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 8 Sep 2023 16:10:10 +0000 (16:10 +0000)]
database: Limit the maximum number of database connections to 64
Our servers are configured to only allow up to 100 connections total
which had funny effects here...
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 8 Sep 2023 14:53:15 +0000 (14:53 +0000)]
jobs: Show when jobs have been aborted in queue
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 8 Sep 2023 14:49:48 +0000 (14:49 +0000)]
monitorings: Perform checks one at a time
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 8 Sep 2023 14:49:01 +0000 (14:49 +0000)]
config: Send "noarch" as build architecture to builders
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 8 Sep 2023 14:48:35 +0000 (14:48 +0000)]
monitoring: Catch errors when we cannot create a build
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 2 Sep 2023 13:09:45 +0000 (13:09 +0000)]
sources: Add an extra barrier if we are missing files
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 2 Sep 2023 12:32:28 +0000 (12:32 +0000)]
auth: Revert back to authentication using a web form
Using Kerberos authentication for this part seems to be more complicated
than necessary and does not provide any benefits.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 2 Sep 2023 09:30:23 +0000 (09:30 +0000)]
jobs: Force builders to refresh repository data all the time
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 1 Sep 2023 16:16:33 +0000 (16:16 +0000)]
sync: Write timestamp so that we can track when mirrors were synced last
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Fri, 1 Sep 2023 16:08:54 +0000 (16:08 +0000)]
mirrors: Fix joining paths
The original path of the mirror was unintentionally dropped.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Thu, 31 Aug 2023 03:28:27 +0000 (03:28 +0000)]
packages: Store groups as string array
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 30 Aug 2023 18:07:43 +0000 (18:07 +0000)]
packages: Store build ID as UUID
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Wed, 30 Aug 2023 17:49:26 +0000 (17:49 +0000)]
packages: Store build arches and apply them when creating jobs
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 26 Aug 2023 11:18:22 +0000 (11:18 +0000)]
sources: Only check out those files that we need
Since the entire build service is very heavy on I/O, we should avoid
writing files that we don't need.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 26 Aug 2023 11:14:33 +0000 (11:14 +0000)]
jobs: Create an index over the superseeded_by field
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Michael Tremer [Sat, 26 Aug 2023 11:14:03 +0000 (11:14 +0000)]
sources: Capture & store Pakfire log on dist()
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>