variable "aws_region" {
  description = "AWS region."
  type        = string
  default     = "us-east-1"
}

variable "environment" {
  description = "Available values: dev, qa, prod."
  type        = string
  default     = "prod"
}

variable "pipeline_service_name" {
  description = "Service name of the Pipeline Jenkins."
  type        = string
  default     = "jenkins-aws-pipeline-agent"
}

variable "scheduler_service_name" {
  description = "Service name of the Scheduler Jenkins."
  type        = string
  default     = "jenkins-aws-task-agent"
}

variable "application_family" {
  description = "The application family"
  type        = string
  default     = "devops"
}

variable "team_name" {
  description = "The team that owns this infrastructure."
  type        = string
  default     = "devops"
}

variable "pipeline_roles_to_assume" {
  description = "List of IAM roles that Pipeline Jenkins role should be able to assume."
  type        = list(string)
  default = [
    "arn:aws:iam::031099521156:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::031099521156:role/prod-auth0-m2m-config-task-role",
    "arn:aws:iam::437795906767:role/prod-cdn-deploy-role",
    "arn:aws:iam::079637511089:role/backup-jenkins-pipeline-deploy-role",
    "arn:aws:iam::086679231553:role/shared-jenkins-docker-hub-role",
    "arn:aws:iam::086679231553:role/shared-rds-refresh-state-machine-runner-role",
    "arn:aws:iam::086679231553:role/shared-jenkins-pipeline-deploy-role",
    "arn:aws:iam::086679231553:role/ecr-scan-role",
    "arn:aws:iam::103233932089:role/dev-checkov-access-role",
    "arn:aws:iam::103233932089:role/dev-jenkins-pipeline-access-role",
    "arn:aws:iam::103233932089:role/dev-terraform-state-file-fixer-role",
    "arn:aws:iam::285943604611:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::375914681009:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::437795906767:role/ecr-scan-role",
    "arn:aws:iam::437795906767:role/prod-neo4j-cypher-delete-liquigraphlock-run-role",
    "arn:aws:iam::437795906767:role/prod-terraform-state-file-fixer-role",
    "arn:aws:iam::437795906767:role/prod-vector-pipeline-role",
    "arn:aws:iam::437795906767:role/prod-oa-ws-pipeline-role",
    "arn:aws:iam::437795906767:role/prod-ows-carveouts-pipeline-role",
    "arn:aws:iam::437795906767:role/qa-daemon-notifications-delivery-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-notifications-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-lambda-notifications-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-distribution-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-knowledge-search-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-participant-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-user-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-neo4j-cypher-delete-liquigraphlock-run-role",
    "arn:aws:iam::437795906767:role/S3-qa-neighbouring-rights-contributions-RW-role",
    "arn:aws:iam::437795906767:role/S3-qa-orcd-cdn-RO-role",
    "arn:aws:iam::437795906767:role/S3-prod-neighbouring-rights-contributions-RW-role",
    "arn:aws:iam::591204808501:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::591204808501:role/qa-pdp-qa-refresh-jenkins-invoke-role",
    "arn:aws:iam::591204808501:role/qa-pdp-integration-test-role",
    "arn:aws:iam::591204808501:role/qa-ows-pdp-stress-test-role",
    "arn:aws:iam::591204808501:role/qa-auth0-m2m-config-task-role",
    "arn:aws:iam::591204808501:role/uat-auth0-m2m-config-task-role",
    "arn:aws:iam::591204808501:role/test-lambda-auth0-m2m-token-secret-rotation-integration-test",
    "arn:aws:iam::619719722105:role/qa-songwhip-jenkins-pipeline-deploy-role",
    "arn:aws:iam::734458723522:role/networking-jenkins-pipeline-deploy-role",
    "arn:aws:iam::737325105821:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::926734670777:role/prod-songwhip-jenkins-pipeline-deploy-role",
    "arn:aws:iam::989790945997:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::989790945997:role/ecr-scan-role",
    "arn:aws:iam::437795906767:role/qa-ows-video-integration-tests",
    "arn:aws:iam::437795906767:role/qa-core-load-tester-role",
    "arn:aws:iam::437795906767:role/qa-moneyhub-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-track-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-switchboard-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-artist-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-product-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-product-digital-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-product-staging-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-analytics-integration-test-role",
    "arn:aws:iam::814622134907:role/qa-*-deploy-role",
    "arn:aws:iam::814622134907:role/qa-*-integration-test-role",
    "arn:aws:iam::009424872958:role/prod-*-deploy-role",
    "arn:aws:iam::437795906767:role/qa-ows-assets-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-contracts-integration-test-role",
    "arn:aws:iam::086679231553:role/shared-chef-workstation-deploy-role",
    "arn:aws:iam::103233932089:role/dev-ows-features-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-lambda-abacus-integration-test-role",
    "arn:aws:iam::989790945997:role/qa-lambda-abacus-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-account-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-account-integration-test-role",
    "arn:aws:iam::437795906767:role/prod-accounting-tax-report-generate-jenkins-run-role",
    "arn:aws:iam::285943604611:role/qa-validate-email-domains-lambda-invoke-role",
    "arn:aws:iam::737325105821:role/prod-validate-email-domains-lambda-invoke-role",
    "arn:aws:iam::437795906767:role/qa-ows-lyrics-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-grass-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-kinesis-to-neo4j-jenkins-invoke-role",
    "arn:aws:iam::437795906767:role/qa-ows-product-workflow-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-graphql-neighbouring-rights-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-lambda-av-scan-containerized-integration-test-role",
    "arn:aws:iam::437795906767:role/swf-feed-ingestion-build-role",
    "arn:aws:iam::311141540202:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::437795906767:role/qa-lambda-documents-integration-test-role",
    "arn:aws:iam::103233932089:role/dev-auth0-hosted-pages-deploy-role",
    "arn:aws:iam::437795906767:role/qa-auth0-hosted-pages-deploy-role",
    "arn:aws:iam::437795906767:role/qa-auth0-hosted-pages-integration-test-role",
    "arn:aws:iam::437795906767:role/prod-auth0-hosted-pages-deploy-role",
    "arn:aws:iam::437795906767:role/qa-ows-salessheets-integration-test-role",
    "arn:aws:iam::710271914708:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::086679231553:role/shared-pull-request-review-role",
    "arn:aws:iam::989790945997:role/uat-jenkins-pipeline-deploy-role",
    "arn:aws:iam::*:role/dev-gsirt-ioc-ip-set-deployment-role",
    "arn:aws:iam::*:role/qa-gsirt-ioc-ip-set-deployment-role",
    "arn:aws:iam::*:role/prod-gsirt-ioc-ip-set-deployment-role",
    "arn:aws:iam::*:role/dev-jenkins-pipeline-deploy-role",
    "arn:aws:iam::*:role/stage-jenkins-pipeline-deploy-role",
    "arn:aws:iam::437795906767:role/qa-publishing-fix-non-utf8-characters-script-role",
    "arn:aws:iam::635057242373:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::588827373449:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::591204808501:role/qa-pdp-backfill-integration-test",
    "arn:aws:iam::591204808501:role/uat-jenkins-pipeline-deploy-role",
    "arn:aws:iam::437795906767:role/qa-ddex-ingester-sme-analytics-ingestion-flow-control-role",
    "arn:aws:iam::989790945997:role/uat-abacus-airflow-s3-policy-jenkins-invoke-role",
    "arn:aws:iam::437795906767:role/qa-fan-response-api-integration-tests-role",
    "arn:aws:iam::437795906767:role/prod-copy-podcasts-assets-jenkins-invoke-role",
    "arn:aws:iam::437795906767:role/qa-ows-abacus-state-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-ledger-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-ows-payment-integration-test-role",
    "arn:aws:iam::086679231553:role/shared-datadog-software-catalog-role",
    "arn:aws:iam::437795906767:role/qa-ows-abacus-schedule-integration-test-role",
    "arn:aws:iam::437795906767:role/qa-sr-delivery-tiktok-sfn-role",
    "arn:aws:iam::437795906767:role/prod-sr-delivery-tiktok-sfn-role",
    "arn:aws:iam::437795906767:role/prod-streamlit-call-delete-smeanalyticsdummy-product-role",
    "arn:aws:iam::437795906767:role/qa-bulk-asset-download-integration-test-role",
    "arn:aws:iam::437795906767:role/prod-splitio-ff-manager-secrets-assume-role",
    "arn:aws:iam::437795906767:role/qa-backup-cloudsearch-task-run-role",
    "arn:aws:iam::703740486246:role/dev-ecommerce-integration-tests-role",
    "arn:aws:iam::437795906767:role/qa-ows-users-integration-test-role",
    "arn:aws:iam::703740486246:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::703740486246:role/ecr-scan-role",
    "arn:aws:iam::437795906767:role/prod-fansifter-app-reporting-streamlits-integration-role",
    "arn:aws:iam::086679231553:role/shared-s3-rds-backup-artifacts-read",
    "arn:aws:iam::918817604416:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::989790945997:role/qa-ows-abacus-account-test-role",
    "arn:aws:iam::799833541840:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::554998489284:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::613871678587:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::290365479392:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::811473064144:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::997286397029:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::765134955759:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::729038418454:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::437795906767:role/qa-vector-integration-test-role",
    "arn:aws:iam::023180329437:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::635220336377:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::313114233826:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::682033496752:role/prod-jenkins-pipeline-deploy-role",
    "arn:aws:iam::699475937692:role/qa-jenkins-pipeline-deploy-role",
    "arn:aws:iam::230315258045:role/dev-jodconverter-build-role",
  ]
}

variable "scheduler_roles_to_assume" {
  description = "List of IAM roles that Pipeline Scheduler role should be able to assume."
  type        = list(string)
  default = [
    "arn:aws:iam::437795906767:role/qa-ows-analytics-warmup-cache-role",
    "arn:aws:iam::437795906767:role/qa-daemon-video-backfill-s3-policy-jenkins-invoke-role",
    "arn:aws:iam::591204808501:role/qa-pdp-qa-refresh-jenkins-invoke-role",
    "arn:aws:iam::437795906767:role/prod-bulk-upload-feeder-role",
    "arn:aws:iam::437795906767:role/prod-distro-bug-monitoring-jenkins-role",
    "arn:aws:iam::437795906767:role/qa-swf-yt-conflict-elasticsearch-task-role",
    "arn:aws:iam::437795906767:role/prod-swf-yt-conflict-elasticsearch-task-role",
    "arn:aws:iam::437795906767:role/qa-swf-yt-conflict-elasticsearch-task-role",
    "arn:aws:iam::437795906767:role/prod-conflict-manager-elasticsearch-sync-scheduler-jenkins-role",
    "arn:aws:iam::437795906767:role/qa-conflict-manager-elasticsearch-sync-scheduler-jenkins-role",
    "arn:aws:iam::437795906767:role/prod-track-time-fix-jenkins-role",
    "arn:aws:iam::437795906767:role/prod-hfa-jenkins-run-role",
    "arn:aws:iam::437795906767:role/qa-lambda-masters-registry-producer-role",
    "arn:aws:iam::437795906767:role/prod-lambda-masters-registry-producer-role",
    "arn:aws:iam::591204808501:role/qa-auth0-m2m-config-task-run-role",
    "arn:aws:iam::591204808501:role/uat-auth0-m2m-config-task-run-role",
    "arn:aws:iam::031099521156:role/prod-auth0-m2m-config-task-run-role",
    "arn:aws:iam::285943604611:role/qa-validate-email-domains-lambda-invoke-role",
    "arn:aws:iam::737325105821:role/prod-validate-email-domains-lambda-invoke-role",
    "arn:aws:iam::591204808501:role/qa-pdp-backfill-task-run-role",
    "arn:aws:iam::591204808501:role/qa-pdp-backfill-dynamodb-refresh-sfn-run-role",
    "arn:aws:iam::437795906767:role/qa-populate-hfa-pending-request-lambda-invoke-role",
    "arn:aws:iam::437795906767:role/prod-populate-hfa-pending-request-lambda-invoke-role",
    "arn:aws:iam::285943604611:role/qa-ows-text-campaigns-scheduler-role",
    "arn:aws:iam::737325105821:role/prod-ows-text-campaigns-scheduler-role",
    "arn:aws:iam::926734670777:role/prod-songwhip-api-scheduler-role",
    "arn:aws:iam::619719722105:role/qa-songwhip-api-scheduler-role",
    "arn:aws:iam::437795906767:role/*-product-store-eligibility-check-s3-assume-role",
    "arn:aws:iam::437795906767:role/prod-dbt-luminate-scheduler-deploy-role",
    "arn:aws:iam::437795906767:role/*-tadas-etl-task-run-role",
    "arn:aws:iam::437795906767:role/*-delivery-metadata-xml-generator-secrets-assume-role",
    "arn:aws:iam::437795906767:role/qa-dbt-luminate-scheduler-deploy-role",
    "arn:aws:iam::989790945997:role/qa-sme-feed-file-exporter-jenkins-role",
    "arn:aws:iam::375914681009:role/prod-sme-feed-file-exporter-jenkins-role",
    "arn:aws:iam::437795906767:role/prod-meta-force-takedown-jenkins-role",
  ]
}

locals {
  account_id          = data.aws_caller_identity.current.account_id
  pipeline_role_name  = "${var.environment}-${var.pipeline_service_name}"
  scheduler_role_name = "${var.environment}-${var.scheduler_service_name}"
}
