Commit f0f65d24 authored by sberbz's avatar sberbz Committed by Tomasz Zawadzki
Browse files

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: default avatarSebastian Brzezinka <sebastian.brzezinka@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10979


Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent e5e43f96
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
#!/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))
+19 −4
Original line number Diff line number Diff line
@@ -11,8 +11,22 @@ import spdk.sma as sma # noqa
from spdk.rpc.client import JSONRPCClient   # noqa


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('/var/tmp/spdk.sock')
        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()