Commit 682644f9 authored by Boris Glimcher's avatar Boris Glimcher Committed by Tomasz Zawadzki
Browse files

python/rpc: more pythonic function calling



in addition to existing way of function calling like this:
client.call('bdev_malloc_create', {'num_blocks':256, 'block_size':512, 'name':'malloc0'})

now users can also do:
client.bdev_malloc_create(num_blocks=256, block_size=512, name='malloc0')

which is more pythonic

Change-Id: I278d928ccd565fc1fe456930774699179357a3ad
Signed-off-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26429


Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
parent 94567b05
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ try:
except ImportError:
    from pipes import quote

from .cmd_parser import remove_null


def print_array(a):
    print(" ".join((quote(v) for v in a)))
@@ -190,6 +192,12 @@ class JSONRPCClient(object):
        self._logger.info("response:\n%s\n", json.dumps(response, indent=2))
        return response

    def __getattr__(self, name):
        """Dynamically handle unknown attributes as JSON-RPC methods"""
        def rpc_method(**kwargs):
            return self.call(name, remove_null(kwargs))
        return rpc_method

    def call(self, method, params=None):
        self._logger.debug("call('%s')" % method)
        params = {} if params is None else params