Skip to content

Commit

Permalink
fix sentry returner
Browse files Browse the repository at this point in the history
  • Loading branch information
Bruno Clermont committed Jan 25, 2013
1 parent c10193b commit d4a2428
Showing 1 changed file with 43 additions and 11 deletions.
54 changes: 43 additions & 11 deletions states/_returners/sentry_return.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@

"""
Salt returner that report error back to sentry
Pillar need something like:
raven:
servers:
- http://192.168.1.1
- https://sentry.example.com
public_key: deadbeefdeadbeefdeadbeefdeadbeef
secret_key: beefdeadbeefdeadbeefdeadbeefdead
project: 1
and http://pypi.python.org/pypi/raven installed
"""

import logging
Expand All @@ -19,26 +32,45 @@ def __virtual__():
if not has_raven:
logger.warning("Can't find raven client library")
return False
return False
return 'sentry'

def returner(ret):
"""
If an error occurs, log it to sentry
"""

if not ret['success']:
logger.debug("not a success, do something")
def connect_sentry():
pillar_data = __salt__['pillar.data']()
sentry_data = {
'result': ret,
'pillar': pillar_data,
'grains': __salt__['grains.items'](),
'highstate': __salt__['state.show_highstate'](),
'lowstate': __salt__['state.show_lowstate']()
}
servers = []
for server in pillar_data['raven']['servers']:
servers.append(server + '/api/store/')
try:
pillar_data = __salt__['pillar.data']()
logger.error(pillar_data)
client = Client(
servers=pillar_data['raven']['servers'],
servers=servers,
public_key=pillar_data['raven']['public_key'],
secret_key=pillar_data['raven']['secret_key'],
project=pillar_data['raven']['project'],
)
client.capture('Salt state failure', data=ret)
)
client.captureMessage(ret['return'], extra=sentry_data)
except Exception, err:
logger.error("Can't init client: %s", err, exc_info=True)
else:
logger.debug("success, skip")
logger.error("Can't send message to sentry: %s", err, exc_info=True)

try:
if 'success' not in ret:
logger.debug("no success data, report")
connect_sentry()
else:
if not ret['success'] is not True:
logger.debug("not a success, report")
connect_sentry()
else:
logger.debug("success, skip")
except Exception, err:
logger.error(err)

0 comments on commit d4a2428

Please sign in to comment.