# This file is responsible for configuring your application # and its dependencies with the aid of the Config module. # # This configuration file is loaded before any dependency and # is restricted to this project. # General application configuration import Config config :arcadia_cloud, ecto_repos: [ArcadiaCloud.Repo], generators: [timestamp_type: :utc_datetime, binary_id: true] # Configure the endpoint config :arcadia_cloud, ArcadiaCloudWeb.Endpoint, url: [host: "localhost"], adapter: Bandit.PhoenixAdapter, render_errors: [ formats: [json: ArcadiaCloudWeb.ErrorJSON], layout: false ], pubsub_server: ArcadiaCloud.PubSub, live_view: [signing_salt: "4W6q5pDB"] # Configure Elixir's Logger config :logger, :default_formatter, format: "$time $metadata[$level] $message\n", metadata: [:request_id] # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason # Guardian — JWTs are issued by arcadia-app. arcadia-cloud only verifies them. # Issuer and secret_key MUST match arcadia-app's Arcadia.Guardian config. config :arcadia_cloud, ArcadiaCloud.Guardian, issuer: "arcadia", verify_issuer: true # Oban — provisioning, sync, billing, gateway-event consumption queues config :arcadia_cloud, Oban, engine: Oban.Engines.Basic, queues: [ provisioning: 5, cloud_sync_fast: 5, cloud_sync_full: 3, cloud_sync_slow: 1, cloud_billing: 1, metering: 2, default: 5 ], plugins: [ {Oban.Plugins.Cron, crontab: [ # ProjectsWorker first so attribution is fresh before resource syncs {"*/15 * * * *", ArcadiaCloud.Sync.ProjectsWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.DropletsWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.DomainsWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.VolumesWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.FloatingIpsWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.FirewallsWorker}, {"*/15 * * * *", ArcadiaCloud.Sync.LoadBalancersWorker}, # Snapshots change slowly; hourly is enough and reduces API churn {"33 * * * *", ArcadiaCloud.Sync.SnapshotsWorker}, # Backups also slow-moving; hourly per-droplet walk {"41 * * * *", ArcadiaCloud.Sync.BackupsWorker}, # Drift sweep — offset past the :15 resource syncs so it sees fresh data {"20 * * * *", ArcadiaCloud.Sync.DriftDetectionWorker}, # Metering — daily at 01:10 UTC, meters the previous complete day {"10 1 * * *", ArcadiaCloud.Sync.MeteringWorker}, # Billing: hourly balance, daily invoice discovery {"7 * * * *", ArcadiaCloud.Sync.BalanceWorker}, {"23 2 * * *", ArcadiaCloud.Sync.BillingHistoryWorker} ]} ], repo: ArcadiaCloud.Repo # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{config_env()}.exs"