def metric_exists()

in integ/validate_cloudwatch/validator.py [0:0]


def metric_exists(metric_namespace, dim_key, dim_value, expected_samples):
    metric_name = get_expected_metric_name()
    response = metrics_client.get_metric_statistics(
        Namespace=metric_namespace,
        MetricName=metric_name,
        Dimensions=[{"Name": dim_key, "Value": dim_value}],
        StartTime=start_time,
        EndTime=end_time,
        Period=60,
        Statistics=["SampleCount", "Average"],
        Unit="None",
    )

    total_samples = 0
    for datapoint in response["Datapoints"]:
        total_samples += datapoint["SampleCount"]

    if total_samples == expected_samples:
        return True
    elif total_samples > expected_samples:
        print(f"Too many datapoints returned. Expected {expected_samples}, received {total_samples}")
    else:
        print(response["Datapoints"])
    print(f"Did not find {metric_namespace}/{metric_name}/{dim_key}:{dim_value}")
    return False