Exemplo n.º 1
0
class MessageHandler(object):

  def __init__(self, es_server, logger):
    self.keys = ['bug.changed.status',
                 'bug.changed.summary',
                 'bug.added.whiteboard',
                 'bug.changed.whiteboard',
                 'bug.new']
    self.logger = logger
    self.bzcache = BugzillaCache(es_server=es_server, logger=self.logger)

  def log(self, msg):
    if self.logger:
      self.logger.info(msg)
    else:
      print msg

  def got_message(self, data, message):
    message.ack()

    key = data['_meta']['routing_key']
    #print key, data['payload']['bug']['id']

    if key in self.keys:
      try:
        bugid = data['payload']['bug']['id']
        status = data['payload']['bug']['status']
        if 'changed.status' in key:
          status = data['payload']['after']
        summary = data['payload']['bug']['summary']
        whiteboard = data['payload']['bug']['whiteboard']
        if 'changed.whiteboard' in key:
          whiteboard = data['payload']['after']
        elif 'added.whiteboard' in key:
          whiteboard = data['payload']['value']
        self.bzcache.add_or_update_bug(bugid, status, summary, whiteboard)
      except KeyError, inst:
        self.log('exception handling message %s' % key)
        self.log(inst)