Skip to content

Commit c5bc3c1

Browse files
committed
fix(functionNamespace): support secret_environment_variable state
1 parent 9baa358 commit c5bc3c1

7 files changed

+689
-825
lines changed

internal/services/function/namespace.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
99
function "github.com/scaleway/scaleway-sdk-go/api/function/v1beta1"
1010
"github.com/scaleway/scaleway-sdk-go/scw"
11+
"github.com/scaleway/terraform-provider-scaleway/v2/internal/dsf"
1112
"github.com/scaleway/terraform-provider-scaleway/v2/internal/httperrors"
1213
"github.com/scaleway/terraform-provider-scaleway/v2/internal/locality/regional"
1314
"github.com/scaleway/terraform-provider-scaleway/v2/internal/services/account"
@@ -71,7 +72,9 @@ func ResourceNamespace() *schema.Resource {
7172
Type: schema.TypeString,
7273
ValidateFunc: validation.StringLenBetween(0, 1000),
7374
},
74-
ValidateDiagFunc: validation.MapKeyLenBetween(0, 100),
75+
ValidateDiagFunc: validation.MapKeyLenBetween(0, 100),
76+
DiffSuppressFunc: dsf.CompareArgon2idPasswordAndHash,
77+
DiffSuppressOnRefresh: true,
7578
},
7679
"registry_endpoint": {
7780
Type: schema.TypeString,
@@ -151,6 +154,7 @@ func ResourceFunctionNamespaceRead(ctx context.Context, d *schema.ResourceData,
151154
_ = d.Set("region", ns.Region)
152155
_ = d.Set("registry_endpoint", ns.RegistryEndpoint)
153156
_ = d.Set("registry_namespace_id", ns.RegistryNamespaceID)
157+
_ = d.Set("secret_environment_variables", flattenFunctionSecrets(ns.SecretEnvironmentVariables))
154158

155159
return nil
156160
}
@@ -190,7 +194,8 @@ func ResourceFunctionNamespaceUpdate(ctx context.Context, d *schema.ResourceData
190194
}
191195

192196
if d.HasChanges("secret_environment_variables") {
193-
req.SecretEnvironmentVariables = expandFunctionsSecrets(d.Get("secret_environment_variables"))
197+
oldEnv, newEnv := d.GetChange("secret_environment_variables")
198+
req.SecretEnvironmentVariables = filterSecretEnvsToPatch(expandFunctionsSecrets(oldEnv), expandFunctionsSecrets(newEnv))
194199
}
195200

196201
if _, err := api.UpdateNamespace(req, scw.WithContext(ctx)); err != nil {

internal/services/function/namespace_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func TestAccFunctionNamespace_Basic(t *testing.T) {
6868
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "description", ""),
6969
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "name", "test-cr-ns-01"),
7070
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "environment_variables.test", "test"),
71-
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "test_secret"),
71+
passwordMatchHash("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "test_secret"),
7272
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "tags.#", "0"),
7373

7474
acctest.CheckResourceAttrUUID("scaleway_function_namespace.main", "id"),
@@ -92,7 +92,7 @@ func TestAccFunctionNamespace_Basic(t *testing.T) {
9292
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "description", ""),
9393
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "name", "test-cr-ns-01"),
9494
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "environment_variables.test", "test"),
95-
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "test_secret"),
95+
passwordMatchHash("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "test_secret"),
9696
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "tags.#", "2"),
9797
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "tags.0", "tag1"),
9898
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "tags.1", "tag2"),
@@ -142,13 +142,16 @@ func TestAccFunctionNamespace_EnvironmentVariables(t *testing.T) {
142142
environment_variables = {
143143
"test" = "test"
144144
}
145+
secret_environment_variables = {
146+
"test_secret" = "test_secret"
147+
}
145148
}
146149
`,
147150
Check: resource.ComposeTestCheckFunc(
148151
testAccCheckFunctionNamespaceExists(tt, "scaleway_function_namespace.main"),
149152
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "name", "tf-env-test"),
150153
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "environment_variables.test", "test"),
151-
154+
passwordMatchHash("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "test_secret"),
152155
acctest.CheckResourceAttrUUID("scaleway_function_namespace.main", "id"),
153156
),
154157
},
@@ -159,13 +162,16 @@ func TestAccFunctionNamespace_EnvironmentVariables(t *testing.T) {
159162
environment_variables = {
160163
"foo" = "bar"
161164
}
165+
secret_environment_variables = {
166+
"test_secret" = "updated_secret"
167+
}
162168
}
163169
`,
164170
Check: resource.ComposeTestCheckFunc(
165171
testAccCheckFunctionNamespaceExists(tt, "scaleway_function_namespace.main"),
166172
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "name", "tf-env-test"),
167173
resource.TestCheckResourceAttr("scaleway_function_namespace.main", "environment_variables.foo", "bar"),
168-
174+
passwordMatchHash("scaleway_function_namespace.main", "secret_environment_variables.test_secret", "updated_secret"),
169175
acctest.CheckResourceAttrUUID("scaleway_function_namespace.main", "id"),
170176
),
171177
},

0 commit comments

Comments
 (0)