-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcloud_credential_resolver.go
More file actions
24 lines (21 loc) · 1.05 KB
/
cloud_credential_resolver.go
File metadata and controls
24 lines (21 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package module
// CloudCredentialResolver resolves credentials for a specific cloud provider and credential type.
type CloudCredentialResolver interface {
// Provider returns the cloud provider name (e.g., "aws", "gcp", "azure", "digitalocean", "kubernetes").
Provider() string
// CredentialType returns the credential type this resolver handles (e.g., "static", "env", "profile", "role_arn").
CredentialType() string
// Resolve resolves credentials from the given config and stores them in the CloudAccount.
Resolve(m *CloudAccount) error
}
// credentialResolvers is the global registry: provider -> credType -> resolver.
var credentialResolvers = map[string]map[string]CloudCredentialResolver{}
// RegisterCredentialResolver registers a CloudCredentialResolver in the global registry.
// It is safe to call from init() functions.
func RegisterCredentialResolver(r CloudCredentialResolver) {
p := r.Provider()
if credentialResolvers[p] == nil {
credentialResolvers[p] = map[string]CloudCredentialResolver{}
}
credentialResolvers[p][r.CredentialType()] = r
}