func NewUserAssignedIdentityCredential()

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
}