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

Piotr Kliczewski piotr.kliczewski at gmail.com
Wed Nov 19 22:02:52 UTC 2014


On Wed, Nov 19, 2014 at 6:21 PM, Dan Kenigsberg <danken at redhat.com> wrote:
> 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

We briefly talked about it with Saggi. There is already jsonrpc client in python
which is used in UT. it needs to be polished a bit.

>     Bug 1112594 - Use jsonrpc during migration of vms
> too.
>
> Dan.



More information about the Devel mailing list