diff --git a/internal/outpost/ak/api.go b/internal/outpost/ak/api.go index b690e1cba..31a0b5cf8 100644 --- a/internal/outpost/ak/api.go +++ b/internal/outpost/ak/api.go @@ -107,8 +107,24 @@ func (a *APIController) Start() error { return nil } +func (a *APIController) OnRefresh() error { + // Because we don't know the outpost UUID, we simply do a list and pick the first + // The service account this token belongs to should only have access to a single outpost + outposts, _, err := a.Client.OutpostsApi.OutpostsInstancesList(context.Background()).Execute() + + if err != nil { + log.WithError(err).Error("Failed to fetch outpost configuration") + return err + } + outpost := outposts.Results[0] + doGlobalSetup(outpost.Config) + + log.WithField("name", outpost.Name).Debug("Fetched outpost configuration") + return a.Server.Refresh() +} + func (a *APIController) StartBackgorundTasks() error { - err := a.Server.Refresh() + err := a.OnRefresh() if err != nil { return errors.Wrap(err, "failed to run initial refresh") } diff --git a/internal/outpost/ak/api_ws.go b/internal/outpost/ak/api_ws.go index d66addfec..5313e310a 100644 --- a/internal/outpost/ak/api_ws.go +++ b/internal/outpost/ak/api_ws.go @@ -82,7 +82,7 @@ func (ac *APIController) startWSHandler() { if wsMsg.Instruction == WebsocketInstructionTriggerUpdate { time.Sleep(ac.reloadOffset) logger.Debug("Got update trigger...") - err := ac.Server.Refresh() + err := ac.OnRefresh() if err != nil { logger.WithError(err).Debug("Failed to update") } @@ -118,7 +118,7 @@ func (ac *APIController) startIntervalUpdater() { logger := ac.logger.WithField("loop", "interval-updater") ticker := time.NewTicker(5 * time.Minute) for ; true; <-ticker.C { - err := ac.Server.Refresh() + err := ac.OnRefresh() if err != nil { logger.WithError(err).Debug("Failed to update") }