"""Utility Functions for DataDog Client.""" import logging import os try: import requests except ImportError as exc: raise ImportError( "The 'requests' library is required. " "Please install it using: pip install requests." ) from exc logger = logging.getLogger(__name__) def set_app_version() -> str: """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: raise Exception("Task metadata URI cannot be determined") metadata_response = requests.get(f"{url}/task") json_response = metadata_response.json() task_version: str = json_response["Revision"] # Set an environment variable os.environ["DD_VERSION"] = task_version logging.info("Version is {}".format(os.environ.get("DD_VERSION"))) return task_version except Exception: # Set app version to unknown os.environ["DD_VERSION"] = "UNKNOWN" logging.exception( "Error occurred getting fargate task version,app version set to UNKNOWN", ) return "UNKNOWN"