Hello friends@vmware
I need to use the rest API to set metadata but it always failed with 400. Can someone please take a look ? I used base64 to encode the metadata.
Based on the documentation (https://developer.vmware.com/apis/vsphere-automation/latest/vcenter/api/vcenter/vm/vm/guest/customiz... ), below is a good payload:
{
"spec": {
"configuration_spec": {
"cloud_config": {
"cloudinit": {
"metadata": "aW5zdGFuY2UtaWQ6IGJpZy1pcC1uZXh0CmxvY2FsLWhvc3RuYW1lOiBiaWctaXAtbmV4dApkc21vZGU6IGxvY2FsCm5ldHdvcms6CiAgdmVyc2lvbjogMgogIGV0aGVybmV0czoKICAjIG9wYXF1ZSBJRCBmb3IgcGh5c2ljYWwgaW50ZXJmYWNlcywgb25seSByZWZlcnJlZCB0byBieSBvdGhlciBzdGFuemFzCiAgICBlbnMxNjA6CiAgICAgIGFkZHJlc3NlczoKICAgICAgICAtIDEwLjE0Ni4xNjguMS8yNAogICAgICBnYXRld2F5NDogMTAuMS4xLjEKICAgICAgbmFtZXNlcnZlcnM6CiAgICAgICAgYWRkcmVzc2VzOiBbMTAuMS4xLjFd"
},
"type": "CLOUDINIT"
}
},
"global_DNS_settings": {},
"interfaces": [
{
"adapter": {
"ipv4": {
"type": "STATIC"
}
}
}
]
}
}
However, when I use curl to send the request, it failed. Below is the request and response .
---------- Request ---------------
curl -ki -X PUT -H "vmware-api-session-id: $sessionID" -H "Content-Type: application/json" -d '{"spec":{"configuration_spec":{"cloud_config":{"cloudinit":{"metadata":"bmV0d29yazoKICB2ZXJzaW9uOiAyCiAgZXRoZXJuZXRzOgogICMgb3BhcXVlIElEIGZvciBwaHlzaWNhbCBpbnRlcmZhY2VzLCBvbmx5IHJlZmVycmVkIHRvIGJ5IG90aGVyIHN0YW56YXMKICAgIGVuczE2MDoKICAgICAgYWRkcmVzc2VzOgogICAgICAgIC0gMTAuMTQ2LjE2OC4xLzI0"},"type":"CLOUDINIT"}},"global_DNS_settings":{},"interfaces":[{"adapter":{"ipv4":{"type":"STATIC"}}}]}}' https://$host/api/vcenter/vm/vm-397399/guest/customization
-------- Response -----------------
HTTP/2 400
date: Thu, 09 Mar 2023 03:33:48 GMT
content-type: application/json
x-envoy-upstream-service-time: 32
server: envoy
{"error_type":"INVALID_ARGUMENT","messages":[]}