@@ -139,6 +139,7 @@ func ResourceCloudRunV2Service() *schema.Resource {
139139 },
140140 "liveness_probe" : {
141141 Type : schema .TypeList ,
142+ Computed : true ,
142143 Optional : true ,
143144 Description : `Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes` ,
144145 MaxItems : 1 ,
@@ -150,6 +151,29 @@ func ResourceCloudRunV2Service() *schema.Resource {
150151 Description : `Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.` ,
151152 Default : 3 ,
152153 },
154+ "grpc" : {
155+ Type : schema .TypeList ,
156+ Optional : true ,
157+ Description : `GRPC specifies an action involving a GRPC port.` ,
158+ MaxItems : 1 ,
159+ Elem : & schema.Resource {
160+ Schema : map [string ]* schema.Schema {
161+ "port" : {
162+ Type : schema .TypeInt ,
163+ Computed : true ,
164+ Optional : true ,
165+ Description : `Port number to access on the container. Number must be in the range 1 to 65535. If not specified, defaults to the same value as container.ports[0].containerPort.` ,
166+ },
167+ "service" : {
168+ Type : schema .TypeString ,
169+ Optional : true ,
170+ Description : `The name of the service to place in the gRPC HealthCheckRequest
171+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
172+ If this is not specified, the default behavior is defined by gRPC.` ,
173+ },
174+ },
175+ },
176+ },
153177 "http_get" : {
154178 Type : schema .TypeList ,
155179 Optional : true ,
@@ -288,6 +312,29 @@ If omitted, a port number will be chosen and passed to the container through the
288312 Description : `Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.` ,
289313 Default : 3 ,
290314 },
315+ "grpc" : {
316+ Type : schema .TypeList ,
317+ Optional : true ,
318+ Description : `GRPC specifies an action involving a GRPC port.` ,
319+ MaxItems : 1 ,
320+ Elem : & schema.Resource {
321+ Schema : map [string ]* schema.Schema {
322+ "port" : {
323+ Type : schema .TypeInt ,
324+ Computed : true ,
325+ Optional : true ,
326+ Description : `Port number to access on the container. Number must be in the range 1 to 65535. If not specified, defaults to the same value as container.ports[0].containerPort.` ,
327+ },
328+ "service" : {
329+ Type : schema .TypeString ,
330+ Optional : true ,
331+ Description : `The name of the service to place in the gRPC HealthCheckRequest
332+ (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
333+ If this is not specified, the default behavior is defined by gRPC.` ,
334+ },
335+ },
336+ },
337+ },
291338 "http_get" : {
292339 Type : schema .TypeList ,
293340 Optional : true ,
@@ -1649,6 +1696,8 @@ func flattenCloudRunV2ServiceTemplateContainersLivenessProbe(v interface{}, d *s
16491696 flattenCloudRunV2ServiceTemplateContainersLivenessProbeHttpGet (original ["httpGet" ], d , config )
16501697 transformed ["tcp_socket" ] =
16511698 flattenCloudRunV2ServiceTemplateContainersLivenessProbeTcpSocket (original ["tcpSocket" ], d , config )
1699+ transformed ["grpc" ] =
1700+ flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpc (original ["grpc" ], d , config )
16521701 return []interface {}{transformed }
16531702}
16541703func flattenCloudRunV2ServiceTemplateContainersLivenessProbeInitialDelaySeconds (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
@@ -1789,6 +1838,39 @@ func flattenCloudRunV2ServiceTemplateContainersLivenessProbeTcpSocketPort(v inte
17891838 return v // let terraform core handle it otherwise
17901839}
17911840
1841+ func flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpc (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1842+ if v == nil {
1843+ return nil
1844+ }
1845+ original := v .(map [string ]interface {})
1846+ transformed := make (map [string ]interface {})
1847+ transformed ["port" ] =
1848+ flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpcPort (original ["port" ], d , config )
1849+ transformed ["service" ] =
1850+ flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpcService (original ["service" ], d , config )
1851+ return []interface {}{transformed }
1852+ }
1853+ func flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpcPort (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1854+ // Handles the string fixed64 format
1855+ if strVal , ok := v .(string ); ok {
1856+ if intVal , err := stringToFixed64 (strVal ); err == nil {
1857+ return intVal
1858+ }
1859+ }
1860+
1861+ // number values are represented as float64
1862+ if floatVal , ok := v .(float64 ); ok {
1863+ intVal := int (floatVal )
1864+ return intVal
1865+ }
1866+
1867+ return v // let terraform core handle it otherwise
1868+ }
1869+
1870+ func flattenCloudRunV2ServiceTemplateContainersLivenessProbeGrpcService (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
1871+ return v
1872+ }
1873+
17921874func flattenCloudRunV2ServiceTemplateContainersStartupProbe (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
17931875 if v == nil {
17941876 return nil
@@ -1810,6 +1892,8 @@ func flattenCloudRunV2ServiceTemplateContainersStartupProbe(v interface{}, d *sc
18101892 flattenCloudRunV2ServiceTemplateContainersStartupProbeHttpGet (original ["httpGet" ], d , config )
18111893 transformed ["tcp_socket" ] =
18121894 flattenCloudRunV2ServiceTemplateContainersStartupProbeTcpSocket (original ["tcpSocket" ], d , config )
1895+ transformed ["grpc" ] =
1896+ flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpc (original ["grpc" ], d , config )
18131897 return []interface {}{transformed }
18141898}
18151899func flattenCloudRunV2ServiceTemplateContainersStartupProbeInitialDelaySeconds (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
@@ -1950,6 +2034,39 @@ func flattenCloudRunV2ServiceTemplateContainersStartupProbeTcpSocketPort(v inter
19502034 return v // let terraform core handle it otherwise
19512035}
19522036
2037+ func flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpc (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
2038+ if v == nil {
2039+ return nil
2040+ }
2041+ original := v .(map [string ]interface {})
2042+ transformed := make (map [string ]interface {})
2043+ transformed ["port" ] =
2044+ flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpcPort (original ["port" ], d , config )
2045+ transformed ["service" ] =
2046+ flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpcService (original ["service" ], d , config )
2047+ return []interface {}{transformed }
2048+ }
2049+ func flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpcPort (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
2050+ // Handles the string fixed64 format
2051+ if strVal , ok := v .(string ); ok {
2052+ if intVal , err := stringToFixed64 (strVal ); err == nil {
2053+ return intVal
2054+ }
2055+ }
2056+
2057+ // number values are represented as float64
2058+ if floatVal , ok := v .(float64 ); ok {
2059+ intVal := int (floatVal )
2060+ return intVal
2061+ }
2062+
2063+ return v // let terraform core handle it otherwise
2064+ }
2065+
2066+ func flattenCloudRunV2ServiceTemplateContainersStartupProbeGrpcService (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
2067+ return v
2068+ }
2069+
19532070func flattenCloudRunV2ServiceTemplateVolumes (v interface {}, d * schema.ResourceData , config * Config ) interface {} {
19542071 if v == nil {
19552072 return v
@@ -2993,6 +3110,13 @@ func expandCloudRunV2ServiceTemplateContainersLivenessProbe(v interface{}, d Ter
29933110 transformed ["tcpSocket" ] = transformedTcpSocket
29943111 }
29953112
3113+ transformedGrpc , err := expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpc (original ["grpc" ], d , config )
3114+ if err != nil {
3115+ return nil , err
3116+ } else {
3117+ transformed ["grpc" ] = transformedGrpc
3118+ }
3119+
29963120 return transformed , nil
29973121}
29983122
@@ -3112,6 +3236,45 @@ func expandCloudRunV2ServiceTemplateContainersLivenessProbeTcpSocketPort(v inter
31123236 return v , nil
31133237}
31143238
3239+ func expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpc (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3240+ l := v .([]interface {})
3241+ if len (l ) == 0 {
3242+ return nil , nil
3243+ }
3244+
3245+ if l [0 ] == nil {
3246+ transformed := make (map [string ]interface {})
3247+ return transformed , nil
3248+ }
3249+ raw := l [0 ]
3250+ original := raw .(map [string ]interface {})
3251+ transformed := make (map [string ]interface {})
3252+
3253+ transformedPort , err := expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpcPort (original ["port" ], d , config )
3254+ if err != nil {
3255+ return nil , err
3256+ } else if val := reflect .ValueOf (transformedPort ); val .IsValid () && ! isEmptyValue (val ) {
3257+ transformed ["port" ] = transformedPort
3258+ }
3259+
3260+ transformedService , err := expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpcService (original ["service" ], d , config )
3261+ if err != nil {
3262+ return nil , err
3263+ } else if val := reflect .ValueOf (transformedService ); val .IsValid () && ! isEmptyValue (val ) {
3264+ transformed ["service" ] = transformedService
3265+ }
3266+
3267+ return transformed , nil
3268+ }
3269+
3270+ func expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpcPort (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3271+ return v , nil
3272+ }
3273+
3274+ func expandCloudRunV2ServiceTemplateContainersLivenessProbeGrpcService (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3275+ return v , nil
3276+ }
3277+
31153278func expandCloudRunV2ServiceTemplateContainersStartupProbe (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
31163279 l := v .([]interface {})
31173280 if len (l ) == 0 || l [0 ] == nil {
@@ -3163,6 +3326,13 @@ func expandCloudRunV2ServiceTemplateContainersStartupProbe(v interface{}, d Terr
31633326 transformed ["tcpSocket" ] = transformedTcpSocket
31643327 }
31653328
3329+ transformedGrpc , err := expandCloudRunV2ServiceTemplateContainersStartupProbeGrpc (original ["grpc" ], d , config )
3330+ if err != nil {
3331+ return nil , err
3332+ } else {
3333+ transformed ["grpc" ] = transformedGrpc
3334+ }
3335+
31663336 return transformed , nil
31673337}
31683338
@@ -3282,6 +3452,45 @@ func expandCloudRunV2ServiceTemplateContainersStartupProbeTcpSocketPort(v interf
32823452 return v , nil
32833453}
32843454
3455+ func expandCloudRunV2ServiceTemplateContainersStartupProbeGrpc (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3456+ l := v .([]interface {})
3457+ if len (l ) == 0 {
3458+ return nil , nil
3459+ }
3460+
3461+ if l [0 ] == nil {
3462+ transformed := make (map [string ]interface {})
3463+ return transformed , nil
3464+ }
3465+ raw := l [0 ]
3466+ original := raw .(map [string ]interface {})
3467+ transformed := make (map [string ]interface {})
3468+
3469+ transformedPort , err := expandCloudRunV2ServiceTemplateContainersStartupProbeGrpcPort (original ["port" ], d , config )
3470+ if err != nil {
3471+ return nil , err
3472+ } else if val := reflect .ValueOf (transformedPort ); val .IsValid () && ! isEmptyValue (val ) {
3473+ transformed ["port" ] = transformedPort
3474+ }
3475+
3476+ transformedService , err := expandCloudRunV2ServiceTemplateContainersStartupProbeGrpcService (original ["service" ], d , config )
3477+ if err != nil {
3478+ return nil , err
3479+ } else if val := reflect .ValueOf (transformedService ); val .IsValid () && ! isEmptyValue (val ) {
3480+ transformed ["service" ] = transformedService
3481+ }
3482+
3483+ return transformed , nil
3484+ }
3485+
3486+ func expandCloudRunV2ServiceTemplateContainersStartupProbeGrpcPort (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3487+ return v , nil
3488+ }
3489+
3490+ func expandCloudRunV2ServiceTemplateContainersStartupProbeGrpcService (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
3491+ return v , nil
3492+ }
3493+
32853494func expandCloudRunV2ServiceTemplateVolumes (v interface {}, d TerraformResourceData , config * Config ) (interface {}, error ) {
32863495 l := v .([]interface {})
32873496 req := make ([]interface {}, 0 , len (l ))
0 commit comments