mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-03 13:13:27 +08:00
c6919736019a483cd717017da145bb2fee4fa9b9
The module build orchestrator for Modularity
============================================
The orchestrator coordinates module builds and is responsible for a number of
tasks:
- Providing an interface for module client-side tooling via which module build
submission and build state queries are possible.
- Verifying the input data (modulemd, RPM SPEC files and others) is available
and correct.
- Preparing the build environment in the supported build systems, such as koji.
- Scheduling and building of the module components and tracking the build
state.
- Emitting bus messages about all state changes so that other infrastructure
services can pick up the work.
Client-side API
===============
The orchestrator implements a RESTful interface for module build submission and
state querying. Not all REST methods are supported. See below for details.
Module build submission
-----------------------
Module submission is done via posting the modulemd SCM URL.
::
POST /rida/module-builds/
::
{
"scmurl": "git://pkgs.fedoraproject.org/modules/foo.git/foo.yaml?#f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
}
The response, in case of a successful submission, would include the task ID.
::
HTTP 201 Created
::
{
id: 42
}
Module build state query
------------------------
Once created, the client can query the current build state by requesting the
build task's URL. Querying the BPO service might be preferred, however.
::
GET /rida/module-builds/42
The response, if the task exists, would include various pieces of information
about the referenced build task.
::
HTTP 200 OK
::
{
"id": 42,
"state": "build",
"tasks": {
"rpms/foo" : "6378/closed",
"rpms/bar : "6379/open"
}
}
"id" is the ID of the task. "state" refers to the orchestrator module
build state and might be one of "init", "wait", "build", "done", "failed" or
"ready". "tasks" is a dictionary of component names in the format of
"type/NVR" and related koji or other supported buildsystem tasks and
their states.
Listing all module builds
-------------------------
The list of all tracked builds and their states can be obtained by querying the
"module-builds" resource.
::
GET /rida/module-builds/
::
HTTP 200 OK
::
[
{
"id": 41",
"state": "done"
},
{
"id": 42,
"state": "build"
},
{
"id": 43,
"state": "init"
}
]
HTTP Response Codes
-------------------
Possible response codes are for various requests include:
- HTTP 200 OK - The task exists and the query was successful.
- HTTP 201 Created - The module build task was successfully created.
- HTTP 400 Bad Request - The client's input isn't a valid request.
- HTTP 403 Forbidden - The SCM URL is not pointing to a whitelisted SCM server.
- HTTP 404 Not Found - The requested URL has no handler associated with it or
the requested resource doesn't exist.
- HTTP 422 Unprocessable Entity - The submitted modulemd file is not valid or
the module components cannot be retrieved
- HTTP 500 Internal Server Error - An unknown error occured.
- HTTP 501 Not Implemented - The requested URL is valid but the handler isn't
implemented yet.
- HTTP 503 Service Unavailable - The service is down, possibly for maintanance.
Languages
Python
97.2%
Shell
1.2%
Groovy
1.1%
Dockerfile
0.5%