Skip to content

Commit 21e34f9

Browse files
azurerm_container_app - Add support for MountOptions to volume (#28619)
* azurerm_container_app - Add support for MountOptions to volume Fixes #26131 * Remove extra * * Add mount options to ContainerVolumeSchemaComputed * PR feedback * Apply suggestions from code review Co-authored-by: stephybun <steph@hashicorp.com> * PR feedback * Fix expand/flatten for container_app_job --------- Co-authored-by: stephybun <steph@hashicorp.com>
1 parent d61f660 commit 21e34f9

File tree

7 files changed

+70
-30
lines changed

7 files changed

+70
-30
lines changed

internal/services/containerapps/container_app_job_resource_test.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,9 +1247,10 @@ resource "azurerm_container_app_job" "test" {
12471247
12481248
template {
12491249
volume {
1250-
name = azurerm_container_app_environment_storage.test.name
1251-
storage_type = "AzureFile"
1252-
storage_name = azurerm_container_app_environment_storage.test.name
1250+
name = azurerm_container_app_environment_storage.test.name
1251+
storage_type = "AzureFile"
1252+
storage_name = azurerm_container_app_environment_storage.test.name
1253+
mount_options = "dir_mode=0777,file_mode=0666"
12531254
}
12541255
container {
12551256
args = [
@@ -1354,9 +1355,10 @@ resource "azurerm_container_app_job" "test" {
13541355
13551356
template {
13561357
volume {
1357-
name = azurerm_container_app_environment_storage.test.name
1358-
storage_type = "AzureFile"
1359-
storage_name = azurerm_container_app_environment_storage.test.name
1358+
name = azurerm_container_app_environment_storage.test.name
1359+
storage_type = "AzureFile"
1360+
storage_name = azurerm_container_app_environment_storage.test.name
1361+
mount_options = "dir_mode=0777,file_mode=0666"
13601362
}
13611363
container {
13621364
args = [

internal/services/containerapps/container_app_resource_test.go

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,9 +1380,10 @@ resource "azurerm_container_app" "test" {
13801380
}
13811381
13821382
volume {
1383-
name = azurerm_container_app_environment_storage.test.name
1384-
storage_type = "AzureFile"
1385-
storage_name = azurerm_container_app_environment_storage.test.name
1383+
name = azurerm_container_app_environment_storage.test.name
1384+
storage_type = "AzureFile"
1385+
storage_name = azurerm_container_app_environment_storage.test.name
1386+
mount_options = "dir_mode=0777,file_mode=0666"
13861387
}
13871388
13881389
min_replicas = 2
@@ -1715,9 +1716,10 @@ resource "azurerm_container_app" "test" {
17151716
}
17161717
17171718
volume {
1718-
name = azurerm_container_app_environment_storage.test.name
1719-
storage_type = "AzureFile"
1720-
storage_name = azurerm_container_app_environment_storage.test.name
1719+
name = azurerm_container_app_environment_storage.test.name
1720+
storage_type = "AzureFile"
1721+
storage_name = azurerm_container_app_environment_storage.test.name
1722+
mount_options = "dir_mode=0777,file_mode=0666"
17211723
}
17221724
17231725
min_replicas = 2
@@ -1809,9 +1811,10 @@ resource "azurerm_container_app" "test" {
18091811
}
18101812
18111813
volume {
1812-
name = azurerm_container_app_environment_storage.test.name
1813-
storage_type = "AzureFile"
1814-
storage_name = azurerm_container_app_environment_storage.test.name
1814+
name = azurerm_container_app_environment_storage.test.name
1815+
storage_type = "AzureFile"
1816+
storage_name = azurerm_container_app_environment_storage.test.name
1817+
mount_options = "dir_mode=0777,file_mode=0666"
18151818
}
18161819
18171820
min_replicas = 2
@@ -1935,9 +1938,10 @@ resource "azurerm_container_app" "test" {
19351938
}
19361939
19371940
volume {
1938-
name = azurerm_container_app_environment_storage.test.name
1939-
storage_type = "AzureFile"
1940-
storage_name = azurerm_container_app_environment_storage.test.name
1941+
name = azurerm_container_app_environment_storage.test.name
1942+
storage_type = "AzureFile"
1943+
storage_name = azurerm_container_app_environment_storage.test.name
1944+
mount_options = "dir_mode=0777,file_mode=0666"
19411945
}
19421946
19431947
min_replicas = 2
@@ -2060,9 +2064,10 @@ resource "azurerm_container_app" "test" {
20602064
}
20612065
20622066
volume {
2063-
name = azurerm_container_app_environment_storage.test.name
2064-
storage_type = "AzureFile"
2065-
storage_name = azurerm_container_app_environment_storage.test.name
2067+
name = azurerm_container_app_environment_storage.test.name
2068+
storage_type = "AzureFile"
2069+
storage_name = azurerm_container_app_environment_storage.test.name
2070+
mount_options = "dir_mode=0777,file_mode=0666"
20662071
}
20672072
20682073
min_replicas = 2
@@ -2168,9 +2173,10 @@ resource "azurerm_container_app" "test" {
21682173
}
21692174
21702175
volume {
2171-
name = azurerm_container_app_environment_storage.test.name
2172-
storage_type = "AzureFile"
2173-
storage_name = azurerm_container_app_environment_storage.test.name
2176+
name = azurerm_container_app_environment_storage.test.name
2177+
storage_type = "AzureFile"
2178+
storage_name = azurerm_container_app_environment_storage.test.name
2179+
mount_options = "dir_mode=0777,file_mode=0666"
21742180
}
21752181
21762182
max_replicas = 4
@@ -2289,9 +2295,10 @@ resource "azurerm_container_app" "test" {
22892295
}
22902296
22912297
volume {
2292-
name = azurerm_container_app_environment_storage.test.name
2293-
storage_type = "AzureFile"
2294-
storage_name = azurerm_container_app_environment_storage.test.name
2298+
name = azurerm_container_app_environment_storage.test.name
2299+
storage_type = "AzureFile"
2300+
storage_name = azurerm_container_app_environment_storage.test.name
2301+
mount_options = "dir_mode=0777,file_mode=0666"
22952302
}
22962303
22972304
min_replicas = 1

internal/services/containerapps/helpers/container_app_job.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,9 @@ func expandContainerAppJobVolumes(input []ContainerVolume) *[]jobs.Volume {
499499
storageType := jobs.StorageType(v.StorageType)
500500
volume.StorageType = &storageType
501501
}
502+
if v.MountOptions != "" {
503+
volume.MountOptions = pointer.To(v.MountOptions)
504+
}
502505
volumes = append(volumes, volume)
503506
}
504507

@@ -839,6 +842,9 @@ func flattenContainerAppJobVolumes(input *[]jobs.Volume) []ContainerVolume {
839842
if v.StorageType != nil {
840843
containerVolume.StorageType = string(*v.StorageType)
841844
}
845+
if v.MountOptions != nil {
846+
containerVolume.MountOptions = pointer.From(v.MountOptions)
847+
}
842848

843849
result = append(result, containerVolume)
844850
}

internal/services/containerapps/helpers/container_apps.go

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,9 +1448,10 @@ func flattenContainerAppContainers(input *[]containerapps.Container) []Container
14481448
}
14491449

14501450
type ContainerVolume struct {
1451-
Name string `tfschema:"name"`
1452-
StorageName string `tfschema:"storage_name"`
1453-
StorageType string `tfschema:"storage_type"`
1451+
Name string `tfschema:"name"`
1452+
StorageName string `tfschema:"storage_name"`
1453+
StorageType string `tfschema:"storage_type"`
1454+
MountOptions string `tfschema:"mount_options"`
14541455
}
14551456

14561457
func ContainerVolumeSchema() *pluginsdk.Schema {
@@ -1483,6 +1484,13 @@ func ContainerVolumeSchema() *pluginsdk.Schema {
14831484
ValidateFunc: validate.ManagedEnvironmentStorageName,
14841485
Description: "The name of the `AzureFile` storage. Required when `storage_type` is `AzureFile`",
14851486
},
1487+
1488+
"mount_options": {
1489+
Type: pluginsdk.TypeString,
1490+
Optional: true,
1491+
ValidateFunc: validation.StringIsNotEmpty,
1492+
Description: "Mount options used while mounting the AzureFile. Must be a comma-separated string.",
1493+
},
14861494
},
14871495
},
14881496
}
@@ -1508,6 +1516,11 @@ func ContainerVolumeSchemaComputed() *pluginsdk.Schema {
15081516
Type: pluginsdk.TypeString,
15091517
Computed: true,
15101518
},
1519+
1520+
"mount_options": {
1521+
Type: pluginsdk.TypeString,
1522+
Computed: true,
1523+
},
15111524
},
15121525
},
15131526
}
@@ -1531,6 +1544,9 @@ func expandContainerAppVolumes(input []ContainerVolume) *[]containerapps.Volume
15311544
storageType := containerapps.StorageType(v.StorageType)
15321545
volume.StorageType = &storageType
15331546
}
1547+
if v.MountOptions != "" {
1548+
volume.MountOptions = pointer.To(v.MountOptions)
1549+
}
15341550
volumes = append(volumes, volume)
15351551
}
15361552

@@ -1551,6 +1567,9 @@ func flattenContainerAppVolumes(input *[]containerapps.Volume) []ContainerVolume
15511567
if v.StorageType != nil {
15521568
containerVolume.StorageType = string(*v.StorageType)
15531569
}
1570+
if v.MountOptions != nil {
1571+
containerVolume.MountOptions = pointer.From(v.MountOptions)
1572+
}
15541573

15551574
result = append(result, containerVolume)
15561575
}

website/docs/d/container_app.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ A `volume` block supports the following:
9393

9494
* `storage_type` - The type of storage volume. Possible values include `AzureFile` and `EmptyDir`. Defaults to `EmptyDir`.
9595

96+
* `mount_options` - Mount options used while mounting the AzureFile.
97+
9698
---
9799

98100
A `init_container` block supports the following:

website/docs/r/container_app.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,8 @@ A `volume` block supports the following:
190190

191191
* `storage_type` - (Optional) The type of storage volume. Possible values are `AzureFile`, `EmptyDir` and `Secret`. Defaults to `EmptyDir`.
192192

193+
* `mount_options` - Mount options used while mounting the AzureFile. Must be a comma-separated string e.g. `dir_mode=0751,file_mode=0751`.
194+
193195
---
194196

195197
An `init_container` block supports:

website/docs/r/container_app_job.html.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ A `volume` block supports the following:
306306

307307
* `storage_name` - (Optional) The name of the storage to use for the volume.
308308

309+
* `mount_options` - Mount options used while mounting the AzureFile. Must be a comma-separated string e.g. `dir_mode=0751,file_mode=0751`.
310+
309311
---
310312

311313
A `secret` block supports the following:

0 commit comments

Comments
 (0)