in pkg/dataplane/reloadCredentials.go [61:82]
func NewUserAssignedIdentityCredential(ctx context.Context, credentialPath string, opts ...Option) (azcore.TokenCredential, error) {
defaultLog := logr.FromSlogHandler(slog.NewTextHandler(os.Stdout, nil))
credential := &reloadingCredential{
lock: &sync.RWMutex{},
logger: &defaultLog,
ticker: time.NewTicker(6 * time.Hour),
}
for _, opt := range opts {
opt(credential)
}
// load once to validate everything and ensure we have a useful token before we return
if err := credential.load(credentialPath); err != nil {
return nil, err
}
// start the process of watching - the caller can cancel ctx if they want to stop
if err := credential.start(ctx, credentialPath); err != nil {
return nil, err
}
return credential, nil
}