Skip to content

kamoltat/teuthology-api

 
 

Repository files navigation

Teuthology API

A REST API to execute teuthology commands.

Setup

Option 1: (teuthology docker setup)

  1. Clone teuthology and teuthology-api.

  2. Rename .env.dev file to .env.

  3. Configure secrets:

    3.1. Create a Github OAuth Application by following these instructions. Set "Homepage URL" as http://localhost:8082/ and "Authorization callback URL" as http://localhost:8082/login/callback/.

    3.2. Ensure ceph belongs in your public list of organizations[ref]. By default your membership is set private, change that to public by following these steps.

    3.3. Save CLIENT_ID and CLIENT_SECRET from your Github OAuth App to your local .env file as GH_CLIENT_ID and GH_CLIENT_SECRET.

  4. Add the following to teuthology's docker-compose services.

    teuthology_api:
        build:
          context: ../../../teuthology-api
        ports:
            - 8082:8080
        environment: 
            TEUTHOLOGY_API_SERVER_HOST: 0.0.0.0
            TEUTHOLOGY_API_SERVER_PORT: 8080
            PADDLES_URL: http://localhost:8080
        depends_on:
            - teuthology
            - paddles
        links:
            - teuthology
            - paddles
        healthcheck:
          test: [ "CMD", "curl", "-f", "http://0.0.0.0:8082" ]
    

    [optional] For developement use: Add following things in teuthology_api container:

    teuthology_api:
        environment: 
            DEPLOYMENT: development
        volumes: 
            - ../../../teuthology-api:/teuthology_api/:rw
    

    DEPLOYMENT: development would run the server in --reload mode (server would restart when changes are made in /src dir) and volumes would mount host directory to docker's directory (local changes would reflect in docker container).

  5. Follow teuthology development setup instructions from here.

Documentation

The documentation can be accessed at http://localhost:8082/docs after running the application.

Note: To run commands, authenticate by visiting http://localhost:8082/login through browser and follow the github authentication steps (this stores the auth token in browser cookies).

Route /

curl http://localhost:8082/

Returns {"root": "success", "session": { <authentication details> }}.

Route /suite

POST /suite/: schedules a run.

Two query parameters:

  • dry_run (boolean) - Do a dry run; do not schedule anything.
  • logs (boolean) - Send scheduling logs in response.

Example:

curl --location --request POST 'http://localhost:8082/suite?dry_run=false&logs=true' \
--header 'Content-Type: application/json' \
--data-raw '{
         "--ceph": "wip-dis-testing-2",
         "--ceph-repo": "https://github.com/ceph/ceph-ci.git",
         "--kernel": "distro",
         "--limit": "2",
         "--newest": "0",
         "--machine-type": "testnode",
         "--num": "1",
         "--priority": "70",
         "--suite": "teuthology:no-ceph",
         "--suite-branch": "wip-dis-testing-2",
         "--suite-repo": "https://github.com/ceph/ceph-ci.git",
         "--teuthology-branch": "main",
         "--verbose": "1",
         "--user": "vallariag"
 }'

About

A REST API to execute teuthology commands.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 93.1%
  • Shell 4.4%
  • Dockerfile 2.5%