sma: loading out-of-tree plugins in sma-client

Change-Id: I7813a31060af7b2f9aea1b0a0d99fb699670509a
Signed-off-by: Sebastian Brzezinka <sebastian.brzezinka@intel.com>
Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11667
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Sebastian Brzezinka 2022-02-18 09:15:36 +01:00 committed by Tomasz Zawadzki
parent 93a20e79ec
commit d045916f65

View File

@ -3,7 +3,9 @@
from argparse import ArgumentParser
import grpc
import google.protobuf.json_format as json_format
import importlib
import json
import logging
import os
import sys
@ -39,6 +41,12 @@ class Client:
preserving_proto_field_name=True)
def load_plugins(plugins):
for plugin in plugins:
logging.debug(f'Loading external plugin: {plugin}')
module = importlib.import_module(plugin)
def parse_argv():
parser = ArgumentParser(description='Storage Management Agent client')
parser.add_argument('--address', '-a', default='localhost',
@ -50,6 +58,8 @@ def parse_argv():
def main(args):
argv = parse_argv()
logging.basicConfig(level=os.environ.get('SMA_LOGLEVEL', 'WARNING').upper())
load_plugins(filter(None, os.environ.get('SMA_PLUGINS', '').split(':')))
client = Client(argv.address, argv.port)
request = json.loads(sys.stdin.read())
result = client.call(request['method'], request.get('params', {}))