Skip to content

Latest commit

 

History

History
93 lines (75 loc) · 3.89 KB

README.md

File metadata and controls

93 lines (75 loc) · 3.89 KB

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"
 }'