provider "aws" {
  region = "us-east-1"
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/upc-provisioner/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_security_group" "vpc_security_group" {
  name   = "prod-lambda-default-security-group"
  vpc_id = module.vpc_info.vpc_id

  tags = {
    "eiso-exception" = "aws.08.30"
  }
}

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

  environment = var.environment
}

module "queues" {
  source                        = "../../modules/upc-provisioner/queue"
  environment                   = var.environment
  upc_provisioner_sns_topic_arn = module.sns_topic.upc_provisioner_sns_arn
  queue_depth_alarm_threshold   = var.queue_depth_alarm_threshold
}

module "sns_topic" {
  source                       = "../../modules/upc-provisioner/topic"
  environment                  = var.environment
  upc_provisioner_lambda_arn   = module.lambda_upc_provisioner.lambda_arn
  dlq_sns_subscription_enabled = false
}

module "lambda_upc_provisioner" {
  source = "../../modules/upc-provisioner/lambda"
  environment                  = var.environment
  vpc_security_group_id        = data.aws_security_group.vpc_security_group.id
  vpc_id                       = module.vpc_info.vpc_id
  vpc_subnet_ids               = var.vpc_subnet_ids
  lambda_memory_size           = var.lambda_memory_size
  logger_dsn                   = var.logger_dsn
  lambda_concurrent_executions = var.lambda_concurrent_executions
  lambda_default_timeout       = var.lambda_default_timeout
  ar_db_host                   = var.ar_db_host
  ar_db_database               = var.ar_db_database
  sns_topic_arn                = module.sns_topic.upc_provisioner_sns_arn
  upcs_ar_select_offset        = var.upcs_ar_select_offset
}

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

  environment                       = var.environment
  service_name                      = "upc-provisioner"
  lambda_invocation_monitor_enabled = false
}
