Skip to content

Commit 18777e9

Browse files
Akabarali ShaikhAkbaraliShaikh
authored andcommitted
Fixes the opaque secret update api
Fixes the lint errors Updated the documentation
1 parent 69b6883 commit 18777e9

File tree

6 files changed

+66
-35
lines changed

6 files changed

+66
-35
lines changed

docs/data-sources/kubernetes_secret.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,18 @@ Read-Only:
126126
- `password` (String)
127127
- `username` (String)
128128

129+
### Nested Schema for `spec`
130+
Read-Only:
131+
132+
`opaque` (List of string key/value pairs) (see [below for nested schema](#nestedobjatt--spec--opaque))
133+
134+
<a id="nestedobjatt--spec--opaque"></a>
135+
### Nested Schema for `spec.opaque`
136+
137+
Read-Only:
138+
139+
- `key` (String)
140+
- `value` (String)
129141

130142
## Cluster Group scoped kubernetes secret
131143

@@ -226,3 +238,16 @@ Read-Only:
226238
- `image_registry_url` (String)
227239
- `password` (String)
228240
- `username` (String)
241+
242+
### Nested Schema for `spec`
243+
Read-Only:
244+
245+
`opaque` (List of string key/value pairs) (see [below for nested schema](#nestedobjatt--spec--opaque))
246+
247+
<a id="nestedobjatt--spec--opaque"></a>
248+
### Nested Schema for `spec.opaque`
249+
250+
Read-Only:
251+
252+
- `key` (String)
253+
- `value` (String)

examples/resources/kubernetes_secret/cg_resource.tf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,15 @@ resource "tanzu-mission-control_kubernetes_secret" "create_secret" {
1717
}
1818

1919
spec {
20+
opaque = {
21+
"key1" : "value1"
22+
"key2" : "value2"
23+
}
24+
2025
docker_config_json {
2126
username = "testusername" # Required
2227
password = "testpassword" # Required
2328
image_registry_url = "testimageregistryurl" # Required
2429
}
2530
}
26-
}
31+
}

examples/resources/kubernetes_secret/resource.tf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,15 @@ resource "tanzu-mission-control_kubernetes_secret" "create_secret" {
1919
}
2020

2121
spec {
22+
opaque = {
23+
"key1" : "value1"
24+
"key2" : "value2"
25+
}
26+
2227
docker_config_json {
2328
username = "testusername" # Required
2429
password = "testpassword" # Required
2530
image_registry_url = "testimageregistryurl" # Required
2631
}
2732
}
28-
}
33+
}

internal/models/kubernetessecret/cluster/secret_spec.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ const (
6363
// VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEDOCKERCONFIGJSON captures enum value "SECRET_TYPE_DOCKERCONFIGJSON".
6464
VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEDOCKERCONFIGJSON VmwareTanzuManageV1alpha1ClusterNamespaceSecretType = "SECRET_TYPE_DOCKERCONFIGJSON"
6565
// VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEOPAQUE captures enum value "SECRET_TYPE_OPAQUE".
66+
//nolint:gosec
6667
VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEOPAQUE VmwareTanzuManageV1alpha1ClusterNamespaceSecretType = "SECRET_TYPE_OPAQUE"
6768
)
6869

internal/resources/kubernetessecret/resource_secret.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,10 @@ func resourceSecretInPlaceUpdate(ctx context.Context, d *schema.ResourceData, m
280280
return diag.Errorf("updating %v is not possible", spec.ImageRegistryURLKey)
281281
}
282282

283-
if updateCheckForMeta(d, secretDataFromServer.meta) || updateCheckForSpec(d, secretDataFromServer.atomicSpec, scopedFullnameData.Scope) {
283+
updateRequiredForSepc := updateCheckForSpec(d, secretDataFromServer.atomicSpec, scopedFullnameData.Scope)
284+
updateRequiredForMeta := updateCheckForMeta(d, secretDataFromServer.meta)
285+
286+
if updateRequiredForSepc || updateRequiredForMeta {
284287
switch scopedFullnameData.Scope {
285288
case commonscope.ClusterScope:
286289
if scopedFullnameData.FullnameCluster != nil {
@@ -331,14 +334,21 @@ func resourceSecretInPlaceUpdate(ctx context.Context, d *schema.ResourceData, m
331334

332335
func updateCheckForSpec(d *schema.ResourceData, atomicSpec *clustersecretmodel.VmwareTanzuManageV1alpha1ClusterNamespaceSecretSpec, scope commonscope.Scope) bool {
333336
if !(spec.HasSpecChanged(d)) {
334-
username := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.UsernameKey))
335-
password := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.PasswordKey))
336-
url := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.ImageRegistryURLKey))
337+
if atomicSpec.SecretType == clustersecretmodel.NewVmwareTanzuManageV1alpha1ClusterNamespaceSecretType(clustersecretmodel.VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEDOCKERCONFIGJSON) {
338+
username := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.UsernameKey))
339+
password := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.PasswordKey))
340+
url := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.DockerConfigjsonKey, spec.ImageRegistryURLKey))
341+
342+
secretSpecData, _ := spec.GetEncodedSpecData(url.(string), username.(string), password.(string))
337343

338-
secretSpecData, _ := spec.GetEncodedSpecData(url.(string), username.(string), password.(string))
344+
atomicSpec.Data = map[string]strfmt.Base64{
345+
spec.DockerconfigKey: secretSpecData,
346+
}
347+
}
339348

340-
atomicSpec.Data = map[string]strfmt.Base64{
341-
spec.DockerconfigKey: secretSpecData,
349+
if atomicSpec.SecretType == clustersecretmodel.NewVmwareTanzuManageV1alpha1ClusterNamespaceSecretType(clustersecretmodel.VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEOPAQUE) {
350+
kv := d.Get(helper.GetFirstElementOf(spec.SpecKey, spec.OpaqueKey))
351+
atomicSpec.Data = spec.GetEncodedOpaqueData(kv.(map[string]string))
342352
}
343353

344354
return false

internal/resources/kubernetessecret/spec/cluster_scope.go

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,7 @@ func ConstructSpecForClusterScope(d *schema.ResourceData) (spec *secretmodel.Vmw
6767
opaqueData := common.GetTypeStringMapData(v.(map[string]interface{}))
6868
if len(opaqueData) != 0 {
6969
spec.SecretType = secretmodel.NewVmwareTanzuManageV1alpha1ClusterNamespaceSecretType(secretmodel.VmwareTanzuManageV1alpha1ClusterNamespaceSecretTypeSECRETTYPEOPAQUE)
70-
71-
encodedData := getEncodedOpaqueData(opaqueData)
72-
spec.Data = encodedData
70+
spec.Data = GetEncodedOpaqueData(opaqueData)
7371
}
7472
}
7573

@@ -136,6 +134,16 @@ func GetEncodedSpecData(serverURL, username, password string) (strfmt.Base64, er
136134
return secretspecdata, nil
137135
}
138136

137+
func GetEncodedOpaqueData(data map[string]string) map[string]strfmt.Base64 {
138+
encoded := make(map[string]strfmt.Base64)
139+
140+
for k, v := range data {
141+
encoded[k] = strfmt.Base64(v)
142+
}
143+
144+
return encoded
145+
}
146+
139147
func getDecodedSpecData(data strfmt.Base64) (*dockerConfigJSON, error) {
140148
rawData, err := base64.StdEncoding.DecodeString(data.String())
141149
if err != nil {
@@ -151,26 +159,3 @@ func getDecodedSpecData(data strfmt.Base64) (*dockerConfigJSON, error) {
151159

152160
return dockerConfigJSON, nil
153161
}
154-
155-
func getEncodedOpaqueData(data map[string]string) map[string]strfmt.Base64 {
156-
encoded := make(map[string]strfmt.Base64)
157-
158-
for k, v := range data {
159-
encoded[k] = strfmt.Base64(v)
160-
}
161-
162-
return encoded
163-
}
164-
165-
// func getDecodedOpaqueData(data map[string]strfmt.Base64) (map[string]string, error) {
166-
// decoded := make(map[string]string)
167-
// for k, v := range data {
168-
// decodedValue, err := base64.StdEncoding.DecodeString(v.String())
169-
// if err != nil {
170-
// return nil, err
171-
// }
172-
// decoded[k] = string(decodedValue)
173-
// }
174-
175-
// return decoded, nil
176-
// }

0 commit comments

Comments
 (0)