opentofu/svchost/auth/static.go
Martin Atkins 821d0401bc svchost/auth: New API for storing and forgetting credentials
This new functionality will be used as part of implementing the
"terraform login" and "terraform logout" commands.

As of this commit, the storage codepaths are all just stubs. Subsequent
commits will implement these new methods for each of the different
physical credentials sources.
2019-08-23 11:57:11 -07:00

39 lines
1.1 KiB
Go

package auth
import (
"fmt"
"github.com/hashicorp/terraform/svchost"
)
// StaticCredentialsSource is a credentials source that retrieves credentials
// from the provided map. It returns nil if a requested hostname is not
// present in the map.
//
// The caller should not modify the given map after passing it to this function.
func StaticCredentialsSource(creds map[svchost.Hostname]map[string]interface{}) CredentialsSource {
return staticCredentialsSource(creds)
}
type staticCredentialsSource map[svchost.Hostname]map[string]interface{}
func (s staticCredentialsSource) ForHost(host svchost.Hostname) (HostCredentials, error) {
if s == nil {
return nil, nil
}
if m, exists := s[host]; exists {
return HostCredentialsFromMap(m), nil
}
return nil, nil
}
func (s staticCredentialsSource) StoreForHost(host svchost.Hostname, credentials HostCredentialsWritable) error {
return fmt.Errorf("can't store new credentials in a static credentials source")
}
func (s staticCredentialsSource) ForgetForHost(host svchost.Hostname) error {
return fmt.Errorf("can't discard credentials from a static credentials source")
}