data "aws_ecr_repository" "batch" {
  provider = aws.ecr
  name     = var.batch_ecr_name
}

module "batch_role" {
  source              = "../../../modules/iam/roles/ecs_task_role"
  enable_default_role = false
  name_prefix         = var.name_prefix
  name                = "${var.batch_name}_batch_role"
  common_tags = merge(
    var.tags,
    {
      service                  = "Batch",
      plat_env_project_service = "${var.tag_plat_env_project}_BTCH"
    }
  )
  policies_list = var.batch_role_policies
}

module "batch_job_def" {
  source          = "../../../modules/batch/job_definition"
  env_prefix      = var.env
  project_group   = "delphi"
  project         = "${var.batch_name}_job"
  job_role_arn    = module.batch_role.role.arn
  image           = "${data.aws_ecr_repository.batch.repository_url}:${var.docker_image_env_tag}"
  vcpus           = 1
  memory          = 2048
  timeout_seconds = var.batch_timeout
  retry_attempts  = 1
  env_vars_map = merge(
    local.env_vars,
    local.batch_env_vars,
    var.batch_env_vars
  )
}

module "batch_run_config" {
  source                   = "../../modules/batch_run_config"
  env_prefix               = var.env
  delphi-configs           = "${var.name_prefix}-configs"
  template_name            = "batch_run_config_hasher.tmpl"
  run_config_filename      = "${var.batch_name}.json"
  batch_job_definition_arn = module.batch_job_def.batch_job_definition.arn
  batch_job_queue_arn      = var.batch_queue_arn
}
