APIs SDKs and Xen-ng
-
Hello ,
Looks like REST API is read based, no way to create vm, network. json-rpc should be used for vm creation processes. Any transition to migrate everything under rest api ?
For developers i couldn't find any SDK ?
Couldn't see any documentation about json-rpc, it should be good xo-cli give us example outs . for example when execute xo-cli command then take out what really send to xo-server ?
Regards
Vahric Muhtaryan -
Question for @julien-f
-
@olivierlambert @julien-f Any response

-
I can tell you can create VMs, that I'm sure
But @julien-f will provide some details ASAP -
This is handled by using
create_vm, which is a pool action. There's an example in this blog post. -
@Danp yes i succeeded to create a vm
curl -k -b authenticationToken=<key> -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{"name_label":"areni","template":"11fd3dc9-96cc-49af-b091-a2ca7e94c589"}' https://<ip>/rest/v0/pools/dd74abdd-7dd9-e95b-a241-dbd5b12b3ae1/actions/create_vm
basically this is working, then start to check create network
https://<ip>/rest/v0/networks/_/actions return empty array or under pool no network related action .
I would like to create vlan under bond interface mean Add Network or SDN , How could you support these ?
VM
-
@vahric-0 I don't believe that functionality exists yet for the newer REST API.
-
@Danp Okay, don't worry then without rest api , how could i automate this ? How XO doing it and how can i say to XO do it for out of REST ? @olivierlambert @julien-f
-
@vahric-0 See @julien-f response here -- https://xcp-ng.org/forum/post/75050
Once you know the JSON-RPC API syntax, then you should be able to automate it using
xo-cli. -
I used the ?debug and from console i got the json call , thats okay.

Using @mbaron script , i get the methods and try to create network and looks like i could. Thank you very much
import json import aiohttp import asyncio from jsonrpc_websocket import Server async def routine(): async with aiohttp.ClientSession() as client: server = Server('ws://XO ip address/api/', client) await server.ws_connect() # No signIn required methodsInfoResult = await server.system.getMethodsInfo() print('\n'.join([str(e) for e in methodsInfoResult.keys()])) # signIn required result = await server.session.signIn(username='username', password='password') # email attribute is working in place of username result = await server.network.create (pif='8369d867-a6f8-61f2-8132-3b485c3b3a63',pool='dd74abdd-7dd9-e95b-a241-dbd5b12b3ae1',name='deneme3',vlan=2346) print('[') print(', \n'.join([str(json.dumps(e, indent=4)) for e in result.values()])) print(']') asyncio.get_event_loop().run_until_complete(routine()) result = await server.network.create (pif='8369d867-a6f8-61f2-8132-3b485c3b3a63',pool='dd74abdd-7dd9-e95b-a241-dbd5b12b3ae1',name='deneme3',vlan=2346)
I guess its will be perfect to move everything rest api and have well documentation.
One thing, i can not delete created test network because of HA, is it normal ?
Regards
VM -
@vahric-0 said in APIs SDKs and Xen-ng:
One thing, i can not delete created test network because of HA, is it normal ?
IDK. What error did you receive?
-
@Danp I was getting error like below but right now i can delete it ? How it could happen ?
network.delete { "network": "7d1cd2b9-15a3-6aa5-20bf-ac22e8ad362f" } { "code": "HA_IS_ENABLED", "params": [], "task": { "uuid": "f8c23f0a-7525-c5b7-07e3-923d431acccc", "name_label": "Async.VLAN.destroy", "name_description": "", "allowed_operations": [], "current_operations": {}, "created": "20240521T08:40:24Z", "finished": "20240521T08:40:24Z", "status": "failure", "resident_on": "OpaqueRef:c790d455-3678-4ae0-a02f-40a16bb0f394", "progress": 1, "type": "<none/>", "result": "", "error_info": [ "HA_IS_ENABLED" ], "other_config": {}, "subtask_of": "OpaqueRef:NULL", "subtasks": [], "backtrace": "(((process xapi)(filename ocaml/xapi/rbac.ml)(line 205))((process xapi)(filename ocaml/xapi/server_helpers.ml)(line 95)))" }, "message": "HA_IS_ENABLED()", "name": "XapiError", "stack": "XapiError: HA_IS_ENABLED() at Function.wrap (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/_XapiError.mjs:16:12) at default (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/_getTaskResult.mjs:11:29) at Xapi._addRecordToCache (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/index.mjs:1029:24) at file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/index.mjs:1063:14 at Array.forEach (<anonymous>) at Xapi._processEvents (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/index.mjs:1053:12) at Xapi._watchEvents (file:///usr/local/lib/node_modules/xo-server/node_modules/xen-api/index.mjs:1226:14)" } -
@vahric-0 You're saying that it worked in one instance but failed in a prior attempt? Did something change in the environment in between the attempts? Was the vlan in use by any VMs?
-
@Danp No, vlans was created only for test no any vm is attached
XO should not say to me this is used , you can not delete it ?
why its generating HA_IS_ENABLED message ? -
@vahric-0 Sorry, but I'm not sure that I understand your setup. Perhaps it would help if you restated the issue making sure to address the following items --
- Is HA enabled on your pool?
- Are you able to delete the VLAN using XOA web interface?
- Are you able to delete the VLAN using XOA API?
- etc
-
HA is enabled for the pool
After first creation network via api , i can not deleye it from gui
i did not tried delete vlan via apiI will try to reproduce
-
yeap , i did it again

-

-
@vahric-0 It is recommended to disable HA whenever you are performing maintenance (adjusting networking, applying updates, etc) on your pool.
-
@Danp if this is the rule , what i can say.
I will try one thing more because to create xostore step by step I shutdown servers and add disks after that i could delete the network
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login