"""Datadog Connector.""" from contextlib import contextmanager from analytics import config from datadog import api from datadog import initialize @contextmanager def datadog_connection(): """Context manager for datadog connection objects. Yields: datadog.api: connection to datadog api """ initialize(api_key=config.DD_API_KEY, app_key=config.DD_APP_KEY) yield api def key(metric_key: str): """Create a namespaced key. Args: metric_key (str): the metric key. Returns: str: the key. """ return 'ows.analytics.{metric_key}'.format(metric_key=metric_key) def publish_metric(metric: str, value: int = 1): """Publish a metric to DataDog.""" if config.environment.lower() in ['dev', 'test']: return with datadog_connection() as datadog: datadog.Metric.send(metric=metric, points=value, tags=[ f'environment:{config.environment}', f'service_name:{config.SERVICE_NAME}', ])