From eb0cf2e3eaf4a7d4ad4561cc3cedd9c781038c1b Mon Sep 17 00:00:00 2001 From: Alexander Sehr Date: Tue, 4 Feb 2025 23:46:50 +0100 Subject: [PATCH] fix: NetApp - Added missing param passthru (#4365) ## Description Added missing param passthru Updated API version RemotePath property added for migration cc: @Salima-90 (thanks for raising the issue) ## Pipeline Reference | Pipeline | | -------- | | [![avm.res.net-app.net-app-account](https://github.com/Azure/bicep-registry-modules/actions/workflows/avm.res.net-app.net-app-account.yml/badge.svg?branch=users%2Falsehr%2FnetAppMissingVolumeType&event=workflow_dispatch)](https://github.com/Azure/bicep-registry-modules/actions/workflows/avm.res.net-app.net-app-account.yml) | ## Type of Change - [ ] Update to CI Environment or utilities (Non-module affecting changes) - [x] Azure Verified Module updates: - [x] Bugfix containing backwards-compatible bug fixes, and I have NOT bumped the MAJOR or MINOR version in `version.json`: - [ ] Someone has opened a bug report issue, and I have included "Closes #{bug_report_issue_number}" in the PR description. - [ ] The bug was found by the module author, and no one has opened an issue to report it yet. - [ ] Feature update backwards compatible feature updates, and I have bumped the MINOR version in `version.json`. - [ ] Breaking changes and I have bumped the MAJOR version in `version.json`. - [ ] Update to documentation --- avm/res/net-app/net-app-account/README.md | 60 ++++++- .../net-app-account/backup-policies/README.md | 2 +- .../backup-policies/main.bicep | 4 +- .../net-app-account/backup-policies/main.json | 4 +- .../net-app-account/backup-vault/README.md | 4 +- .../backup-vault/backup/README.md | 2 +- .../backup-vault/backup/main.bicep | 8 +- .../backup-vault/backup/main.json | 10 +- .../net-app-account/backup-vault/main.bicep | 4 +- .../net-app-account/backup-vault/main.json | 18 +- .../net-app-account/capacity-pool/README.md | 52 +++++- .../net-app-account/capacity-pool/main.bicep | 8 + .../net-app-account/capacity-pool/main.json | 86 ++++++++- .../capacity-pool/volume/README.md | 44 ++++- .../capacity-pool/volume/main.bicep | 15 +- .../capacity-pool/volume/main.json | 35 +++- avm/res/net-app/net-app-account/main.bicep | 2 +- avm/res/net-app/net-app-account/main.json | 166 +++++++++++++++--- 18 files changed, 450 insertions(+), 74 deletions(-) diff --git a/avm/res/net-app/net-app-account/README.md b/avm/res/net-app/net-app-account/README.md index ced70ad857..514345e5bc 100644 --- a/avm/res/net-app/net-app-account/README.md +++ b/avm/res/net-app/net-app-account/README.md @@ -17,12 +17,12 @@ This module deploys an Azure NetApp File. | :-- | :-- | | `Microsoft.Authorization/locks` | [2020-05-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2020-05-01/locks) | | `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) | -| `Microsoft.NetApp/netAppAccounts` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts) | -| `Microsoft.NetApp/netAppAccounts/backupPolicies` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupPolicies) | -| `Microsoft.NetApp/netAppAccounts/backupVaults` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupVaults) | -| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupVaults/backups) | +| `Microsoft.NetApp/netAppAccounts` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts) | +| `Microsoft.NetApp/netAppAccounts/backupPolicies` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupPolicies) | +| `Microsoft.NetApp/netAppAccounts/backupVaults` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupVaults) | +| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupVaults/backups) | | `Microsoft.NetApp/netAppAccounts/capacityPools` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/capacityPools) | -| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/capacityPools/volumes) | +| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/capacityPools/volumes) | | `Microsoft.NetApp/netAppAccounts/snapshotPolicies` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/snapshotPolicies) | ## Usage examples @@ -1633,6 +1633,7 @@ List of volumes to create in the capacity pool. | [`smbContinuouslyAvailable`](#parameter-capacitypoolsvolumessmbcontinuouslyavailable) | bool | Enables continuously available share property for SMB volume. Only applicable for SMB volume. | | [`smbEncryption`](#parameter-capacitypoolsvolumessmbencryption) | bool | Enables SMB encryption. Only applicable for SMB/DualProtocol volume. | | [`smbNonBrowsable`](#parameter-capacitypoolsvolumessmbnonbrowsable) | string | Enables non-browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume. | +| [`volumeType`](#parameter-capacitypoolsvolumesvolumetype) | string | The type of the volume. DataProtection volumes are used for replication. | | [`zones`](#parameter-capacitypoolsvolumeszones) | array | Zone where the volume will be placed. | ### Parameter: `capacityPools.volumes.name` @@ -1751,6 +1752,12 @@ Replication properties. | [`remoteVolumeResourceId`](#parameter-capacitypoolsvolumesdataprotectionreplicationremotevolumeresourceid) | string | The resource ID of the remote volume. | | [`replicationSchedule`](#parameter-capacitypoolsvolumesdataprotectionreplicationreplicationschedule) | string | The replication schedule for the volume. | +**Optional parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`remotePath`](#parameter-capacitypoolsvolumesdataprotectionreplicationremotepath) | object | The full path to a volume that is to be migrated into ANF. Required for Migration volumes. | + ### Parameter: `capacityPools.volumes.dataProtection.replication.endpointType` Indicates whether the local volume is the source or destination for the Volume Replication. @@ -1794,6 +1801,42 @@ The replication schedule for the volume. ] ``` +### Parameter: `capacityPools.volumes.dataProtection.replication.remotePath` + +The full path to a volume that is to be migrated into ANF. Required for Migration volumes. + +- Required: No +- Type: object + +**Required parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`externalHostName`](#parameter-capacitypoolsvolumesdataprotectionreplicationremotepathexternalhostname) | string | The Path to a ONTAP Host. | +| [`serverName`](#parameter-capacitypoolsvolumesdataprotectionreplicationremotepathservername) | string | The name of a server on the ONTAP Host. | +| [`volumeName`](#parameter-capacitypoolsvolumesdataprotectionreplicationremotepathvolumename) | string | The name of a volume on the server. | + +### Parameter: `capacityPools.volumes.dataProtection.replication.remotePath.externalHostName` + +The Path to a ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `capacityPools.volumes.dataProtection.replication.remotePath.serverName` + +The name of a server on the ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `capacityPools.volumes.dataProtection.replication.remotePath.volumeName` + +The name of a volume on the server. + +- Required: Yes +- Type: string + ### Parameter: `capacityPools.volumes.dataProtection.snapshot` Snapshot properties. @@ -2169,6 +2212,13 @@ Enables non-browsable property for SMB Shares. Only applicable for SMB/DualProto ] ``` +### Parameter: `capacityPools.volumes.volumeType` + +The type of the volume. DataProtection volumes are used for replication. + +- Required: No +- Type: string + ### Parameter: `capacityPools.volumes.zones` Zone where the volume will be placed. diff --git a/avm/res/net-app/net-app-account/backup-policies/README.md b/avm/res/net-app/net-app-account/backup-policies/README.md index f575f4f788..a4a644ab10 100644 --- a/avm/res/net-app/net-app-account/backup-policies/README.md +++ b/avm/res/net-app/net-app-account/backup-policies/README.md @@ -12,7 +12,7 @@ This module deploys a Backup Policy for Azure NetApp File. | Resource Type | API Version | | :-- | :-- | -| `Microsoft.NetApp/netAppAccounts/backupPolicies` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupPolicies) | +| `Microsoft.NetApp/netAppAccounts/backupPolicies` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupPolicies) | ## Parameters diff --git a/avm/res/net-app/net-app-account/backup-policies/main.bicep b/avm/res/net-app/net-app-account/backup-policies/main.bicep index 561876f59f..61e25a4721 100644 --- a/avm/res/net-app/net-app-account/backup-policies/main.bicep +++ b/avm/res/net-app/net-app-account/backup-policies/main.bicep @@ -24,11 +24,11 @@ param weeklyBackupsToKeep int = 0 @description('Optional. Indicates whether the backup policy is enabled.') param enabled bool = true -resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-03-01' existing = { +resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-07-01' existing = { name: netAppAccountName } -resource backupPolicies 'Microsoft.NetApp/netAppAccounts/backupPolicies@2024-03-01' = { +resource backupPolicies 'Microsoft.NetApp/netAppAccounts/backupPolicies@2024-07-01' = { name: name parent: netAppAccount location: location diff --git a/avm/res/net-app/net-app-account/backup-policies/main.json b/avm/res/net-app/net-app-account/backup-policies/main.json index 2b6c463c6b..a77278bec5 100644 --- a/avm/res/net-app/net-app-account/backup-policies/main.json +++ b/avm/res/net-app/net-app-account/backup-policies/main.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "1799863578493793686" + "templateHash": "7141176618644423280" }, "name": "Azure NetApp Files Backup Policy", "description": "This module deploys a Backup Policy for Azure NetApp File." @@ -65,7 +65,7 @@ "resources": [ { "type": "Microsoft.NetApp/netAppAccounts/backupPolicies", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('name'))]", "location": "[parameters('location')]", "properties": { diff --git a/avm/res/net-app/net-app-account/backup-vault/README.md b/avm/res/net-app/net-app-account/backup-vault/README.md index 1a2fe38075..b800706df3 100644 --- a/avm/res/net-app/net-app-account/backup-vault/README.md +++ b/avm/res/net-app/net-app-account/backup-vault/README.md @@ -12,8 +12,8 @@ This module deploys a NetApp Files Backup Vault. | Resource Type | API Version | | :-- | :-- | -| `Microsoft.NetApp/netAppAccounts/backupVaults` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupVaults) | -| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupVaults/backups) | +| `Microsoft.NetApp/netAppAccounts/backupVaults` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupVaults) | +| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupVaults/backups) | ## Parameters diff --git a/avm/res/net-app/net-app-account/backup-vault/backup/README.md b/avm/res/net-app/net-app-account/backup-vault/backup/README.md index 5769fd7385..05f791c950 100644 --- a/avm/res/net-app/net-app-account/backup-vault/backup/README.md +++ b/avm/res/net-app/net-app-account/backup-vault/backup/README.md @@ -12,7 +12,7 @@ This module deploys a backup of a NetApp Files Volume. | Resource Type | API Version | | :-- | :-- | -| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/backupVaults/backups) | +| `Microsoft.NetApp/netAppAccounts/backupVaults/backups` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/backupVaults/backups) | ## Parameters diff --git a/avm/res/net-app/net-app-account/backup-vault/backup/main.bicep b/avm/res/net-app/net-app-account/backup-vault/backup/main.bicep index accde9c313..4532249c51 100644 --- a/avm/res/net-app/net-app-account/backup-vault/backup/main.bicep +++ b/avm/res/net-app/net-app-account/backup-vault/backup/main.bicep @@ -22,14 +22,14 @@ param volumeName string @description('Required. The name of the capacity pool containing the volume.') param capacityPoolName string -resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-03-01' existing = { +resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-07-01' existing = { name: netAppAccountName - resource backupVault 'backupVaults@2024-03-01' existing = { + resource backupVault 'backupVaults@2024-07-01' existing = { name: backupVaultName } - resource remoteCapacityPool 'capacityPools@2024-03-01' existing = { + resource remoteCapacityPool 'capacityPools@2024-07-01' existing = { name: capacityPoolName resource volume 'volumes@2024-07-01' existing = { @@ -38,7 +38,7 @@ resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-03-01' existing = { } } -resource backup 'Microsoft.NetApp/netAppAccounts/backupVaults/backups@2024-03-01' = { +resource backup 'Microsoft.NetApp/netAppAccounts/backupVaults/backups@2024-07-01' = { name: name parent: netAppAccount::backupVault properties: { diff --git a/avm/res/net-app/net-app-account/backup-vault/backup/main.json b/avm/res/net-app/net-app-account/backup-vault/backup/main.json index fa434a3da1..5257b0d5ab 100644 --- a/avm/res/net-app/net-app-account/backup-vault/backup/main.json +++ b/avm/res/net-app/net-app-account/backup-vault/backup/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "10519572323483923146" + "templateHash": "3948084235912412629" }, "name": "Azure NetApp Files Volume Backup", "description": "This module deploys a backup of a NetApp Files Volume." @@ -68,24 +68,24 @@ "netAppAccount::backupVault": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('backupVaultName'))]" }, "netAppAccount::remoteCapacityPool": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/capacityPools", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('capacityPoolName'))]" }, "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backup": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults/backups", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('backupVaultName'), parameters('name'))]", "properties": { "label": "[parameters('label')]", diff --git a/avm/res/net-app/net-app-account/backup-vault/main.bicep b/avm/res/net-app/net-app-account/backup-vault/main.bicep index 7ad087ceb6..bf683b0690 100644 --- a/avm/res/net-app/net-app-account/backup-vault/main.bicep +++ b/avm/res/net-app/net-app-account/backup-vault/main.bicep @@ -13,11 +13,11 @@ param netAppAccountName string @description('Optional. The list of backups to create.') param backups backupType[]? -resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-03-01' existing = { +resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-07-01' existing = { name: netAppAccountName } -resource backupVault 'Microsoft.NetApp/netAppAccounts/backupVaults@2024-03-01' = { +resource backupVault 'Microsoft.NetApp/netAppAccounts/backupVaults@2024-07-01' = { name: name parent: netAppAccount location: location diff --git a/avm/res/net-app/net-app-account/backup-vault/main.json b/avm/res/net-app/net-app-account/backup-vault/main.json index 20b96fb9a2..7a827614d8 100644 --- a/avm/res/net-app/net-app-account/backup-vault/main.json +++ b/avm/res/net-app/net-app-account/backup-vault/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "1432647773332765235" + "templateHash": "9738469557677047438" }, "name": "Azure NetApp Files Volume Backup Vault", "description": "This module deploys a NetApp Files Backup Vault." @@ -91,12 +91,12 @@ "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backupVault": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('name'))]", "location": "[parameters('location')]", "properties": {} @@ -145,7 +145,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "10519572323483923146" + "templateHash": "3948084235912412629" }, "name": "Azure NetApp Files Volume Backup", "description": "This module deploys a backup of a NetApp Files Volume." @@ -207,24 +207,24 @@ "netAppAccount::backupVault": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('backupVaultName'))]" }, "netAppAccount::remoteCapacityPool": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/capacityPools", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('capacityPoolName'))]" }, "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backup": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults/backups", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('backupVaultName'), parameters('name'))]", "properties": { "label": "[parameters('label')]", @@ -290,7 +290,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('backupVault', '2024-03-01', 'full').location]" + "value": "[reference('backupVault', '2024-07-01', 'full').location]" } } } \ No newline at end of file diff --git a/avm/res/net-app/net-app-account/capacity-pool/README.md b/avm/res/net-app/net-app-account/capacity-pool/README.md index 120723a2df..2d5f2b7bd1 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/README.md +++ b/avm/res/net-app/net-app-account/capacity-pool/README.md @@ -15,7 +15,7 @@ This module deploys an Azure NetApp Files Capacity Pool. | :-- | :-- | | `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) | | `Microsoft.NetApp/netAppAccounts/capacityPools` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/capacityPools) | -| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/capacityPools/volumes) | +| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/capacityPools/volumes) | ## Parameters @@ -275,6 +275,7 @@ List of volumes to create in the capacity pool. | [`smbContinuouslyAvailable`](#parameter-volumessmbcontinuouslyavailable) | bool | Enables continuously available share property for SMB volume. Only applicable for SMB volume. | | [`smbEncryption`](#parameter-volumessmbencryption) | bool | Enables SMB encryption. Only applicable for SMB/DualProtocol volume. | | [`smbNonBrowsable`](#parameter-volumessmbnonbrowsable) | string | Enables non-browsable property for SMB Shares. Only applicable for SMB/DualProtocol volume. | +| [`volumeType`](#parameter-volumesvolumetype) | string | The type of the volume. DataProtection volumes are used for replication. | | [`zones`](#parameter-volumeszones) | array | Zone where the volume will be placed. | ### Parameter: `volumes.name` @@ -393,6 +394,12 @@ Replication properties. | [`remoteVolumeResourceId`](#parameter-volumesdataprotectionreplicationremotevolumeresourceid) | string | The resource ID of the remote volume. | | [`replicationSchedule`](#parameter-volumesdataprotectionreplicationreplicationschedule) | string | The replication schedule for the volume. | +**Optional parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`remotePath`](#parameter-volumesdataprotectionreplicationremotepath) | object | The full path to a volume that is to be migrated into ANF. Required for Migration volumes. | + ### Parameter: `volumes.dataProtection.replication.endpointType` Indicates whether the local volume is the source or destination for the Volume Replication. @@ -436,6 +443,42 @@ The replication schedule for the volume. ] ``` +### Parameter: `volumes.dataProtection.replication.remotePath` + +The full path to a volume that is to be migrated into ANF. Required for Migration volumes. + +- Required: No +- Type: object + +**Required parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`externalHostName`](#parameter-volumesdataprotectionreplicationremotepathexternalhostname) | string | The Path to a ONTAP Host. | +| [`serverName`](#parameter-volumesdataprotectionreplicationremotepathservername) | string | The name of a server on the ONTAP Host. | +| [`volumeName`](#parameter-volumesdataprotectionreplicationremotepathvolumename) | string | The name of a volume on the server. | + +### Parameter: `volumes.dataProtection.replication.remotePath.externalHostName` + +The Path to a ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `volumes.dataProtection.replication.remotePath.serverName` + +The name of a server on the ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `volumes.dataProtection.replication.remotePath.volumeName` + +The name of a volume on the server. + +- Required: Yes +- Type: string + ### Parameter: `volumes.dataProtection.snapshot` Snapshot properties. @@ -811,6 +854,13 @@ Enables non-browsable property for SMB Shares. Only applicable for SMB/DualProto ] ``` +### Parameter: `volumes.volumeType` + +The type of the volume. DataProtection volumes are used for replication. + +- Required: No +- Type: string + ### Parameter: `volumes.zones` Zone where the volume will be placed. diff --git a/avm/res/net-app/net-app-account/capacity-pool/main.bicep b/avm/res/net-app/net-app-account/capacity-pool/main.bicep index 216cf0e333..69d3185518 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/main.bicep +++ b/avm/res/net-app/net-app-account/capacity-pool/main.bicep @@ -116,6 +116,11 @@ module capacityPool_volumes 'volume/main.bicep' = [ encryptionKeySource: volume.?encryptionKeySource ?? 'Microsoft.NetApp' keyVaultPrivateEndpointResourceId: volume.?keyVaultPrivateEndpointResourceId dataProtection: volume.?dataProtection + kerberosEnabled: volume.?kerberosEnabled + smbContinuouslyAvailable: volume.?smbContinuouslyAvailable + smbEncryption: volume.?smbEncryption + smbNonBrowsable: volume.?smbNonBrowsable + volumeType: volume.?volumeType } } ] @@ -223,4 +228,7 @@ type volumeType = { @description('Optional. Define if a volume is KerberosEnabled.') kerberosEnabled: bool? + + @description('Optional. The type of the volume. DataProtection volumes are used for replication.') + volumeType: string? } diff --git a/avm/res/net-app/net-app-account/capacity-pool/main.json b/avm/res/net-app/net-app-account/capacity-pool/main.json index 24da0da165..1baa0db593 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/main.json +++ b/avm/res/net-app/net-app-account/capacity-pool/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "2539920372355196545" + "templateHash": "10620001426687567729" }, "name": "Azure NetApp Files Capacity Pools", "description": "This module deploys an Azure NetApp Files Capacity Pool." @@ -183,6 +183,13 @@ "metadata": { "description": "Optional. Define if a volume is KerberosEnabled." } + }, + "volumeType": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The type of the volume. DataProtection volumes are used for replication." + } } }, "metadata": { @@ -254,6 +261,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -735,6 +769,21 @@ }, "dataProtection": { "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'dataProtection')]" + }, + "kerberosEnabled": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'kerberosEnabled')]" + }, + "smbContinuouslyAvailable": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbContinuouslyAvailable')]" + }, + "smbEncryption": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbEncryption')]" + }, + "smbNonBrowsable": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbNonBrowsable')]" + }, + "volumeType": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'volumeType')]" } }, "template": { @@ -745,7 +794,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "8045934107791458590" + "templateHash": "14921990871750776609" }, "name": "Azure NetApp Files Capacity Pool Volumes", "description": "This module deploys an Azure NetApp Files Capacity Pool Volume." @@ -816,6 +865,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -1348,10 +1424,10 @@ }, "volume": { "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('capacityPoolName'), parameters('name'))]", "location": "[parameters('location')]", - "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", + "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule'), 'remotePath', tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remotePath')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", "zones": "[map(parameters('zones'), lambda('zone', format('{0}', lambdaVariables('zone'))))]" }, "volume_roleAssignments": { @@ -1404,7 +1480,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('volume', '2024-03-01', 'full').location]" + "value": "[reference('volume', '2024-07-01', 'full').location]" } } } diff --git a/avm/res/net-app/net-app-account/capacity-pool/volume/README.md b/avm/res/net-app/net-app-account/capacity-pool/volume/README.md index c6cc4dd229..2b4a0116b2 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/volume/README.md +++ b/avm/res/net-app/net-app-account/capacity-pool/volume/README.md @@ -14,7 +14,7 @@ This module deploys an Azure NetApp Files Capacity Pool Volume. | Resource Type | API Version | | :-- | :-- | | `Microsoft.Authorization/roleAssignments` | [2022-04-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.Authorization/2022-04-01/roleAssignments) | -| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-03-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-03-01/netAppAccounts/capacityPools/volumes) | +| `Microsoft.NetApp/netAppAccounts/capacityPools/volumes` | [2024-07-01](https://learn.microsoft.com/en-us/azure/templates/Microsoft.NetApp/2024-07-01/netAppAccounts/capacityPools/volumes) | ## Parameters @@ -196,6 +196,12 @@ Replication properties. | [`remoteVolumeResourceId`](#parameter-dataprotectionreplicationremotevolumeresourceid) | string | The resource ID of the remote volume. | | [`replicationSchedule`](#parameter-dataprotectionreplicationreplicationschedule) | string | The replication schedule for the volume. | +**Optional parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`remotePath`](#parameter-dataprotectionreplicationremotepath) | object | The full path to a volume that is to be migrated into ANF. Required for Migration volumes. | + ### Parameter: `dataProtection.replication.endpointType` Indicates whether the local volume is the source or destination for the Volume Replication. @@ -239,6 +245,42 @@ The replication schedule for the volume. ] ``` +### Parameter: `dataProtection.replication.remotePath` + +The full path to a volume that is to be migrated into ANF. Required for Migration volumes. + +- Required: No +- Type: object + +**Required parameters** + +| Parameter | Type | Description | +| :-- | :-- | :-- | +| [`externalHostName`](#parameter-dataprotectionreplicationremotepathexternalhostname) | string | The Path to a ONTAP Host. | +| [`serverName`](#parameter-dataprotectionreplicationremotepathservername) | string | The name of a server on the ONTAP Host. | +| [`volumeName`](#parameter-dataprotectionreplicationremotepathvolumename) | string | The name of a volume on the server. | + +### Parameter: `dataProtection.replication.remotePath.externalHostName` + +The Path to a ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `dataProtection.replication.remotePath.serverName` + +The name of a server on the ONTAP Host. + +- Required: Yes +- Type: string + +### Parameter: `dataProtection.replication.remotePath.volumeName` + +The name of a volume on the server. + +- Required: Yes +- Type: string + ### Parameter: `dataProtection.snapshot` Snapshot properties. diff --git a/avm/res/net-app/net-app-account/capacity-pool/volume/main.bicep b/avm/res/net-app/net-app-account/capacity-pool/volume/main.bicep index 8d8b520830..ae948d7639 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/volume/main.bicep +++ b/avm/res/net-app/net-app-account/capacity-pool/volume/main.bicep @@ -168,7 +168,7 @@ resource vnet 'Microsoft.Network/virtualNetworks@2024-03-01' existing = { } } -resource volume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2024-03-01' = { +resource volume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2024-07-01' = { name: name parent: netAppAccount::capacityPool location: location @@ -195,6 +195,7 @@ resource volume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2024-03-0 remoteVolumeRegion: remoteNetAppAccount::remoteCapacityPool::remoteVolume.id remoteVolumeResourceId: dataProtection.?replication!.remoteVolumeResourceId replicationSchedule: dataProtection.?replication!.replicationSchedule + remotePath: dataProtection.?replication!.?remotePath } : {} backup: !empty(dataProtection.?backup) @@ -283,6 +284,18 @@ type replicationType = { @description('Required. The replication schedule for the volume.') replicationSchedule: ('_10minutely' | 'daily' | 'hourly') + + @description('Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes.') + remotePath: { + @description('Required. The Path to a ONTAP Host.') + externalHostName: string + + @description('Required. The name of a server on the ONTAP Host.') + serverName: string + + @description('Required. The name of a volume on the server.') + volumeName: string + }? } @description('The type for the backup properties.') diff --git a/avm/res/net-app/net-app-account/capacity-pool/volume/main.json b/avm/res/net-app/net-app-account/capacity-pool/volume/main.json index fbc1d6f298..d68b83a31c 100644 --- a/avm/res/net-app/net-app-account/capacity-pool/volume/main.json +++ b/avm/res/net-app/net-app-account/capacity-pool/volume/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "8045934107791458590" + "templateHash": "14921990871750776609" }, "name": "Azure NetApp Files Capacity Pool Volumes", "description": "This module deploys an Azure NetApp Files Capacity Pool Volume." @@ -77,6 +77,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -609,10 +636,10 @@ }, "volume": { "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('capacityPoolName'), parameters('name'))]", "location": "[parameters('location')]", - "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", + "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule'), 'remotePath', tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remotePath')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", "zones": "[map(parameters('zones'), lambda('zone', format('{0}', lambdaVariables('zone'))))]" }, "volume_roleAssignments": { @@ -665,7 +692,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('volume', '2024-03-01', 'full').location]" + "value": "[reference('volume', '2024-07-01', 'full').location]" } } } \ No newline at end of file diff --git a/avm/res/net-app/net-app-account/main.bicep b/avm/res/net-app/net-app-account/main.bicep index d6be205c6e..0830edb906 100644 --- a/avm/res/net-app/net-app-account/main.bicep +++ b/avm/res/net-app/net-app-account/main.bicep @@ -176,7 +176,7 @@ resource cMKUserAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentiti ) } -resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-03-01' = { +resource netAppAccount 'Microsoft.NetApp/netAppAccounts@2024-07-01' = { name: name tags: tags identity: identity diff --git a/avm/res/net-app/net-app-account/main.json b/avm/res/net-app/net-app-account/main.json index c22e363075..3d2ef51806 100644 --- a/avm/res/net-app/net-app-account/main.json +++ b/avm/res/net-app/net-app-account/main.json @@ -6,7 +6,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "6509519164461633683" + "templateHash": "15376852435816415720" }, "name": "Azure NetApp Files", "description": "This module deploys an Azure NetApp File." @@ -461,6 +461,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -989,6 +1016,13 @@ "metadata": { "description": "Optional. Define if a volume is KerberosEnabled." } + }, + "volumeType": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The type of the volume. DataProtection volumes are used for replication." + } } }, "metadata": { @@ -1329,7 +1363,7 @@ }, "netAppAccount": { "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('name')]", "tags": "[parameters('tags')]", "identity": "[variables('identity')]", @@ -1421,7 +1455,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "1799863578493793686" + "templateHash": "7141176618644423280" }, "name": "Azure NetApp Files Backup Policy", "description": "This module deploys a Backup Policy for Azure NetApp File." @@ -1481,7 +1515,7 @@ "resources": [ { "type": "Microsoft.NetApp/netAppAccounts/backupPolicies", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('name'))]", "location": "[parameters('location')]", "properties": { @@ -1884,7 +1918,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "1432647773332765235" + "templateHash": "9738469557677047438" }, "name": "Azure NetApp Files Volume Backup Vault", "description": "This module deploys a NetApp Files Backup Vault." @@ -1969,12 +2003,12 @@ "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backupVault": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('name'))]", "location": "[parameters('location')]", "properties": {} @@ -2023,7 +2057,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "10519572323483923146" + "templateHash": "3948084235912412629" }, "name": "Azure NetApp Files Volume Backup", "description": "This module deploys a backup of a NetApp Files Volume." @@ -2085,24 +2119,24 @@ "netAppAccount::backupVault": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('backupVaultName'))]" }, "netAppAccount::remoteCapacityPool": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/capacityPools", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('capacityPoolName'))]" }, "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backup": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults/backups", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('backupVaultName'), parameters('name'))]", "properties": { "label": "[parameters('label')]", @@ -2168,7 +2202,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('backupVault', '2024-03-01', 'full').location]" + "value": "[reference('backupVault', '2024-07-01', 'full').location]" } } } @@ -2233,7 +2267,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "2539920372355196545" + "templateHash": "10620001426687567729" }, "name": "Azure NetApp Files Capacity Pools", "description": "This module deploys an Azure NetApp Files Capacity Pool." @@ -2410,6 +2444,13 @@ "metadata": { "description": "Optional. Define if a volume is KerberosEnabled." } + }, + "volumeType": { + "type": "string", + "nullable": true, + "metadata": { + "description": "Optional. The type of the volume. DataProtection volumes are used for replication." + } } }, "metadata": { @@ -2481,6 +2522,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -2962,6 +3030,21 @@ }, "dataProtection": { "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'dataProtection')]" + }, + "kerberosEnabled": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'kerberosEnabled')]" + }, + "smbContinuouslyAvailable": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbContinuouslyAvailable')]" + }, + "smbEncryption": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbEncryption')]" + }, + "smbNonBrowsable": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'smbNonBrowsable')]" + }, + "volumeType": { + "value": "[tryGet(coalesce(parameters('volumes'), createArray())[copyIndex()], 'volumeType')]" } }, "template": { @@ -2972,7 +3055,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "8045934107791458590" + "templateHash": "14921990871750776609" }, "name": "Azure NetApp Files Capacity Pool Volumes", "description": "This module deploys an Azure NetApp Files Capacity Pool Volume." @@ -3043,6 +3126,33 @@ "metadata": { "description": "Required. The replication schedule for the volume." } + }, + "remotePath": { + "type": "object", + "properties": { + "externalHostName": { + "type": "string", + "metadata": { + "description": "Required. The Path to a ONTAP Host." + } + }, + "serverName": { + "type": "string", + "metadata": { + "description": "Required. The name of a server on the ONTAP Host." + } + }, + "volumeName": { + "type": "string", + "metadata": { + "description": "Required. The name of a volume on the server." + } + } + }, + "nullable": true, + "metadata": { + "description": "Optional. The full path to a volume that is to be migrated into ANF. Required for Migration volumes." + } } }, "metadata": { @@ -3575,10 +3685,10 @@ }, "volume": { "type": "Microsoft.NetApp/netAppAccounts/capacityPools/volumes", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('capacityPoolName'), parameters('name'))]", "location": "[parameters('location')]", - "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", + "properties": "[shallowMerge(createArray(createObject('coolAccess', parameters('coolAccess'), 'coolAccessRetrievalPolicy', parameters('coolAccessRetrievalPolicy'), 'coolnessPeriod', parameters('coolnessPeriod'), 'encryptionKeySource', parameters('encryptionKeySource')), if(not(equals(parameters('encryptionKeySource'), 'Microsoft.NetApp')), createObject('keyVaultPrivateEndpointResourceId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '//'), '/')[2], split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), '////'), '/')[4]), 'Microsoft.Network/privateEndpoints', last(split(coalesce(parameters('keyVaultPrivateEndpointResourceId'), 'dummyVault'), '/')))), createObject()), if(not(empty(parameters('volumeType'))), createObject('volumeType', parameters('volumeType')), createObject()), createObject('dataProtection', if(not(empty(parameters('dataProtection'))), createObject('replication', if(not(empty(tryGet(parameters('dataProtection'), 'replication'))), createObject('endpointType', tryGet(parameters('dataProtection'), 'replication', 'endpointType'), 'remoteVolumeRegion', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[2], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '////'), '/')[4]), 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes', split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[8], split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), '//'), '/')[10], last(split(coalesce(tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remoteVolumeResourceId'), 'dummyvolume'), '/'))), 'remoteVolumeResourceId', tryGet(parameters('dataProtection'), 'replication', 'remoteVolumeResourceId'), 'replicationSchedule', tryGet(parameters('dataProtection'), 'replication', 'replicationSchedule'), 'remotePath', tryGet(tryGet(parameters('dataProtection'), 'replication'), 'remotePath')), createObject()), 'backup', if(not(empty(tryGet(parameters('dataProtection'), 'backup'))), createObject('backupPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/backupPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupPolicyName')), 'policyEnforced', coalesce(tryGet(parameters('dataProtection'), 'backup', 'policyEnforced'), false()), 'backupVaultId', resourceId('Microsoft.NetApp/netAppAccounts/backupVaults', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'backup', 'backupVaultName'))), createObject()), 'snapshot', if(not(empty(tryGet(parameters('dataProtection'), 'snapshot'))), createObject('snapshotPolicyId', resourceId('Microsoft.NetApp/netAppAccounts/snapshotPolicies', parameters('netAppAccountName'), tryGet(parameters('dataProtection'), 'snapshot', 'snapshotPolicyName'))), createObject())), null()), 'networkFeatures', parameters('networkFeatures'), 'serviceLevel', parameters('serviceLevel'), 'creationToken', parameters('creationToken'), 'usageThreshold', parameters('usageThreshold'), 'protocolTypes', parameters('protocolTypes'), 'subnetId', extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', split(parameters('subnetResourceId'), '/')[2], split(parameters('subnetResourceId'), '/')[4]), 'Microsoft.Network/virtualNetworks/subnets', split(parameters('subnetResourceId'), '/')[8], last(split(parameters('subnetResourceId'), '/'))), 'exportPolicy', parameters('exportPolicy'), 'smbContinuouslyAvailable', parameters('smbContinuouslyAvailable'), 'smbEncryption', parameters('smbEncryption'), 'smbNonBrowsable', parameters('smbNonBrowsable'), 'kerberosEnabled', parameters('kerberosEnabled'))))]", "zones": "[map(parameters('zones'), lambda('zone', format('{0}', lambdaVariables('zone'))))]" }, "volume_roleAssignments": { @@ -3631,7 +3741,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('volume', '2024-03-01', 'full').location]" + "value": "[reference('volume', '2024-07-01', 'full').location]" } } } @@ -3725,7 +3835,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "1432647773332765235" + "templateHash": "9738469557677047438" }, "name": "Azure NetApp Files Volume Backup Vault", "description": "This module deploys a NetApp Files Backup Vault." @@ -3810,12 +3920,12 @@ "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backupVault": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('name'))]", "location": "[parameters('location')]", "properties": {} @@ -3864,7 +3974,7 @@ "_generator": { "name": "bicep", "version": "0.33.13.18514", - "templateHash": "10519572323483923146" + "templateHash": "3948084235912412629" }, "name": "Azure NetApp Files Volume Backup", "description": "This module deploys a backup of a NetApp Files Volume." @@ -3926,24 +4036,24 @@ "netAppAccount::backupVault": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/backupVaults", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('backupVaultName'))]" }, "netAppAccount::remoteCapacityPool": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts/capacityPools", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}', parameters('netAppAccountName'), parameters('capacityPoolName'))]" }, "netAppAccount": { "existing": true, "type": "Microsoft.NetApp/netAppAccounts", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[parameters('netAppAccountName')]" }, "backup": { "type": "Microsoft.NetApp/netAppAccounts/backupVaults/backups", - "apiVersion": "2024-03-01", + "apiVersion": "2024-07-01", "name": "[format('{0}/{1}/{2}', parameters('netAppAccountName'), parameters('backupVaultName'), parameters('name'))]", "properties": { "label": "[parameters('label')]", @@ -4009,7 +4119,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('backupVault', '2024-03-01', 'full').location]" + "value": "[reference('backupVault', '2024-07-01', 'full').location]" } } } @@ -4047,7 +4157,7 @@ "metadata": { "description": "The location the resource was deployed into." }, - "value": "[reference('netAppAccount', '2024-03-01', 'full').location]" + "value": "[reference('netAppAccount', '2024-07-01', 'full').location]" }, "capacityPoolResourceIds": { "type": "array",