-
Notifications
You must be signed in to change notification settings - Fork 203
Open
Description
Hello,
I have the following output object in my uidefinition.json file:
"clusters": {
"slurm": {
"startCluster": "[steps('scheduler').clusterSettings.startCluster]",
"version": "[steps('scheduler').schedulerSection.slurmVersion]",
"healthCheckEnabled": "[steps('scheduler').clusterSettings.healthCheck]",
"schedulerNode": {
"sku": "[steps('scheduler').schedulerSection.vmsize]",
"osImage": "[if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName)]"
},
"loginNodes": {
"sku": "[steps('scheduler').loginNodesSection.vmsize]",
"osImage": "[if(not(steps('scheduler').schedulerSection.universalImage),if(equals(steps('scheduler').loginNodesSection.ImageName,'custom'),steps('scheduler').loginNodesSection.customImageName,steps('scheduler').loginNodesSection.ImageName),if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName))]",
"initialNodes": "[int(steps('scheduler').loginNodesSection.initialNodes)]",
"maxNodes": "[int(steps('scheduler').loginNodesSection.maxNodes)]"
},
"htc": {
"sku": "[steps('slurmSettings').HTCSection.vmsize]",
"maxNodes": "[int(steps('slurmSettings').HTCSection.maxNodes)]",
"osImage": "[if(not(steps('scheduler').schedulerSection.universalImage),if(equals(steps('slurmSettings').HTCSection.ImageName,'custom'),steps('slurmSettings').HTCSection.customImageName,steps('slurmSettings').HTCSection.ImageName),if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName))]",
"useSpot": "[steps('slurmSettings').HTCSection.spotHTC]"
},
"hpc": {
"sku": "[steps('slurmSettings').HPCSection.vmsize]",
"maxNodes": "[int(steps('slurmSettings').HPCSection.maxNodes)]",
"osImage": "[if(not(steps('scheduler').schedulerSection.universalImage),if(equals(steps('slurmSettings').HPCSection.ImageName,'custom'),steps('slurmSettings').HPCSection.customImageName,steps('slurmSettings').HPCSection.ImageName),if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName))]"
},
"gpu": {
"sku": "[steps('slurmSettings').GPUSection.vmsize]",
"maxNodes": "[int(steps('slurmSettings').GPUSection.maxNodes)]",
"osImage": "[if(not(steps('scheduler').schedulerSection.universalImage),if(equals(steps('slurmSettings').GPUSection.ImageName,'custom'),steps('slurmSettings').GPUSection.customImageName,steps('slurmSettings').GPUSection.ImageName),if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName))]"
}
},
"ood": {
"type": "[if(steps('ood').OODSection.deployOOD,'enabled','disabled')]",
"startCluster": "[if(steps('ood').OODSection.deployOOD,steps('ood').OODSection.startCluster,basics('nullValue'))]",
"sku": "[if(steps('ood').OODSection.deployOOD,steps('ood').OODSection.vmsize,basics('nullValue'))]",
"osImage": "[if(steps('ood').OODSection.deployOOD,if(equals(steps('ood').OODSection.ImageName,'custom'),steps('ood').OODSection.customImageName,steps('ood').OODSection.ImageName),basics('nullValue'))]",
"userDomain": "[if(steps('ood').OODSection.deployOOD,steps('ood').OODSection.userDomain,basics('nullValue'))]",
"fqdn": "[if(not(equals(steps('ood').OODSection.fqdn,'')),steps('ood').OODSection.fqdn,basics('nullValue'))]",
"registerEntraIDApp": "[if(steps('ood').OODSection.deployOOD,equals(steps('ood').OODSection.registerEntraIDApp,'autoregister'),basics('nullValue'))]",
"appId": "[if(equals(steps('ood').OODSection.registerEntraIDApp,'existing'),steps('ood').OODSection.clientId,basics('nullValue'))]",
"appManagedIdentityId": "[if(equals(steps('ood').OODSection.registerEntraIDApp,'existing'),steps('ood').OODSection.managedIdentity.id,basics('nullValue'))]"
}
}
This fails validation because ARM-ttk doesn't recognize that the VM SizeSelector elements are present in the outputs when they're multiple levels deep into an object. Here's the result from using the above in a UI definition JSON:
Validation passes, however, when one level deep into an object. For elucidation, the following passes:
"gpu": {
"sku": "[steps('slurmSettings').GPUSection.vmsize]",
"maxNodes": "[int(steps('slurmSettings').GPUSection.maxNodes)]",
"osImage": "[if(not(steps('scheduler').schedulerSection.universalImage),if(equals(steps('slurmSettings').GPUSection.ImageName,'custom'),steps('slurmSettings').GPUSection.customImageName,steps('slurmSettings').GPUSection.ImageName),if(equals(steps('scheduler').schedulerSection.ImageName,'custom'),steps('scheduler').schedulerSection.customImageName,steps('scheduler').schedulerSection.ImageName))]"
}
Reactions are currently unavailable
