data "aws_route53_zone" "dns_zone" {
  name = "theorchard.io."
}

module "opensearch" {
  source = "git@github.com:theorchard/terraform-elasticsearch.git//?ref=5.0.2"

  providers = {
    aws.dns = aws.networking
  }

  application_family       = var.application_family
  use_opensearch_engine    = true
  env                      = var.environment
  aws_es_domain_name       = var.domain_name
  aws_es_version           = "OpenSearch_2.19"
  aws_es_instance_type     = "t3.medium.search"
  aws_es_instance_count    = 2
  aws_es_disk_size         = 30
  aws_es_disk_type         = "gp3"
  encrypt_at_rest_enabled  = true

  vpc_id     = module.vpc_info.vpc_id
  subnet_ids = [module.vpc_info.default_private_subnet_ids[0], module.vpc_info.default_private_subnet_ids[1]]
  route53_record_creation_enabled = true
  use_service_specific_kms_key = false
  
  # Only for Prod.
  https_allowed_custom_prefix_list_names = [
    "vpn-ny-users",
    "shared-orcd-atlantis-private-subnet-prefix-list",
  ]

  override_main_response_version = null

  advanced_security_options_enabled = true
  advanced_security_options_iam_master_user_arn = aws_iam_role.os_manager_role.arn

  log_publishing_options = [
    {
      enabled  = true
      log_type = "INDEX_SLOW_LOGS"
    },
    {
      enabled  = true
      log_type = "SEARCH_SLOW_LOGS"
    },
    {
      enabled  = true
      log_type = "ES_APPLICATION_LOGS"
    },
  ]
}

# datadog monitors for opensearch.
module "os_datadog_integration" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/open_search?ref=6.17.1"

  environment        = var.environment
  service_name       = var.domain_name
  application_family = var.application_family

  notification_endpoints            = var.notification_endpoints
  escalation_notification_endpoints = var.escalation_notification_endpoints

  monitor_enabled                 = true
  critical_number_5XX             = 5
  disk_space_monitor_enabled      = true
  disk_space_monitor_gib_critical = 1
}

data "aws_caller_identity" "current" {}
