diff --git a/client/template.go b/client/template.go index 9ca50b9d..e9ea258f 100644 --- a/client/template.go +++ b/client/template.go @@ -49,7 +49,7 @@ type Template struct { IsGitlabEnterprise bool `json:"isGitLabEnterprise"` TokenId string `json:"tokenId,omitempty" tfschema:",omitempty"` UpdatedAt string `json:"updatedAt"` - TerraformVersion string `json:"terraformVersion"` + TerraformVersion string `json:"terraformVersion" tfschema:",omitempty"` TerragruntVersion string `json:"terragruntVersion,omitempty" tfschema:",omitempty"` IsDeleted bool `json:"isDeleted,omitempty"` BitbucketClientKey string `json:"bitbucketClientKey" tfschema:",omitempty"` @@ -78,7 +78,7 @@ type TemplateCreatePayload struct { GitlabProjectId int `json:"gitlabProjectId,omitempty"` Revision string `json:"revision"` OrganizationId string `json:"organizationId"` - TerraformVersion string `json:"terraformVersion"` + TerraformVersion string `json:"terraformVersion,omitempty"` TerragruntVersion string `json:"terragruntVersion,omitempty"` IsGitlabEnterprise bool `json:"isGitLabEnterprise"` BitbucketClientKey string `json:"bitbucketClientKey,omitempty"` @@ -111,7 +111,7 @@ type VariablesFromRepositoryPayload struct { Repository string `json:"repository"` } -func (payload TemplateCreatePayload) Validate() error { +func (payload *TemplateCreatePayload) Invalidate() error { if payload.OrganizationId != "" { return errors.New("must not specify organizationId") } @@ -159,6 +159,10 @@ func (payload TemplateCreatePayload) Validate() error { } } + if payload.Type != "terragrunt" && payload.Type != "terraform" { + payload.TerraformVersion = "" + } + return nil } diff --git a/env0/resource_template.go b/env0/resource_template.go index 2bdadb3d..83da2e3c 100644 --- a/env0/resource_template.go +++ b/env0/resource_template.go @@ -384,7 +384,7 @@ func templateCreatePayloadFromParameters(prefix string, d *schema.ResourceData) templateCreatePayloadRetryOnHelper(prefix, d, "deploy", &payload.Retry.OnDeploy) templateCreatePayloadRetryOnHelper(prefix, d, "destroy", &payload.Retry.OnDestroy) - if err := payload.Validate(); err != nil { + if err := payload.Invalidate(); err != nil { return payload, diag.Errorf(err.Error()) } diff --git a/env0/resource_template_test.go b/env0/resource_template_test.go index a812dcb7..fb804528 100644 --- a/env0/resource_template_test.go +++ b/env0/resource_template_test.go @@ -600,6 +600,7 @@ func TestUnitTemplateResource(t *testing.T) { IsHelmRepository: templateUseCase.template.IsHelmRepository, HelmChartName: templateUseCase.template.HelmChartName, } + updateTemplateCreateTemplate := client.TemplateCreatePayload{ Name: templateUseCase.updatedTemplate.Name, Repository: templateUseCase.updatedTemplate.Repository, @@ -625,6 +626,11 @@ func TestUnitTemplateResource(t *testing.T) { HelmChartName: templateUseCase.template.HelmChartName, } + if templateUseCase.template.Type != "terraform" && templateUseCase.template.Type != "terragrunt" { + templateCreatePayload.TerraformVersion = "" + updateTemplateCreateTemplate.TerraformVersion = "" + } + if templateUseCase.vcs == "Cloudformation" { templateCreatePayload.Type = "cloudformation" updateTemplateCreateTemplate.Type = "cloudformation"