Fixes to drivers

Change-Id: I3a437a05861e5bbad94eaf8da44b7b3a58e159c0
This commit is contained in:
Andrew Hutchings 2013-04-18 20:29:43 +01:00
parent 184fe83639
commit 54eea9bfe8
4 changed files with 18 additions and 8 deletions

View File

@ -13,14 +13,15 @@
known_drivers = { known_drivers = {
'dummy': 'libra.statsd.drivers.dummy.driver.DummyDriver', 'dummy': 'libra.statsd.drivers.dummy.driver.DummyDriver',
'datadog': 'libra.statsd.driver.dummy.driver.DatadogDriver', 'datadog': 'libra.statsd.drivers.datadog.driver.DatadogDriver',
'hp_rest': 'libra.statsd.driver.hp_rest.driver.HPRestDriver' 'hp_rest': 'libra.statsd.drivers.hp_rest.driver.HPRestDriver'
} }
class AlertDriver(object): class AlertDriver(object):
def __init__(self, logger): def __init__(self, logger, args):
self.logger = logger self.logger = logger
self.args = args
def send_alert(self, message, device_id): def send_alert(self, message, device_id):
raise NotImplementedError() raise NotImplementedError()

View File

@ -16,12 +16,15 @@ from dogapi import dog_http_api as api
class DatadogDriver(AlertDriver): class DatadogDriver(AlertDriver):
def send_alert(self, message): def send_alert(self, message, device_id):
api.api_key = self.args.datadog_apikey api.api_key = self.args.datadog_api_key
api.application_key = self.args.datadog_appkey api.application_key = self.args.datadog_app_key
title = 'Load balancer failure' title = 'Load balancer failure'
text = 'Load balancer failed with message {0} {1}'.format( text = 'Load balancer failed with message {0} {1}'.format(
message, self.args.datadog_message_tail message, self.args.datadog_message_tail
) )
tags = self.args.datadog_tags.split() tags = self.args.datadog_tags.split()
api.event_with_response(title, text, tags=tags, alert_type='error') resp = api.event_with_response(
title, text, tags=tags, alert_type='error'
)
self.logger.info('Datadog alert response: {0}'.format(resp))

View File

@ -102,7 +102,12 @@ class Sched(object):
) )
) )
for driver in self.drivers: for driver in self.drivers:
instance = driver(self.logger) instance = driver(self.logger, self.args)
self.logger.info(
'Sending failure of {0} to {1}'.format(
node, instance.__class__.__name__
)
)
instance.send_alert(message, data['id']) instance.send_alert(message, data['id'])
def _get_node(self, node, node_list): def _get_node(self, node, node_list):

View File

@ -5,3 +5,4 @@ python-daemon>=1.6
python_novaclient>=2.11.1 python_novaclient>=2.11.1
python_swiftclient>=1.3.0 python_swiftclient>=1.3.0
requests>=1.0.0 requests>=1.0.0
dogapi