Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/1153.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
`helm/resource_release.go`: Fix: only recompute metadata if version actually changes
```
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 2.10.1 (Jun 5, 2023)

HOTFIX:

* `helm_release`: Fix: Only recompute metadata if version actually changes. [[GH-1150](https://github.com/hashicorp/terraform-provider-helm/issues/1150)]

## 2.10.0 (May 30, 2023)

FEATURES:
Expand Down
12 changes: 11 additions & 1 deletion helm/resource_release.go
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,6 @@ func resourceDiff(ctx context.Context, d *schema.ResourceDiff, meta interface{})
recomputeMetadataFields := []string{
"chart",
"repository",
"version",
"values",
"set",
"set_sensitive",
Expand All @@ -841,6 +840,17 @@ func resourceDiff(ctx context.Context, d *schema.ResourceDiff, meta interface{})
if d.HasChanges(recomputeMetadataFields...) {
d.SetNewComputed("metadata")
}
if d.HasChange("version") {
// only recompute metadata if the version actually changes
// chart versioning is not consistent and some will add
// a `v` prefix to the chart version after installation
old, new := d.GetChange("version")
oldVersion := strings.TrimPrefix(old.(string), "v")
newVersion := strings.TrimPrefix(new.(string), "v")
if oldVersion != newVersion {
d.SetNewComputed("metadata")
}
}

var chartPathOpts action.ChartPathOptions
cpo, chartName, err := chartPathOptions(d, m, &chartPathOpts)
Expand Down
29 changes: 29 additions & 0 deletions helm/resource_release_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,35 @@ func TestAccResourceRelease_import(t *testing.T) {
})
}

func TestAccResourceRelease_inconsistentVersionRegression(t *testing.T) {
// NOTE this is a regression test, see: https://github.com/hashicorp/terraform-provider-helm/issues/1150
name := randName("basic")
namespace := createRandomNamespace(t)
defer deleteNamespace(t, namespace)

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
ProviderFactories: map[string]func() (*schema.Provider, error){
"helm": func() (*schema.Provider, error) {
return Provider(), nil
},
},
CheckDestroy: testAccCheckHelmReleaseDestroy(namespace),
Steps: []resource.TestStep{
{
Config: testAccHelmReleaseConfigBasic(testResourceName, namespace, name, "v1.2.3"),
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("helm_release.test", "version", "1.2.3"),
),
},
{
Config: testAccHelmReleaseConfigBasic(testResourceName, namespace, name, "v1.2.3"),
PlanOnly: true,
},
},
})
}

func TestAccResourceRelease_multiple_releases(t *testing.T) {
namespace := createRandomNamespace(t)
defer deleteNamespace(t, namespace)
Expand Down