def _create_metric_widget()

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
    }