XO Rest API
-
Hi @julien-f,
Thank you for your efforts in creating the REST endpoints. I want to create VMs using the REST API of XO, but I need a little help in this regard. Could you please provide the endpoint or the request structure for creating VMs?
My connection is working perfectly fine.
-
Adding also @thomas-dkmt in the loop
-
@irtaza9 Thank you so much for the quick response.
-
-
@julien-f yes it is working, But when i pass the params as per shared in json-schema then nothing happens, no vm creation happens.
POST {{host}}/rest/v0/pools/active_pool/actions/create_vm { "params": { "affinity": { "type": "string", "optional": true }, "auto_poweron": { "type": "boolean", "optional": true }, "boot": { "type": "boolean", "default": false }, "clone": { "type": "boolean", "default": true }, "cloud_config": { "type": "string", "optional": true }, "destroy_cloud_config_vdi": { "type": "boolean", "default": false }, "install": { "type": "object", "optional": true, "properties": { "method": { "enum": [ "cdrom", "network" ] }, "repository": { "type": "string" } } }, "memory": { "type": "integer", "optional": true }, "name_description": { "type": "string", "minLength": 0, "optional": true }, "name_label": { "type": "string" }, "network_config": { "type": "string", "optional": true }, "template": { "type": "string" } } }
where to pass cpu and disk variables in the payload? Is there any payload example which I used for the rest-api? Is the http method is POST or PUT?
-
@irtaza9 As explained in the documentation, the method is a
POST
(cf. https://github.com/vatesfr/xen-orchestra/blob/master/packages/xo-server/docs/rest-api.md#start-an-action).As explained in the documentation, you can list the available actions at
/rest/v0/pools/_/actions
and see the list of available params for a specific action by checking out its endpoint (/rest/v0/pools/_/create_vm
forcreate_vm
).To create/alter disks, you need to use the
vdis
param, if you do not see it on your instance, it means it is not up-to-date.CPU settings are not available at this time.
-
@julien-f I'm hitting the api in postman and this is the response i'm getting from the endpoint. My Pool is active and the template also is available. Can you please help me to solve this issue. Thank you.
-
Also this is the task output in XO.
-
This is the JSON-RPC send request and it's is using the same template which I'm using in above postman api call. If I pass all the params of JSON-RPC in
pools/_/actions/create_vm
does it support all the payload? Actually I want to create the VM programmatically. -
@irtaza9 Have you tried it with the body formatted like this?
{ "boot": true, "memory": 2147483648, "name_label": "testingVM" , "template": "f6745939-cc54-fa9c-5169-6f14ba830a6a" , "auto_poweron": true }
-
@Danp for now I'm hitting cli for testing. This is the response im getting rn. The error is saying that the template doesn't exists in the pool, right? Also shared json-object is not giving the right response in postman.
"result": { "message": "no object with UUID or opaque ref: 'f6745939-cc54-fa9c-5169-6f14ba830a6a'", "name": "Error", "stack": "Error: no object with UUID or opaque ref: 'f6745939-cc54-fa9c-5169-6f14ba830a6a'\n at Xapi.apply (file:///opt/xen-orchestra/packages/xen-api/index.mjs:726:11)\n at Xapi.getObject (file:///opt/xen-orchestra/packages/xo-server/src/xapi/index.mjs:98:26)\n at Xapi.apply (file:///opt/xen-orchestra/packages/xo-server/src/xapi/mixins/vm.mjs:63:27)\n at Xapi.createVm (/opt/xen-orchestra/node_modules/golike-defer/src/index.js:85:19)\n at apply (file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/rest-api.mjs:715:38)\n at fn (/opt/xen-orchestra/node_modules/golike-defer/src/index.js:85:19)\n at file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/rest-api.mjs:1339:38\n at AsyncLocalStorage.run (node:internal/async_local_storage/async_hooks:91:14)\n at Task.runInside (/opt/xen-orchestra/@vates/task/index.js:172:41)\n at Task.run (/opt/xen-orchestra/@vates/task/index.js:156:31)\n at file:///opt/xen-orchestra/packages/xo-server/src/xo-mixins/rest-api.mjs:1339:28\n at Layer.handle [as handle_request] (/opt/xen-orchestra/node_modules/express/lib/router/layer.js:95:5)\n at next (/opt/xen-orchestra/node_modules/express/lib/router/route.js:149:13)\n at /opt/xen-orchestra/node_modules/body-parser/lib/read.js:137:5\n at AsyncResource.runInAsyncScope (node:async_hooks:211:14)\n at invokeCallback (/opt/xen-orchestra/node_modules/raw-body/index.js:238:16)\n at done (/opt/xen-orchestra/node_modules/raw-body/index.js:227:7)\n at IncomingMessage.onEnd (/opt/xen-orchestra/node_modules/raw-body/index.js:287:7)\n at IncomingMessage.emit (node:events:518:28)\n at IncomingMessage.patchedEmit [as emit] (/opt/xen-orchestra/@xen-orchestra/log/configure.js:52:17)\n at endReadableNT (node:internal/streams/readable:1698:12)\n at processTicksAndRejections (node:internal/process/task_queues:90:21)" }
-
@irtaza9 I assume that you are running XO from the sources. Is your VM up-to-date with the latest sources?
Are you sure a template with that UUID exists for the target pool? What does the following command return?
xo-cli --list-objects type=VM-template uuid=f6745939-cc54-fa9c-5169-6f14ba830a6a
-
@Danp said in XO Rest API:
xo-cli --list-objects type=VM-template uuid=f6745939-cc54-fa9c-5169-6f14ba830a6a
Reply
C:\Users\PC>xo-cli --list-objects type=VM-template uuid=f6745939-cc54-fa9c-5169-6f14ba830a6a `--list-objects` is deprecated and will be removed in the future, use `list-objects` subcommand instead [ { "type": "VM-template", "addresses": {}, "auto_poweron": false, "bios_strings": { "bios-vendor": "Xen", "bios-version": "", "system-manufacturer": "Xen", "system-product-name": "HVM domU", "system-version": "", "system-serial-number": "", "baseboard-manufacturer": "", "baseboard-product-name": "", "baseboard-version": "", "baseboard-serial-number": "", "baseboard-asset-tag": "", "baseboard-location-in-chassis": "", "enclosure-asset-tag": "", "hp-rombios": "", "oem-1": "Xen", "oem-2": "MS_VM_CERT/SHA1/bdbeb6e0a816d43fa6d3fe8aaef04c2bad9d3e3d" }, "blockedOperations": {}, "boot": { "order": "cdn" }, "CPUs": { "max": 2, "number": 2 }, "current_operations": {}, "expNestedHvm": false, "viridian": true, "high_availability": "", "isFirmwareSupported": true, "memory": { "dynamic": [ 2147483648, 2147483648 ], "static": [ 2147483648, 2147483648 ], "size": 2147483648 }, "installTime": null, "name_description": "Ubuntu Linux (64-bit)", "name_label": "ubuntu22image", "needsVtpm": false, "other": { "import_task": "OpaqueRef:a36b7087-b9a2-4e31-96c6-a0e95a0b280f", "mac_seed": "09d66866-7e77-af81-7432-3d5b48caa0d0", "vgpu_pci": "", "base_template_name": "Other install media", "install-methods": "cdrom" }, "os_version": {}, "power_state": "Halted", "hasVendorDevice": false, "snapshots": [], "startDelay": 0, "startTime": null, "secureBoot": false, "tags": [], "VIFs": [], "VTPMs": [], "virtualizationMode": "hvm", "$container": "d1aa29fb-9fed-e39b-0f88-fc4ebbd42d3f", "$VBDs": [ "11bb8f2c-6cd0-e55a-9ff1-6d9b14689237" ], "VGPUs": [], "$VGPUs": [], "xenStoreData": { "vm-data/mmio-hole-size": "268435456", "vm-data": "" }, "vga": "cirrus", "videoram": 4, "isDefaultTemplate": false, "template_info": { "disks": [], "install_methods": [ "cdrom" ] }, "cpuWeight": 256, "id": "f6745939-cc54-fa9c-5169-6f14ba830a6a", "uuid": "f6745939-cc54-fa9c-5169-6f14ba830a6a", "$pool": "d1aa29fb-9fed-e39b-0f88-fc4ebbd42d3f", "$poolId": "d1aa29fb-9fed-e39b-0f88-fc4ebbd42d3f", "_xapiRef": "OpaqueRef:ce5af387-410c-4e10-8eaf-46315b980ed2" } ]
-
@Danp template info via rest-api
-
@Danp said in XO Rest API:
Is your VM up-to-date with the latest sources?
Yes I configured the XO from sources and it's not up to date. Should I update my XO and will it fix the issue or not?
-
I strongly suggest to read this part of the doc: https://docs.xen-orchestra.com/community
And especially with this big yellow warning: https://docs.xen-orchestra.com/community#report-a-bug
-
@olivierlambert Thank you for your time. I've a paid subscription but I am using XO from sources. I've opened a ticket from the help desk
-
Great For the version from the sources, it doesn't matter that you have paid support or not: you must use it with latest commits as possible For XOA, then it's up to the support to answer you
-
@olivierlambert omg I'll upgrade the XO. My question is still same, why the rest-api is not responding properly when I hit it from postman and the same api is responding with error when using
xo-cli