diff --git a/google-beta/services/cloudrun/resource_cloud_run_service.go b/google-beta/services/cloudrun/resource_cloud_run_service.go
index 24826fca03..e5c30a579b 100644
--- a/google-beta/services/cloudrun/resource_cloud_run_service.go
+++ b/google-beta/services/cloudrun/resource_cloud_run_service.go
@@ -698,6 +698,33 @@ will use the project's default service account.`,
},
},
},
+ "nfs": {
+ Type: schema.TypeList,
+ Optional: true,
+ Description: `A filesystem backed by a Network File System share. This filesystem requires the
+run.googleapis.com/execution-environment annotation to be set to "gen2" and
+run.googleapis.com/launch-stage set to "BETA" or "ALPHA".`,
+ MaxItems: 1,
+ Elem: &schema.Resource{
+ Schema: map[string]*schema.Schema{
+ "path": {
+ Type: schema.TypeString,
+ Required: true,
+ Description: `Path exported by the NFS server`,
+ },
+ "server": {
+ Type: schema.TypeString,
+ Required: true,
+ Description: `IP address or hostname of the NFS server`,
+ },
+ "read_only": {
+ Type: schema.TypeBool,
+ Optional: true,
+ Description: `If true, mount the NFS volume as read only in all mounts. Defaults to false.`,
+ },
+ },
+ },
+ },
"secret": {
Type: schema.TypeList,
Optional: true,
@@ -2526,6 +2553,7 @@ func flattenCloudRunServiceSpecTemplateSpecVolumes(v interface{}, d *schema.Reso
"secret": flattenCloudRunServiceSpecTemplateSpecVolumesSecret(original["secret"], d, config),
"empty_dir": flattenCloudRunServiceSpecTemplateSpecVolumesEmptyDir(original["emptyDir"], d, config),
"csi": flattenCloudRunServiceSpecTemplateSpecVolumesCsi(original["csi"], d, config),
+ "nfs": flattenCloudRunServiceSpecTemplateSpecVolumesNfs(original["nfs"], d, config),
})
}
return transformed
@@ -2669,6 +2697,35 @@ func flattenCloudRunServiceSpecTemplateSpecVolumesCsiVolumeAttributes(v interfac
return v
}
+func flattenCloudRunServiceSpecTemplateSpecVolumesNfs(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
+ if v == nil {
+ return nil
+ }
+ original := v.(map[string]interface{})
+ if len(original) == 0 {
+ return nil
+ }
+ transformed := make(map[string]interface{})
+ transformed["server"] =
+ flattenCloudRunServiceSpecTemplateSpecVolumesNfsServer(original["server"], d, config)
+ transformed["path"] =
+ flattenCloudRunServiceSpecTemplateSpecVolumesNfsPath(original["path"], d, config)
+ transformed["read_only"] =
+ flattenCloudRunServiceSpecTemplateSpecVolumesNfsReadOnly(original["readOnly"], d, config)
+ return []interface{}{transformed}
+}
+func flattenCloudRunServiceSpecTemplateSpecVolumesNfsServer(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
+ return v
+}
+
+func flattenCloudRunServiceSpecTemplateSpecVolumesNfsPath(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
+ return v
+}
+
+func flattenCloudRunServiceSpecTemplateSpecVolumesNfsReadOnly(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
+ return v
+}
+
func flattenCloudRunServiceSpecTemplateSpecServingState(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}
@@ -4192,6 +4249,13 @@ func expandCloudRunServiceSpecTemplateSpecVolumes(v interface{}, d tpgresource.T
transformed["csi"] = transformedCsi
}
+ transformedNfs, err := expandCloudRunServiceSpecTemplateSpecVolumesNfs(original["nfs"], d, config)
+ if err != nil {
+ return nil, err
+ } else if val := reflect.ValueOf(transformedNfs); val.IsValid() && !tpgresource.IsEmptyValue(val) {
+ transformed["nfs"] = transformedNfs
+ }
+
req = append(req, transformed)
}
return req, nil
@@ -4376,6 +4440,51 @@ func expandCloudRunServiceSpecTemplateSpecVolumesCsiVolumeAttributes(v interface
return m, nil
}
+func expandCloudRunServiceSpecTemplateSpecVolumesNfs(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
+ l := v.([]interface{})
+ if len(l) == 0 || l[0] == nil {
+ return nil, nil
+ }
+ raw := l[0]
+ original := raw.(map[string]interface{})
+ transformed := make(map[string]interface{})
+
+ transformedServer, err := expandCloudRunServiceSpecTemplateSpecVolumesNfsServer(original["server"], d, config)
+ if err != nil {
+ return nil, err
+ } else if val := reflect.ValueOf(transformedServer); val.IsValid() && !tpgresource.IsEmptyValue(val) {
+ transformed["server"] = transformedServer
+ }
+
+ transformedPath, err := expandCloudRunServiceSpecTemplateSpecVolumesNfsPath(original["path"], d, config)
+ if err != nil {
+ return nil, err
+ } else if val := reflect.ValueOf(transformedPath); val.IsValid() && !tpgresource.IsEmptyValue(val) {
+ transformed["path"] = transformedPath
+ }
+
+ transformedReadOnly, err := expandCloudRunServiceSpecTemplateSpecVolumesNfsReadOnly(original["read_only"], d, config)
+ if err != nil {
+ return nil, err
+ } else if val := reflect.ValueOf(transformedReadOnly); val.IsValid() && !tpgresource.IsEmptyValue(val) {
+ transformed["readOnly"] = transformedReadOnly
+ }
+
+ return transformed, nil
+}
+
+func expandCloudRunServiceSpecTemplateSpecVolumesNfsServer(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
+ return v, nil
+}
+
+func expandCloudRunServiceSpecTemplateSpecVolumesNfsPath(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
+ return v, nil
+}
+
+func expandCloudRunServiceSpecTemplateSpecVolumesNfsReadOnly(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
+ return v, nil
+}
+
func expandCloudRunServiceSpecTemplateSpecServingState(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
diff --git a/website/docs/r/cloud_run_service.html.markdown b/website/docs/r/cloud_run_service.html.markdown
index fe378c6771..64411b7c30 100644
--- a/website/docs/r/cloud_run_service.html.markdown
+++ b/website/docs/r/cloud_run_service.html.markdown
@@ -818,6 +818,13 @@ The following arguments are supported:
A filesystem specified by the Container Storage Interface (CSI).
Structure is [documented below](#nested_csi).
+* `nfs` -
+ (Optional, [Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html))
+ A filesystem backed by a Network File System share. This filesystem requires the
+ run.googleapis.com/execution-environment annotation to be set to "gen2" and
+ run.googleapis.com/launch-stage set to "BETA" or "ALPHA".
+ Structure is [documented below](#nested_nfs).
+
The `secret` block supports:
@@ -900,6 +907,20 @@ The following arguments are supported:
* gcsfuse.run.googleapis.com
* bucketName: The name of the Cloud Storage Bucket that backs this volume. The Cloud Run Service identity must have access to this bucket.
+The `nfs` block supports:
+
+* `server` -
+ (Required)
+ IP address or hostname of the NFS server
+
+* `path` -
+ (Required)
+ Path exported by the NFS server
+
+* `read_only` -
+ (Optional)
+ If true, mount the NFS volume as read only in all mounts. Defaults to false.
+
- - -