...

Source file src/github.com/aliyun/credentials-go/credentials/provider_chain.go

Documentation: github.com/aliyun/credentials-go/credentials

     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