locals {
  lambda_datadog_docker_python_dir = "lambda/datadog-docker-python"
  lambda_datadog_docker_python_hash = md5(join(",", [
    filemd5("${local.lambda_datadog_docker_python_dir}/index.py"),
    filemd5("${local.lambda_datadog_docker_python_dir}/requirements.txt"),
    filemd5("${local.lambda_datadog_docker_python_dir}/Dockerfile")
  ]))
}

resource "aws_ecr_repository" "lambda_datadog_docker_python_repository" {
  name                 = "${var.service_name}-datadog-docker-python"
  image_tag_mutability = "MUTABLE"

  encryption_configuration {
    encryption_type = "KMS"
  }

  image_scanning_configuration {
    scan_on_push = true
  }

  force_delete = true
}

resource "null_resource" "lambda_datadog_docker_python_build" {
  triggers = {
    src_hash = local.lambda_datadog_docker_python_hash
  }

  provisioner "local-exec" {
    command = "/bin/bash ./lambda/build-docker.sh"

    environment = {
      SRC_DIR             = local.lambda_datadog_docker_python_dir
      ECR_REPOSITORY_NAME = aws_ecr_repository.lambda_datadog_docker_python_repository.name
      ECR_REPOSITORY_TAG  = local.lambda_datadog_docker_python_hash
      ECR_REPOSITORY_URL  = aws_ecr_repository.lambda_datadog_docker_python_repository.repository_url
    }
  }
}

module "lambda_datadog_docker_python" {
  source = "../"

  environment        = var.environment
  lambda_name        = "${var.service_name}-datadog-docker-python"
  lambda_description = "Tests DataDog integration with containerized Python Lambdas."
  application_family = "platform"

  architectures              = ["arm64"]
  use_container_image        = true
  container_image_custom_uri = "${aws_ecr_repository.lambda_datadog_docker_python_repository.repository_url}:${local.lambda_datadog_docker_python_hash}"

  vpc_id                = var.vpc_id
  vpc_subnet_ids        = var.vpc_subnet_ids
  vpc_enable_eni_lookup = false

  datadog_enabled          = true
  datadog_advanced_enabled = true

  lambda_function_environment_variables = {
    BUILD_ID = null_resource.lambda_datadog_docker_python_build.id
  }

  depends_on = [
    aws_ecr_repository.lambda_datadog_docker_python_repository
  ]
}
