github.com/aliyun/credentials-go@v1.4.7/credentials/provider_chain.go (about) 1 package credentials 2 3 import ( 4 "errors" 5 ) 6 7 type providerChain struct { 8 Providers []Provider 9 } 10 11 var defaultproviders = []Provider{providerEnv, providerOIDC, providerProfile, providerInstance} 12 var defaultChain = newProviderChain(defaultproviders) 13 14 func newProviderChain(providers []Provider) Provider { 15 return &providerChain{ 16 Providers: providers, 17 } 18 } 19 20 func (p *providerChain) resolve() (*Config, error) { 21 for _, provider := range p.Providers { 22 config, err := provider.resolve() 23 if err != nil { 24 return nil, err 25 } else if config == nil { 26 continue 27 } 28 return config, err 29 } 30 return nil, errors.New("no credential found") 31 32 }