Batch icon indicating copy to clipboard operation
Batch copied to clipboard

Can't create pool from az batch cli using json file

Open see24 opened this issue 2 years ago • 2 comments

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

see24 avatar Sep 22 '23 14:09 see24

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.

see24 avatar Sep 22 '23 20:09 see24