mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
chore: tolerate empty providers at startup and log env seeds (#25605)
Since AI Gateway is now enabled by default, and if the AI Gateway Proxy is enabled too it's possible the server can start without any configured providers. This would previously block startup, which is unacceptable. In an upstack PR we will handle reloading the providers at runtime, so the server needs to be able to start up even if it can't handle any proxy requests to AI Gateway. This change was necessitated because if there are providers configured in the environment they need to be seeded _before_ the proxy starts.
This commit is contained in:
+12
-12
@@ -1006,6 +1006,18 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
notificationReportGenerator := reports.NewReportGenerator(ctx, logger.Named("notifications.report_generator"), options.Database, options.NotificationsEnqueuer, quartz.NewReal())
|
||||
defer notificationReportGenerator.Close()
|
||||
|
||||
// Seed providers before newAPI so the aibridgeproxyd inside
|
||||
// the enterprise closure observes env-configured providers
|
||||
// at init.
|
||||
if err := coderd.SeedAIProvidersFromEnv(
|
||||
ctx,
|
||||
options.Database,
|
||||
vals.AI.BridgeConfig,
|
||||
logger.Named("aibridge.envseed"),
|
||||
); err != nil {
|
||||
return xerrors.Errorf("seed ai providers from env: %w", err)
|
||||
}
|
||||
|
||||
// We use a separate coderAPICloser so the Enterprise API
|
||||
// can have its own close functions. This is cleaner
|
||||
// than abstracting the Coder API itself.
|
||||
@@ -1014,18 +1026,6 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
|
||||
return xerrors.Errorf("create coder API: %w", err)
|
||||
}
|
||||
|
||||
// Runs unconditionally so operators can seed providers via
|
||||
// env without enabling the bridge or proxy features.
|
||||
if err := coderd.SeedAIProvidersFromEnv(
|
||||
ctx,
|
||||
options.Database,
|
||||
vals.AI.BridgeConfig,
|
||||
options.Auditor,
|
||||
logger.Named("aibridge.envseed"),
|
||||
); err != nil {
|
||||
return xerrors.Errorf("seed ai providers from env: %w", err)
|
||||
}
|
||||
|
||||
// In-memory aibridge daemon. Registered on coderd so chatd can
|
||||
// dispatch LLM requests via the in-process transport without
|
||||
// crossing the gated /api/v2/aibridge HTTP route. The HTTP route
|
||||
|
||||
Reference in New Issue
Block a user