...
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 }
33
View as plain text