## This was the original service without an ALB
module auth_service {

  providers = {
    aws = aws.us-east-1
  }

  source = "git::ssh://git@bitbucket.org/netfoundry/nf-mop-tf.git//modules/aws/ecs_fargate_service"

  service_name        = local.service_name
  container_count     = local.container_count
  task_definition     = data.template_file.task_definition.rendered
  task_role_arn       = aws_iam_role.auth_task_role.arn
  registry_arn        = aws_service_discovery_service.auth_service.arn
  #registry_arn        = "foo"
  ecs_cluster_id      = data.terraform_remote_state.mop_core.outputs.ecs_cluster_id
  cpu                 = "1024"
  memory              = "2048"
  # execution_role_arn  = "${data.terraform_remote_state.ecs_cluster.exec_role_arn}"
  execution_role_arn = aws_iam_role.auth_task_role.arn
  security_groups     = [aws_security_group.auth_service.id,data.terraform_remote_state.mop_core.outputs.sg_alb_id]
  subnets             = data.terraform_remote_state.mop_core.outputs.vpc_subnet_private_ids
  log_retention       = 30
}


data "aws_secretsmanager_secret" "mysql_pass_permission" {
  name = "mysql_pass_permission_server"
  depends_on = [aws_secretsmanager_secret.auth_service_mysql_pass]
}

data "aws_secretsmanager_secret" "spring_cloud_config" {
  name = "spring_cloud_config"
}

data "aws_secretsmanager_secret" "internal_aws_secret_access_key" {
  name = "internal_aws_secret_access_key"
}


data "aws_secretsmanager_secret" "es_micrometer_creds" {
  name = "es_micrometer_creds"
}


data template_file "task_definition" {
  template = file("${path.module}/templates/task-definition.json")

  vars = {
    image_url             = "745435643501.dkr.ecr.us-east-1.amazonaws.com/authorization:${data.aws_ssm_parameter.container_image.value}"
    #image_url             = "netfoundry/auth:${data.aws_ssm_parameter.container_image.value}"
    #docker_hub_secret_arn = data.terraform_remote_state.mop_core.outputs.dockerhub_secret_arn
    container_name        = local.service_name
    container_port        = local.container_port
    grpc_port             = local.grpc_port
    service_endpoint      = "${local.short_name}.mop.local"
    health_check_path     = local.health_check_path
    log_group_region      = var.region[terraform.workspace]
    log_group_name        = module.auth_service.cwlog_group_name
    spring_profiles_active = local.deploy_env_name
    # Setting the config_uri in the task defnition
    spring_cloud_config_uri   = "http://config-service.mop.local:8888"
    spring_cloud_config_label = local.spring_config_label
    aws_default_region        = var.region[terraform.workspace]
    # properties settings
    subdomain                  = local.subdomain
    internal_aws_access_key_id = data.aws_ssm_parameter.iam_user_profile_internal_access_key_id.value
    #sqs_queue_name             = "${data.aws_ssm_parameter.sqs_mop_events_application_name.value}"
    sqs_queue_name              = data.terraform_remote_state.mop_core.outputs.sqs_mop_events_application_name
    rds_endpoint               = module.rds_mysql_permission.rds_instance_address
    rds_username               = module.rds_mysql_permission.rds_username
    mysql_pass                = data.aws_secretsmanager_secret.mysql_pass_permission.arn
    spring_cloud_config_password = data.aws_secretsmanager_secret.spring_cloud_config.arn
    internal_aws_secret       = data.aws_secretsmanager_secret.internal_aws_secret_access_key.arn
    auth0_client_id       = auth0_client.client.client_id
    auth0_client_secret   = auth0_client.client.client_secret
    es_host = data.terraform_remote_state.mop_core.outputs.es_host
    es_micrometer_username = "${data.aws_secretsmanager_secret.es_micrometer_creds.arn}:username::"
    es_micrometer_password = "${data.aws_secretsmanager_secret.es_micrometer_creds.arn}:password::"
    redis_cluster_address = data.terraform_remote_state.mop_core.outputs.redis_address
    redis_failover_address = data.terraform_remote_state.mop_core.outputs.redis_reader_address
    deploy_env = local.deploy_env_name

    // make multi-region friendly
    auth0_issuer = "https://netfoundry-${var.auth0_issuer_map[terraform.workspace]}.auth0.com/"
  }
}
