mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
Merge pull request #45 from mxmeinhold/better-sentry
This commit is contained in:
commit
44c72c0b2f
8 changed files with 45 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
||||||
[MASTER]
|
[MASTER]
|
||||||
ignore = ,input
|
ignore = ,input
|
||||||
persistent = yes
|
persistent = yes
|
||||||
|
load-plugins = pylint_quotes
|
||||||
|
|
||||||
[MESSAGES CONTROL]
|
[MESSAGES CONTROL]
|
||||||
disable =
|
disable =
|
||||||
|
|
|
@ -5,4 +5,4 @@ python:
|
||||||
install:
|
install:
|
||||||
- "pip install -r requirements.txt"
|
- "pip install -r requirements.txt"
|
||||||
script:
|
script:
|
||||||
- "pylint --load-plugins pylint_quotes proxstar"
|
- "pylint proxstar"
|
||||||
|
|
|
@ -16,10 +16,13 @@ It is available to house members at [proxstar.csh.rit.edu](https://proxstar.csh.
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
1. [Fork](https://help.github.com/en/articles/fork-a-repo) this repository
|
1. [Fork](https://help.github.com/en/articles/fork-a-repo) this repository
|
||||||
- Optionally create a new [git branch](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) if your change is more than a small tweak (`git checkout -b BRANCH-NAME-HERE`)
|
- Optionally create a new [git branch](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell) if your change is more than a small tweak (`git checkout -b BRANCH-NAME-HERE`)
|
||||||
3. Make your changes locally, commit, and push to your fork
|
3. Make your changes locally, commit, and push to your fork
|
||||||
|
- If you want to test locally, you should copy `config.py` to `config_local.py`, and talk to an RTP about filling in secrets.
|
||||||
|
- Lint your local changes with `pylint proxstar`
|
||||||
|
- You'll need dependencies installed locally to do this. You should do that in a [venv](https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments) of some sort to keep your system clean. All the dependencies are listed in [requirements.txt](./requirements.txt), so you can install everything with `pip install -r requirements.txt`. You'll need python 3.6 at minimum, though things should work up to python 3.8.
|
||||||
4. Create a [Pull Request](https://help.github.com/en/articles/about-pull-requests) on this repo for our Webmasters to review
|
4. Create a [Pull Request](https://help.github.com/en/articles/about-pull-requests) on this repo for our Webmasters to review
|
||||||
|
|
||||||
## Questions/Concerns
|
## Questions/Concerns
|
||||||
|
|
||||||
Please file an [Issue](https://github.com/ComputerScienceHouse/proxstar/issues/new) on this repository.
|
Please file an [Issue](https://github.com/ComputerScienceHouse/proxstar/issues/new) on this repository.
|
||||||
|
|
|
@ -60,3 +60,9 @@ WEBSOCKIFY_PATH = environ.get('PROXSTAR_WEBSOCKIFY_PATH',
|
||||||
'/opt/app-root/bin/websockify')
|
'/opt/app-root/bin/websockify')
|
||||||
WEBSOCKIFY_TARGET_FILE = environ.get('PROXSTAR_WEBSOCKIFY_TARGET_FILE',
|
WEBSOCKIFY_TARGET_FILE = environ.get('PROXSTAR_WEBSOCKIFY_TARGET_FILE',
|
||||||
'/opt/app-root/src/targets')
|
'/opt/app-root/src/targets')
|
||||||
|
|
||||||
|
# SENTRY
|
||||||
|
# If you set the sentry dsn locally, make sure you use the local-dev or some
|
||||||
|
# other local environment, so we can separate local errors from production
|
||||||
|
SENTRY_DSN = environ.get("PROXSTAR_SENTRY_DSN", "")
|
||||||
|
SENTRY_ENV = environ.get("PROXSTAR_SENTRY_ENV", "local-dev")
|
||||||
|
|
|
@ -13,6 +13,10 @@ from rq_scheduler import Scheduler
|
||||||
from sqlalchemy import create_engine
|
from sqlalchemy import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from flask import Flask, render_template, request, redirect, session, abort, url_for
|
from flask import Flask, render_template, request, redirect, session, abort, url_for
|
||||||
|
import sentry_sdk
|
||||||
|
from sentry_sdk.integrations.flask import FlaskIntegration
|
||||||
|
from sentry_sdk.integrations.rq import RqIntegration
|
||||||
|
from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration
|
||||||
from proxstar.db import (Base, datetime, get_pool_cache, renew_vm_expire, set_user_usage_limits, get_template,
|
from proxstar.db import (Base, datetime, get_pool_cache, renew_vm_expire, set_user_usage_limits, get_template,
|
||||||
get_templates, get_allowed_users, add_ignored_pool, delete_ignored_pool, add_allowed_user,
|
get_templates, get_allowed_users, add_ignored_pool, delete_ignored_pool, add_allowed_user,
|
||||||
delete_allowed_user,
|
delete_allowed_user,
|
||||||
|
@ -31,15 +35,22 @@ app = Flask(__name__)
|
||||||
app.config.from_object(rq_dashboard.default_settings)
|
app.config.from_object(rq_dashboard.default_settings)
|
||||||
if os.path.exists(
|
if os.path.exists(
|
||||||
os.path.join(
|
os.path.join(
|
||||||
app.config.get('ROOT_DIR', os.getcwd()), 'config.local.py')):
|
app.config.get('ROOT_DIR', os.getcwd()), 'config_local.py')):
|
||||||
config = os.path.join(
|
config = os.path.join(
|
||||||
app.config.get('ROOT_DIR', os.getcwd()), 'config.local.py')
|
app.config.get('ROOT_DIR', os.getcwd()), 'config_local.py')
|
||||||
else:
|
else:
|
||||||
config = os.path.join(app.config.get('ROOT_DIR', os.getcwd()), 'config.py')
|
config = os.path.join(app.config.get('ROOT_DIR', os.getcwd()), 'config.py')
|
||||||
app.config.from_pyfile(config)
|
app.config.from_pyfile(config)
|
||||||
app.config['GIT_REVISION'] = subprocess.check_output(
|
app.config['GIT_REVISION'] = subprocess.check_output(
|
||||||
['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').rstrip()
|
['git', 'rev-parse', '--short', 'HEAD']).decode('utf-8').rstrip()
|
||||||
|
|
||||||
|
# Sentry setup
|
||||||
|
sentry_sdk.init(
|
||||||
|
dsn=app.config['SENTRY_DSN'],
|
||||||
|
integrations=[FlaskIntegration(), RqIntegration(), SqlalchemyIntegration()],
|
||||||
|
environment=app.config['SENTRY_ENV']
|
||||||
|
)
|
||||||
|
|
||||||
with open('proxmox_ssh_key', 'w') as ssh_key_file:
|
with open('proxmox_ssh_key', 'w') as ssh_key_file:
|
||||||
ssh_key_file.write(app.config['PROXMOX_SSH_KEY'])
|
ssh_key_file.write(app.config['PROXMOX_SSH_KEY'])
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,8 @@ gunicorn==19.9.0
|
||||||
paramiko==2.4.2
|
paramiko==2.4.2
|
||||||
proxmoxer==1.0.3
|
proxmoxer==1.0.3
|
||||||
psutil==5.6.6
|
psutil==5.6.6
|
||||||
psycopg2-binary==2.7.5
|
psycopg2-binary==2.8.6
|
||||||
python-dateutil==2.7.3
|
python-dateutil==2.7.3
|
||||||
raven~=6.10.0
|
|
||||||
redis==2.10.6
|
redis==2.10.6
|
||||||
requests==2.20.1
|
requests==2.20.1
|
||||||
rq==0.12.0
|
rq==0.12.0
|
||||||
|
@ -19,3 +18,5 @@ tenacity==5.0.2
|
||||||
websockify==0.8.0
|
websockify==0.8.0
|
||||||
pylint==2.3.1
|
pylint==2.3.1
|
||||||
pylint-quotes==0.2.1
|
pylint-quotes==0.2.1
|
||||||
|
sentry-sdk[flask]
|
||||||
|
sentry-sdk~=0.18.0
|
||||||
|
|
15
rqsettings.py
Normal file
15
rqsettings.py
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
import sentry_sdk
|
||||||
|
from sentry_sdk.integrations.rq import RqIntegration
|
||||||
|
|
||||||
|
if os.path.exists('config_local.py'):
|
||||||
|
import config_local as config
|
||||||
|
else:
|
||||||
|
import config
|
||||||
|
|
||||||
|
sentry_sdk.init(
|
||||||
|
config.SENTRY_DSN,
|
||||||
|
integrations=[RqIntegration()],
|
||||||
|
environment=config.SENTRY_ENV
|
||||||
|
)
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
/opt/app-root/bin/rq worker -u "$PROXSTAR_REDIS_URL" --sentry-dsn "$PROXSTAR_SENTRY_DSN"
|
/opt/app-root/bin/rq worker -u "$PROXSTAR_REDIS_URL" --sentry-dsn "" -c rqsettings
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue