Completed
Push — master ( a2de53...4e3d38 )
by
unknown
14s
created

ELKSender.__init__()   A

Complexity

Conditions 3

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
dl 0
loc 7
rs 9.4285
c 1
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A ELKSender.send() 0 5 1
1
import logging
2
3
from django.conf import settings
4
5
from raven import Client
6
from celery import signature
7
8
from omaha_server.utils import add_extra_to_log_message
9
10
11
class BaseSender(object):
12
    name = None
13
    client = None
14
15
    def send(self, message, extra={}, tags={}, data={}, crash_obj=None):
16
        pass
17
18
19
class SentrySender(BaseSender):
20
    name="Sentry"
21
22
    def __init__(self):
23
        self.client = Client(
24
            getattr(settings, 'RAVEN_DSN_STACKTRACE', None),
25
            name=getattr(settings, 'HOST_NAME', None),
26
            release=getattr(settings, 'APP_VERSION', None)
27
        )
28
29
    def send(self, message, extra={}, tags={}, data={}, crash_obj=None):
30
        event_id = self.client.capture(
31
            'raven.events.Message',
32
            message=message,
33
            extra=extra,
34
            tags=tags,
35
            data=data
36
        )
37
        signature("tasks.get_sentry_link", args=(crash_obj.pk, event_id)).apply_async(queue='private', countdown=1)
38
39
40
class ELKSender(BaseSender):
41
    name="ELK"
42
    handler = None
43
44
    def send(self, message, extra={}, tags={}, data={}, crash_obj=None):
45
        logger = logging.getLogger('crashes')
46
        extra.update(tags)
47
        extra.update(data)
48
        logger.info(add_extra_to_log_message(message, extra=extra))
49
50
senders_dict = {
51
    "Sentry": SentrySender,
52
    "ELK": ELKSender,
53
}
54
55
56
def get_sender(tracker_name=None):
57
    if not tracker_name:
58
        tracker_name = getattr(settings, 'CRASH_TRACKER', 'Sentry')
59
    try:
60
        sender_class = senders_dict[tracker_name]
61
    except KeyError:
62
        raise KeyError("Unknown tracker, use one of %s" % senders_dict.keys())
63
    return sender_class()