Source code for config.production

"""
The config is for two categories of constants:
- things that you want to access anywhere in the entire airflow codebase, including dags, utils, operators, and hooks
- things that you want to be able to override per dag or environment

If a constant is not one of the above two, it probably doesn't belong here.
"""

from datetime import timedelta, datetime
import pendulum
from tags import Tags
from fips import FipsCodes
from statename import StateName
from prefixes import S3Prefixes as Prefixes, RADPrefixes


[docs] class ProductionConfig: """ Proposed naming convention: <service>_<type>(_<env>) Assume "default" connection for airflow env Thus, no env for prod """ # System defaults PRODUCTION = True AIRFLOW_URL = "https://pidgeot.ready-internal.net" MOUNT_PATH = "/home/ubuntu/efs-mount" TEMPLATE_SEARCHPATH = ["/home/ubuntu/airflow/templates/sql"] DAG_ROOT = "/home/ubuntu/airflow/dags" SPLIT_PATH = "/dags/" # used when autobuilding dag id GENERAL_PREFIX = "general_" # filtered out when autobuilding dag id IF_EXIST = "replace" # Common libraries datetime = datetime timedelta = timedelta pendulum = pendulum # DAG defaults BRANCH_TRIGGER = "none_failed_min_one_success" START_DATE = datetime(2023, 1, 1) INTERVAL = None MAX_ACTIVE_TASKS = 16 MAX_ACTIVE_RUNS = 1 CATCHUP = False EMAIL = "yuan@ready.net" EMAIL_CONTENT = "<h3>Data moved.</h3>" EMAIL_SUBJECT = "Airflow {env} DAG success: {dag_id}" DEFAULT_ARGS = { "depends_on_past": False, "email_on_failure": False, "email_on_retry": False, "retries": 1, "retry_delay": timedelta(minutes=1), } RENDER_TEMPLATE_AS_NATIVE_OBJ = True # DBT DBT_ALIAS = "grovyle" """The alias for the dbt server. This is used to connect to the dbt server. It will be used in the ssh command to connect to the server. Will be different for prod and dev""" DBT_SSH_USER = "ubuntu" """The ssh user for the dbt server. This is used to connect to the dbt server. It will be used in the ssh command to connect to the server. Will not be different for prod and dev""" DBT_SERVER_FOLDER = "/home/ubuntu/airflow/" """The folder for the dbt server. This is used to connect to the dbt server. """ DBT_SSH_KEY = "~/.ssh/id_rsa" """The ssh key for the dbt server. This is used to connect to the dbt server. """ DBT_VENV_PATH = "/home/ubuntu/dbt-venv/bin/activate" """The venv path for the dbt server. """ # Grapi GRAPHQL_API_URL = "https://grapi.ready.net/graphql" GRAPHQL_API_URL_STAGE = "https://staging.grapi.ready.net/graphql" GRAPHQL_API_URL_DEV = "https://dev.grapi.ready.net/graphql" GRAPI_API_SECRET_NAME = "jenkins/boss-platform-auth-security-key-prod" GRAPI_API_SECRET_NAME_STAGE = "jenkins/boss-platform-auth-security-key-stage" GRAPI_API_SECRET_NAME_DEV = "jenkins/boss-platform-auth-security-key-dev" # Tileservers TILESERVER_ALIAS = "kanto" TILESERVER_ALIAS_STAGE = "hoenn" TILESERVER_ALIAS_DEV = "johto" # Databases GRAPI_PG = BOSS_PLATFORM_GRAPI_DB = BOSS_PLATFORM_DB = ( "postgres_bossplatform_grapi_prod" ) GRAPI_PG_STAGE = BOSS_PLATFORM_GRAPI_STAGE_DB = BOSS_PLATFORM_STAGE_DB = ( "postgres_bossplatform_grapi_stage" ) GRAPI_PG_DEV = BOSS_PLATFORM_GRAPI_DEV_DB = "postgres_bossplatform_grapi_dev" GRAPI_ATHENA = ATHENA_GRAPI_DB_ALIAS = "postgres_grapi_prod" GRAPI_ATHENA_STAGE = ATHENA_GRAPI_DB_ALIAS_STAGE = "postgres_grapi_stage" GRAPI_ATHENA_DEV = "postgres_grapi_dev" # REDSHIFT DEV REDSHIFT_DEV = "redshift_dw_dev" REDSHIFT_DEV_PG = "redshift_dw_dev_pghook" REDSHIFT_DEV_WORKGROUP = "redshift-workgroup-dev" # REDSHIFT PROD REDSHIFT = "redshift_dw_prod" REDSHIFT_PG = REDSHIFT_PROD_PG = "redshift_dw_prod_pghook" REDSHIFT_WORKGROUP = REDSHIFT_PROD_WORKGROUP = "redshift-workgroup-prod" REDSHIFT_S3_ROLE_ARN = "arn:aws:iam::463002504035:role/service-role/AmazonRedshift-CommandsAccessRole-20250731T224539" GAME_PG = "postgres_bossplatform_game_prod" GAME_PG_STAGE = "postgres_bossplatform_game_staging" GAME_PG_DEV = "postgres_bossplatform_game_dev" GAME_ATHENA = "postgres_game_prod" GAME_ATHENA_STAGE = "postgres_game_stage" GAME_ATHENA_DEV = "postgres_game_dev" GAME_AGENT_BUCKET = "463002504035-game-agent-prod" GAME_AGENT_CONN = "postgres_game_agnet_dev" RAD_PG = RAD_DB_CONN = "postgres_rad_prod" RAD_DOCDB = RAD_DOC_DB_CONN = "documentdb_rad" """The connection string for the RAD database. It is a document db connection string""" RAD_RMQ = RAD_RMQ_CONN = "rabbitmq_dev" """The connection string for the RAD rabbitmq. since it is under dev we use the dev connection string""" ATHENA_RAD_DISCOVERY_DB_ALIAS = "rad_discovery_dev.rad_discovery_dev_db" """Athena alias for RAD discovery database for the cross db connections. since it is under dev we use the dev connection string """ SUPERSET_DAP_CONN_ID = "dap_superset_user" """The connection id for the Superset instance. It will be used in the Superset operators to connect to the Superset instance. It is not different for prod and dev because we will disable user after each dag run. If you get login issues you need to check the Superset instance and enable the user for the next run. For the first run also need to create the user in the Superset instance and give it the appropriate permissions. """ # Slack SLACK_DEFAULT_HOOK = "slack_default_hook" SLACK_DEFAULT_API = "slack_default_api" SLACK_ALERTS_CHANNEL = "#airflow" ##### AWS # Lake DATA_LAKE_DB = "readydatalake" DATA_LAKE_DB_DEV = "shoreline" CSV_SERDE = "org.apache.hadoop.hive.serde2.OpenCSVSerde" DEFAULT_STORAGE = "PARQUET" DEFAULT_COMPRESSION = "snappy" DEFAULT_WORKGROUP = "batch-job" # S3 DEFAULT_BUCKET = "" BACKUP_BUCKET = "463002504035-archive" DATA_LAKE_BUCKET = "463002504035-readydatalake" DATA_LAKE_BUCKET_DEV = "463002504035-shoreline" OVERTURE_BUCKET = "463002504035-overture" REGRID_INGEST_BUCKET = "463002504035-regrid" HLD_BUCKET = "463002504035-hld-prod" BEDROCK_BUCKET = "463002504035-compliancebot" SWAMP_BUCKET = "463002504035-swamp" BOSS_PUBLIC_BUCKET = "463002504035-boss-public" BOSS_PUBLIC_BUCKET_STAGE = "463002504035-boss-public-stage" BOSS_PRIVATE_BUCKET = "463002504035-boss-private-prod" BOSS_PRIVATE_BUCKET_STAGE = "463002504035-boss-private-stage" DATA_PUBLIC_BUCKET = "463002504035-data-public" ARCHIE_DEV_BUCKET = "463002504035-archie-dev" DATA_AGENT_BUCKET = "463002504035-data-agent-kb-dev" BACKUP_PREFIX = Prefixes.BACKUP_PREFIX CURATED_PREFIX = Prefixes.CURATED_PREFIX POSTGRES_PREFIX = Prefixes.POSTGRES_PREFIX RAW_PREFIX = Prefixes.RAW_PREFIX TEMP_PREFIX = Prefixes.TEMP_PREFIX TRANSFORMED_PREFIX = Prefixes.TRANSFORMED_PREFIX SUMMARY_RAW_PREFIX = Prefixes.SUMMARY_RAW_PREFIX # if you try to delete these, airflow will throw an exception PANIC_PREFIXES = [ Prefixes.BACKUP_PREFIX, Prefixes.CURATED_PREFIX, Prefixes.POSTGRES_PREFIX, Prefixes.RAW_PREFIX, Prefixes.TEMP_PREFIX, Prefixes.TRANSFORMED_PREFIX, Prefixes.SUMMARY_RAW_PREFIX, ] # Redshift REDSHIFT_DATA_TEAM_GROUP = "readydata" AWS_DATA_ADMIN_FEDERATED_USER = ( "IAMR:AWSReservedSSO_AdministratorAccess_bd933a6f96357c52" ) AWS_DATA_DEVELOPER_FEDERATED_USER = ( "IAMR:AWSReservedSSO_Ready-Data-Developer_cf669028fab52727" ) AWS_AIRFLOW_EC2_FEDERATED_USER = "IAMR:airflow_prod_ec2_role" REDSHIFT_DEFAULT_PRIVILEGE_OWNERS = [ AWS_DATA_ADMIN_FEDERATED_USER, AWS_DATA_DEVELOPER_FEDERATED_USER, AWS_AIRFLOW_EC2_FEDERATED_USER, "rdsadmin", ] # Glue CRAWLER_ROLE = "airflow_prod_ec2_role" CRAWLER_SLEEP_TIME = 5 # ECS SLEEP_TIME = ECS_SLEEP_TIME = 5 # ECS sleep time ECS_CLUSTER = "prod" SUBNETS = ["subnet-05d37f00bd1245b61"] ECS_MOUNT_PATH = "/mount" # used only for ecs machines BATCH_SIZE_ECS = 3000000 NUM_ECS_TILING_MACHINES = 20 """Prefered number of maximum ECS machines to launch for tiling for each DAG (not a hard limit) """ ECS_SECURITY_GROUPS = [ "sg-0bcb7113fb9299e23", ] ECS_TIPPECANOE_CONTAINER_NAME = "tippecanoe_container" ECS_TIPPECANOE_TASK_DEFINITION = "tippecanoe_prod" ECS_GEOPANDAS_CONTAINER_NAME = "geopandas_container" ECS_GEOPANDAS_TASK_DEFINITION = "geopandas_prod" ECS_ATHENA_TO_GEOJSON_CONTAINER_NAME = "ecs_athena_to_geojson_container" ECS_ATHENA_TO_GEOJSON_TASK_DEFINITION = "ecs_athena_to_geojson_prod" ECS_S3_PARQUET_PG_CONTAINER_NAME = "s3_parquet_to_pg_container" ECS_S3_PARQUET_PG_TASK_DEFINITION = "s3_parquet_to_pg" ECS_PGDUMP_CONTAINER_NAME = "ecs_transfer_with_pgdump_container" ECS_PGDUMP_TASK_DEFINITION = "ecs_transfer_with_pgdump_prod" ECS_HLD_CONTAINER_NAME = "ecs_hld_process_container" ECS_HLD_TASK_DEFINITION = "ecs_hld_process_prod" ECS_H3_CONTAINER_NAME = "ecs_h3_container" ECS_H3_TASK_DEFINITION = "ecs_h3_prod" ECS_MLFLOW_CONTAINER_NAME = "ecs_mlflow_model_container" ECS_MLFLOW_TASK_DEFINITION = "ecs_mlflow_model_prod" ECS_GRAPHIFY_CONTAINER_NAME = "ecs_graphify_container" ECS_GRAPHIFY_TASK_DEFINITION = "ecs_graphify_prod" # FCC FCC_PROCESS_UUID_URL = "https://broadbandmap.fcc.gov/nbm/map/api/published/filing" FCC_UPDATED_URL = "https://broadbandmap.fcc.gov/api/reference/map_processing_updates/{process_uuid}" FCC_FUNDING_PUBLISHED_RUN_URL = ( "https://fundingmap.fcc.gov/bfm/api/map/getPublishedRun" ) FCC_HEADERS = { "authority": "broadbandmap.fcc.gov", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "accept-language": "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7", "cache-control": "max-age=0", "sec-ch-ua": '"Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"macOS"', "sec-fetch-dest": "document", "sec-fetch-mode": "navigate", "sec-fetch-site": "none", "sec-fetch-user": "?1", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", "referer": "https://broadbandmap.fcc.gov/location-summary/fixed?version=jun2023&zoom=16.70&vlon=-95.992263&vlat=36.156955&br=r&speed=25_3&tech=1_2_3_4_5_6_7_8", } FCC_DATE_FMT = "%Y-%m-%dT%H:%M:%S.%fZ" FCC_DATE_FMT2 = "%Y-%m-%d" # apparently it does this sometimes FCC_TECH_CODES = { 0: "Other", 10: "Copper", 40: "Cable", 50: "Fiber to the Premises", 60: "GSO Satellite", 61: "NGSO Satellite", 70: "Unlicensed Fixed Wireless", 71: "Licensed Fixed Wireless", 72: "Licensed-by-Rule Fixed Wireless", } # ROB API ROB_URL = "https://meowth.ready-data.net" """ROB api call with a 30 second timeout""" ROB_API_LAMBDA_FUNCTION_URL = "https://lambda.us-east-1.amazonaws.com/2015-03-31/functions/lambda-rob-api-RobAPIFunction-PQw1kczf7WFM/invocations" """This is the rob-api lambda function url. it does not have 30 second timeout""" ROB_AUTH_KEY = "rob-auth-key" """A simple api security token for the ROB api""" # Linear API LINEAR_API_KEY_SUSHEEL = "susheel_linear_api_" # specify susheel since majid API key used for linearagent # appended underscore due to repeated secret name when creating new API key LINEAR_API_KEY = "linear_api_key" # Reflect.run API REFLECT_RUN_BASE_URL = "https://api.reflect.run/v1/" REFLECT_RUN_API_KEY = "reflect_run_api" # PeeringDB API PEERINGDB_API_KEY = "peeringdb_api" # CQA API CQA_BASE_URI = "https://costquest.azure-api.net/" """CQA API base URI. """ CQA_API_KEY = "cqa_token_prod" # Scraper things SENDGRID_CONN = "sendgrid_default" SCRAPERBEE_CONN = "scraperbee_proxy_key_colello" SCRAPERAPI_CONN = "scraperapi_proxy_key_colello" SCRAPER_TIMEOUT = 30 SCRAPER_URL = "http://api.scraperapi.com/" # CTC (CPUC) Server CTC_EGNYTE_SERVER = "ctc_egnyte_server" # Indiana sftp connection IN_SFTP_SERVER = "in_ftp" # Pools PG_NUM_CONN_LARGE = "pg_num_conn_large" """One of Airflow pools that are defined e.g. dev env at: https://pidgey.ready-internal.net/pool/list/""" PG_NUM_CONN_NORMAL = "pg_num_conn_normal" TRANSFER_POOL = "transfer_small" # this only allows 16 slots across the whole airflow instance, so ram doesnt die FABRIC_SCRAPE_POOL = ( "fabric_scrape" # this allows like 2 to go at once so we don't get blocked ) FABRIC_MECATOR_POOL = ( "fabric_mercator" # this allows like 4 to go at once so we don't get blocked ) RESEARCH_NODE_FUNDING_POOL = ( "research_node_funding" # this allows 2 to go at once so we don't get blocked ) DISCOVERY_POOL = "rad_discovery_pool" OVERTURE_TRANSFORM_POOL = "overture_transform_pool" # For large constants like this, split into other objects tags = Tags STATE_FIPS = FipsCodes.DEFAULT STATES_T1 = FipsCodes.STATES_T1 DEFAULT_FIPS = FipsCodes.DEFAULT ALL_STATE_FIPS = FipsCodes.ALL_OTHER ALL_FIPS_STATE = {v: k for k, v in ALL_STATE_FIPS.items()} DEMO_STATE_FIPS = FipsCodes.DEMO STATE_NAMES = StateName.STATE_ABBR_NAME STATE_ONLY_NAMES = StateName.STATE # Set up for the bbm export dag GDRIVE_FOLDER_BBM = "BBM_EXPORT" GDRIVE_FOLDER_BBM_ID_PRIVATE = "1a5Q02qNeMVwPfY70J5DkaI8xV-1lPkXC" # private folder ID (to be deprecated given the drive limits) GDRIVE_FOLDER_BBM_ID = "0AOvn0ywn4UcEUk9PVA" # shared drive ID GDRIVE_FOLDER_GSHEET = "1kONOPVDuWMdDxR16ZME5xnyhOXUkMIeC" # all gsheets in one folder for easy sharing GDRIVE_FOLDER_DATA_TEAM_ASSET = "1ScrRXXCInjH8Cs1nriqSWIah7LNWr-dp" GDRIVE_FOLDER_BASE_URI = "https://drive.google.com/drive/u/0/folders/" GDRIVE_FOLDER_FLAT_EXPORTER = "1rNzWD6BOyUECJHWQLckoL14tmfvOPPrA" # Flat File GDRIVE_FOLDER_BEAD_TRANSFER = ( "1UgpVBKs8KQQ6-G77qPAwZYjqBar1L3Aa" # BEAD attachment Transfer ) GDRIVE_FOLDER_CPF_TRANSFER = ( "1JiODwfPhpRTNSJRAf7nrA7ulkOWDwaI8" # CPF attachment Transfer ) PG_SCHEMA = "data" """The SQL schema to use for the postgres database in PG GAME PROD STAGE and DEV""" # RAD RAD_PREFIXES = RADPrefixes """List of the prefixes that are used in RAD """ # TODO:we need to remove these three parameters once modify rad discovery dags. They don't work anymore RAD_DISCOVERY_SCHEMA = "discovery" RAD_ADDRESS_PRIMARY = "address_primary" # Datahub DATAHUB_CONNECTION_ID = ( "datahub_rest_default" # The connection id for the datahub rest api ) DATAHUB_BASE_URL = "https://uxie.ready-internal.net" DATAHUB_GMS_ENDPOINT = ( f"{DATAHUB_BASE_URL}/api/gms" # The endpoint for the GMS service in Datahub ) DATAHUB_GRAPHQL_ENDPOINT = f"{DATAHUB_BASE_URL}/api/graphql" DATAHUB_S3_BUCKET = "463002504035-datahub" # Misc CIRCUMFERENCE_EARTH = 40075017 KMZ_KML_DEFAULT = "doc.kml" # this is the default according to https://developers.google.com/kml/documentation/kmzarchives BACKUP_EMAIL = [ "yuan@ready.net", ] # Max iterations (something like heartbeat e.g. Task arn:aws:ecs:us-east-1:463002504035:task/dev/a658048277264621b0b2565925ef03e0 is running: 19999...) for ECS tasks, used to set the timeout MAX_ITERATIONS = 50000 REQUEST_TIMEOUT_HOURS = 1 BATCH_SIZE_LOCAL = 1000000 BATCH_SIZE = BATCH_SIZE_LOCAL GCP_SERVICE_ACCOUNT = "boss_api" # todo: name this better GDRIVE_SERVICE_ACCOUNT = "gdrive_api" AWS_GOOGLE_PLACES_API_KEY = "google-places-api-key" """Google Places API that `returns formatted location data and imagery about establishments, geographic locations, or prominent points of interest.` """ CENSUS_API_KEY = "3cbe5ce5311ca6cdddc6e7461bf7bf19857fea54" # it is free api key so we don't need to secure it ALDP_API_KEY = "5qJYV7XQAB0eeQUJ4t7o6u3ppvHzCLfBsPv7sZAZ" # it is free api key so we don't need to secure it FCC_FUNDING_MAP_API_KEY = "fcc_funding_map_api" FCC_FFA_API_KEY = "fcc_ffa_api" INITIAL_GDRIVE_PAGE_TOKEN = "ready-initial-dummy-token!" # basically just a dummy string to start the pagination for gdrive # AIRFLOW_API = "airflow_rest_api" AIRFLOW_API = "airflow_rest_api_dev" AWS_GITHUB_APP_TOKEN = "ready_github_app_repo_scanner" # FTP for Financial Integrations (MN SWIFT and TX USAS) FTP_MN_IF407_CONN = "mn_ftp_if407_prod" FTP_MN_IF411_CONN = "mn_ftp_if411_prod" # they are the same server SFTP_TX_USAS_CONN = "tx_cpa_prod" SFTP_TX_USAS_PGP_KEY = "tx_cpa_pgp" ## SPATIAL PROCESSINGS #### CRS CRS_GPS = "EPSG:4326" #### TILING and tile operators mappings ARCHIVE_TILES_S3_BUCKET = "463002504035-archive/tiles" TILE_ENVS_TS_AND_S3 = { "hoenn": {"ts": "staging", "s3": "staging"}, "kanto": {"ts": "main", "s3": "prod"}, } TILE_OPERATOR_MAP = { "archive_to_s3": "operators.tile.archive_to_s3.ArchiveToS3Operator", "recover_from_s3": "operators.tile.recover_from_s3.RecoverFromS3Operator", "remove_tile": "operators.tile.remove_tile.RemoveTileOperator", "remove_in_s3": "operators.tile.remove_in_s3.RemoveInS3Operator", } DEFAULT_TS_FLAT_FOLDER = "~/tiles" #### PMTILES (DATASME-2060 spike) — serverless tiles, no tileserver fleet # Glue Python Shell job running dags/tileserver/pmtiles_glue/pmtiles_builder.py. # The script is deployed by MANUAL S3 upload — git and the job can diverge, so # the script logs its own SCRIPT_VERSION on every run. GLUE_PMTILES_JOB_NAME = "PMTiles_Builder_Job" # Standard Glue assets bucket — same place fgdb_converter.py lives (one per account/region). GLUE_PMTILES_SCRIPT_S3 = "s3://aws-glue-assets-463002504035-us-east-1/scripts/pmtiles_builder.py" # `_public` is load-bearing, not decoration: the serving plan puts a CloudFront # distribution over this prefix, which makes EVERY object under it world-readable. # Only publishable layers may be written here — never a PII/BSL/location tileset. PMTILES_S3_PREFIX = "tiles/pmtiles_public" # Staging is a SIBLING prefix, deliberately outside the served one, so the # intermediate Parquet is never exposed by the distribution. PMTILES_STAGING_PREFIX = "tiles/pmtiles_staging" # Our MLT-capable tippecanoe, built from ready/tippecanoe branch mlt-sync and # staged here by hand. Pinned to the source commit, not "latest", so a rerun of # an old DAG run tiles with the same binary. The PyPI wheel Glue installs cannot # emit MLT and Glue cannot compile, hence prebuilt static binaries in S3. PMTILES_TIPPECANOE_MLT_S3 = ( "s3://aws-glue-assets-463002504035-us-east-1/bin/tippecanoe-mlt/9aef0512" ) GLUE_PMTILES_POLL_SECONDS = 30 GLUE_PMTILES_REGION = "us-east-1" # CloudFront distribution the archives are read through, browser-direct. Blank # here on purpose: there is no PROD distribution yet (DATASME-2088 — it needs # WAF, a tiles.ready.net subdomain and a public/private split before it exists). # The dev value lives in development.py. Blank = skip CDN verification. PMTILES_CDN_BASE_URL = "" ### CALIX CLOUD API INTEGRATION CALIX_CLOUD_API_CONN = "calix_cloud_api_readynet" CLAUDE_BEDROCK_SONNET = "us.anthropic.claude-sonnet-4-5-20250929-v1:0" DAP_HOSTS = { "demo": "https://dap.bossdemo.portal.ready.net/", "az": "https://dap.bead.azcommerce.com/", "cpuc": "https://dap.bead.grant.cpuc.ca.gov/", "mn": "https://dap.bead.mn.gov/", "ms": "https://dap.apply.broadbandms.com/", "tx": "https://dap.applybead.broadband.texas.gov/", "ar": "https://dap.grantor.broadband.arkansas.gov/", "in": "https://dap.portal.connectingindiana.com/", } ############ START LEGACY ############ READY_DATA_DB = ATHENA_READY_DATA_DB_ALIAS = "postgres_readydata_prod" READY_DATA_DB_DEV = ATHENA_READY_DATA_DB_ALIAS_DEV = "postgres_readydata_dev" BOSS_DATA_DB = "postgres_bossdata_prod" BOSS_DATA_STAGE_DB = BOSS_STAGE_DB = "postgres_bossdata_stage" BOSS_DATA_DEV_DB = "postgres_bossdata_dev" BOSS_API = "boss_api" # see GCP_SERVICE_ACCOUNT ATHENA_BOSS_DB_ALIAS = "postgres_boss_prod" ATHENA_BOSS_DB_ALIAS_STAGE = "postgres_boss_stage" ATHENA_GAME_AGENT_DB_ALIAS = ATHENA_GAME_AGENT_DB_ALIAS_STAGE = "postgres_rad_prod" GCP_BOSS_API_PROJECT = "boss-api-289815" GCP_BOSS_API_PROJECT_STAGE = "boss-api-stage" # Speedtest OOKLA_BROADBAND_PR = "ookla_broadband_pr" OOKLA_BROADBAND_US = "ookla_broadband_us" OOKLA_MOBILE_US = "ookla_mobile_us" MLAB_SECRET = "mlab_bigquery_json"
############ END LEGACY ############