Can't create pool from az batch cli using json file
Problem Description
I am trying to create a pool that is configured with a JSON file. It works fine if I upload the JSON file in the create pool GUI interface except that I have to type to pool id by hand. However if I use the same file with Azure CLI I get an error saying I need to provide an id. My file matches the format described here
Also the documentation here says that you should call az batch pool <your-batch-pool-configuration>.json to use a JSON file to configure a new Batch pool resource but that is incorrect and gives a "not recognized" error.
Steps to Reproduce
az login
az batch account login -g <group> -n <name>
az batch pool create --json-file template_add_pool.json
Json file
{
"properties": {
"id": "poolId",
"vmSize": "standard_A1_v2",
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "microsoft-azure-batch",
"offer": "ubuntu-server-container",
"sku": "20-04-lts",
"version": "latest"
},
"nodeAgentSKUId": "batch.node.ubuntu 20.04",
"containerConfiguration": {
"type": "dockerCompatible",
"containerImageNames": [
"rocker/r-bspm:jammy"
]
},
"nodePlacementConfiguration": {
"policy": "regional"
}
}
},
"scaleSettings": {
"fixedScale": {
"targetDedicatedNodes": 1
}
},
"networkConfiguration": {
"subnetId": <subnetID>
}
}
}
Expected Results
A pool is created
Actual Results
ERROR: Parameter 'PoolAddParameter.id' can not be None.
If I try to supply the id outside the Json with --id "cli_id_test" I get:
ERROR: --json-file cannot be combined with:
--id
I was able to get it to work in the end by trail and error of changing much of the JSON syntax. The Json that worked was the following:
{
"type": "Microsoft.Batch/batchAccounts/pools",
"apiVersion": "2016-12-01",
"id": "test_pool_json_cli",
"vmSize": "standard_A1_v2",
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "microsoft-azure-batch",
"offer": "ubuntu-server-container",
"sku": "20-04-lts",
"version": "latest"
},
"nodeAgentSKUId": "batch.node.ubuntu 20.04",
"containerConfiguration": {
"type": "dockerCompatible",
"containerImageNames": [
"rocker/r-bspm:jammy"
]
},
"nodePlacementConfiguration": {
"policy": "regional"
}
},
"targetDedicatedNodes": 1,
"networkConfiguration": {
"subnetId":<subnetID>
}
}
But this file is not accepted in the GUI Add (JSON editor) method of creating a pool. This is very confusing and makes everything much harder to use. Also it is not at all clear from the documentation which structure should be used where or why.