| Total Lines | 30 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | package credentials |
||
| 2 | |||
| 3 | import ( |
||
| 4 | "errors" |
||
| 5 | ) |
||
| 6 | |||
| 7 | type providerChain struct { |
||
| 8 | Providers []Provider |
||
| 9 | } |
||
| 10 | |||
| 11 | var defaultproviders = []Provider{providerEnv, 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() (*Configuration, 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 | |||
| 33 |