Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions bicep/anf.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@ import {tags_t, availabilityZone_t} from './types.bicep'
param name string
param location string
param tags tags_t
param availabilityZone availabilityZone_t[]
param availabilityZone availabilityZone_t[] = []
param resourcePostfix string = uniqueString(resourceGroup().id)
param subnetId string
param serviceLevel string
param sizeTiB int
param throughputMibps int = 0
param defaultMountOptions string
param infrastructureOnly bool = false
var capacity = sizeTiB * 1024 * 1024 * 1024 * 1024
Expand All @@ -17,24 +18,27 @@ resource anfAccount 'Microsoft.NetApp/netAppAccounts@2024-07-01' existing = if(!
name: 'hpcanfaccount-${take(resourcePostfix,10)}'
}

resource anfPool 'Microsoft.NetApp/netAppAccounts/capacityPools@2024-07-01' = if(!infrastructureOnly){
resource anfPool 'Microsoft.NetApp/netAppAccounts/capacityPools@2025-06-01' = if(!infrastructureOnly){
name: '${name}-anf-pool'
location: location
tags: tags
parent: anfAccount
properties: {
properties: union({
serviceLevel: serviceLevel
size: capacity
}
}, serviceLevel == 'Flexible' ? {
customThroughputMibps: throughputMibps
qosType: 'Manual'
} : {})
}

resource anfVolume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2024-07-01' = if(!infrastructureOnly){
resource anfVolume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2025-06-01' = if(!infrastructureOnly){
name: '${name}-anf-volume'
location: location
tags: tags
parent: anfPool
zones: length(availabilityZone) == 0 ? null : availabilityZone
properties: {
properties: union({
unixPermissions: '0755'
creationToken: '${name}-path'
serviceLevel: serviceLevel
Expand Down Expand Up @@ -65,7 +69,9 @@ resource anfVolume 'Microsoft.NetApp/netAppAccounts/capacityPools/volumes@2024-0
}
]
}
}
}, serviceLevel == 'Flexible' ? {
throughputMibps: throughputMibps
} : {})
}


Expand Down
1 change: 1 addition & 0 deletions bicep/ccw.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ module ccwANF 'anf.bicep' = [
subnetId: subnets[filer.key].id
serviceLevel: filer.value.anfServiceTier
sizeTiB: filer.value.anfCapacityInTiB
throughputMibps: filer.value.?anfFlexThroughputMiBps ?? 0
defaultMountOptions: anfDefaultMountOptions
availabilityZone: filer.value.?availabilityZone ?? []
infrastructureOnly: infrastructureOnly
Expand Down
1 change: 1 addition & 0 deletions bicep/types.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type shared_anf_new_t = {
type: 'anf-new'
anfServiceTier: string
anfCapacityInTiB: int
anfFlexThroughputMiBps: int?
availabilityZone: availabilityZone_t[]?
}

Expand Down
74 changes: 55 additions & 19 deletions uidefinitions/createUiDefinition.json
Original file line number Diff line number Diff line change
Expand Up @@ -500,22 +500,26 @@
"name": "anftier",
"type": "Microsoft.Common.DropDown",
"label": "Service Level",
"defaultValue": "Premium",
"defaultValue": "Premium (64 MiB/s per TiB)",
"multiselect": false,
"toolTip": "Service level for the Azure NetApp Files volume",
"toolTip": "Service level for the Azure NetApp Files volume with max. throughput",
"constraints": {
"allowedValues": [
{
"label": "Standard",
"label": "Standard (16 MiB/s per TiB)",
"value": "Standard"
},
{
"label": "Premium",
"label": "Premium (64 MiB/s per TiB)",
"value": "Premium"
},
{
"label": "Ultra",
"label": "Ultra (128 MiB/s per TiB)",
"value": "Ultra"
},
{
"label": "Flexible (custom throughput)",
"value": "Flexible"
}
],
"required": true
Expand All @@ -536,6 +540,21 @@
},
"visible": "[and(equals(steps('filesystem').shared.filertype,'anf'),equals(steps('filesystem').shared.newexisting,'new'))]"
},
{
"name": "anfFlexThroughput",
"type": "Microsoft.Common.Slider",
"min": 128,
"max": "[mul(mul(5,128),int(steps('filesystem').shared.anfcapacity))]",
"label": "Maximum Throughput",
"subLabel": "Mi/s",
"defaultValue": 24,
"showStepMarkers": false,
"toolTip": "Maximum throughput of the Flexible Azure NetApp Files volume",
"constraints": {
"required": true
},
"visible": "[and(equals(steps('filesystem').shared.filertype,'anf'),equals(steps('filesystem').shared.newexisting,'new'),equals(steps('filesystem').shared.anftier,'Flexible'))]"
},
{
"name": "nfscapacity",
"type": "Microsoft.Common.TextBox",
Expand Down Expand Up @@ -692,22 +711,26 @@
"name": "anftier",
"type": "Microsoft.Common.DropDown",
"label": "Service Level",
"defaultValue": "Premium",
"defaultValue": "Premium (64 MiB/s per TiB)",
"multiselect": false,
"toolTip": "Service level for the Azure NetApp Files volume",
"toolTip": "Service level for the Azure NetApp Files volume with max. throughput",
"constraints": {
"allowedValues": [
{
"label": "Standard",
"label": "Standard (16 MiB/s per TiB)",
"value": "Standard"
},
{
"label": "Premium",
"label": "Premium (64 MiB/s per TiB)",
"value": "Premium"
},
{
"label": "Ultra",
"label": "Ultra (128 MiB/s per TiB)",
"value": "Ultra"
},
{
"label": "Flexible (custom throughput)",
"value": "Flexible"
}
],
"required": true
Expand All @@ -728,33 +751,44 @@
},
"visible": "[and(equals(steps('filesystem').additional.filertype,'anf'),equals(steps('filesystem').additional.newexisting,'new'))]"
},
{
"name": "anfFlexThroughput",
"type": "Microsoft.Common.Slider",
"min": 128,
"max": "[mul(mul(5,128),int(steps('filesystem').additional.anfcapacity))]",
"label": "Maximum Throughput",
"subLabel": "Mi/s",
"defaultValue": 24,
"showStepMarkers": false,
"toolTip": "Maximum throughput of the Flexible Azure NetApp Files volume",
"constraints": {
"required": true
},
"visible": "[and(equals(steps('filesystem').additional.filertype,'anf'),equals(steps('filesystem').additional.newexisting,'new'),equals(steps('filesystem').additional.anftier,'Flexible'))]"
},
{
"name": "lustretier",
"type": "Microsoft.Common.DropDown",
"label": "Lustre Tier",
"defaultValue": "AMLFS-Durable-Premium-500",
"defaultValue": "AMLFS-Durable-Premium-500 (500 MB/s per TB)",
"multiselect": false,
"toolTip": "Select the Azure Manage Lustre SKU to use",
"constraints": {
"allowedValues": [
{
"label": "AMLFS-Durable-Premium-40",
"description": "40 MB/s/TB, 48TB size increment",
"label": "AMLFS-Durable-Premium-40 (40 MB/s per TB)",
"value": "AMLFS-Durable-Premium-40"
},
{
"label": "AMLFS-Durable-Premium-125",
"description": "125 MB/s/TB, 16TB size increment",
"label": "AMLFS-Durable-Premium-125 (125 MB/s per TB)",
"value": "AMLFS-Durable-Premium-125"
},
{
"label": "AMLFS-Durable-Premium-250",
"description": "250 MB/s/TB, 8TB size increment",
"label": "AMLFS-Durable-Premium-250 (250 MB/s per TB)",
"value": "AMLFS-Durable-Premium-250"
},
{
"label": "AMLFS-Durable-Premium-500",
"description": "500 MB/s/TB, 4TB size increment",
"label": "AMLFS-Durable-Premium-500 (500 MB/s per TB)",
"value": "AMLFS-Durable-Premium-500"
}
],
Expand Down Expand Up @@ -2516,6 +2550,7 @@
"nfsCapacityInGb": "[if(equals(steps('filesystem').shared.filertype,'nfs'),int(steps('filesystem').shared.nfscapacity),basics('nullValue'))]",
"anfServiceTier": "[if(equals(steps('filesystem').shared.filertype,'anf'),steps('filesystem').shared.anftier,basics('nullValue'))]",
"anfCapacityInTiB": "[if(equals(steps('filesystem').shared.filertype,'anf'),int(steps('filesystem').shared.anfcapacity),basics('nullValue'))]",
"anfFlexThroughputMiBps": "[if(and(equals(steps('filesystem').shared.filertype,'anf'),equals(steps('filesystem').shared.anftier,'Flexible')),int(steps('filesystem').shared.anfFlexThroughput),basics('nullValue'))]",
"ipAddress": "[if(equals(steps('filesystem').shared.newexisting,'existing'),steps('filesystem').shared.ipAddress,basics('nullValue'))]",
"exportPath": "[if(equals(steps('filesystem').shared.newexisting,'existing'),steps('filesystem').shared.exportPath,basics('nullValue'))]",
"mountOptions": "[if(equals(steps('filesystem').shared.newexisting,'existing'),steps('filesystem').shared.mountOptions,basics('nullValue'))]",
Expand All @@ -2525,6 +2560,7 @@
"type": "[if(steps('filesystem').additionalCheck.checkbox,concat(steps('filesystem').additional.filertype,'-',steps('filesystem').additional.newexisting),'disabled')]",
"anfServiceTier": "[if(equals(steps('filesystem').additional.filertype,'anf'),steps('filesystem').additional.anftier,basics('nullValue'))]",
"anfCapacityInTiB": "[if(equals(steps('filesystem').additional.filertype,'anf'),int(steps('filesystem').additional.anfcapacity),basics('nullValue'))]",
"anfFlexThroughputMiBps": "[if(and(equals(steps('filesystem').additional.filertype,'anf'),equals(steps('filesystem').additional.anftier,'Flexible')),int(steps('filesystem').additional.anfFlexThroughput),basics('nullValue'))]",
"lustreTier": "[if(equals(steps('filesystem').additional.filertype,'aml'),steps('filesystem').additional.lustretier,basics('nullValue'))]",
"lustreCapacityInTib": "[if(equals(steps('filesystem').additional.filertype,'aml'),int(steps('filesystem').additional.azurelustrecapacity),basics('nullValue'))]",
"ipAddress": "[if(equals(steps('filesystem').additional.newexisting,'existing'),if(equals(steps('filesystem').additional.filertype,'aml'),steps('filesystem').additional.ipAddressAml,steps('filesystem').additional.ipAddressNfs),basics('nullValue'))]",
Expand Down
Loading