Remove dogstatsd-python in favor of dogapi
Also added datadog application to commom django apps and set it to use a local statsd server by default.
This commit is contained in:
0
common/djangoapps/datadog/__init__.py
Normal file
0
common/djangoapps/datadog/__init__.py
Normal file
@@ -1,12 +1,25 @@
|
||||
from django.conf import settings
|
||||
from dogapi import dog_http_api, dog_stats_api
|
||||
|
||||
from dogapi import dog_stats_api, dog_http_api
|
||||
|
||||
|
||||
def run():
|
||||
"""
|
||||
Initialize connection to datadog during django startup.
|
||||
|
||||
Expects the datadog api key in the DATADOG_API settings key
|
||||
Can be configured using a dictionary named DATADOG in the django
|
||||
project settings.
|
||||
|
||||
"""
|
||||
if hasattr(settings, 'DATADOG_API'):
|
||||
dog_http_api.api_key = settings.DATADOG_API
|
||||
dog_stats_api.start(api_key=settings.DATADOG_API, statsd=True)
|
||||
|
||||
# By default use the statsd agent
|
||||
options = {'statsd': True}
|
||||
|
||||
if hasattr(settings, 'DATADOG'):
|
||||
options.update(settings.DATADOG)
|
||||
|
||||
# Not all arguments are documented.
|
||||
# Look at the source code for details.
|
||||
dog_stats_api.start(**options)
|
||||
|
||||
dog_http_api.api_key = options.get('api_key')
|
||||
|
||||
@@ -1,21 +1,24 @@
|
||||
import csv
|
||||
|
||||
from zipfile import ZipFile, is_zipfile
|
||||
from time import strptime, strftime
|
||||
|
||||
from datetime import datetime
|
||||
from zipfile import ZipFile, is_zipfile
|
||||
|
||||
from dogapi import dog_http_api
|
||||
from pytz import UTC
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.conf import settings
|
||||
|
||||
import django_startup
|
||||
|
||||
from student.models import TestCenterUser, TestCenterRegistration
|
||||
from pytz import UTC
|
||||
|
||||
|
||||
django_startup.autostartup()
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
dog_http_api.api_key = settings.DATADOG_API
|
||||
args = '<input zip file>'
|
||||
help = """
|
||||
Import Pearson confirmation files and update TestCenterUser
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
import os
|
||||
from optparse import make_option
|
||||
import os
|
||||
from stat import S_ISDIR
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.core.management import call_command
|
||||
import boto
|
||||
from dogapi import dog_http_api, dog_stats_api
|
||||
import paramiko
|
||||
import boto
|
||||
|
||||
dog_http_api.api_key = settings.DATADOG_API
|
||||
dog_stats_api.start(api_key=settings.DATADOG_API, statsd=True)
|
||||
from django.conf import settings
|
||||
from django.core.management import call_command
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
|
||||
import django_startup
|
||||
|
||||
|
||||
django_startup.autostartup()
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
||||
@@ -303,15 +303,13 @@ class PearsonTransferTestCase(PearsonTestCase):
|
||||
'''
|
||||
|
||||
def test_transfer_config(self):
|
||||
with self.settings(DATADOG_API='FAKE_KEY'):
|
||||
# TODO: why is this failing with the wrong error message?!
|
||||
stderrmsg = get_command_error_text('pearson_transfer', **{'mode': 'garbage'})
|
||||
self.assertErrorContains(stderrmsg, 'Error: No PEARSON entries')
|
||||
with self.settings(DATADOG_API='FAKE_KEY'):
|
||||
stderrmsg = get_command_error_text('pearson_transfer')
|
||||
self.assertErrorContains(stderrmsg, 'Error: No PEARSON entries')
|
||||
with self.settings(DATADOG_API='FAKE_KEY',
|
||||
PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
stderrmsg = get_command_error_text('pearson_transfer', **{'mode': 'garbage'})
|
||||
self.assertErrorContains(stderrmsg, 'Error: No PEARSON entries')
|
||||
|
||||
stderrmsg = get_command_error_text('pearson_transfer')
|
||||
self.assertErrorContains(stderrmsg, 'Error: No PEARSON entries')
|
||||
|
||||
with self.settings(PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
'LOCAL_IMPORT': self.import_dir}):
|
||||
stderrmsg = get_command_error_text('pearson_transfer')
|
||||
self.assertErrorContains(stderrmsg, 'Error: No entry in the PEARSON settings')
|
||||
@@ -319,8 +317,7 @@ class PearsonTransferTestCase(PearsonTestCase):
|
||||
def test_transfer_export_missing_dest_dir(self):
|
||||
raise SkipTest()
|
||||
create_multiple_registrations('export_missing_dest')
|
||||
with self.settings(DATADOG_API='FAKE_KEY',
|
||||
PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
with self.settings(PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
'SFTP_EXPORT': 'this/does/not/exist',
|
||||
'SFTP_HOSTNAME': SFTP_HOSTNAME,
|
||||
'SFTP_USERNAME': SFTP_USERNAME,
|
||||
@@ -336,8 +333,7 @@ class PearsonTransferTestCase(PearsonTestCase):
|
||||
def test_transfer_export(self):
|
||||
raise SkipTest()
|
||||
create_multiple_registrations("transfer_export")
|
||||
with self.settings(DATADOG_API='FAKE_KEY',
|
||||
PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
with self.settings(PEARSON={'LOCAL_EXPORT': self.export_dir,
|
||||
'SFTP_EXPORT': 'results/topvue',
|
||||
'SFTP_HOSTNAME': SFTP_HOSTNAME,
|
||||
'SFTP_USERNAME': SFTP_USERNAME,
|
||||
@@ -354,8 +350,7 @@ class PearsonTransferTestCase(PearsonTestCase):
|
||||
def test_transfer_import_missing_source_dir(self):
|
||||
raise SkipTest()
|
||||
create_multiple_registrations('import_missing_src')
|
||||
with self.settings(DATADOG_API='FAKE_KEY',
|
||||
PEARSON={'LOCAL_IMPORT': self.import_dir,
|
||||
with self.settings(PEARSON={'LOCAL_IMPORT': self.import_dir,
|
||||
'SFTP_IMPORT': 'this/does/not/exist',
|
||||
'SFTP_HOSTNAME': SFTP_HOSTNAME,
|
||||
'SFTP_USERNAME': SFTP_USERNAME,
|
||||
@@ -371,8 +366,7 @@ class PearsonTransferTestCase(PearsonTestCase):
|
||||
def test_transfer_import(self):
|
||||
raise SkipTest()
|
||||
create_multiple_registrations('import_missing_src')
|
||||
with self.settings(DATADOG_API='FAKE_KEY',
|
||||
PEARSON={'LOCAL_IMPORT': self.import_dir,
|
||||
with self.settings(PEARSON={'LOCAL_IMPORT': self.import_dir,
|
||||
'SFTP_IMPORT': 'results',
|
||||
'SFTP_HOSTNAME': SFTP_HOSTNAME,
|
||||
'SFTP_USERNAME': SFTP_USERNAME,
|
||||
|
||||
@@ -59,7 +59,7 @@ from bulk_email.models import Optout
|
||||
|
||||
import track.views
|
||||
|
||||
from statsd import statsd
|
||||
from dogapi import dog_stats_api
|
||||
from pytz import UTC
|
||||
|
||||
log = logging.getLogger("mitx.student")
|
||||
@@ -388,10 +388,12 @@ def change_enrollment(request):
|
||||
)
|
||||
|
||||
org, course_num, run = course_id.split("/")
|
||||
statsd.increment("common.student.enrollment",
|
||||
tags=["org:{0}".format(org),
|
||||
"course:{0}".format(course_num),
|
||||
"run:{0}".format(run)])
|
||||
dog_stats_api.increment(
|
||||
"common.student.enrollment",
|
||||
tags=["org:{0}".format(org),
|
||||
"course:{0}".format(course_num),
|
||||
"run:{0}".format(run)]
|
||||
)
|
||||
|
||||
CourseEnrollment.enroll(user, course.id)
|
||||
|
||||
@@ -402,10 +404,12 @@ def change_enrollment(request):
|
||||
CourseEnrollment.unenroll(user, course_id)
|
||||
|
||||
org, course_num, run = course_id.split("/")
|
||||
statsd.increment("common.student.unenrollment",
|
||||
tags=["org:{0}".format(org),
|
||||
"course:{0}".format(course_num),
|
||||
"run:{0}".format(run)])
|
||||
dog_stats_api.increment(
|
||||
"common.student.unenrollment",
|
||||
tags=["org:{0}".format(org),
|
||||
"course:{0}".format(course_num),
|
||||
"run:{0}".format(run)]
|
||||
)
|
||||
|
||||
return HttpResponse()
|
||||
except CourseEnrollment.DoesNotExist:
|
||||
@@ -471,7 +475,7 @@ def login_user(request, error=""):
|
||||
|
||||
redirect_url = try_change_enrollment(request)
|
||||
|
||||
statsd.increment("common.student.successful_login")
|
||||
dog_stats_api.increment("common.student.successful_login")
|
||||
response = HttpResponse(json.dumps({'success': True, 'redirect_url': redirect_url}))
|
||||
|
||||
# set the login cookie for the edx marketing site
|
||||
@@ -740,7 +744,7 @@ def create_account(request, post_override=None):
|
||||
|
||||
redirect_url = try_change_enrollment(request)
|
||||
|
||||
statsd.increment("common.student.account_created")
|
||||
dog_stats_api.increment("common.student.account_created")
|
||||
|
||||
response_params = {'success': True,
|
||||
'redirect_url': redirect_url}
|
||||
|
||||
Reference in New Issue
Block a user