[ovirt-devel] [VDSM][JSON RPC] new vdsClient?

Dan Kenigsberg danken at redhat.com
Wed Nov 19 17:21:09 UTC 2014


On Fri, Nov 14, 2014 at 04:24:17PM -0500, Nir Soffer wrote:
> > >>
> > >> Hi everyone,
> > >>
> > >> the recent JSONRPC discussion and my last work around vdsClient reminded
> > >> me
> > >> that
> > >> since a long time there it was vague plans for a vdsClient overhaul
> > >>
> > >> or at least I haven't ever found a detailed plan :)
> > >>
> > >> Since we have to add jsonrpc support anyway, it could be a good chance to
> > >> bootstrap
> > >> a new vdsClient, and incrementally enhance it as needs arises; the old
> > >> vdsClient will
> > >> not go away very soon, I guess.
> > >>
> > >> At least, we can to put together a wishlist for a new vdsClient and add it
> > >> to
> > >> the wiki.
> > >>
> > >> My one, so far:
> > >> * client library package: we should have a program-friendly python package
> > >> to
> > >> access
> > >>   VDSM, in order
> > >> * JSON for input: I's like to open logs, grab a line including a command
> > >> and
> > >> feed
> > >>   vdsClient with the very same line
> > >
> > > Currently we don't see commands json input in the logs, but this can be a
> > > good
> > > idea (in debug mode).
> > >
> > > +1
> > >
> > > JSON for output: current vdsClient format replies in a mix of text and
> > > json. We
> > > need to print the json returned from vdsm as is.

but a pretty-printed output can be useful, too.

> > >
> > 
> > I started discussion about it and here is what I was able to gather:
> > - we should start new vdsClient like tool which holds current vdsClient
> >   command line interface.
> > - vdsClient should stay as it is and we can extend new client with additional
> >   functionality as we need (adding debug mode etc)
> 
> Current vdsClient horrible - we need to replace it with something better.

and never look back. it's beyond redemtion.

> 
> - The interface is not consistent, trying to convert command line options to 
>   xmlrpc call
> - Error handling is not helpful, showing an error message and then printing
>   help for all verbse, so the error message is hidden above your screen
> - Help message is not useful, we need only the names of the parameters
> - We need extended help for specific verb - like "git help commit"
> - Command output is not consistent and unusable for parsing in scripts
>   We need to print the returned value from vdsm as is, or prety printed.
> 
> > - there was a suggestion to reuse ovirt-engine-cli ideas and it should
> > use schema
> >   to determine the API
> 
> Using the schema can be nice to generate help for the commands.
> 
> I started a simple jsonrpc client that can be used for testing *now*:
> http://gerrit.ovirt.org/35181
> 
> Example usage:
> 
>   Calling method without arguements:
> 
>   # jsonrpc Host.getVMList
>   {
>       "jsonrpc": "2.0",
>       "id": "0e043d83-294a-4d31-b1b6-6dc2f2747494",
>       "result": [
>           "b3f6fa00-b315-4ad4-8108-f73da817b5c5"
>       ]
>   }
> 
>   Calling method with arguements:
> 
>   # jsonrpc VM.getStats '{"vmID": "b3f6fa00-b315-4ad4-8108-f73da817b5c5"}'
>   {
>       "jsonrpc": "2.0",
>       "id": "cefd25a3-6250-4123-8a56-d7047899e19e",
>       "result": [
>           {
>               "status": "Down",
>               "exitMessage": "Admin shut down from the engine",
>               "vmId": "b3f6fa00-b315-4ad4-8108-f73da817b5c5",
>               "exitReason": 6,
>               "timeOffset": "0",
>               "exitCode": 0
>           }
>       ]
>   }

Thanks, this looks very nice and ready for contrib, imho.

I'd love to see something similar done to make vdscli connect over
jsonrpc. When I need to do something less than trivial from the command
line, I start python and

    from vdsm import vdscli
    s = vdscli.connect() # does a horribly useful heuristic, to connect
                         # to local host over xmlrpc
    print s.getVMList()

I'd like to see vdscli.connect() extended to jsonrpc. This would
simplify
    Bug 1112594 - Use jsonrpc during migration of vms
too.

Dan.



More information about the Devel mailing list