Permalink
Browse files

Merge branch 'python-package' of github.com:lincolnloop/cabot into li…

…ncolnloop-python-package

Conflicts:
	cabot/cabotapp/tests/basic.py
	cabot/cabotapp/views.py
	cabot/urls.py
	requirements.txt
  • Loading branch information...
dbuxton committed Aug 3, 2014
2 parents cab908b + 8cf51d5 commit 38725651445df61eda06b86a6933317153088e4b
Showing with 120 additions and 85 deletions.
  1. +5 −2 .gitignore
  2. +2 −2 Procfile
  3. +1 −1 Procfile.dev
  4. +0 −2 app/.gitignore
  5. 0 app/cabotapp/templatetags/__init__.py
  6. +1 −1 bin/provision
  7. +5 −0 cabot/__init__.py
  8. 0 {app → cabot}/cabot_config.py
  9. 0 {app → cabot/cabotapp}/__init__.py
  10. 0 {app → cabot}/cabotapp/admin.py
  11. 0 {app → cabot}/cabotapp/alert.py
  12. 0 {app → cabot}/cabotapp/calendar.py
  13. 0 {app → cabot}/cabotapp/graphite.py
  14. 0 {app → cabot}/cabotapp/jenkins.py
  15. 0 {app/cabotapp → cabot/cabotapp/management}/__init__.py
  16. 0 {app/cabotapp/management → cabot/cabotapp/management/commands}/__init__.py
  17. 0 {app → cabot}/cabotapp/migrations/0001_initial.py
  18. 0 {app → cabot}/cabotapp/migrations/0002_auto__add_field_statuscheck_verify_ssl_certificate.py
  19. 0 {app → cabot}/cabotapp/migrations/0003_auto.py
  20. 0 {app → cabot}/cabotapp/migrations/0004_auto.py
  21. 0 {app/cabotapp/management/commands → cabot/cabotapp/migrations}/__init__.py
  22. +1 −1 {app → cabot}/cabotapp/models.py
  23. +0 −5 {app → cabot}/cabotapp/tasks.py
  24. 0 {app/cabotapp/migrations → cabot/cabotapp/templatetags}/__init__.py
  25. 0 {app → cabot}/cabotapp/templatetags/extra.py
  26. 0 {app → cabot}/cabotapp/tests/__init__.py
  27. +8 −8 {app → cabot}/cabotapp/tests/basic.py
  28. 0 {app → cabot}/cabotapp/tests/fixtures/graphite_response.json
  29. 0 {app → cabot}/cabotapp/tests/fixtures/http_response.html
  30. 0 {app → cabot}/cabotapp/tests/fixtures/jenkins_blocked_response.json
  31. 0 {app → cabot}/cabotapp/tests/fixtures/jenkins_response.json
  32. 0 {app → cabot}/cabotapp/views.py
  33. +17 −0 cabot/celery.py
  34. +3 −3 {app → cabot}/celeryconfig.py
  35. +8 −8 {app → cabot}/settings.py
  36. 0 { → cabot}/static/404.html
  37. 0 { → cabot}/static/500.html
  38. 0 { → cabot}/static/502.html
  39. 0 { → cabot}/static/503.html
  40. 0 { → cabot}/static/504.html
  41. 0 { → cabot}/static/arachnys/css/base.less
  42. 0 { → cabot}/static/arachnys/css/graph.css
  43. 0 { → cabot}/static/arachnys/css/morris.css
  44. BIN { → cabot}/static/arachnys/img/icon_48x48.png
  45. 0 { → cabot}/static/arachnys/js/d3.js
  46. 0 { → cabot}/static/arachnys/js/morris.js
  47. 0 { → cabot}/static/arachnys/js/raphael.js
  48. 0 { → cabot}/static/arachnys/js/rickshaw.js
  49. 0 { → cabot}/static/bootstrap/css/bootstrap.css
  50. BIN { → cabot}/static/bootstrap/fonts/glyphicons-halflings-regular.eot
  51. 0 { → cabot}/static/bootstrap/fonts/glyphicons-halflings-regular.svg
  52. BIN { → cabot}/static/bootstrap/fonts/glyphicons-halflings-regular.ttf
  53. BIN { → cabot}/static/bootstrap/fonts/glyphicons-halflings-regular.woff
  54. 0 { → cabot}/static/bootstrap/js/bootstrap.js
  55. 0 { → cabot}/static/bootstrap/js/bootstrap.min.js
  56. 0 { → cabot}/static/bootstrap/js/jquery-1.10.2.js
  57. BIN { → cabot}/static/favicon.ico
  58. 0 { → cabot}/static/robots.txt
  59. 0 { → cabot}/static/theme/css/bootstrap-responsive.css
  60. 0 { → cabot}/static/theme/css/bootstrap.css
  61. BIN { → cabot}/static/theme/css/chosen-sprite.png
  62. BIN { → cabot}/static/theme/css/chosen-sprite@2x.png
  63. 0 { → cabot}/static/theme/css/chosen.css
  64. 0 { → cabot}/static/theme/css/jquery-ui-1.8.21.custom.css
  65. BIN { → cabot}/static/theme/img/animated-overlay.gif
  66. BIN { → cabot}/static/theme/img/arrows-active.png
  67. BIN { → cabot}/static/theme/img/arrows-normal.png
  68. BIN { → cabot}/static/theme/img/bg-input-focus.png
  69. BIN { → cabot}/static/theme/img/bg-input.png
  70. BIN { → cabot}/static/theme/img/bg-login.jpg
  71. BIN { → cabot}/static/theme/img/bg.jpg
  72. BIN { → cabot}/static/theme/img/buttons.gif
  73. BIN { → cabot}/static/theme/img/calendar.gif
  74. BIN { → cabot}/static/theme/img/chat-left.png
  75. BIN { → cabot}/static/theme/img/chat-right.png
  76. BIN { → cabot}/static/theme/img/chosen-sprite.png
  77. BIN { → cabot}/static/theme/img/close-button-white.png
  78. BIN { → cabot}/static/theme/img/close-button.png
  79. BIN { → cabot}/static/theme/img/crop.gif
  80. BIN { → cabot}/static/theme/img/dbg.jpg
  81. BIN { → cabot}/static/theme/img/dialogs.png
  82. BIN { → cabot}/static/theme/img/favicon.ico
  83. BIN { → cabot}/static/theme/img/glyphicons-halflings-red.png
  84. BIN { → cabot}/static/theme/img/glyphicons-halflings-white.png
  85. BIN { → cabot}/static/theme/img/glyphicons-halflings.png
  86. BIN { → cabot}/static/theme/img/i_16_radio.png
  87. BIN { → cabot}/static/theme/img/icons-big.png
  88. BIN { → cabot}/static/theme/img/icons-small.png
  89. BIN { → cabot}/static/theme/img/logo.png
  90. BIN { → cabot}/static/theme/img/logo20.png
  91. BIN { → cabot}/static/theme/img/progress.gif
  92. BIN { → cabot}/static/theme/img/quicklook-bg.png
  93. BIN { → cabot}/static/theme/img/quicklook-icons.png
  94. BIN { → cabot}/static/theme/img/resize.png
  95. BIN { → cabot}/static/theme/img/spinner-mini.gif
  96. BIN { → cabot}/static/theme/img/sprite.png
  97. BIN { → cabot}/static/theme/img/toolbar.gif
  98. BIN { → cabot}/static/theme/img/toolbar.png
  99. BIN { → cabot}/static/theme/img/ui-bg_flat_0_aaaaaa_40x100.png
  100. BIN { → cabot}/static/theme/img/ui-bg_flat_75_ffffff_40x100.png
  101. BIN { → cabot}/static/theme/img/ui-bg_glass_55_fbf9ee_1x400.png
  102. BIN { → cabot}/static/theme/img/ui-bg_glass_65_ffffff_1x400.png
  103. BIN { → cabot}/static/theme/img/ui-bg_glass_75_dadada_1x400.png
  104. BIN { → cabot}/static/theme/img/ui-bg_glass_75_e6e6e6_1x400.png
  105. BIN { → cabot}/static/theme/img/ui-bg_glass_95_fef1ec_1x400.png
  106. BIN { → cabot}/static/theme/img/ui-bg_highlight-soft_75_cccccc_1x100.png
  107. BIN { → cabot}/static/theme/img/ui-icons_222222_256x240.png
  108. BIN { → cabot}/static/theme/img/ui-icons_2e83ff_256x240.png
  109. BIN { → cabot}/static/theme/img/ui-icons_454545_256x240.png
  110. BIN { → cabot}/static/theme/img/ui-icons_888888_256x240.png
  111. BIN { → cabot}/static/theme/img/ui-icons_cd0a0a_256x240.png
  112. 0 { → cabot}/static/theme/js/bootstrap.js
  113. 0 { → cabot}/static/theme/js/chosen.jquery.js
  114. 0 { → cabot}/static/theme/js/custom.js
  115. 0 { → cabot}/static/theme/js/jquery-ui.js
  116. 0 { → cabot}/static/theme/js/jquery.dataTables.min.js
  117. 0 { → cabot}/static/theme/js/jquery.sparkline.min.js
  118. 0 { → cabot}/static/theme/js/jquery.ui.autocomplete.js
  119. 0 { → cabot}/static/theme/js/jquery.ui.core.js
  120. 0 { → cabot}/static/theme/js/jquery.ui.position.js
  121. 0 {app → cabot}/templates/404.html
  122. 0 {app → cabot}/templates/500.html
  123. 0 {app → cabot}/templates/base.html
  124. 0 {app → cabot}/templates/cabotapp/_base_form.html
  125. 0 {app → cabot}/templates/cabotapp/_statuscheck_list.html
  126. 0 {app → cabot}/templates/cabotapp/service_confirm_delete.html
  127. 0 {app → cabot}/templates/cabotapp/service_detail.html
  128. 0 {app → cabot}/templates/cabotapp/service_form.html
  129. 0 {app → cabot}/templates/cabotapp/service_list.html
  130. 0 {app → cabot}/templates/cabotapp/shift_list.html
  131. 0 {app → cabot}/templates/cabotapp/statuscheck_confirm_delete.html
  132. 0 {app → cabot}/templates/cabotapp/statuscheck_detail.html
  133. 0 {app → cabot}/templates/cabotapp/statuscheck_form.html
  134. 0 {app → cabot}/templates/cabotapp/statuscheck_list.html
  135. 0 {app → cabot}/templates/cabotapp/statuscheck_report.html
  136. 0 {app → cabot}/templates/cabotapp/statuscheckresult_detail.html
  137. 0 {app → cabot}/templates/cabotapp/subscriptions.html
  138. 0 {app → cabot}/templates/cabotapp/userprofile_form.html
  139. 0 {app → cabot}/templates/registration/login.html
  140. 0 {app → cabot}/templates/registration/logout.html
  141. +4 −2 {app → cabot}/urls.py
  142. +5 −0 cabot/wsgi.py
  143. +1 −1 conf/development.env.example
  144. +1 −1 conf/production.env.example
  145. +2 −4 fabfile.py
  146. +2 −1 manage.py
  147. +0 −35 requirements.txt
  148. +54 −0 setup.py
  149. +0 −8 wsgi.py
View
@@ -5,10 +5,13 @@ backups/*
static/CACHE/*
node_modules/*
.python-eggs/*
cabot.egg-info
cabot/static/CACHE
.env
.DS_Store
celerybeat-schedule.db
celerybeat-schedule
*.pyc
*.swp
*.orig
.vagrant
conf/*.env
conf/*.env
View
@@ -1,2 +1,2 @@
web: gunicorn wsgi:application --config gunicorn.conf
celery: celery worker -B -A app.cabotapp.tasks --loglevel=INFO --concurrency=16 -Ofair
web: gunicorn cabot.wsgi:application --config gunicorn.conf
celery: celery worker -B -A cabot --loglevel=INFO --concurrency=16 -Ofair
View
@@ -1,2 +1,2 @@
web: python manage.py runserver 0.0.0.0:$PORT
celery: celeryd --loglevel=DEBUG -B -c 8 -Ofair
celery: celery -A cabot worker --loglevel=DEBUG -B -c 8 -Ofair
View
@@ -1,2 +0,0 @@
*.pyc
*.DS_Store
No changes.
View
@@ -38,7 +38,7 @@ fi
npm install --no-color -g coffee-script less@1.3 --registry http://registry.npmjs.org/ # eco browserify
/home/vagrant/venv/bin/pip install --timeout=30 --exists-action=w -r /vagrant/requirements.txt --no-use-wheel
/home/vagrant/venv/bin/pip install --timeout=30 --exists-action=w -e /vagrant/ --no-use-wheel
# Start redis
sudo service redis-server restart
View
@@ -0,0 +1,5 @@
from __future__ import absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -7,7 +7,7 @@
from django.contrib.admin.models import User
from celery.exceptions import SoftTimeLimitExceeded
from jenkins import get_job_status
from .jenkins import get_job_status
from .alert import send_alert
from .calendar import get_events
from .graphite import parse_metric
@@ -11,11 +11,6 @@
from django.conf import settings
from django.utils import timezone
# Add the root to the python path
root = os.path.abspath(os.path.join(settings.PROJECT_ROOT, '../'))
sys.path.append(root)
celery = Celery(__name__)
celery.config_from_object(settings)
File renamed without changes.
@@ -6,7 +6,7 @@
from django.test import TestCase
from django.contrib.auth.models import User
from django.test.client import Client
from cabotapp.models import (
from cabot.cabotapp.models import (
GraphiteStatusCheck, JenkinsStatusCheck,
HttpStatusCheck, ICMPStatusCheck, Service, Instance, StatusCheckResult)
from cabotapp.views import StatusCheckReportForm
@@ -166,7 +166,7 @@ def test_calculate_service_status(self):
self.service.update_status()
self.assertEqual(self.service.overall_status, Service.PASSING_STATUS)
@patch('cabotapp.graphite.requests.get', fake_graphite_response)
@patch('cabot.cabotapp.graphite.requests.get', fake_graphite_response)
def test_graphite_run(self):
checkresults = self.graphite_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 2)
@@ -188,7 +188,7 @@ def test_graphite_run(self):
self.assertEqual(self.graphite_check.calculated_status,
Service.CALCULATED_PASSING_STATUS)
@patch('cabotapp.jenkins.requests.get', fake_jenkins_response)
@patch('cabot.cabotapp.jenkins.requests.get', fake_jenkins_response)
def test_jenkins_run(self):
checkresults = self.jenkins_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
@@ -197,7 +197,7 @@ def test_jenkins_run(self):
self.assertEqual(len(checkresults), 1)
self.assertFalse(self.jenkins_check.last_result().succeeded)
@patch('cabotapp.jenkins.requests.get', jenkins_blocked_response)
@patch('cabot.cabotapp.jenkins.requests.get', jenkins_blocked_response)
def test_jenkins_blocked_build(self):
checkresults = self.jenkins_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
@@ -206,7 +206,7 @@ def test_jenkins_blocked_build(self):
self.assertEqual(len(checkresults), 1)
self.assertFalse(self.jenkins_check.last_result().succeeded)
@patch('cabotapp.models.requests.get', throws_timeout)
@patch('cabot.cabotapp.models.requests.get', throws_timeout)
def test_timeout_handling_in_jenkins(self):
checkresults = self.jenkins_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
@@ -217,7 +217,7 @@ def test_timeout_handling_in_jenkins(self):
self.assertIn(u'Error fetching from Jenkins - фиктивная ошибка',
self.jenkins_check.last_result().error)
@patch('cabotapp.models.requests.get', fake_http_200_response)
@patch('cabot.cabotapp.models.requests.get', fake_http_200_response)
def test_http_run(self):
checkresults = self.http_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
@@ -241,7 +241,7 @@ def test_http_run(self):
self.assertEqual(self.http_check.calculated_status,
Service.CALCULATED_FAILING_STATUS)
@patch('cabotapp.models.requests.get', throws_timeout)
@patch('cabot.cabotapp.models.requests.get', throws_timeout)
def test_timeout_handling_in_http(self):
checkresults = self.http_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
@@ -252,7 +252,7 @@ def test_timeout_handling_in_http(self):
self.assertIn(u'Request error occurred: фиктивная ошибка innit',
self.http_check.last_result().error)
@patch('cabotapp.models.requests.get', fake_http_404_response)
@patch('cabot.cabotapp.models.requests.get', fake_http_404_response)
def test_http_run_bad_resp(self):
checkresults = self.http_check.statuscheckresult_set.all()
self.assertEqual(len(checkresults), 0)
File renamed without changes.
View
@@ -0,0 +1,17 @@
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cabot.settings')
app = Celery('cabot')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@@ -2,7 +2,7 @@
from datetime import timedelta
BROKER_URL = os.environ['CELERY_BROKER_URL']
CELERY_IMPORTS = ('app.cabotapp.tasks', )
CELERY_IMPORTS = ('cabot.cabotapp.tasks', )
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERY_TASK_SERIALIZER = "json"
CELERY_ACCEPT_CONTENT = ['json', 'msgpack', 'yaml']
@@ -11,11 +11,11 @@
CELERYBEAT_SCHEDULE = {
'run-all-checks': {
'task': 'app.cabotapp.tasks.run_all_checks',
'task': 'cabot.cabotapp.tasks.run_all_checks',
'schedule': timedelta(seconds=60),
},
'update-shifts': {
'task': 'app.cabotapp.tasks.update_shifts',
'task': 'cabot.cabotapp.tasks.update_shifts',
'schedule': timedelta(seconds=1800),
},
'clean-db': {
@@ -2,7 +2,7 @@
import dj_database_url
settings_dir = os.path.dirname(__file__)
PROJECT_ROOT = os.path.abspath(os.path.dirname(settings_dir))
PROJECT_ROOT = os.path.abspath(settings_dir)
TEMPLATE_DEBUG = DEBUG = os.environ.get("DEBUG", False)
@@ -56,7 +56,7 @@
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static/')
STATIC_ROOT = os.path.join(PROJECT_ROOT, os.path.pardir, 'static/')
COMPRESS_ROOT = STATIC_ROOT
@@ -65,7 +65,7 @@
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = []
STATICFILES_DIRS = [os.path.join(PROJECT_ROOT, 'static')]
# List of finder classes that know how to find static files in
# various locations.
@@ -94,10 +94,10 @@
'django.middleware.transaction.TransactionMiddleware',
)
ROOT_URLCONF = 'app.urls'
ROOT_URLCONF = 'cabot.urls'
TEMPLATE_DIRS = (
os.path.join(PROJECT_ROOT, 'app/templates/'),
os.path.join(PROJECT_ROOT, 'templates'),
)
INSTALLED_APPS = (
@@ -117,7 +117,7 @@
'djcelery',
'mptt',
'jsonify',
'app.cabotapp',
'cabot.cabotapp',
)
@@ -208,5 +208,5 @@
}
}
from celeryconfig import *
from cabot_config import *
from cabot.celeryconfig import *
from cabot.cabot_config import *
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,5 +1,5 @@
from django.conf.urls.defaults import patterns, include, url
from cabotapp.views import (
from cabot.cabotapp.views import (
run_status_check, graphite_api_data, twiml_callback, checks_run_recently,
duplicate_icmp_check, duplicate_graphite_check, duplicate_http_check, duplicate_jenkins_check, duplicate_instance,
GraphiteCheckCreateView, GraphiteCheckUpdateView,
@@ -8,8 +8,10 @@
JenkinsCheckCreateView, JenkinsCheckUpdateView,
StatusCheckDeleteView, StatusCheckListView, StatusCheckDetailView,
StatusCheckResultDetailView, StatusCheckReportView)
from cabotapp.views import (InstanceListView, InstanceDetailView,
InstanceUpdateView, InstanceCreateView, InstanceDeleteView, ServiceListView, ServiceDetailView,
InstanceUpdateView, InstanceCreateView, InstanceDeleteView,
ServiceListView, ServiceDetailView,
ServiceUpdateView, ServiceCreateView, ServiceDeleteView,
UserProfileUpdateView, ShiftListView, subscriptions)
from django.contrib import admin
View
@@ -0,0 +1,5 @@
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cabot.settings')
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
@@ -1,6 +1,6 @@
DEBUG=t
DATABASE_URL=sqlite:///dev.db
DJANGO_SETTINGS_MODULE=app.settings
DJANGO_SETTINGS_MODULE=cabot.settings
HIPCHAT_URL=https://api.hipchat.com/v1/rooms/message
LOG_FILE=/dev/null
PORT=5001
@@ -1,5 +1,5 @@
DATABASE_URL=postgres://cabot:cabot@localhost:5432/index
DJANGO_SETTINGS_MODULE=app.settings
DJANGO_SETTINGS_MODULE=cabot.settings
HIPCHAT_URL=https://api.hipchat.com/v1/rooms/message
LOG_FILE=/dev/null
PORT=5000
View
@@ -34,10 +34,8 @@ def _setup_venv():
def install_requirements(deploy_path=DEPLOY_PATH):
with cd(deploy_path):
with prefix("source {venv}/bin/activate".format(venv=VENV_DIR)):
sudo(
"{venv}/bin/pip install -r requirements.txt --exists-action=w".format(venv=VENV_DIR))
sudo("{venv}/bin/pip install -e {path} --exists-action=w".format(
venv=VENV_DIR, path=deploy_path))
def run_migrations(deploy_path=DEPLOY_PATH):
View
@@ -1,9 +1,10 @@
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cabot.settings")
from django.core.management import execute_from_command_line
View
@@ -1,35 +0,0 @@
Django==1.4.13
PyJWT==0.1.2
South==0.7.6
amqp==1.3.3
anyjson==0.3.3
argparse==1.2.1
billiard==3.3.0.13
celery==3.1.7
distribute==0.6.24
dj-database-url==0.2.2
django-appconf==0.6
django-celery==3.1.1
django-celery-with-redis==3.0
django-compressor==1.2
django-jsonify==0.2.1
django-mptt==0.6.0
django-polymorphic==0.5.3
django-redis==1.4.5
django-smtp-ssl==1.0
gunicorn==18.0
gevent==1.0.1
hiredis==0.1.1
httplib2==0.7.7
icalendar==3.2
kombu==3.0.8
mock==1.0.1
psycogreen==1.0
psycopg2==2.5.1
pytz==2013.9
redis==2.9.0
requests==0.14.2
six==1.5.1
twilio==3.4.1
wsgiref==0.1.2
python-dateutil==2.1
View
@@ -0,0 +1,54 @@
#!/usr/bin/env python
from setuptools import setup, find_packages
setup(
name='cabot',
version='0.0.0-dev',
description="Self-hosted, easily-deployable monitoring and alerts service"
" - like a lightweight PagerDuty",
long_description=open('README.md').read(),
author="Arachnys",
author_email='info@arachnys.com',
url='http://cabotapp.com',
license='MIT',
install_requires=[
'Django==1.4.13',
'PyJWT==0.1.2',
'South==0.7.6',
'amqp==1.3.3',
'anyjson==0.3.3',
'argparse==1.2.1',
'billiard==3.3.0.13',
'celery==3.1.7',
'distribute==0.6.24',
'dj-database-url==0.2.2',
'django-appconf==0.6',
'django-celery==3.1.1',
'django-celery-with-redis==3.0',
'django-compressor==1.2',
'django-jsonify==0.2.1',
'django-mptt==0.6.0',
'django-polymorphic==0.5.3',
'django-redis==1.4.5',
'django-smtp-ssl==1.0',
'gunicorn==18.0',
'gevent==1.0.1',
'hiredis==0.1.1',
'httplib2==0.7.7',
'icalendar==3.2',
'kombu==3.0.8',
'mock==1.0.1',
'psycogreen==1.0',
'psycopg2==2.5.1',
'pytz==2013.9',
'redis==2.9.0',
'requests==0.14.2',
'six==1.5.1',
'twilio==3.4.1',
'wsgiref==0.1.2',
'python-dateutil==2.1',
],
packages=find_packages(),
include_package_data=True,
zip_safe=False,
)
Oops, something went wrong.

0 comments on commit 3872565

Please sign in to comment.