module identity_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       = var.container_count[terraform.workspace]
  task_definition       = data.template_file.task_definition.rendered
  task_role_arn         = aws_iam_role.identity_task_role.arn
  registry_arn = aws_service_discovery_service.core_service.arn
  ecs_cluster_id = data.terraform_remote_state.mop_core.outputs.ecs_cluster_id
  cpu = "512"
  memory = "2048"
  execution_role_arn = aws_iam_role.identity_task_role.arn
  security_groups = [
    data.terraform_remote_state.mop_core.outputs.sg_http_private_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_identity" {
  name = "mysql_pass_identity_server"
}

data "aws_secretsmanager_secret" "rsa_key_identity_server" {
  name = "rsa_key_identity_server"
}

data "aws_secretsmanager_secret" "identity_smtp_password" {
  name = "identity_smtp_password"
}

data "aws_secretsmanager_secret" "auth0_management_api_clientsecret" {
  name = "auth0_management_api_clientSecret"
}

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

  vars = {
    image_url             = "745435643501.dkr.ecr.us-east-1.amazonaws.com/identity:${data.aws_ssm_parameter.container_image.value}"
    #image_url             = "netfoundry/identity:${data.aws_ssm_parameter.container_image.value}"
    container_name        = local.service_name
    container_port        = local.container_port
    log_group_region      = var.region[terraform.workspace]
    log_group_name        = module.identity_service.cwlog_group_name
    waitfordbhost          = module.rds_mysql_identity.rds_instance_address
    spring_profiles_active = var.spring_config_label_map[terraform.workspace]
    aws_default_region        = var.region[terraform.workspace]

    # properties file settings
    subdomain = local.subdomain
    auth_service_url = "auth.mop.local"
    #auth0_domain = "${data.aws_ssm_parameter.auth0_domain.value}"
    rds_endpoint = module.rds_mysql_identity.rds_instance_address
    rds_username = module.rds_mysql_identity.rds_username
    redis_cluster_address = data.terraform_remote_state.mop_core.outputs.redis_address
    deploy_env = local.deploy_env_name
    sns_org_events_arn = data.terraform_remote_state.mop_core.outputs.sns_org_events_arn

    mysql_pass                = data.aws_secretsmanager_secret.mysql_pass_identity.arn
    auth0_client_id       = auth0_client.client.client_id
    auth0_client_secret   = auth0_client.client.client_secret
    rsa_private_key           = data.aws_secretsmanager_secret.rsa_key_identity_server.arn

    smtp_user = data.aws_ssm_parameter.smtp_user.value
    auth0_managaement_api_clientid = data.aws_ssm_parameter.auth0_managaement_api_clientid.value

    identity_smtp_password = data.aws_secretsmanager_secret.identity_smtp_password.arn
    auth0_management_api_clientsecret = data.aws_secretsmanager_secret.auth0_management_api_clientsecret.arn
    #docker_hub_secret_arn = data.terraform_remote_state.mop_core.outputs.dockerhub_secret_arn

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

    // rabbit mq
    rabbit_mq_endpoints  = data.terraform_remote_state.central_mq.outputs.central_rabbitmq_endpoints
    rabbit_mq_username  = data.terraform_remote_state.central_mq.outputs.central_rabbitmq_mopuser
    rabbit_mq_secret_arn  = data.terraform_remote_state.central_mq.outputs.central_rabbitmq_secret_arn
  }
}
