def create_email_contents()

in next_steps/readable_alerts_html/readable_alerts_html.py [0:0]


def create_email_contents(anomaly_detector_arn, alert_timestamp, alert_metric_name, anomaly_score, anomaly_group_id, relevant_time_series):

    # Format email subject
    subject = "L4M Alert - %s - %s" % (alert_metric_name,
                                       alert_timestamp.strftime("%Y-%m-%d %H:%M"))

    # Begin formatting HTML body
    html_body = '<body style="font-family:Helvetica; font-size: 11pt;">\n'

    # Table of summary
    html_body += '<table>\n'
    html_body += "<tr> <td>%s</td> <td>%s</td> </tr>\n" % (
        "Measure name :", alert_metric_name)
    html_body += "<tr> <td>%s</td> <td>%s</td> </tr>\n" % (
        "Timestamp :", alert_timestamp.strftime("%Y-%m-%d %H:%M"))
    html_body += "<tr> <td>%s</td> <td>%s</td> </tr>\n" % (
        "Anomaly score :", "%.2f" % anomaly_score)
    html_body += "<tr> <td>%s</td> <td>%s</td> </tr>\n" % (
        "Num relevant time series :", "%d" % len(relevant_time_series))
    html_body += '</table>\n'

    html_body += "<br>\n"

    # Prepare list of dimension names for the relevant time series table (to be consistently sorted)
    dimension_names = [dimension["DimensionName"]
                       for dimension in relevant_time_series[0]]

    # Table of relevant time series
    html_body += '<table border="1" >\n'
    html_body += '<caption>List of relevant time series</caption>\n'

    # Header row with dimension names
    html_body += '<tr bgcolor="#ccccff">'
    for dimension_name in dimension_names:
        html_body += "<th>%s</th>" % dimension_name
    html_body += "</tr>\n"

    # Data rows with dimension values
    for dimension_list in relevant_time_series:

        # Converting to python dictionary to easily lookup
        dimension_name_value_map = {}
        for dimension_name_value in dimension_list:
            dimension_name_value_map[dimension_name_value["DimensionName"]
                                     ] = dimension_name_value["DimensionValue"]

        html_body += "<tr>"
        for dimension_name in dimension_names:
            html_body += "<td>%s</td>" % dimension_name_value_map[dimension_name]
        html_body += "</tr>\n"

    html_body += '</table>\n'

    html_body += "<br>\n"

    # Direct link to anomaly group detail page
    console_url = create_url_to_console(anomaly_detector_arn, anomaly_group_id)
    html_body += '<a href="%s">Link to Lookout for Metrics console</a>\n' % console_url

    html_body += "</body>"

    # Return compiled email contents
    return subject, html_body