AWX / Tower: PUT multiple variables in inventory

Greetings folks,

Trying to PUT multiple variables into inventory, getting an error:

$ curl -H ‘Authorization:Token XXXXXXXXXXXXXXXXXX’ -f -k -H “content-Type: application/json” -X PATCH -d ‘{ “name”: “zookeepernodes”,“description”: “ZooKeeper Nodes for Kerberos Project”,“organization”: 16,“kind”: “”,“host_filter”: null,“variables”: {“kafka_user”: “tgam01m”,“kafka_group”: “wtgakafk”,“zookeeper_user”: “tgam01m”,“zookeeper_group”: “zkgrp”,“ansible_user”: “ans00001”,“ansible_group”: “ans00001”,“topic_schemas”: “_connect_DP-cnj-prod-connect_schemas”,“topic_connect_configs”: “_connect_DP-cnj-prod-connect_configs”,“topic_connect_offsets”: “_connect_DP-cnj-prod-connect_offsets”,“topic_connect_status”: “_connect_DP-cnj-prod-connect_status”,“zk_port” : “2181”,“kafka_port”: “9092”},“insights_credential”: null }’ http://awx-qa.localnet.net/api/v2/inventories/15/ | jq .

I am getting back the following:

curl: (22) The requested URL returned error: 400 Bad Request

Anyone knows how to upload multiple variables to AWX / Tower?

The 400 error probably has a detailed message that tells you what validation went wrong. If you POST the same thing in the API browser (add /api/v2/inventories/15/ to the URL), you can see the response message.

Thanks for reply Alan. Tried:

{
“name”: “zookeepernodes”,
“description”: “ZooKeeper Nodes for Kerberos Project”,
“organization”: 16,
“kind”: “”,
“host_filter”: null,
“variables”: {
“kafka_user”: “ans00010”,
“kafka_group”: “ans00001”,
“zookeeper_user”: “zkuser01”,
“zookeeper_group”: “zkgrp”,
“ansible_user”: “ans00001”,
“ansible_group”: “ans00001”,
“topic_schemas”: “_connect_DP-cnj-prod-connect_schemas”,
“topic_connect_configs”: “_connect_DP-cnj-prod-connect_configs”,
“topic_connect_offsets”: “_connect_DP-cnj-prod-connect_offsets”,
“topic_connect_status”: “_connect_DP-cnj-prod-connect_status”,
“zk_port”: “2181”,
“kafka_port”: “9092”
},
“insights_credential”: null
}

It’s giving me:

{
    "variables": [
        "Not a valid string."
    ]
}

It’s a valid JSON, I validated it. I did PUT, but no avail so far :frowning:

Alex

Answering my own question. Using the following syntax worked:

{
“name”: “zookeepernodes”,
“description”: “ZooKeeper Nodes for Kerberos Project”,
“organization”: 16,
“kind”: “”,
“host_filter”: null,
“variables”: “{ kafka_user: kafka00001, kafka_group: kafkagrp, zookeeper_user: zkuser00001, zookeeper_group: zkgrp, ansible_user: ans00001, ansible_group: ans00001, topic_schemas: _connect_DP-cnj-prod-connect_schemas,topic_connect_configs: _connect_DP-cnj-prod-connect_configs,topic_connect_offsets: _connect_DP-cnj-prod-connect_offsets,topic_connect_status: _connect_DP-cnj-prod-connect_status, zk_port: 2181,kafka_port: 9092}”,
“insights_credential”: null
}