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

  environment        = var.environment
  teams              = [var.environment]
  service_name       = var.smf_service_name
  application_family = var.application_family
  platform           = "python"
}


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

  environment        = var.environment
  application_family = var.application_family
  lambda_name        = var.smf_service_name

  use_container_image                            = true
  lambda_description                             = "Processes Fan Responses."
  vpc_enabled                                    = true
  vpc_id                                         = var.vpc_id
  vpc_subnet_ids                                 = var.vpc_subnet_ids
  datadog_enabled                                = true
  datadog_advanced_enabled                       = true
  lambda_function_reserved_concurrent_executions = 600
  lambda_function_timeout                        = 900
  lambda_function_memory_size                    = 512

  lambda_function_environment_variables = {
    ENVIRONMENT              = var.environment
    SENTRY_DSN               = "https://6cd57baca4d57586b46f388f053b242d@o22178.ingest.us.sentry.io/4507548699590656"
    KAFKA_SMF_TOPIC          = var.smf_fan_response_topic_name
    KAFKA_TUNESPEAK_TOPIC    = var.tunespeak_fan_response_topic_name
    KAFKA_WYNG_TOPIC         = var.wyng_fan_response_topic_name
    KAFKA_MTL_TOPIC          = var.mtl_fan_response_topic_name
    KAFKA_TARGET_TOPIC       = var.smf_fan_response_topic_name
    DLQ_TOPIC                = var.dlq_topic_name
    KAFKA_BOOTSTRAP_SERVERS  = var.kafka_bootstrap_servers
    KAFKA_SECURITY_PROTOCOL  = "SSL"
    KAFKA_MESSAGE_HEADER_KEY = "email.hash"
  }

}

module "fan_response_lambda_email_hash_secret" {
  source = "git@github.com:theorchard/terraform-secrets-manager.git//?ref=1.5.1"

  environment        = var.environment
  service_name       = var.smf_service_name
  secret_name        = "EMAIL_HASH_SECRET"
  application_family = var.application_family
}

module "lambda_smf_fan_response_datadog_monitoring" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=6.16.0"

  environment  = var.environment
  service_name = var.smf_service_name
  teams        = ["kdh"]

  lambda_error_monitor_enabled = true
  lambda_error_warning_number  = 1
  lambda_error_critical_number = 5
  lambda_error_warning_recovery_number = 0
  lambda_error_critical_recovery_number = 4
  lambda_throttle_monitor_enabled = true
  lambda_throttle_time = "last_10m"
  lambda_max_memory_used_enabled = true

  notification_endpoints = var.notification_endpoints
}

resource "aws_lambda_permission" "fan_response_rest_api_integration_lambda_gateway_permission" {
  statement_id  = "AllowAPIGatewayIntegrationInvoke"
  action        = "lambda:InvokeFunction"
  function_name = module.lambda_smf_fan_response.lambda_arn
  principal     = "apigateway.amazonaws.com"
  source_arn    = "${aws_api_gateway_rest_api.fan_response_rest_api.execution_arn}/*"
}
