Hi All,

vdsClient will be removed from master branch today.
It is using XMLRPC protocol which has been deprecated and replaced by JSON-RPC.

A new client for vdsm was introduced in 4.1: vdsm-client.
This is a simple client that uses JSON-RPC protocol which was introduced in ovirt 3.5.

The client is not aware of the available methods and parameters, and you should consult 
the schema [1] in order to construct the desired command.

Future version should parse the schema and provide online help.


If you're using vdsClient, we will be happy to assist you in migrating to the new vdsm client.



vdsm-client usage:

vdsm-client [-h] [-a ADDRESS] [-p PORT] [--unsecure] [--timeout TIMEOUT]
                   [-f FILE] namespace method [name=value [name=value] ...]


Invoking simple methods:

# vdsm-client Host getVMList
['b3f6fa00-b315-4ad4-8108-f73da817b5c5']

For invoking methods with many or complex parameters, you can read the parameters from a JSON format file:

# vdsm-client Lease info -f lease.json

where lease.json file content is:

{                                                                            
          "lease": {                                                               
              "sd_id": "75ab40e3-06b1-4a54-a825-2df7a40b93b2",                     
              "lease_id": "b3f6fa00-b315-4ad4-8108-f73da817b5c5"                   
          }                                                                        
  }  

It is also possible to read parameters from standard input, creating complex parameters interactively:

# cat <<EOF | vdsm-client Lease info -f -                                    
     {                                                                            
         "lease": {                                                               
             "sd_id": "75ab40e3-06b1-4a54-a825-2df7a40b93b2",                     
             "lease_id": "b3f6fa00-b315-4ad4-8108-f73da817b5c5"                   
         }                                                                        
     }                                                                            
    EOF  


Constructing a command from vdsm schema:

Let's take VM.getStats as an example.
This is the entry in the schema:

VM.getStats:                                                                    
    added: '3.1'                                                                
    description: Get statistics about a running virtual machine.                
    params:                                                                     
    -   description: The UUID of the VM                                         
        name: vmID                                                              
        type: *UUID                                                             
    return:                                                                     
        description: An array containing a single VmStats record                
        type:                                                                   
        - *VmStats                                                              

namespace: VM
method name: getStats
params: vmID

The vdsm-client command is:

# vdsm-client VM getStats vmID=b3f6fa00-b315-4ad4-8108-f73da817b5c5


Invoking getVdsCaps command:

# vdsm-client Host getCapabilities



Please consult vdsm-client help and man page for further details and options.



[1] https://github.com/oVirt/vdsm/blob/master/lib/api/vdsm-api.yml

--
Irit Goihman
Software Engineer
Red Hat Israel Ltd.