"""Utility Functions for DataDog Client.""" import os from owslogger import logger import requests from product import config log = logger.setup( config.ENVIRONMENT, 'dd_version', config.LOGGER_LEVEL, config.SERVICE_NAME, config.SERVICE_VERSION) def set_app_version(): """Set the application version as the fargate task number.""" try: # First try v4 (platform 1.4.0+) metadata endpoint if os.environ.get('ECS_CONTAINER_METADATA_URI_V4'): url = os.environ.get('ECS_CONTAINER_METADATA_URI_V4') # If that is not available, fall back to the older endpoint elif os.environ.get('ECS_CONTAINER_METADATA_URI'): url = os.environ.get('ECS_CONTAINER_METADATA_URI') else: log.warning('Task metadata URI cannot be determined') raise Exception('Task metadata URI cannot be determined') metadata_response = requests.get('{}/task'.format(url)) json_response = metadata_response.json() task_version = json_response['Revision'] # Set an environment variable os.environ['DD_VERSION'] = task_version log.info('Version is {}'.format(os.environ.get('DD_VERSION'))) return task_version except Exception: # Set app version to unknown os.environ['DD_VERSION'] = 'UNKNOWN' log.warning('Error occured getting fargate task version,' 'app version set to UNKNOWN') return 'UNKNOWN'