@@ -256,6 +256,12 @@ region. If not provided, defaults to the same region as the function.`,
256
256
},
257
257
},
258
258
},
259
+ "kms_key_name" : {
260
+ Type : schema .TypeString ,
261
+ Optional : true ,
262
+ Description : `Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources.
263
+ It must match the pattern projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}.` ,
264
+ },
259
265
"labels" : {
260
266
Type : schema .TypeMap ,
261
267
Optional : true ,
@@ -548,6 +554,12 @@ func resourceCloudfunctions2functionCreate(d *schema.ResourceData, meta interfac
548
554
} else if v , ok := d .GetOkExists ("labels" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (labelsProp )) && (ok || ! reflect .DeepEqual (v , labelsProp )) {
549
555
obj ["labels" ] = labelsProp
550
556
}
557
+ kmsKeyNameProp , err := expandCloudfunctions2functionKmsKeyName (d .Get ("kms_key_name" ), d , config )
558
+ if err != nil {
559
+ return err
560
+ } else if v , ok := d .GetOkExists ("kms_key_name" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (kmsKeyNameProp )) && (ok || ! reflect .DeepEqual (v , kmsKeyNameProp )) {
561
+ obj ["kmsKeyName" ] = kmsKeyNameProp
562
+ }
551
563
552
564
url , err := tpgresource .ReplaceVars (d , config , "{{Cloudfunctions2BasePath}}projects/{{project}}/locations/{{location}}/functions?functionId={{name}}" )
553
565
if err != nil {
@@ -687,6 +699,9 @@ func resourceCloudfunctions2functionRead(d *schema.ResourceData, meta interface{
687
699
if err := d .Set ("labels" , flattenCloudfunctions2functionLabels (res ["labels" ], d , config )); err != nil {
688
700
return fmt .Errorf ("Error reading function: %s" , err )
689
701
}
702
+ if err := d .Set ("kms_key_name" , flattenCloudfunctions2functionKmsKeyName (res ["kmsKeyName" ], d , config )); err != nil {
703
+ return fmt .Errorf ("Error reading function: %s" , err )
704
+ }
690
705
691
706
return nil
692
707
}
@@ -737,6 +752,12 @@ func resourceCloudfunctions2functionUpdate(d *schema.ResourceData, meta interfac
737
752
} else if v , ok := d .GetOkExists ("labels" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , labelsProp )) {
738
753
obj ["labels" ] = labelsProp
739
754
}
755
+ kmsKeyNameProp , err := expandCloudfunctions2functionKmsKeyName (d .Get ("kms_key_name" ), d , config )
756
+ if err != nil {
757
+ return err
758
+ } else if v , ok := d .GetOkExists ("kms_key_name" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , kmsKeyNameProp )) {
759
+ obj ["kmsKeyName" ] = kmsKeyNameProp
760
+ }
740
761
741
762
url , err := tpgresource .ReplaceVars (d , config , "{{Cloudfunctions2BasePath}}projects/{{project}}/locations/{{location}}/functions/{{name}}" )
742
763
if err != nil {
@@ -765,6 +786,10 @@ func resourceCloudfunctions2functionUpdate(d *schema.ResourceData, meta interfac
765
786
if d .HasChange ("labels" ) {
766
787
updateMask = append (updateMask , "labels" )
767
788
}
789
+
790
+ if d .HasChange ("kms_key_name" ) {
791
+ updateMask = append (updateMask , "kmsKeyName" )
792
+ }
768
793
// updateMask is a URL parameter but not present in the schema, so ReplaceVars
769
794
// won't set it
770
795
url , err = transport_tpg .AddQueryParams (url , map [string ]string {"updateMask" : strings .Join (updateMask , "," )})
@@ -1429,6 +1454,10 @@ func flattenCloudfunctions2functionLabels(v interface{}, d *schema.ResourceData,
1429
1454
return v
1430
1455
}
1431
1456
1457
+ func flattenCloudfunctions2functionKmsKeyName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1458
+ return v
1459
+ }
1460
+
1432
1461
func expandCloudfunctions2functionName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1433
1462
return tpgresource .ReplaceVars (d , config , "projects/{{project}}/locations/{{location}}/functions/{{name}}" )
1434
1463
}
@@ -2182,3 +2211,7 @@ func expandCloudfunctions2functionLabels(v interface{}, d tpgresource.TerraformR
2182
2211
}
2183
2212
return m , nil
2184
2213
}
2214
+
2215
+ func expandCloudfunctions2functionKmsKeyName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
2216
+ return v , nil
2217
+ }
0 commit comments