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.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
docker/postgres-init-scripts startup: add ready checks and loop until they pass (Bug 1533504). Mar 12, 2019
landoapi
migrations
tests api: land commits using sec-approval commit messages (bug 1569209) (#87) Nov 1, 2019
.arcconfig
.flake8
.gitignore hg: port transplant's hglib code to lando (Bug 1544347) (#77). Sep 13, 2019
.style.yapf
CODE_OF_CONDUCT.md
Dockerfile
LICENSE
README.md
docker-compose.ci.yml
docker-compose.yml
requirements.txt
setup.py style: reformat using black. Sep 25, 2018
tasks.py

README.md

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

Prerequisites

  • 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:
      run:
        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.

Testing

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/test_landings.py

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.

Migrations

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.