mirror of
https://github.com/opentofu/opentofu.git
synced 2024-12-26 17:01:04 -06:00
9891d0354a
* terraform/context: use new addrs.Provider as map key in provider factories * added NewLegacyProviderType and LegacyString funcs to make it explicit that these are temporary placeholders This PR introduces a new concept, provider fully-qualified name (FQN), encapsulated by the `addrs.Provider` struct.
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package addrs
|
|
|
|
import svchost "github.com/hashicorp/terraform-svchost"
|
|
|
|
// Provider encapsulates a single provider type. In the future this will be
|
|
// extended to include additional fields including Namespace and SourceHost
|
|
type Provider struct {
|
|
Type string
|
|
Namespace string
|
|
Hostname svchost.Hostname
|
|
}
|
|
|
|
// String returns an FQN string, indended for use in output.
|
|
func (pt Provider) String() string {
|
|
return pt.Hostname.ForDisplay() + "/" + pt.Namespace + "/" + pt.Type
|
|
}
|
|
|
|
// NewDefaultProvider returns the default address of a HashiCorp-maintained,
|
|
// Registry-hosted provider.
|
|
func NewDefaultProvider(name string) Provider {
|
|
return Provider{
|
|
Type: name,
|
|
Namespace: "hashicorp",
|
|
Hostname: "registry.terraform.io",
|
|
}
|
|
}
|
|
|
|
// NewLegacyProvider returns a mock address for a provider.
|
|
// This will be removed when ProviderType is fully integrated.
|
|
func NewLegacyProvider(name string) Provider {
|
|
return Provider{
|
|
Type: name,
|
|
Namespace: "-",
|
|
Hostname: "registry.terraform.io",
|
|
}
|
|
}
|
|
|
|
// LegacyString returns the provider type, which is frequently used
|
|
// interchangeably with provider name. This function can and should be removed
|
|
// when provider type is fully integrated. As a safeguard for future
|
|
// refactoring, this function panics if the Provider is not a legacy provider.
|
|
func (pt Provider) LegacyString() string {
|
|
if pt.Namespace != "-" {
|
|
panic("not a legacy Provider")
|
|
}
|
|
return pt.Type
|
|
}
|