in source/lambda/msk-dashboard/lambda_function.py [0:0]
def _create_metric_widget(widget, cluster_name):
if widget.number_nodes is not None:
metrics = _generate_metrics_with_brokers(cluster_name, widget.metric_name, widget.number_nodes)
else:
metrics = _generate_metrics_without_brokers(cluster_name, widget.metric_name)
if widget.annotation is not None:
label, value = widget.annotation
annotations = {
'horizontal': [{ 'label': label, 'value': value }]
}
else:
annotations = None
properties = {
'metrics': metrics,
'view': widget.view,
'stacked': False,
'region': widget.region,
'stat': widget.stat,
'period': 300,
'title': widget.title,
'annotations': annotations
}
# Remove None values from properties to prevent any warnings from the CloudWatch API
filtered_props = { k: v for k, v in properties.items() if v is not None }
return {
'type': 'metric',
'x': widget.x,
'y': widget.y,
'width': widget.width,
'height': widget.height,
'properties': filtered_props
}