Example #1
0
def _SendSummaryEmail(sheriff_entity, start_time):
    """Sends a summary email for the given sheriff rotation.

  Args:
    sheriff_entity: A Sheriff entity.
    start_time: A starting datetime for anomalies to fetch.
  """
    receivers = email_template.GetSheriffEmails(sheriff_entity)
    anomalies, _, _ = anomaly.Anomaly.QueryAsync(
        sheriff=sheriff_entity.key.id(),
        bug_id='',
        is_improvement=False,
        min_timestamp=start_time).get_result()
    logging.info('_SendSummaryEmail: %s', str(sheriff_entity.key))
    logging.info(' - receivers: %s', str(receivers))
    logging.info(' - anomalies: %d', len(anomalies))
    if not anomalies:
        return
    subject = _EmailSubject(sheriff_entity, anomalies)
    html, text = _EmailBody(anomalies, sheriff_entity.key.string_id())
    logging.info(' - body: %s', text)
    mail.send_mail(sender='*****@*****.**',
                   to=receivers,
                   subject=subject,
                   body=text,
                   html=html)
Example #2
0
def _SendSummaryEmail(sheriff_entity, start_time):
  """Sends a summary email for the given sheriff rotation.

  Args:
    sheriff_entity: A Sheriff entity.
    start_time: A starting datetime for anomalies to fetch.
  """
  receivers = email_template.GetSheriffEmails(sheriff_entity)
  anomalies = _RecentUntriagedAnomalies(sheriff_entity, start_time)
  if not anomalies:
    return
  subject = _EmailSubject(sheriff_entity, anomalies)
  html, text = _EmailBody(anomalies)
  mail.send_mail(
      sender='*****@*****.**', to=receivers,
      subject=subject, body=text, html=html)
Example #3
0
def EmailSheriff(sheriff, test, anomaly):
  """Sends an email to the sheriff on duty about the given anomaly.

  Args:
    sheriff: sheriff.Sheriff entity.
    test: The graph_data.Test entity associated with the anomaly.
    anomaly: The anomaly.Anomaly entity.
  """
  receivers = email_template.GetSheriffEmails(sheriff)
  if not receivers:
    logging.warn('No email address for %s', sheriff)
    return
  anomaly_info = email_template.GetAlertInfo(anomaly, test)
  mail.send_mail(sender='*****@*****.**',
                 to=receivers,
                 subject=anomaly_info['email_subject'],
                 body=anomaly_info['email_text'],
                 html=anomaly_info['email_html'] + anomaly_info['alerts_link'])
def _SendStoppageAlertEmail(sheriff_entity):
    """Sends a summary email for the given sheriff rotation.

  Args:
    sheriff_entity: A Sheriff key.
  """
    stoppage_alerts = _RecentStoppageAlerts(sheriff_entity)
    if not stoppage_alerts:
        return
    alert_dicts = [_AlertRowDict(a) for a in stoppage_alerts]
    mail.send_mail(sender='*****@*****.**',
                   to=email_template.GetSheriffEmails(sheriff_entity),
                   subject=_Subject(sheriff_entity, stoppage_alerts),
                   body=_TextBody(alert_dicts),
                   html=_HtmlBody(alert_dicts))
    for alert in stoppage_alerts:
        alert.mail_sent = True
    ndb.put_multi(stoppage_alerts)