provider "aws" {
  region = var.aws_region
}

provider "aws" {
  region  = var.aws_region
  alias   = "dev"
  profile = "dev"
}


terraform {
  backend "s3" {
    bucket  = "dev-orcd-terraform-state"
    key     = "dev/asset-transcoder/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_caller_identity" "current" {}

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

  environment = var.environment
}

data "aws_route53_zone" "route53_zone" {
  name = "dev.theorchard.io"
}

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

  environment        = var.environment
  service_name       = var.service_name
  secret_name        = each.value
  application_family = var.application_family
}

module "buckets" {
  source = "../../modules/asset-transcoder/buckets"

  environment          = var.environment
  input_bucket_cors    = var.input_assets_bucket_cors
  fargate_task_role    = ""
  additional_roles     = var.additional_browser_assume_role_arns
  output_buckets_names = [var.podcast_output_bucket_name]
}

module "lambdas" {
  source = "../../modules/asset-transcoder/lambdas"

  environment                          = var.environment
  vpc_id                               = module.vpc_info.vpc_id
  vpc_subnet_ids                       = var.lambdas_vpc_subnet_ids
  preview_buckets_names                = [var.podcast_output_bucket_name]
  input_bucket_name                    = module.buckets.input_bucket_name
  output_buckets_names                 = [var.podcast_output_bucket_name]
  output_buckets_readwrite_policy_arn  = module.buckets.output_buckets_readwrite_policy_arn
  image_encoding_lambda_memory_size    = 3008
  audio_waveform_lambda_execution_time = 900
  lambda_concurrent_executions         = 2
  datadog_enabled                      = false

  lambda_additional_environment_variables = {
    OWSREQUEST_SERVICE_MAP = "{\"ows-asset-transcoder\": \"dev-ows-asset-transcoder.dev.theorchard.io\"}"
  }
}

module "podcast_elastic_transcoder" {
  source                      = "../../modules/asset-transcoder/elastic_transcoder"
  environment                 = var.environment
  pipeline_name               = "podcast"
  input_bucket_name           = module.buckets.input_bucket_name
  output_bucket_name          = var.podcast_output_bucket_name
  notifications_sns_topic_arn = module.lambdas.sns_final_status_topic_arn
}

module "state_machine" {
  source = "../../modules/asset-transcoder/state_machine"

  environment                 = var.environment
  region                      = var.aws_region
  acknowledge_lambda_arn      = module.lambdas.acknowledge_lambda_arn
  encoding_route_lambda_arn   = module.lambdas.encoding_route_lambda_arn
  audio_validation_lambda_arn = module.lambdas.audio_validation_lambda_arn
  audio_waveform_lambda_arn   = module.lambdas.audio_waveform_lambda_arn
  image_validation_lambda_arn = module.lambdas.image_validation_lambda_arn
  image_encoding_lambda_arn   = module.lambdas.image_encoding_lambda_arn
  input_assets_bucket         = module.buckets.input_bucket_name
}
