terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/maxwell-cloudsearch-two/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}
module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=2.0.0"
  environment        = var.environment
  application_family = var.application_family
  service_name       = var.lambda_name
  team_name          = var.team_name
}

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = module.default_tags.tags
  }
}

module "vpc_info" {
  source = "git@github.com:theorchard/terraform-vpc-info.git?ref=3.1.0"

  environment = var.environment
}

data "aws_kinesis_stream" "stream" {
  name = var.kinesis_stream_name
}

# could not find the old sentry project so creating a new one for this lambda.
module "sentry_maxwell_cloudsearch_two" {
  source = "git@github.com:theorchard/terraform-sentry.git//?ref=5.0.0"

  environment        = var.environment
  application_family = var.application_family
  service_name       = var.lambda_name
  teams              = [var.environment]
}

module "maxwell_cloudsearch_two" {
  source             = "git@github.com:theorchard/terraform-lambda.git//?ref=5.3.0"
  lambda_name        = var.lambda_name
  lambda_description = "Maxwell CloudSearch 2.0"
  environment        = var.environment
  application_family = var.application_family

  lambda_runtime = "python3.11"

  lambda_function_timeout     = "300"
  lambda_function_memory_size = "512"
  use_container_image         = false

  vpc_id                  = module.vpc_info.vpc_id
  vpc_subnet_ids          = module.vpc_info.default_private_subnet_ids
  zappa_s3_policy_enabled = false

  event_source_mapping_enabled                        = true
  event_source_mapping_starting_position              = "LATEST"
  event_source_mapping_batch_size                     = "1"
  event_source_mapping_resource_type                  = "kinesis"
  event_source_mapping_stream_name                    = data.aws_kinesis_stream.stream.name
  event_source_mapping_bisect_batch_on_function_error = true

  lambda_function_environment_variables = {
    Environment         = var.environment
    KINESIS_STREAM_NAME = data.aws_kinesis_stream.stream.name


    CLOUDSEARCH_ENDPOINT          = "https://doc-prod-etl-tracks-6ftnlygutsmjnvlgtbbl6ztzey.us-east-1.cloudsearch.amazonaws.com"
    CLOUDSEARCH_ENDPOINT_ARTISTS  = "https://doc-prod-etl-artists-pzbekscb7bcvk7lntrggwiozam.us-east-1.cloudsearch.amazonaws.com"
    CLOUDSEARCH_ENDPOINT_LABELS   = "https://doc-prod-etl-labels-tbvinyzpbv5wa5kpbn4s7twdre.us-east-1.cloudsearch.amazonaws.com"
    CLOUDSEARCH_ENDPOINT_PROJECTS = "https://doc-prod-etl-projects-if4rwo5ggylu76bw7jpe3mb37q.us-east-1.cloudsearch.amazonaws.com"
    CLOUDSEARCH_ENDPOINT_RELEASES = "https://doc-prod-etl-releases-w2r3tsng5u43nyhapqbnmpuboe.us-east-1.cloudsearch.amazonaws.com"
    CLOUDSEARCH_ENDPOINT_USERS    = "https://doc-prod-etl-users-vvgypftmefzwflr6lmsvtl2q6y.us-east-1.cloudsearch.amazonaws.com"
    SENTRY_DSN                    = module.sentry_maxwell_cloudsearch_two.sentry_key_dsn_public_output
  }
}


module "lambda_maxwell_cloudsearch_two_dashboard" {
  source                                = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=6.18.1"
  environment                           = var.environment
  service_name                          = var.lambda_name
  notification_endpoints                = var.notification_endpoint
  escalation_notification_endpoints     = var.notification_endpoint
  lambda_invocation_monitor_enabled     = true
  lambda_error_monitor_enabled          = true
  lambda_error_critical_number          = 10
  lambda_error_warning_number           = 5
  lambda_error_ok_number                = 0
  lambda_error_critical_recovery_number = null
  lambda_error_warning_recovery_number  = null
}
