From f0f65d240d7d09c1670ccf181bd22f0b1802734e Mon Sep 17 00:00:00 2001 From: sberbz Date: Wed, 5 Jan 2022 15:54:14 +0000 Subject: [PATCH] sma: make SMA parameters configurable It's now possible to specify the gRPC interface listen address and the SPDK-RPC socket path. Change-Id: I957cf4ca4e03eac6f4f6f7ffab5ee95c5b6f7521 Signed-off-by: Sebastian Brzezinka Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10979 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- scripts/sma-client.py | 13 ++++++++++++- scripts/sma.py | 23 +++++++++++++++++++---- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/scripts/sma-client.py b/scripts/sma-client.py index 31e2e1e4b..98d72b417 100755 --- a/scripts/sma-client.py +++ b/scripts/sma-client.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from argparse import ArgumentParser import grpc import google.protobuf.json_format as json_format import json @@ -38,8 +39,18 @@ class Client: preserving_proto_field_name=True) +def parse_argv(): + parser = ArgumentParser(description='Storage Management Agent client') + parser.add_argument('--address', '-a', default='localhost', + help='IP address of SMA instance to connect to') + parser.add_argument('--port', '-p', default=8080, type=int, + help='Port number of SMA instance to connect to') + return parser.parse_args() + + def main(args): - client = Client('localhost', 8080) + argv = parse_argv() + client = Client(argv.address, argv.port) request = json.loads(sys.stdin.read()) result = client.call(request['method'], request.get('params', {})) print(json.dumps(result, indent=2)) diff --git a/scripts/sma.py b/scripts/sma.py index c68912eef..adceadfc3 100755 --- a/scripts/sma.py +++ b/scripts/sma.py @@ -11,8 +11,22 @@ import spdk.sma as sma # noqa from spdk.rpc.client import JSONRPCClient # noqa -def build_client(): - return JSONRPCClient('/var/tmp/spdk.sock') +def parse_argv(): + parser = ArgumentParser(description='Storage Management Agent command line interface') + parser.add_argument('--address', '-a', default='localhost', + help='IP address to listen on') + parser.add_argument('--socket', '-s', default='/var/tmp/spdk.sock', + help='SPDK RPC socket') + parser.add_argument('--port', '-p', default=8080, type=int, + help='IP port to listen on') + return parser.parse_args() + + +def get_build_client(sock): + def build_client(): + return JSONRPCClient(sock) + + return build_client def register_device(agent, device): @@ -21,7 +35,8 @@ def register_device(agent, device): if __name__ == '__main__': + argv = parse_argv() logging.basicConfig(level=os.environ.get('SMA_LOGLEVEL', 'WARNING').upper()) - agent = sma.StorageManagementAgent('localhost', 8080) - register_device(agent, sma.NvmfTcpDeviceManager(build_client)) + agent = sma.StorageManagementAgent(argv.address, argv.port) + register_device(agent, sma.NvmfTcpDeviceManager(get_build_client(argv.socket))) agent.run()