Refactor terraform provider version logic

As suggested in review of 14926, this approach might be more concise
and clearer.
This commit is contained in:
justinsb 2023-01-04 08:22:16 -05:00
parent aeca5f9b54
commit 3a683e1444
1 changed files with 27 additions and 26 deletions

View File

@ -228,36 +228,37 @@ func (t *TerraformTarget) writeTerraform(buf *bytes.Buffer) {
providerKeys := sortedKeysForMap(providers) providerKeys := sortedKeysForMap(providers)
for _, provider := range providerKeys { for _, provider := range providerKeys {
var tf map[string]*terraformWriter.Literal // providerVersions could be a constant, but keeping it here
switch provider { // because it isn't shared and to allow for more complex logic in future.
case "aws": providerVersions := map[string]map[string]string{
tf = map[string]*terraformWriter.Literal{ "aws": {
"source": terraformWriter.LiteralFromStringValue("hashicorp/aws"), "source": "hashicorp/aws",
"version": terraformWriter.LiteralFromStringValue(">= 4.0.0"), "version": ">= 4.0.0",
} },
"google": {
"source": "hashicorp/google",
"version": ">= 2.19.0",
},
"hcloud": {
"source": "hetznercloud/hcloud",
"version": ">= 1.35.1",
},
"spotinst": {
"source": "spotinst/spotinst",
"version": ">= 1.33.0",
},
}
case "google": providerVersion := providerVersions[provider]
tf = map[string]*terraformWriter.Literal{ if providerVersion == nil {
"source": terraformWriter.LiteralFromStringValue("hashicorp/google"),
"version": terraformWriter.LiteralFromStringValue(">= 2.19.0"),
}
case "hcloud":
tf = map[string]*terraformWriter.Literal{
"source": terraformWriter.LiteralFromStringValue("hetznercloud/hcloud"),
"version": terraformWriter.LiteralFromStringValue(">= 1.35.1"),
}
case "spotinst":
tf = map[string]*terraformWriter.Literal{
"source": terraformWriter.LiteralFromStringValue("spotinst/spotinst"),
"version": terraformWriter.LiteralFromStringValue(">= 1.33.0"),
}
default:
klog.Fatalf("unhandled provider %q", provider) klog.Fatalf("unhandled provider %q", provider)
} }
tf := make(map[string]*terraformWriter.Literal)
for k, v := range providerVersion {
tf[k] = terraformWriter.LiteralFromStringValue(v)
}
if aliases := providerAliases[provider]; len(aliases) != 0 { if aliases := providerAliases[provider]; len(aliases) != 0 {
var configurationAliases []*terraformWriter.Literal var configurationAliases []*terraformWriter.Literal
for _, alias := range providerAliases[provider] { for _, alias := range providerAliases[provider] {