linkedin / iris

Iris is a highly configurable and flexible service for paging and messaging.
http://iris.claims
BSD 2-Clause "Simplified" License
810 stars 139 forks source link
automation escalation messaging paging

Iris Build Status License Gitter chat

Iris core, API, UI and sender service. For third-party integration support, see iris-relay, a stateless proxy designed to sit at the edge of a production network and allow external traffic to pass through. We also have an Iris mobile app for iOS/Android, at the iris-mobile repo.

Quick Start with Gitpod

Open in Gitpod

Setup database

  1. remove ONLY_FULL_GROUP_BY from MySQL config sql_mode or run mysqld in permisive mode (i.e. --sql_mode='')
  2. create mysql schema: mysql -u USER -p < ./db/schema_0.sql (WARNING: This will drop any existing tables)
  3. import dummy data: mysql -u USER -p -o iris < ./db/dummy_data.sql

dummy_data.sql contains the following entities:

Setup dev environment

  1. create & source your virtualenv
  2. install build dependencies: libssl-dev libxml2-dev libxslt1-dev libsasl2-dev python-dev libldap2-dev
  3. run pip install -e '.[dev,kazoo]'
  4. edit ./configs/config.dev.yaml to setup database credential and other settings

To install iris with extra features, you can pass in feature flag with pip:

pip install -e '.[prometheus]'

For list of extra features, please see extras_require setting in setup.py.

Run everything

forego start

Run web server

make serve

Run sender

iris-sender configs/config.dev.yaml

Tests

Run tests:

make test  # all tests, e2e + unit
make e2e  # e2e tests
make unit  # unit tests

Generate test coverage reports:

make e2e-cov
make unit-cov

Adding new plugins

  1. create the plugin file under src/iris/plugins dir
  2. edit src/iris/plugins/__init__.py to add plugin module to __all__ list