Skip to content
API for Lando (An automatic code lander for Mozilla)
Python Other
  1. Python 99.4%
  2. Other 0.6%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
docker/postgres-init-scripts startup: add ready checks and loop until they pass (Bug 1533504). Mar 12, 2019
tests api: land commits using sec-approval commit messages (bug 1569209) (#87) Nov 1, 2019
.gitignore hg: port transplant's hglib code to lando (Bug 1544347) (#77). Sep 13, 2019
requirements.txt style: reformat using black. Sep 25, 2018

Lando API

A microservice that transforms Phabricator revisions into Autoland Transplant requests.

Part of Mozilla Conduit, our code-management microservice ecosystem.

What's Deployed

Building the service


  • docker and docker-compose (on OS X and Windows you should use the full Docker for Mac or Docker for Windows systems, respectively)
  • pyinvoke
    • Because pyinvoke currently has no backward-compatibility guarantees, it is suggested that you install exactly version 0.21.0 via pip: pip install invoke==0.21.0 or pip install --user invoke==0.21.0.
    • You can use a virtualenv instead of installing it system-wide, but you should create the virtualenv outside of the lando-api source directory so that the linter doesn't check the virtualenv files.
    • If you are running Windows, you will need a special file in your user directory (typically C:\Users\<username>\) called .invoke.yml. It should contain the following:
        shell: C:\Windows\System32\cmd.exe

Running the development server

To build and start the development services containers (remove -d if logs should be printed out):

$ docker-compose up -d

To create a database:

$ invoke init

You can use a tool like httpie to test the service.

To stop the containers run

$ docker-compose down

Browsing the API documentation

Start the development services and visit http://localhost:8888/ui/ in your browser to view the API documentation.


lando-api's tests use pytest with pytest-flask, executed within a Docker container. The tests are located in ./tests/. You can run all of them via invoke:

$ invoke test

You can provide options to pytest in testargs argument:

$ invoke test --testargs tests/

Please wrap the testargs with "" if more than one is needed.

Subsets of the tests, e.g. linters, and other commands are also available. Run invoke -l to see all tasks.


Developer machine

Please run the lando-api.db container before accessing the database.

Add a new migration:

$ invoke add-migration "{description of applied changes}"

Upgrade to the newest revision:

$ invoke upgrade

Deployed server

Upgrade to the newest migration:

$ docker run [OPTIONS] IMAGE lando-cli db upgrade

Accessing the database

Run lando-api.db container if development containers are down.

$ docker-compose up -d lando-api.db

Access the database server (password is password)

$ psql -h localhost --port 54321 --user postgres -d lando_api_dev
Password for user postgres:
You can’t perform that action at this time.