# locals {
#   artistapp_api_secrets_list = [
#     "DELPHI_API_CLIENT_ID",
#     "DELPHI_API_CLIENT_SECRET",
#     "INTERCOM_API_AUTH_TOKEN",
#     "SENTRY_DSN",
#   ]
#
#   artistapp_api_secrets_mapping = [
#     for k, v in aws_secretsmanager_secret.artistapp_api_secret :
#     {
#       name      = k,
#       valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:${v["name"]}"
#     }
#   ]
#
#   artistapp_api_env_vars = [
#     {
#       name  = "DELPHI_API_URL",
#       value = "https://stage-delphi-api-ext.delphiplatform.io/v3"
#     },
#     {
#       name  = "ATLASUM_ISSUER",
#       value = "https://static-um.atlas.stream"
#     },
#     {
#       name  = "ATLAS_API_URL",
#       value = "https://images-api.atlas.stream"
#     },
#     {
#       name  = "AUTH0_AUDIENCE",
#       value = "https://dev-api.sma.stream"
#     },
#     {
#       name  = "AUTH0_ISSUER",
#       value = "https://sme-dna.auth0.com"
#     },
#     {
#       name  = "IMAGES_MAPPING_BUCKET",
#       value = "prod-core-images-mapping"
#     },
#     {
#       name  = "USER_PREFERENCES_URL",
#       value = "http://user-preferences.${local.env_prefix}.${local.project_group}.local:8080"
#     },
#     {
#       name  = "INTERCOM_BULLETINS_COLLECTION_ID",
#       value = "2745698"
#     },
#     {
#       name  = "RTI_SERVER_ENVIRONMENT",
#       value = local.environment
#     },
#     {
#       name  = "ALLOWED_CORS_ORIGINS",
#       value = "https://${module.domains.dev_sma["amadeus"]},https://${module.domains.dev_insights["amadeus"]}"
#     },
#     {
#       name  = "REDIS_URL",
#       value = "rediss://${data.aws_elasticache_replication_group.main.primary_endpoint_address}:${data.aws_elasticache_replication_group.main.port}/0?ssl_cert_reqs=none"
#     },
#     {
#       name  = "RTI_AMADEUS_RESPONSE_TIMEOUT",
#       value = "120000"
#     }
#   ]
# }
#
# data "aws_ecr_repository" "artistapp_api_ecr" {
#   name = "artistapp/api"
# }
#
# resource "aws_secretsmanager_secret" "artistapp_api_secret" {
#   for_each = toset(local.artistapp_api_secrets_list)
#
#   name       = "${local.secrets_name_prefix}/api/${each.value}"
#   kms_key_id = data.aws_kms_key.secrets_general_key.id
#
#   tags = merge(
#     local.common_tags,
#     {
#       project                  = "Infrastructure",
#       service                  = "Secrets Manager",
#       plat_env_project_service = "${local.aggregated_tag}_INFRA_SCRT"
#     }
#   )
# }
#
# module "artistapp_api_ecs_role" {
#   source = "../../../modules/iam/roles/ecs_task_role"
#
#   enable_default_role = false
#   name_prefix         = local.name_prefix
#   name                = "api_ecs_role"
#
#   policies_list = [
#     data.aws_iam_policy.secrets-services-ro.arn,
#     data.aws_iam_policy.logging_policy.arn,
#     data.aws_iam_policy.images_mapping_ro.arn,
#   ]
#
#   common_tags = merge(
#     local.common_tags,
#     {
#       project                  = "API",
#       service                  = "IAM",
#       plat_env_project_service = "${local.aggregated_tag}_API_IAM"
#     }
#   )
# }
#
# module "artistapp_api_task_def" {
#   source = "../../../modules/ecs/tasks/fargate_v3"
#
#   env_prefix      = local.env_prefix
#   project_group   = local.project_group
#   family          = "${local.env_prefix}-${local.project_group}-api"
#   container_name  = "api"
#   container_image = "${data.aws_ecr_repository.artistapp_api_ecr.repository_url}:develop"
#   cpu             = 1024
#   memory          = 2048
#
#   awslogs_retention = module.cloudwatch_logs_retention_by_env[local.env_prefix]
#
#   task_role_arn = module.artistapp_api_ecs_role.role.arn
#   exec_role_arn = data.aws_iam_role.ecs_tasks_execution_role.arn
#
#   env_vars = local.artistapp_api_env_vars
#   secrets  = local.artistapp_api_secrets_mapping
#
#   datadog_enabled    = true
#   dd_apm_enabled     = true
#   dd_logs_injection  = true
#   dd_container_image = "public.ecr.aws/datadog/agent:latest"
#   dd_awslogs_group   = aws_cloudwatch_log_group.datadog-agent.name
#
#   dd_secrets = [
#     {
#       name      = "DD_API_KEY",
#       valueFrom = aws_secretsmanager_secret.common_secret["DD_API_KEY"].arn
#     }
#   ]
#
#   dd_env_vars = [
#     {
#       name  = "DD_APM_IGNORE_RESOURCES",
#       value = "GET /_health"
#     },
#   ]
#
#   port_mappings = [
#     {
#       containerPort = 8080
#       hostPort      = 8080
#       protocol      = "tcp"
#     }
#   ]
#
#   common_tags = merge(
#     local.common_tags,
#     {
#       project                  = "API",
#       service                  = "ECS",
#       plat_env_project_service = "${local.aggregated_tag}_API_ECS"
#     }
#   )
# }
#
# module "artistapp_api_service" {
#   source = "../../../modules/ecs/services/service_taskless_v2"
#
#   env_prefix    = local.env_prefix
#   project       = "api"
#   project_group = local.project_group
#
#   cluster_arn   = data.aws_ecs_cluster.main.arn
#   desired_count = 1
#
#   security_groups = [data.aws_security_group.main.id]
#   subnets         = data.aws_subnets.private_subnets.ids
#   vpc_id          = data.aws_vpc.main.id
#
#   task_definition_arn = module.artistapp_api_task_def.arn
#
#   alb_enabled             = true
#   https_listener_arn      = data.aws_lb_listener.external_https_listener.arn
#   tg_health_check_path    = "/_health"
#   tg_health_check_matcher = "200"
#   container_port          = 8080
#   // TODO: update URL after migration to insights.stream
#   url = local.api_domain_name
#
#   sd_enabled   = true
#   namespace_id = aws_service_discovery_private_dns_namespace.main.id
#
#   enable_ecs_managed_tags = true
#
#   common_tags = merge(
#     local.common_tags,
#     {
#       project                  = "API",
#       service                  = "ECS",
#       plat_env_project_service = "${local.aggregated_tag}_API_ECS",
#       service_name             = "rti-api"
#     }
#   )
# }
#
# // TODO: remove after migration
# resource "aws_route53_record" "api_apollo_record" {
#   zone_id = data.aws_route53_zone.apollo_stream_zone.zone_id
#   name    = local.api_domain_name
#   type    = "A"
#
#   alias {
#     name                   = data.aws_lb.external_alb.dns_name
#     zone_id                = data.aws_lb.external_alb.zone_id
#     evaluate_target_health = false
#   }
#
#   provider = aws.gdb-delphi-dev
# }
#
# /* temporary for smooth migration */
# // TODO: remove after migration
# resource "aws_alb_listener_rule" "artistapp_api_listener_rule" {
#   listener_arn = data.aws_lb_listener.external_https_listener.arn
#
#   action {
#     type             = "forward"
#     target_group_arn = module.artistapp_api_service.tg_arn
#   }
#
#   condition {
#     host_header {
#       values = [module.domains["${local.env_prefix}_sma"]["api"]]
#     }
#   }
# }
#
# /* migration from sma.stream to insights.stream */
# resource "aws_route53_record" "api_insights_record" {
#   zone_id = data.aws_route53_zone.insights_stream_zone.zone_id
#   name    = module.domains["${local.env_prefix}_insights"]["api"]
#   type    = "A"
#   alias {
#     name                   = data.aws_lb.external_alb.dns_name
#     zone_id                = data.aws_lb.external_alb.zone_id
#     evaluate_target_health = false
#   }
#
#   provider = aws.gdb-artistapp-prod
# }
#
# // TODO: remove after configuration update for the service
# resource "aws_alb_listener_rule" "api_insights_listener_rule" {
#   listener_arn = data.aws_lb_listener.external_https_listener.arn
#
#   action {
#     type             = "forward"
#     target_group_arn = module.artistapp_api_service.tg_arn
#   }
#
#   condition {
#     host_header {
#       values = [module.domains["${local.env_prefix}_insights"]["api"]]
#     }
#   }
# }
