Artemis is a machine provisioning service. Its goal is to provision a machine - using a set of preconfigured providers as backends - which would satisfy the given hardware and software requirements.
Using REST API, users request provisioning of guests, describing the desired hardware and software configuration of each guest. Requests are matched with one or more pools - each pool represents one provisioning service like AWS, Azure or private OpenStack instance, each with its own set of available machine setups it can provide - and a machine is acquired from the most suitable pool.
Requests are sorted into several priority groups - given that pools may not have infinite resources, some priority groups may be more important than others.
Each provisioning request is asynchronous by its nature: user submits a guest request and receives an ID, guest name. User then periodically checks status of the request, using the provided ID, until the request becomes ready. From that moment on, the guest is available and reserved for the user. The request can be cancelled at any time, causing release of its resources.
-
For local development environment, see https://testing-farm.gitlab.io/artemis/for-developers/local-development-environment/
-
For environment variables, see https://testing-farm.gitlab.io/artemis/for-admins/environment_variables/
-
For metrics, see https://testing-farm.gitlab.io/artemis/for-admins/metrics/
-
For Artemis CLI, see https://testing-farm.gitlab.io/artemis/for-users/artemis-cli/
Artemis uses a single SSH key, called master key, to access all guests. This is strictly between Artemis and pools it uses. On top of that, each guest request states what user key the guest should be preinstalled on the guest, to make it accessible to the user.
Specification of API is available at https://artemis6.docs.apiary.io/#reference.