weekend: Add library for removing rate limiting

Add a small utility for finding whether it's a weekend, whether it's night time
(PST) or whether it's a US holiday.

BUG=chromium:820778
TEST=None

Change-Id: I833589c53ead3e6541a70f038d9ffe1338f7a98a
3 files changed
tree: 8127f95968df5874b4b92621644050cef632e869
  1. bin/
  2. exonerator/
  3. flex_ts_mon/
  4. testing_utils/
  5. .gitignore
  6. app.yaml
  7. config.py
  8. cron.yaml
  9. debug_routes.py
  10. debug_routes_test.py
  11. deploy_app.py
  12. gunicorn.conf.py
  13. main.py
  14. Pipfile
  15. Pipfile.lock
  16. PRESUBMIT.cfg
  17. pytest.ini
  18. README.md
README.md

CL Exonerator

https://chromium.googlesource.com/chromiumos/infra/cl_exonerator

Purpose:

This app finds CLs which were incorrectly blamed for a CQ failure, and re-marks them as CQ-ready. It does this by polling cidb‘s buildMessageTable for finalize messages, then finds CLs which were blamed in the build’s annotatations and marks them as CQ+1 in Gerrit (if they haven't already been).

Credentials

Create a “creds” folder, then:

  • For local development, run “cros cidbcreds --folder=creds/cidb” to fetch the readonly credentials.

  • For deploying to production, see go/cros-cidb-admin and get the prod_cidb_gen2_bot credentials.

Development

Local deployment is done by creating a virtualenv with pipenv:

# pipsi is a nice python utility for installing other python scripts in their
# own virtualenvs, so you don't get version conflicts between the various
# scripts installed on your system.
sudo `which pip` install pipsi
pipsi install pipenv
pipenv install --dev
pipenv shell

Then, install the Google App Engine SDK and either symlink it or copy it into the virtualenv.

Tests are run with pytest. Some tests require a chroot (the tests inheriting from cidb_integration_test.CIDBIntegrationTest). Enter the chroot with “cros chroot.” The virtualenv will need to be created inside the chroot for the tests to work.

Start a development server with bin/local_server and run curl -u admin http://localhost:8080/cls?type=pending to see a list of pending CLs.

Deployment

CL-Exonerator is deployed to the google.com:chromiumos-cl-exonerator project. Before deploying, make sure you have activated it as your default project with gcloud:

gcloud config set project chromiumos-cl-exonerator
  • Debug environment:

Run ./deploy_app --debug=True after copying or symlinking debug_cidbi_gen2_bot creds into ./creds/cidb.dbg (see the [Credentials][#Credentials] section)

  • Production:

Run “./deploy_app” after copying or symlinking prod_cidb_gen2_bot creds into “./creds/cidb”.