locals {
  lambda_datadog_docker_nodejs_dir = "lambda/datadog-docker-nodejs"
  lambda_datadog_docker_nodejs_hash = md5(join(",", [
    filemd5("${local.lambda_datadog_docker_nodejs_dir}/index.js"),
    filemd5("${local.lambda_datadog_docker_nodejs_dir}/package.json"),
    filemd5("${local.lambda_datadog_docker_nodejs_dir}/Dockerfile")
  ]))
}

resource "aws_ecr_repository" "lambda_datadog_docker_nodejs_repository" {
  name                 = "${var.service_name}-datadog-docker-nodejs"
  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_nodejs_build" {
  triggers = {
    src_hash = local.lambda_datadog_docker_nodejs_hash
  }

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

    environment = {
      SRC_DIR             = local.lambda_datadog_docker_nodejs_dir
      ECR_REPOSITORY_NAME = aws_ecr_repository.lambda_datadog_docker_nodejs_repository.name
      ECR_REPOSITORY_TAG  = local.lambda_datadog_docker_nodejs_hash
      ECR_REPOSITORY_URL  = aws_ecr_repository.lambda_datadog_docker_nodejs_repository.repository_url
    }
  }
}

module "lambda_datadog_docker_nodejs" {
  source = "../"

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

  use_container_image        = true
  container_image_custom_uri = "${aws_ecr_repository.lambda_datadog_docker_nodejs_repository.repository_url}:${local.lambda_datadog_docker_nodejs_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_nodejs_build.id
  }

  depends_on = [
    aws_ecr_repository.lambda_datadog_docker_nodejs_repository
  ]
}
