feat: add ability to run build process to remote instances (#118)

This commit is contained in:
2023-12-13 15:38:51 +02:00
committed by GitHub
parent e61b246216
commit c54b14b833
39 changed files with 1062 additions and 73 deletions

View File

@@ -222,6 +222,13 @@ class BaseView(View, CorsViewMixin):
Returns:
str | None: authorized username if any and None otherwise (e.g. if authorization is disabled)
"""
try: # try to read from payload
data: dict[str, str] = await self.request.json() # technically it is not, but we only need str here
if (packager := data.get("packager")) is not None:
return packager
except Exception:
self.request.app.logger.exception("could not extract json data for packager")
policy = self.request.app.get("identity")
if policy is not None:
identity: str = await policy.identify(self.request)

View File

@@ -74,6 +74,14 @@ class AddView(BaseView):
repository_id = self.repository_id()
username = await self.username()
process_id = self.spawner.packages_add(repository_id, packages, username, patches=patches, now=True)
process_id = self.spawner.packages_add(
repository_id,
packages,
username,
patches=patches,
now=True,
increment=data.get("increment", True),
refresh=data.get("refresh", False),
)
return json_response({"process_id": process_id})

View File

@@ -73,6 +73,11 @@ class RebuildView(BaseView):
repository_id = self.repository_id()
username = await self.username()
process_id = self.spawner.packages_rebuild(repository_id, depends_on, username)
process_id = self.spawner.packages_rebuild(
repository_id,
depends_on,
username,
increment=data.get("increment", True),
)
return json_response({"process_id": process_id})

View File

@@ -74,6 +74,14 @@ class RequestView(BaseView):
username = await self.username()
repository_id = self.repository_id()
process_id = self.spawner.packages_add(repository_id, packages, username, patches=patches, now=False)
process_id = self.spawner.packages_add(
repository_id,
packages,
username,
patches=patches,
now=False,
increment=False, # no-increment doesn't work here
refresh=False, # refresh doesn't work here
)
return json_response({"process_id": process_id})

View File

@@ -77,6 +77,8 @@ class UpdateView(BaseView):
aur=data.get("aur", True),
local=data.get("local", True),
manual=data.get("manual", True),
increment=data.get("increment", True),
refresh=data.get("refresh", False),
)
return json_response({"process_id": process_id})