data "aws_iam_policy" "abacus_adjustments_usage_policy" {
  name = "S3-${var.environment}-abacus-adjustments-usage-policy"
}

module "lambda_abacus_adjustment_file_import_sentry_project" {
  source = "git@github.com:theorchard/terraform-sentry.git?ref=4.1.2"

  environment        = var.environment
  platform           = "python"
  service_name       = "${var.service_name}-adjustment-file-import"
  teams              = ["abacus-qa"] # Do we need uat team in sentry?
  application_family = var.application_family
}

/*
module "lambda_abacus_adjustment_file_import_owsrequest" {
  source             = "git@github.com:theorchard/terraform-owsrequest.git//?ref=1.1.0"
  environment_name   = var.environment
  service_name       = "${var.service_name}-adjustment-file-import"
}
*/

module "lambda_abacus_adjustment_file_import" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=3.2.0"

  environment                                       = var.environment
  lambda_function_timeout                           = 900
  use_container_image                               = true
  lambda_description                                = "Import adjustment file content."
  lambda_name                                       = "lambda-abacus-adjustment-file-import"
  vpc_id                                            = module.vpc_info.vpc_id
  vpc_subnet_ids                                    = module.vpc_info.default_private_subnet_ids
  application_family                                = var.application_family
  lambda_function_provisioned_concurrent_executions = var.lambda_provisioned_concurrent_executions
  /*
  if there is an issue with the Lambda function code, the lambda_function_provisioned_concurrent_executions
  setting will not work as expected. The Lambda function must initialize successfully for the provisioned
  concurrency configuration to be applied. If the function fails to initialize, you will encounter the FUNCTION_ERROR_INIT_FAILURE error.
  */
  vpc_security_group_name = "${var.environment}-lambda-default-security-group"

  lambda_function_reserved_concurrent_executions = 16
  lambda_function_memory_size                    = 10240

  datadog_enabled          = true
  datadog_advanced_enabled = true

  lambda_function_environment_variables = {
    ENVIRONMENT    = var.environment
    MYSQL_DB_NAME  = var.lambda_abacus_mysql_database
    MYSQL_DB_HOST  = var.lambda_abacus_mysql_host
    MYSQL_DB_USER  = var.lambda_abacus_mysql_user
    S3_BUCKET_NAME = var.abacus_adjustments_bucket_name
  }

  iam_managed_policy_attachments = [
    #module.lambda_abacus_adjustment_file_import_owsrequest.policy_arn_output,
    data.aws_iam_policy.abacus_adjustments_usage_policy.arn
  ]
}

module "lambda_abacus_adjustment_file_import_secrets" {
  source   = "git@github.com:theorchard/terraform-secrets-manager.git//?ref=1.5.1"
  for_each = toset(var.adjustment_file_import_secret_names)

  application_family = var.application_family
  environment        = var.environment
  service_name       = "${var.service_name}-adjustment-file-import"
  secret_name        = each.value
}

module "m2m_secrets_adjustment_file_import" {
  source = "git@github.com:theorchard/terraform-secrets-manager.git//modules/auth0m2m?ref=1.6.1"

  environment        = var.environment
  service_name       = "${var.service_name}-adjustment-file-import"
  application_family = var.application_family
}
