From: Nizamudeen A Date: Tue, 5 Dec 2023 10:16:12 +0000 (+0530) Subject: mgr/dashboard: gRPC client for nvmeof communication X-Git-Tag: v19.3.0~104^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=24015310b12ef131278e45d17222d53b15fa5570;p=ceph.git mgr/dashboard: gRPC client for nvmeof communication Created a gRPC client by utilising the protobuf file available in nvmeof repo Copied the file to this repo and generated its output. Fixes: https://tracker.ceph.com/issues/64201 Signed-off-by: Nizamudeen A --- diff --git a/.gitmodules b/.gitmodules index e47fe6495f5f..088ae3b577ce 100644 --- a/.gitmodules +++ b/.gitmodules @@ -75,6 +75,3 @@ [submodule "src/jaegertracing/opentelemetry-cpp"] path = src/jaegertracing/opentelemetry-cpp url = https://github.com/open-telemetry/opentelemetry-cpp.git -[submodule "nvmeof"] - path = src/pybind/mgr/dashboard/ceph-nvmeof - url = https://github.com/ceph/ceph-nvmeof.git diff --git a/src/pybind/mgr/dashboard/ceph-nvmeof b/src/pybind/mgr/dashboard/ceph-nvmeof deleted file mode 160000 index c6f6ce77863f..000000000000 --- a/src/pybind/mgr/dashboard/ceph-nvmeof +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c6f6ce77863f854444dee3d2a59d360f3b4f2255 diff --git a/src/pybind/mgr/dashboard/controllers/nvmeof.py b/src/pybind/mgr/dashboard/controllers/nvmeof.py new file mode 100644 index 000000000000..274985245fe3 --- /dev/null +++ b/src/pybind/mgr/dashboard/controllers/nvmeof.py @@ -0,0 +1,23 @@ +# # import grpc + +# from .proto import gateway_pb2 as pb2 +# from .proto import gateway_pb2_grpc as pb2_grpc + + +# class NVMeoFClient(object): +# def __init__(self): +# self.host = '192.168.100.102' + +# from ..cephnvmeof.control.cli import GatewayClient + +from ..security import Scope +from ..services.nvmeof_client import NVMeoFClient +from . import APIDoc, APIRouter, RESTController, Endpoint, ReadPermission, CreatePermission + +@APIRouter('/nvmeof', Scope.ISCSI) +@APIDoc('NVMe-oF Management API', 'NVMe-oF') +class Nvmeof(RESTController): + @ReadPermission + def list(self): + """List all NVMeoF gateways""" + return NVMeoFClient().get_subsystems() diff --git a/src/pybind/mgr/dashboard/module.py b/src/pybind/mgr/dashboard/module.py index efef273bda06..24e947c7066c 100644 --- a/src/pybind/mgr/dashboard/module.py +++ b/src/pybind/mgr/dashboard/module.py @@ -37,6 +37,9 @@ from .settings import handle_option_command, options_command_list, options_schem from .tools import NotificationQueue, RequestLoggingTool, TaskManager, \ prepare_url_prefix, str_to_bool +# pylint: disable=unused-import +from .services import nvmeof_cli + try: import cherrypy from cherrypy._cptools import HandlerWrapperTool diff --git a/src/pybind/mgr/dashboard/services/nvmeof_client.py b/src/pybind/mgr/dashboard/services/nvmeof_client.py new file mode 100644 index 000000000000..ec8911abc20b --- /dev/null +++ b/src/pybind/mgr/dashboard/services/nvmeof_client.py @@ -0,0 +1,29 @@ +import grpc +import json + +import logging + +from .proto import gateway_pb2 as pb2 +from .proto import gateway_pb2_grpc as pb2_grpc + +from google.protobuf.json_format import MessageToJson + +from .nvmeof_conf import NvmeofGatewaysConfig + +logger = logging.getLogger('nvmeof_client') + + +class NVMeoFClient(object): + def __init__(self): + logger.info('Initiating nvmeof gateway connection...') + + self.gateway_addr = list(NvmeofGatewaysConfig.get_gateways_config()['gateways'].values())[0]['service_url'] + self.channel = grpc.insecure_channel( + '{}'.format(self.gateway_addr) + ) + logger.info('Found nvmeof gateway at {}'.format(self.gateway_addr)) + self.stub = pb2_grpc.GatewayStub(self.channel) + + def get_subsystems(self): + response = self.stub.get_subsystems(pb2.get_subsystems_req()) + return json.loads(MessageToJson(response)) diff --git a/src/pybind/mgr/dashboard/services/proto/gateway.proto b/src/pybind/mgr/dashboard/services/proto/gateway.proto new file mode 100644 index 000000000000..85238c8210a3 --- /dev/null +++ b/src/pybind/mgr/dashboard/services/proto/gateway.proto @@ -0,0 +1,247 @@ +// +// Copyright (c) 2021 International Business Machines +// All rights reserved. +// +// SPDX-License-Identifier: MIT +// +// Authors: anita.shekar@ibm.com, sandy.kaur@ibm.com +// + + +syntax = "proto3"; + +enum TransportType { + INVALID = 0; + RDMA = 1; + FC = 2; + TCP = 3; + PCIE = 256; + VFIOUSER = 1024; + CUSTOM = 4096; +} + +enum AddressFamily { + invalid = 0; + ipv4 = 1; + ipv6 = 2; + ib = 3; + fc = 4; +} + +enum LogLevel { + DISABLED = 0; + ERROR = 1; + WARN = 2; + NOTICE = 3; + INFO = 4; + DEBUG = 5; +} + +service Gateway { + // Creates a bdev from an RBD image + rpc create_bdev(create_bdev_req) returns (bdev) {} + + // Resizes a bdev + rpc resize_bdev(resize_bdev_req) returns (req_status) {} + + // Deletes a bdev + rpc delete_bdev(delete_bdev_req) returns (req_status) {} + + // Creates a subsystem + rpc create_subsystem(create_subsystem_req) returns(req_status) {} + + // Deletes a subsystem + rpc delete_subsystem(delete_subsystem_req) returns(req_status) {} + + // Adds a namespace to a subsystem + rpc add_namespace(add_namespace_req) returns(nsid_status) {} + + // Removes a namespace from a subsystem + rpc remove_namespace(remove_namespace_req) returns(req_status) {} + + // Adds a host to a subsystem + rpc add_host(add_host_req) returns (req_status) {} + + // Removes a host from a subsystem + rpc remove_host(remove_host_req) returns (req_status) {} + + // Creates a listener for a subsystem at a given IP/Port + rpc create_listener(create_listener_req) returns(req_status) {} + + // Deletes a listener from a subsystem at a given IP/Port + rpc delete_listener(delete_listener_req) returns(req_status) {} + + // Gets subsystems + rpc get_subsystems(get_subsystems_req) returns(subsystems_info) {} + + // Gets spdk nvmf log flags and level + rpc get_spdk_nvmf_log_flags_and_level(get_spdk_nvmf_log_flags_and_level_req) returns(spdk_nvmf_log_flags_and_level_info) {} + + // Disables spdk nvmf logs + rpc disable_spdk_nvmf_logs(disable_spdk_nvmf_logs_req) returns(req_status) {} + + // Set spdk nvmf logs + rpc set_spdk_nvmf_logs(set_spdk_nvmf_logs_req) returns(req_status) {} + + // Set spdk nvmf logs + rpc get_gateway_info(get_gateway_info_req) returns(gateway_info) {} +} + +// Request messages + +message create_bdev_req { + string bdev_name = 1; + string rbd_pool_name = 2; + string rbd_image_name = 3; + int32 block_size = 4; + optional string uuid = 5; +} + +message resize_bdev_req { + string bdev_name = 1; + int32 new_size = 2; +} + +message delete_bdev_req { + string bdev_name = 1; + bool force = 2; +} + +message create_subsystem_req { + string subsystem_nqn = 1; + string serial_number = 2; + int32 max_namespaces = 3; + bool ana_reporting = 4; + bool enable_ha = 5; +} + +message delete_subsystem_req { + string subsystem_nqn = 1; +} + +message add_namespace_req { + string subsystem_nqn = 1; + string bdev_name = 2; + optional uint32 nsid = 3; + optional int32 anagrpid = 4; +} + +message remove_namespace_req { + string subsystem_nqn = 1; + uint32 nsid = 2; +} + +message add_host_req { + string subsystem_nqn = 1; + string host_nqn = 2; +} + +message remove_host_req { + string subsystem_nqn = 1; + string host_nqn = 2; +} + +message create_listener_req { + string nqn = 1; + string gateway_name = 2; + TransportType trtype = 3; + AddressFamily adrfam = 4; + string traddr = 5; + string trsvcid = 6; +} + +message delete_listener_req { + string nqn = 1; + string gateway_name = 2; + TransportType trtype = 3; + AddressFamily adrfam = 4; + string traddr = 5; + string trsvcid = 6; +} + +message get_subsystems_req { +} + +message get_spdk_nvmf_log_flags_and_level_req { +} + +message disable_spdk_nvmf_logs_req { +} + +message set_spdk_nvmf_logs_req { + optional LogLevel log_level = 1; + optional LogLevel print_level = 2; +} + +message get_gateway_info_req { + string cli_version = 1; +} + +// Return messages + +message bdev { + string bdev_name = 1; + bool status = 2; +} + +message req_status { + bool status = 1; +} + +message nsid_status { + uint32 nsid = 1; + bool status = 2; +} + +message subsystems_info { + repeated subsystem subsystems = 1; +} + +message subsystem { + string nqn = 1; + string subtype = 2; + repeated listen_address listen_addresses = 3; + repeated host hosts = 4; + bool allow_any_host = 5; + optional string serial_number = 6; + optional string model_number = 7; + optional uint32 max_namespaces = 8; + optional uint32 min_cntlid = 9; + optional uint32 max_cntlid = 10; + repeated namespace namespaces = 11; +} + +message gateway_info { + string cli_version = 1; + string gateway_version = 2; + string gateway_name = 3; + string gateway_group = 4; + string gateway_addr = 5; + string gateway_port = 6; + bool status = 7; +} + +message listen_address { + string transport = 1; + TransportType trtype = 2; + AddressFamily adrfam = 3; + string traddr = 4; + string trsvcid = 5; +} + +message host { + string nqn = 1; +} + +message namespace { + uint32 nsid = 1; + string name = 2; + optional string bdev_name = 3; + optional string nguid = 4; + optional string uuid = 5; + optional uint32 anagrpid = 6; +} + +message spdk_nvmf_log_flags_and_level_info { + string flags_level =1; +} \ No newline at end of file diff --git a/src/pybind/mgr/dashboard/services/proto/gateway_pb2.py b/src/pybind/mgr/dashboard/services/proto/gateway_pb2.py new file mode 100644 index 000000000000..2cd4d0c5fe14 --- /dev/null +++ b/src/pybind/mgr/dashboard/services/proto/gateway_pb2.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: gateway.proto +"""Generated protocol buffer code.""" +from google.protobuf.internal import enum_type_wrapper +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rgateway.proto\"\x83\x01\n\x0f\x63reate_bdev_req\x12\x11\n\tbdev_name\x18\x01 \x01(\t\x12\x15\n\rrbd_pool_name\x18\x02 \x01(\t\x12\x16\n\x0erbd_image_name\x18\x03 \x01(\t\x12\x12\n\nblock_size\x18\x04 \x01(\x05\x12\x11\n\x04uuid\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x07\n\x05_uuid\"6\n\x0fresize_bdev_req\x12\x11\n\tbdev_name\x18\x01 \x01(\t\x12\x10\n\x08new_size\x18\x02 \x01(\x05\"3\n\x0f\x64\x65lete_bdev_req\x12\x11\n\tbdev_name\x18\x01 \x01(\t\x12\r\n\x05\x66orce\x18\x02 \x01(\x08\"\x86\x01\n\x14\x63reate_subsystem_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x15\n\rserial_number\x18\x02 \x01(\t\x12\x16\n\x0emax_namespaces\x18\x03 \x01(\x05\x12\x15\n\rana_reporting\x18\x04 \x01(\x08\x12\x11\n\tenable_ha\x18\x05 \x01(\x08\"-\n\x14\x64\x65lete_subsystem_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\"}\n\x11\x61\x64\x64_namespace_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\tbdev_name\x18\x02 \x01(\t\x12\x11\n\x04nsid\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x61nagrpid\x18\x04 \x01(\x05H\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x0b\n\t_anagrpid\";\n\x14remove_namespace_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x0c\n\x04nsid\x18\x02 \x01(\r\"7\n\x0c\x61\x64\x64_host_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x10\n\x08host_nqn\x18\x02 \x01(\t\":\n\x0fremove_host_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x10\n\x08host_nqn\x18\x02 \x01(\t\"\x99\x01\n\x13\x63reate_listener_req\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x14\n\x0cgateway_name\x18\x02 \x01(\t\x12\x1e\n\x06trtype\x18\x03 \x01(\x0e\x32\x0e.TransportType\x12\x1e\n\x06\x61\x64rfam\x18\x04 \x01(\x0e\x32\x0e.AddressFamily\x12\x0e\n\x06traddr\x18\x05 \x01(\t\x12\x0f\n\x07trsvcid\x18\x06 \x01(\t\"\x99\x01\n\x13\x64\x65lete_listener_req\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x14\n\x0cgateway_name\x18\x02 \x01(\t\x12\x1e\n\x06trtype\x18\x03 \x01(\x0e\x32\x0e.TransportType\x12\x1e\n\x06\x61\x64rfam\x18\x04 \x01(\x0e\x32\x0e.AddressFamily\x12\x0e\n\x06traddr\x18\x05 \x01(\t\x12\x0f\n\x07trsvcid\x18\x06 \x01(\t\"\x14\n\x12get_subsystems_req\"\'\n%get_spdk_nvmf_log_flags_and_level_req\"\x1c\n\x1a\x64isable_spdk_nvmf_logs_req\"~\n\x16set_spdk_nvmf_logs_req\x12!\n\tlog_level\x18\x01 \x01(\x0e\x32\t.LogLevelH\x00\x88\x01\x01\x12#\n\x0bprint_level\x18\x02 \x01(\x0e\x32\t.LogLevelH\x01\x88\x01\x01\x42\x0c\n\n_log_levelB\x0e\n\x0c_print_level\"+\n\x14get_gateway_info_req\x12\x13\n\x0b\x63li_version\x18\x01 \x01(\t\")\n\x04\x62\x64\x65v\x12\x11\n\tbdev_name\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\x08\"\x1c\n\nreq_status\x12\x0e\n\x06status\x18\x01 \x01(\x08\"+\n\x0bnsid_status\x12\x0c\n\x04nsid\x18\x01 \x01(\r\x12\x0e\n\x06status\x18\x02 \x01(\x08\"1\n\x0fsubsystems_info\x12\x1e\n\nsubsystems\x18\x01 \x03(\x0b\x32\n.subsystem\"\xfc\x02\n\tsubsystem\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x0f\n\x07subtype\x18\x02 \x01(\t\x12)\n\x10listen_addresses\x18\x03 \x03(\x0b\x32\x0f.listen_address\x12\x14\n\x05hosts\x18\x04 \x03(\x0b\x32\x05.host\x12\x16\n\x0e\x61llow_any_host\x18\x05 \x01(\x08\x12\x1a\n\rserial_number\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x19\n\x0cmodel_number\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0emax_namespaces\x18\x08 \x01(\rH\x02\x88\x01\x01\x12\x17\n\nmin_cntlid\x18\t \x01(\rH\x03\x88\x01\x01\x12\x17\n\nmax_cntlid\x18\n \x01(\rH\x04\x88\x01\x01\x12\x1e\n\nnamespaces\x18\x0b \x03(\x0b\x32\n.namespaceB\x10\n\x0e_serial_numberB\x0f\n\r_model_numberB\x11\n\x0f_max_namespacesB\r\n\x0b_min_cntlidB\r\n\x0b_max_cntlid\"\xa5\x01\n\x0cgateway_info\x12\x13\n\x0b\x63li_version\x18\x01 \x01(\t\x12\x17\n\x0fgateway_version\x18\x02 \x01(\t\x12\x14\n\x0cgateway_name\x18\x03 \x01(\t\x12\x15\n\rgateway_group\x18\x04 \x01(\t\x12\x14\n\x0cgateway_addr\x18\x05 \x01(\t\x12\x14\n\x0cgateway_port\x18\x06 \x01(\t\x12\x0e\n\x06status\x18\x07 \x01(\x08\"\x84\x01\n\x0elisten_address\x12\x11\n\ttransport\x18\x01 \x01(\t\x12\x1e\n\x06trtype\x18\x02 \x01(\x0e\x32\x0e.TransportType\x12\x1e\n\x06\x61\x64rfam\x18\x03 \x01(\x0e\x32\x0e.AddressFamily\x12\x0e\n\x06traddr\x18\x04 \x01(\t\x12\x0f\n\x07trsvcid\x18\x05 \x01(\t\"\x13\n\x04host\x12\x0b\n\x03nqn\x18\x01 \x01(\t\"\xab\x01\n\tnamespace\x12\x0c\n\x04nsid\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x16\n\tbdev_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05nguid\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x11\n\x04uuid\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x15\n\x08\x61nagrpid\x18\x06 \x01(\rH\x03\x88\x01\x01\x42\x0c\n\n_bdev_nameB\x08\n\x06_nguidB\x07\n\x05_uuidB\x0b\n\t_anagrpid\"9\n\"spdk_nvmf_log_flags_and_level_info\x12\x13\n\x0b\x66lags_level\x18\x01 \x01(\t*^\n\rTransportType\x12\x0b\n\x07INVALID\x10\x00\x12\x08\n\x04RDMA\x10\x01\x12\x06\n\x02\x46\x43\x10\x02\x12\x07\n\x03TCP\x10\x03\x12\t\n\x04PCIE\x10\x80\x02\x12\r\n\x08VFIOUSER\x10\x80\x08\x12\x0b\n\x06\x43USTOM\x10\x80 *@\n\rAddressFamily\x12\x0b\n\x07invalid\x10\x00\x12\x08\n\x04ipv4\x10\x01\x12\x08\n\x04ipv6\x10\x02\x12\x06\n\x02ib\x10\x03\x12\x06\n\x02\x66\x63\x10\x04*N\n\x08LogLevel\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x08\n\x04WARN\x10\x02\x12\n\n\x06NOTICE\x10\x03\x12\x08\n\x04INFO\x10\x04\x12\t\n\x05\x44\x45\x42UG\x10\x05\x32\xaf\x07\n\x07Gateway\x12(\n\x0b\x63reate_bdev\x12\x10.create_bdev_req\x1a\x05.bdev\"\x00\x12.\n\x0bresize_bdev\x12\x10.resize_bdev_req\x1a\x0b.req_status\"\x00\x12.\n\x0b\x64\x65lete_bdev\x12\x10.delete_bdev_req\x1a\x0b.req_status\"\x00\x12\x38\n\x10\x63reate_subsystem\x12\x15.create_subsystem_req\x1a\x0b.req_status\"\x00\x12\x38\n\x10\x64\x65lete_subsystem\x12\x15.delete_subsystem_req\x1a\x0b.req_status\"\x00\x12\x33\n\radd_namespace\x12\x12.add_namespace_req\x1a\x0c.nsid_status\"\x00\x12\x38\n\x10remove_namespace\x12\x15.remove_namespace_req\x1a\x0b.req_status\"\x00\x12(\n\x08\x61\x64\x64_host\x12\r.add_host_req\x1a\x0b.req_status\"\x00\x12.\n\x0bremove_host\x12\x10.remove_host_req\x1a\x0b.req_status\"\x00\x12\x36\n\x0f\x63reate_listener\x12\x14.create_listener_req\x1a\x0b.req_status\"\x00\x12\x36\n\x0f\x64\x65lete_listener\x12\x14.delete_listener_req\x1a\x0b.req_status\"\x00\x12\x39\n\x0eget_subsystems\x12\x13.get_subsystems_req\x1a\x10.subsystems_info\"\x00\x12r\n!get_spdk_nvmf_log_flags_and_level\x12&.get_spdk_nvmf_log_flags_and_level_req\x1a#.spdk_nvmf_log_flags_and_level_info\"\x00\x12\x44\n\x16\x64isable_spdk_nvmf_logs\x12\x1b.disable_spdk_nvmf_logs_req\x1a\x0b.req_status\"\x00\x12<\n\x12set_spdk_nvmf_logs\x12\x17.set_spdk_nvmf_logs_req\x1a\x0b.req_status\"\x00\x12:\n\x10get_gateway_info\x12\x15.get_gateway_info_req\x1a\r.gateway_info\"\x00\x62\x06proto3') + +_TRANSPORTTYPE = DESCRIPTOR.enum_types_by_name['TransportType'] +TransportType = enum_type_wrapper.EnumTypeWrapper(_TRANSPORTTYPE) +_ADDRESSFAMILY = DESCRIPTOR.enum_types_by_name['AddressFamily'] +AddressFamily = enum_type_wrapper.EnumTypeWrapper(_ADDRESSFAMILY) +_LOGLEVEL = DESCRIPTOR.enum_types_by_name['LogLevel'] +LogLevel = enum_type_wrapper.EnumTypeWrapper(_LOGLEVEL) +INVALID = 0 +RDMA = 1 +FC = 2 +TCP = 3 +PCIE = 256 +VFIOUSER = 1024 +CUSTOM = 4096 +invalid = 0 +ipv4 = 1 +ipv6 = 2 +ib = 3 +fc = 4 +DISABLED = 0 +ERROR = 1 +WARN = 2 +NOTICE = 3 +INFO = 4 +DEBUG = 5 + + +_CREATE_BDEV_REQ = DESCRIPTOR.message_types_by_name['create_bdev_req'] +_RESIZE_BDEV_REQ = DESCRIPTOR.message_types_by_name['resize_bdev_req'] +_DELETE_BDEV_REQ = DESCRIPTOR.message_types_by_name['delete_bdev_req'] +_CREATE_SUBSYSTEM_REQ = DESCRIPTOR.message_types_by_name['create_subsystem_req'] +_DELETE_SUBSYSTEM_REQ = DESCRIPTOR.message_types_by_name['delete_subsystem_req'] +_ADD_NAMESPACE_REQ = DESCRIPTOR.message_types_by_name['add_namespace_req'] +_REMOVE_NAMESPACE_REQ = DESCRIPTOR.message_types_by_name['remove_namespace_req'] +_ADD_HOST_REQ = DESCRIPTOR.message_types_by_name['add_host_req'] +_REMOVE_HOST_REQ = DESCRIPTOR.message_types_by_name['remove_host_req'] +_CREATE_LISTENER_REQ = DESCRIPTOR.message_types_by_name['create_listener_req'] +_DELETE_LISTENER_REQ = DESCRIPTOR.message_types_by_name['delete_listener_req'] +_GET_SUBSYSTEMS_REQ = DESCRIPTOR.message_types_by_name['get_subsystems_req'] +_GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ = DESCRIPTOR.message_types_by_name['get_spdk_nvmf_log_flags_and_level_req'] +_DISABLE_SPDK_NVMF_LOGS_REQ = DESCRIPTOR.message_types_by_name['disable_spdk_nvmf_logs_req'] +_SET_SPDK_NVMF_LOGS_REQ = DESCRIPTOR.message_types_by_name['set_spdk_nvmf_logs_req'] +_GET_GATEWAY_INFO_REQ = DESCRIPTOR.message_types_by_name['get_gateway_info_req'] +_BDEV = DESCRIPTOR.message_types_by_name['bdev'] +_REQ_STATUS = DESCRIPTOR.message_types_by_name['req_status'] +_NSID_STATUS = DESCRIPTOR.message_types_by_name['nsid_status'] +_SUBSYSTEMS_INFO = DESCRIPTOR.message_types_by_name['subsystems_info'] +_SUBSYSTEM = DESCRIPTOR.message_types_by_name['subsystem'] +_GATEWAY_INFO = DESCRIPTOR.message_types_by_name['gateway_info'] +_LISTEN_ADDRESS = DESCRIPTOR.message_types_by_name['listen_address'] +_HOST = DESCRIPTOR.message_types_by_name['host'] +_NAMESPACE = DESCRIPTOR.message_types_by_name['namespace'] +_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO = DESCRIPTOR.message_types_by_name['spdk_nvmf_log_flags_and_level_info'] +create_bdev_req = _reflection.GeneratedProtocolMessageType('create_bdev_req', (_message.Message,), { + 'DESCRIPTOR' : _CREATE_BDEV_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:create_bdev_req) + }) +_sym_db.RegisterMessage(create_bdev_req) + +resize_bdev_req = _reflection.GeneratedProtocolMessageType('resize_bdev_req', (_message.Message,), { + 'DESCRIPTOR' : _RESIZE_BDEV_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:resize_bdev_req) + }) +_sym_db.RegisterMessage(resize_bdev_req) + +delete_bdev_req = _reflection.GeneratedProtocolMessageType('delete_bdev_req', (_message.Message,), { + 'DESCRIPTOR' : _DELETE_BDEV_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:delete_bdev_req) + }) +_sym_db.RegisterMessage(delete_bdev_req) + +create_subsystem_req = _reflection.GeneratedProtocolMessageType('create_subsystem_req', (_message.Message,), { + 'DESCRIPTOR' : _CREATE_SUBSYSTEM_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:create_subsystem_req) + }) +_sym_db.RegisterMessage(create_subsystem_req) + +delete_subsystem_req = _reflection.GeneratedProtocolMessageType('delete_subsystem_req', (_message.Message,), { + 'DESCRIPTOR' : _DELETE_SUBSYSTEM_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:delete_subsystem_req) + }) +_sym_db.RegisterMessage(delete_subsystem_req) + +add_namespace_req = _reflection.GeneratedProtocolMessageType('add_namespace_req', (_message.Message,), { + 'DESCRIPTOR' : _ADD_NAMESPACE_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:add_namespace_req) + }) +_sym_db.RegisterMessage(add_namespace_req) + +remove_namespace_req = _reflection.GeneratedProtocolMessageType('remove_namespace_req', (_message.Message,), { + 'DESCRIPTOR' : _REMOVE_NAMESPACE_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:remove_namespace_req) + }) +_sym_db.RegisterMessage(remove_namespace_req) + +add_host_req = _reflection.GeneratedProtocolMessageType('add_host_req', (_message.Message,), { + 'DESCRIPTOR' : _ADD_HOST_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:add_host_req) + }) +_sym_db.RegisterMessage(add_host_req) + +remove_host_req = _reflection.GeneratedProtocolMessageType('remove_host_req', (_message.Message,), { + 'DESCRIPTOR' : _REMOVE_HOST_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:remove_host_req) + }) +_sym_db.RegisterMessage(remove_host_req) + +create_listener_req = _reflection.GeneratedProtocolMessageType('create_listener_req', (_message.Message,), { + 'DESCRIPTOR' : _CREATE_LISTENER_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:create_listener_req) + }) +_sym_db.RegisterMessage(create_listener_req) + +delete_listener_req = _reflection.GeneratedProtocolMessageType('delete_listener_req', (_message.Message,), { + 'DESCRIPTOR' : _DELETE_LISTENER_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:delete_listener_req) + }) +_sym_db.RegisterMessage(delete_listener_req) + +get_subsystems_req = _reflection.GeneratedProtocolMessageType('get_subsystems_req', (_message.Message,), { + 'DESCRIPTOR' : _GET_SUBSYSTEMS_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:get_subsystems_req) + }) +_sym_db.RegisterMessage(get_subsystems_req) + +get_spdk_nvmf_log_flags_and_level_req = _reflection.GeneratedProtocolMessageType('get_spdk_nvmf_log_flags_and_level_req', (_message.Message,), { + 'DESCRIPTOR' : _GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:get_spdk_nvmf_log_flags_and_level_req) + }) +_sym_db.RegisterMessage(get_spdk_nvmf_log_flags_and_level_req) + +disable_spdk_nvmf_logs_req = _reflection.GeneratedProtocolMessageType('disable_spdk_nvmf_logs_req', (_message.Message,), { + 'DESCRIPTOR' : _DISABLE_SPDK_NVMF_LOGS_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:disable_spdk_nvmf_logs_req) + }) +_sym_db.RegisterMessage(disable_spdk_nvmf_logs_req) + +set_spdk_nvmf_logs_req = _reflection.GeneratedProtocolMessageType('set_spdk_nvmf_logs_req', (_message.Message,), { + 'DESCRIPTOR' : _SET_SPDK_NVMF_LOGS_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:set_spdk_nvmf_logs_req) + }) +_sym_db.RegisterMessage(set_spdk_nvmf_logs_req) + +get_gateway_info_req = _reflection.GeneratedProtocolMessageType('get_gateway_info_req', (_message.Message,), { + 'DESCRIPTOR' : _GET_GATEWAY_INFO_REQ, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:get_gateway_info_req) + }) +_sym_db.RegisterMessage(get_gateway_info_req) + +bdev = _reflection.GeneratedProtocolMessageType('bdev', (_message.Message,), { + 'DESCRIPTOR' : _BDEV, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:bdev) + }) +_sym_db.RegisterMessage(bdev) + +req_status = _reflection.GeneratedProtocolMessageType('req_status', (_message.Message,), { + 'DESCRIPTOR' : _REQ_STATUS, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:req_status) + }) +_sym_db.RegisterMessage(req_status) + +nsid_status = _reflection.GeneratedProtocolMessageType('nsid_status', (_message.Message,), { + 'DESCRIPTOR' : _NSID_STATUS, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:nsid_status) + }) +_sym_db.RegisterMessage(nsid_status) + +subsystems_info = _reflection.GeneratedProtocolMessageType('subsystems_info', (_message.Message,), { + 'DESCRIPTOR' : _SUBSYSTEMS_INFO, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:subsystems_info) + }) +_sym_db.RegisterMessage(subsystems_info) + +subsystem = _reflection.GeneratedProtocolMessageType('subsystem', (_message.Message,), { + 'DESCRIPTOR' : _SUBSYSTEM, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:subsystem) + }) +_sym_db.RegisterMessage(subsystem) + +gateway_info = _reflection.GeneratedProtocolMessageType('gateway_info', (_message.Message,), { + 'DESCRIPTOR' : _GATEWAY_INFO, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:gateway_info) + }) +_sym_db.RegisterMessage(gateway_info) + +listen_address = _reflection.GeneratedProtocolMessageType('listen_address', (_message.Message,), { + 'DESCRIPTOR' : _LISTEN_ADDRESS, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:listen_address) + }) +_sym_db.RegisterMessage(listen_address) + +host = _reflection.GeneratedProtocolMessageType('host', (_message.Message,), { + 'DESCRIPTOR' : _HOST, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:host) + }) +_sym_db.RegisterMessage(host) + +namespace = _reflection.GeneratedProtocolMessageType('namespace', (_message.Message,), { + 'DESCRIPTOR' : _NAMESPACE, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:namespace) + }) +_sym_db.RegisterMessage(namespace) + +spdk_nvmf_log_flags_and_level_info = _reflection.GeneratedProtocolMessageType('spdk_nvmf_log_flags_and_level_info', (_message.Message,), { + 'DESCRIPTOR' : _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO, + '__module__' : 'gateway_pb2' + # @@protoc_insertion_point(class_scope:spdk_nvmf_log_flags_and_level_info) + }) +_sym_db.RegisterMessage(spdk_nvmf_log_flags_and_level_info) + +_GATEWAY = DESCRIPTOR.services_by_name['Gateway'] +if _descriptor._USE_C_DESCRIPTORS == False: + + DESCRIPTOR._options = None + _TRANSPORTTYPE._serialized_start=2436 + _TRANSPORTTYPE._serialized_end=2530 + _ADDRESSFAMILY._serialized_start=2532 + _ADDRESSFAMILY._serialized_end=2596 + _LOGLEVEL._serialized_start=2598 + _LOGLEVEL._serialized_end=2676 + _CREATE_BDEV_REQ._serialized_start=18 + _CREATE_BDEV_REQ._serialized_end=149 + _RESIZE_BDEV_REQ._serialized_start=151 + _RESIZE_BDEV_REQ._serialized_end=205 + _DELETE_BDEV_REQ._serialized_start=207 + _DELETE_BDEV_REQ._serialized_end=258 + _CREATE_SUBSYSTEM_REQ._serialized_start=261 + _CREATE_SUBSYSTEM_REQ._serialized_end=395 + _DELETE_SUBSYSTEM_REQ._serialized_start=397 + _DELETE_SUBSYSTEM_REQ._serialized_end=442 + _ADD_NAMESPACE_REQ._serialized_start=444 + _ADD_NAMESPACE_REQ._serialized_end=569 + _REMOVE_NAMESPACE_REQ._serialized_start=571 + _REMOVE_NAMESPACE_REQ._serialized_end=630 + _ADD_HOST_REQ._serialized_start=632 + _ADD_HOST_REQ._serialized_end=687 + _REMOVE_HOST_REQ._serialized_start=689 + _REMOVE_HOST_REQ._serialized_end=747 + _CREATE_LISTENER_REQ._serialized_start=750 + _CREATE_LISTENER_REQ._serialized_end=903 + _DELETE_LISTENER_REQ._serialized_start=906 + _DELETE_LISTENER_REQ._serialized_end=1059 + _GET_SUBSYSTEMS_REQ._serialized_start=1061 + _GET_SUBSYSTEMS_REQ._serialized_end=1081 + _GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ._serialized_start=1083 + _GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ._serialized_end=1122 + _DISABLE_SPDK_NVMF_LOGS_REQ._serialized_start=1124 + _DISABLE_SPDK_NVMF_LOGS_REQ._serialized_end=1152 + _SET_SPDK_NVMF_LOGS_REQ._serialized_start=1154 + _SET_SPDK_NVMF_LOGS_REQ._serialized_end=1280 + _GET_GATEWAY_INFO_REQ._serialized_start=1282 + _GET_GATEWAY_INFO_REQ._serialized_end=1325 + _BDEV._serialized_start=1327 + _BDEV._serialized_end=1368 + _REQ_STATUS._serialized_start=1370 + _REQ_STATUS._serialized_end=1398 + _NSID_STATUS._serialized_start=1400 + _NSID_STATUS._serialized_end=1443 + _SUBSYSTEMS_INFO._serialized_start=1445 + _SUBSYSTEMS_INFO._serialized_end=1494 + _SUBSYSTEM._serialized_start=1497 + _SUBSYSTEM._serialized_end=1877 + _GATEWAY_INFO._serialized_start=1880 + _GATEWAY_INFO._serialized_end=2045 + _LISTEN_ADDRESS._serialized_start=2048 + _LISTEN_ADDRESS._serialized_end=2180 + _HOST._serialized_start=2182 + _HOST._serialized_end=2201 + _NAMESPACE._serialized_start=2204 + _NAMESPACE._serialized_end=2375 + _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO._serialized_start=2377 + _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO._serialized_end=2434 + _GATEWAY._serialized_start=2679 + _GATEWAY._serialized_end=3622 +# @@protoc_insertion_point(module_scope) diff --git a/src/pybind/mgr/dashboard/services/proto/gateway_pb2_grpc.py b/src/pybind/mgr/dashboard/services/proto/gateway_pb2_grpc.py new file mode 100644 index 000000000000..b3d9c2dcc76b --- /dev/null +++ b/src/pybind/mgr/dashboard/services/proto/gateway_pb2_grpc.py @@ -0,0 +1,577 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" +import grpc + +from ..proto import gateway_pb2 as gateway__pb2 + + +class GatewayStub(object): + """Missing associated documentation comment in .proto file.""" + + def __init__(self, channel): + """Constructor. + + Args: + channel: A grpc.Channel. + """ + self.create_bdev = channel.unary_unary( + '/Gateway/create_bdev', + request_serializer=gateway__pb2.create_bdev_req.SerializeToString, + response_deserializer=gateway__pb2.bdev.FromString, + ) + self.resize_bdev = channel.unary_unary( + '/Gateway/resize_bdev', + request_serializer=gateway__pb2.resize_bdev_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.delete_bdev = channel.unary_unary( + '/Gateway/delete_bdev', + request_serializer=gateway__pb2.delete_bdev_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.create_subsystem = channel.unary_unary( + '/Gateway/create_subsystem', + request_serializer=gateway__pb2.create_subsystem_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.delete_subsystem = channel.unary_unary( + '/Gateway/delete_subsystem', + request_serializer=gateway__pb2.delete_subsystem_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.add_namespace = channel.unary_unary( + '/Gateway/add_namespace', + request_serializer=gateway__pb2.add_namespace_req.SerializeToString, + response_deserializer=gateway__pb2.nsid_status.FromString, + ) + self.remove_namespace = channel.unary_unary( + '/Gateway/remove_namespace', + request_serializer=gateway__pb2.remove_namespace_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.add_host = channel.unary_unary( + '/Gateway/add_host', + request_serializer=gateway__pb2.add_host_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.remove_host = channel.unary_unary( + '/Gateway/remove_host', + request_serializer=gateway__pb2.remove_host_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.create_listener = channel.unary_unary( + '/Gateway/create_listener', + request_serializer=gateway__pb2.create_listener_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.delete_listener = channel.unary_unary( + '/Gateway/delete_listener', + request_serializer=gateway__pb2.delete_listener_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.get_subsystems = channel.unary_unary( + '/Gateway/get_subsystems', + request_serializer=gateway__pb2.get_subsystems_req.SerializeToString, + response_deserializer=gateway__pb2.subsystems_info.FromString, + ) + self.get_spdk_nvmf_log_flags_and_level = channel.unary_unary( + '/Gateway/get_spdk_nvmf_log_flags_and_level', + request_serializer=gateway__pb2.get_spdk_nvmf_log_flags_and_level_req.SerializeToString, + response_deserializer=gateway__pb2.spdk_nvmf_log_flags_and_level_info.FromString, + ) + self.disable_spdk_nvmf_logs = channel.unary_unary( + '/Gateway/disable_spdk_nvmf_logs', + request_serializer=gateway__pb2.disable_spdk_nvmf_logs_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.set_spdk_nvmf_logs = channel.unary_unary( + '/Gateway/set_spdk_nvmf_logs', + request_serializer=gateway__pb2.set_spdk_nvmf_logs_req.SerializeToString, + response_deserializer=gateway__pb2.req_status.FromString, + ) + self.get_gateway_info = channel.unary_unary( + '/Gateway/get_gateway_info', + request_serializer=gateway__pb2.get_gateway_info_req.SerializeToString, + response_deserializer=gateway__pb2.gateway_info.FromString, + ) + + +class GatewayServicer(object): + """Missing associated documentation comment in .proto file.""" + + def create_bdev(self, request, context): + """Creates a bdev from an RBD image + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def resize_bdev(self, request, context): + """Resizes a bdev + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def delete_bdev(self, request, context): + """Deletes a bdev + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def create_subsystem(self, request, context): + """Creates a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def delete_subsystem(self, request, context): + """Deletes a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def add_namespace(self, request, context): + """Adds a namespace to a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def remove_namespace(self, request, context): + """Removes a namespace from a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def add_host(self, request, context): + """Adds a host to a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def remove_host(self, request, context): + """Removes a host from a subsystem + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def create_listener(self, request, context): + """Creates a listener for a subsystem at a given IP/Port + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def delete_listener(self, request, context): + """Deletes a listener from a subsystem at a given IP/Port + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def get_subsystems(self, request, context): + """Gets subsystems + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def get_spdk_nvmf_log_flags_and_level(self, request, context): + """Gets spdk nvmf log flags and level + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def disable_spdk_nvmf_logs(self, request, context): + """Disables spdk nvmf logs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def set_spdk_nvmf_logs(self, request, context): + """Set spdk nvmf logs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def get_gateway_info(self, request, context): + """Set spdk nvmf logs + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + +def add_GatewayServicer_to_server(servicer, server): + rpc_method_handlers = { + 'create_bdev': grpc.unary_unary_rpc_method_handler( + servicer.create_bdev, + request_deserializer=gateway__pb2.create_bdev_req.FromString, + response_serializer=gateway__pb2.bdev.SerializeToString, + ), + 'resize_bdev': grpc.unary_unary_rpc_method_handler( + servicer.resize_bdev, + request_deserializer=gateway__pb2.resize_bdev_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'delete_bdev': grpc.unary_unary_rpc_method_handler( + servicer.delete_bdev, + request_deserializer=gateway__pb2.delete_bdev_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'create_subsystem': grpc.unary_unary_rpc_method_handler( + servicer.create_subsystem, + request_deserializer=gateway__pb2.create_subsystem_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'delete_subsystem': grpc.unary_unary_rpc_method_handler( + servicer.delete_subsystem, + request_deserializer=gateway__pb2.delete_subsystem_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'add_namespace': grpc.unary_unary_rpc_method_handler( + servicer.add_namespace, + request_deserializer=gateway__pb2.add_namespace_req.FromString, + response_serializer=gateway__pb2.nsid_status.SerializeToString, + ), + 'remove_namespace': grpc.unary_unary_rpc_method_handler( + servicer.remove_namespace, + request_deserializer=gateway__pb2.remove_namespace_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'add_host': grpc.unary_unary_rpc_method_handler( + servicer.add_host, + request_deserializer=gateway__pb2.add_host_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'remove_host': grpc.unary_unary_rpc_method_handler( + servicer.remove_host, + request_deserializer=gateway__pb2.remove_host_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'create_listener': grpc.unary_unary_rpc_method_handler( + servicer.create_listener, + request_deserializer=gateway__pb2.create_listener_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'delete_listener': grpc.unary_unary_rpc_method_handler( + servicer.delete_listener, + request_deserializer=gateway__pb2.delete_listener_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'get_subsystems': grpc.unary_unary_rpc_method_handler( + servicer.get_subsystems, + request_deserializer=gateway__pb2.get_subsystems_req.FromString, + response_serializer=gateway__pb2.subsystems_info.SerializeToString, + ), + 'get_spdk_nvmf_log_flags_and_level': grpc.unary_unary_rpc_method_handler( + servicer.get_spdk_nvmf_log_flags_and_level, + request_deserializer=gateway__pb2.get_spdk_nvmf_log_flags_and_level_req.FromString, + response_serializer=gateway__pb2.spdk_nvmf_log_flags_and_level_info.SerializeToString, + ), + 'disable_spdk_nvmf_logs': grpc.unary_unary_rpc_method_handler( + servicer.disable_spdk_nvmf_logs, + request_deserializer=gateway__pb2.disable_spdk_nvmf_logs_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'set_spdk_nvmf_logs': grpc.unary_unary_rpc_method_handler( + servicer.set_spdk_nvmf_logs, + request_deserializer=gateway__pb2.set_spdk_nvmf_logs_req.FromString, + response_serializer=gateway__pb2.req_status.SerializeToString, + ), + 'get_gateway_info': grpc.unary_unary_rpc_method_handler( + servicer.get_gateway_info, + request_deserializer=gateway__pb2.get_gateway_info_req.FromString, + response_serializer=gateway__pb2.gateway_info.SerializeToString, + ), + } + generic_handler = grpc.method_handlers_generic_handler( + 'Gateway', rpc_method_handlers) + server.add_generic_rpc_handlers((generic_handler,)) + + + # This class is part of an EXPERIMENTAL API. +class Gateway(object): + """Missing associated documentation comment in .proto file.""" + + @staticmethod + def create_bdev(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/create_bdev', + gateway__pb2.create_bdev_req.SerializeToString, + gateway__pb2.bdev.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def resize_bdev(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/resize_bdev', + gateway__pb2.resize_bdev_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def delete_bdev(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/delete_bdev', + gateway__pb2.delete_bdev_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def create_subsystem(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/create_subsystem', + gateway__pb2.create_subsystem_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def delete_subsystem(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/delete_subsystem', + gateway__pb2.delete_subsystem_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def add_namespace(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/add_namespace', + gateway__pb2.add_namespace_req.SerializeToString, + gateway__pb2.nsid_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def remove_namespace(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/remove_namespace', + gateway__pb2.remove_namespace_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def add_host(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/add_host', + gateway__pb2.add_host_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def remove_host(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/remove_host', + gateway__pb2.remove_host_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def create_listener(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/create_listener', + gateway__pb2.create_listener_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def delete_listener(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/delete_listener', + gateway__pb2.delete_listener_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def get_subsystems(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/get_subsystems', + gateway__pb2.get_subsystems_req.SerializeToString, + gateway__pb2.subsystems_info.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def get_spdk_nvmf_log_flags_and_level(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/get_spdk_nvmf_log_flags_and_level', + gateway__pb2.get_spdk_nvmf_log_flags_and_level_req.SerializeToString, + gateway__pb2.spdk_nvmf_log_flags_and_level_info.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def disable_spdk_nvmf_logs(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/disable_spdk_nvmf_logs', + gateway__pb2.disable_spdk_nvmf_logs_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def set_spdk_nvmf_logs(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/set_spdk_nvmf_logs', + gateway__pb2.set_spdk_nvmf_logs_req.SerializeToString, + gateway__pb2.req_status.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def get_gateway_info(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary(request, target, '/Gateway/get_gateway_info', + gateway__pb2.get_gateway_info_req.SerializeToString, + gateway__pb2.gateway_info.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata)