Fix NewConnectionError Try Again

- add 3 retries (0 by default) with backoff to mitigate
  "Failed to establish a new connection: [Errno -3] Try again"
- retry is based on urllib3 as request does not do retires
  for failed connections (only for failed DNS lookups,
  socket connections and connection timeouts)

Change-Id: Ic92a823d02d2afc47f1bc71477695ce33e4be1c6
Related-PROD: PRODX-33632
1 file changed
tree: d1e7f37272d9bbec06ddb4a29169c0fefb36b901
  1. sf_notifier/
  2. .dockerignore
  3. .gitignore
  4. .gitreview
  5. _tox.ini
  6. Dockerfile
  7. entrypoint.sh
  8. LICENSE
  9. README.md
  10. requirements.txt
  11. run-func-tests.sh
  12. run-tests.sh
  13. setup.py
  14. test-requirements.txt
  15. tox.ini
README.md

sf-notifier

Prometheus Alertmanager webhook receiver sending alert notification to Salesforce.

Development

Setup

Install Python dependencies:

$ virtualenv venv -p python3
$ source venv/bin/activate
(venv)$ source sf_notifier/vars/development
(venv)$ pip install --upgrade pip
(venv)$ pip install -e .

Add to settings/development.py credentials for your Salesforce customer (not engineering) account:

SF_CONFIG = {
    'AUTH_URL': 'xxx',
    'USERNAME': 'xxx',
    'PASSWORD': 'xxx',
    'ORGANIZATION_ID': 'xxx',
    'ENVIRONMENT_ID': 'xxx',
    'SANDBOX_ENABLED': True
}

You may also specify environment variables to override Python settings:

export SFDC_AUTH_URL="xxx"
export SFDC_USERNAME="xxx"
export SFDC_PASSWORD="xxx"
export SFDC_ORGANIZATION_ID="xxx"
export SFDC_ENVIRONMENT_ID="xxx"
export SFDC_SANDBOX_ENABLED=true

Run server:

(venv)$ uwsgi --http 127.0.0.1:5000 --wsgi-file sf_notifier/server.py --callable app_dispatch

Check in browser:

http://127.0.0.1:5000/metrics