Skip to content

A REST API to execute teuthology commands.

License

Notifications You must be signed in to change notification settings

dikwickley/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.

Option 2: Non-containerized with venv and pip

  1. Clone teuthology-api and cd into it.

  2. Create a virtualenv: python3 -m venv venv

  3. Activate the virtualenv: source ./venv/bin/activate

  4. Build the project: pip install -e .

  5. Start the server: gunicorn -c gunicorn_config.py teuthology_api.main:app

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

xxx

About

A REST API to execute teuthology commands.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 93.8%
  • Shell 4.2%
  • Dockerfile 2.0%