Runner controller management API (Part 1) Runner controller APIs

See the blueprint being updated in this MR Update Runner Admission Controller design to al... (gitlab-com/content-sites/handbook!16358) for background info.

  • We need to track runner controllers (AC) in a DB table.
  • Runner controllers are identified by their ID in the table.
  • Runner controllers may have a name in the future. Not for now.
  • Runner controllers are instance-wide. We may have organization/group/project-scoped Runner controllers later but not for now.
  • Each AC has 0 or more access tokens for authentication.
  • Tokens can be added and/or deleted so that it's possible to rotate a token.
  • Tokens do not expire. We cannot force expiration on users if we don't provide a way to automatically rotate the token because that creates toil (we are supposed to solve customer issues, not add to the pile). We must provide an API to rotate a token, which we do.
  • Runner controller management API (Part 3): Add ... (#578794)

Proposal

Implement Runner controller APIs:

  • List all AC: GET /runner_controllers
  • Get detail: GET /runner_controllers/:id
  • Create (Register): POST /runner_controllers
  • Delete: DELETE /runner_controllers/:id

Notes:

  • Runner controllers and tokens do not need names.
  • Runner controllers and tokens need a free-form optional text description field. Make sure to set a size limit.
Edited by Taka Nishida