func determineBestClient( options identity.AuthOptions, client client.AuthenticatingClient, cred identity.Credentials, newClient func(*identity.Credentials, identity.AuthMode, *log.Logger) client.AuthenticatingClient, ) client.AuthenticatingClient { for _, option := range options { if option.Mode != identity.AuthUserPassV3 { continue } cred.URL = option.Endpoint v3client := newClient(&cred, identity.AuthUserPassV3, nil) // V3 being advertised is not necessaritly a guarantee that it will // work. err := v3client.Authenticate() if err == nil { return v3client } } return client }