]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: update nvmeof protoc to 1.0.0
authorNizamudeen A <nia@redhat.com>
Mon, 12 Feb 2024 06:11:32 +0000 (11:41 +0530)
committerNizamudeen A <nia@redhat.com>
Mon, 25 Mar 2024 05:04:28 +0000 (10:34 +0530)
Fixes: https://tracker.ceph.com/issues/64384
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit 3f067b480dcb9f783907ab938bf0f83b5fba5af2)

src/pybind/mgr/dashboard/controllers/nvmeof.py
src/pybind/mgr/dashboard/openapi.yaml
src/pybind/mgr/dashboard/services/nvmeof_client.py
src/pybind/mgr/dashboard/services/proto/gateway.proto
src/pybind/mgr/dashboard/services/proto/gateway_pb2.py
src/pybind/mgr/dashboard/services/proto/gateway_pb2_grpc.py

index 125b93dc3cc7e281cf2aceb6f5d903e4c7636d36..6184f6a4166d9435e8104342c97f343cac5ec7ce 100644 (file)
@@ -27,8 +27,7 @@ else:
         @CreatePermission
         def create(self, rbd_pool: str, rbd_image: str, subsystem_nqn: str,
                    create_image: Optional[bool] = True, image_size: Optional[int] = 1024,
-                   block_size: int = 512, nsid: Optional[int] = 1,
-                   uuid: Optional[str] = None, anagrpid: Optional[int] = 1):
+                   block_size: int = 512):
             """
             Create a new NVMeoF namespace
             :param rbd_pool: RBD pool name
@@ -37,24 +36,20 @@ else:
             :param create_image: Create RBD image
             :param image_size: RBD image size
             :param block_size: NVMeoF namespace block size
-            :param nsid: NVMeoF namespace ID
-            :param uuid: NVMeoF namespace UUID
-            :param anagrpid: NVMeoF namespace ANA group ID
             """
             response = NVMeoFClient().create_namespace(rbd_pool, rbd_image,
                                                        subsystem_nqn, block_size,
-                                                       nsid, uuid, anagrpid,
                                                        create_image, image_size)
             return json.loads(MessageToJson(response))
 
         @Endpoint('DELETE', path='{subsystem_nqn}')
-        def delete(self, subsystem_nqn: str, nsid: int):
+        @DeletePermission
+        def delete(self, subsystem_nqn: str):
             """
             Delete an existing NVMeoF namespace
             :param subsystem_nqn: NVMeoF subsystem NQN
-            :param nsid: NVMeoF namespace ID
             """
-            response = NVMeoFClient().delete_namespace(subsystem_nqn, nsid)
+            response = NVMeoFClient().delete_namespace(subsystem_nqn)
             return json.loads(MessageToJson(response))
 
     @APIRouter('/nvmeof/subsystem', Scope.NVME_OF)
@@ -64,39 +59,36 @@ else:
         @EndpointDoc("List all NVMeoF gateways",
                      parameters={
                          'subsystem_nqn': (str, 'NVMeoF subsystem NQN'),
-                         'serial_number': (str, 'NVMeoF subsystem serial number')
                      })
-        def list(self, subsystem_nqn: Optional[str] = None, serial_number: Optional[str] = None):
+        @ReadPermission
+        def list(self, subsystem_nqn: Optional[str] = None):
             response = MessageToJson(NVMeoFClient().list_subsystems(
-                subsystem_nqn=subsystem_nqn, serial_number=serial_number))
+                subsystem_nqn=subsystem_nqn))
 
             return json.loads(response)
 
         @CreatePermission
         def create(self, subsystem_nqn: str, serial_number: Optional[str] = None,
-                   max_namespaces: Optional[int] = 256, ana_reporting: Optional[bool] = False,
-                   enable_ha: Optional[bool] = False):
+                   max_namespaces: Optional[int] = 256):
             """
             Create a new NVMeoF subsystem
 
             :param subsystem_nqn: NVMeoF subsystem NQN
             :param serial_number: NVMeoF subsystem serial number
             :param max_namespaces: NVMeoF subsystem maximum namespaces
-            :param ana_reporting: NVMeoF subsystem ANA reporting
-            :param enable_ha: NVMeoF subsystem enable HA
             """
-            response = NVMeoFClient().create_subsystem(subsystem_nqn, serial_number, max_namespaces,
-                                                       ana_reporting, enable_ha)
+            response = NVMeoFClient().create_subsystem(subsystem_nqn, serial_number, max_namespaces)
             return json.loads(MessageToJson(response))
 
         @DeletePermission
         @Endpoint('DELETE', path='{subsystem_nqn}')
-        def delete(self, subsystem_nqn: str):
+        def delete(self, subsystem_nqn: str, force: Optional[bool] = False):
             """
             Delete an existing NVMeoF subsystem
             :param subsystem_nqn: NVMeoF subsystem NQN
+            :param force: Force delete
             """
-            response = NVMeoFClient().delete_subsystem(subsystem_nqn)
+            response = NVMeoFClient().delete_subsystem(subsystem_nqn, force)
             return json.loads(MessageToJson(response))
 
     @APIRouter('/nvmeof/hosts', Scope.NVME_OF)
@@ -144,39 +136,25 @@ else:
             return json.loads(response)
 
         @CreatePermission
-        def create(self, nqn: str, gateway: str, traddr: Optional[str] = None,
-                   trtype: Optional[str] = 'TCP', adrfam: Optional[str] = 'IPV4',
-                   trsvcid: Optional[int] = 4420,
-                   auto_ha_state: Optional[str] = 'AUTO_HA_UNSET'):
+        def create(self, nqn: str, gateway: str, traddr: Optional[str] = None):
             """
             Create a new NVMeoF listener
             :param nqn: NVMeoF subsystem NQN
             :param gateway: NVMeoF gateway
             :param traddr: NVMeoF transport address
-            :param trtype: NVMeoF transport type
-            :param adrfam: NVMeoF address family
-            :param trsvcid: NVMeoF transport service ID
-            :param auto_ha_state: NVMeoF auto HA state
             """
-            response = NVMeoFClient().create_listener(nqn, gateway, traddr,
-                                                      trtype, adrfam, trsvcid, auto_ha_state)
+            response = NVMeoFClient().create_listener(nqn, gateway, traddr)
             return json.loads(MessageToJson(response))
 
         @DeletePermission
-        def delete(self, nqn: str, gateway: str, traddr: Optional[str] = None,
-                   transport_type: Optional[str] = 'TCP', addr_family: Optional[str] = 'IPV4',
-                   transport_svc_id: Optional[int] = 4420):
+        def delete(self, nqn: str, gateway: str, traddr: Optional[str] = None):
             """
             Delete an existing NVMeoF listener
             :param nqn: NVMeoF subsystem NQN
             :param gateway: NVMeoF gateway
             :param traddr: NVMeoF transport address
-            :param transport_type: NVMeoF transport type
-            :param addr_family: NVMeoF address family
-            :param transport_svc_id: NVMeoF transport service ID
             """
-            response = NVMeoFClient().delete_listener(nqn, gateway, traddr, transport_type,
-                                                      addr_family, transport_svc_id)
+            response = NVMeoFClient().delete_listener(nqn, gateway, traddr)
             return json.loads(MessageToJson(response))
 
     @APIRouter('/nvmeof/gateway', Scope.NVME_OF)
index 711e8c8e9557f99bf22b781e0818d67d22b758f4..b9c0731ab692014afd65f744f2388e90cc1abdc9 100644 (file)
@@ -7863,34 +7863,19 @@ paths:
     post:
       description: "\n            Create a new NVMeoF listener\n            :param\
         \ nqn: NVMeoF subsystem NQN\n            :param gateway: NVMeoF gateway\n\
-        \            :param traddr: NVMeoF transport address\n            :param trtype:\
-        \ NVMeoF transport type\n            :param adrfam: NVMeoF address family\n\
-        \            :param trsvcid: NVMeoF transport service ID\n            :param\
-        \ auto_ha_state: NVMeoF auto HA state\n            "
+        \            :param traddr: NVMeoF transport address\n            "
       parameters: []
       requestBody:
         content:
           application/json:
             schema:
               properties:
-                adrfam:
-                  default: IPV4
-                  type: string
-                auto_ha_state:
-                  default: AUTO_HA_UNSET
-                  type: string
                 gateway:
                   type: string
                 nqn:
                   type: string
                 traddr:
                   type: string
-                trsvcid:
-                  default: 4420
-                  type: integer
-                trtype:
-                  default: TCP
-                  type: string
               required:
               - nqn
               - gateway
@@ -7923,10 +7908,7 @@ paths:
     delete:
       description: "\n            Delete an existing NVMeoF listener\n           \
         \ :param nqn: NVMeoF subsystem NQN\n            :param gateway: NVMeoF gateway\n\
-        \            :param traddr: NVMeoF transport address\n            :param transport_type:\
-        \ NVMeoF transport type\n            :param addr_family: NVMeoF address family\n\
-        \            :param transport_svc_id: NVMeoF transport service ID\n      \
-        \      "
+        \            :param traddr: NVMeoF transport address\n            "
       parameters:
       - in: path
         name: nqn
@@ -7943,21 +7925,6 @@ paths:
         name: traddr
         schema:
           type: string
-      - default: TCP
-        in: query
-        name: transport_type
-        schema:
-          type: string
-      - default: IPV4
-        in: query
-        name: addr_family
-        schema:
-          type: string
-      - default: 4420
-        in: query
-        name: transport_svc_id
-        schema:
-          type: integer
       responses:
         '202':
           content:
@@ -7989,18 +7956,13 @@ paths:
         \            :param subsystem_nqn: NVMeoF subsystem NQN\n            :param\
         \ create_image: Create RBD image\n            :param image_size: RBD image\
         \ size\n            :param block_size: NVMeoF namespace block size\n     \
-        \       :param nsid: NVMeoF namespace ID\n            :param uuid: NVMeoF\
-        \ namespace UUID\n            :param anagrpid: NVMeoF namespace ANA group\
-        \ ID\n            "
+        \       "
       parameters: []
       requestBody:
         content:
           application/json:
             schema:
               properties:
-                anagrpid:
-                  default: 1
-                  type: integer
                 block_size:
                   default: 512
                   type: integer
@@ -8010,17 +7972,12 @@ paths:
                 image_size:
                   default: 1024
                   type: integer
-                nsid:
-                  default: 1
-                  type: integer
                 rbd_image:
                   type: string
                 rbd_pool:
                   type: string
                 subsystem_nqn:
                   type: string
-                uuid:
-                  type: string
               required:
               - rbd_pool
               - rbd_image
@@ -8051,8 +8008,9 @@ paths:
       tags:
       - NVMe-oF
   /api/nvmeof/namespace/{subsystem_nqn}:
-    get:
-      description: "\n            List all NVMeoF namespaces\n            "
+    delete:
+      description: "\n            Delete an existing NVMeoF namespace\n          \
+        \  :param subsystem_nqn: NVMeoF subsystem NQN\n            "
       parameters:
       - in: path
         name: subsystem_nqn
@@ -8060,11 +8018,16 @@ paths:
         schema:
           type: string
       responses:
-        '200':
+        '202':
           content:
             application/vnd.ceph.api.v1.0+json:
               type: object
-          description: OK
+          description: Operation is still executing. Please check the task queue.
+        '204':
+          content:
+            application/vnd.ceph.api.v1.0+json:
+              type: object
+          description: Resource deleted.
         '400':
           description: Operation exception. Please check the response body for details.
         '401':
@@ -8078,33 +8041,20 @@ paths:
       - jwt: []
       tags:
       - NVMe-oF
-  /api/nvmeof/namespace/{subsystem_nqn}/{nsid}:
-    delete:
-      description: "\n            Delete an existing NVMeoF namespace\n          \
-        \  :param subsystem_nqn: NVMeoF subsystem NQN\n            :param nsid: NVMeoF\
-        \ namespace ID\n            "
+    get:
+      description: "\n            List all NVMeoF namespaces\n            "
       parameters:
       - in: path
         name: subsystem_nqn
         required: true
         schema:
           type: string
-      - in: path
-        name: nsid
-        required: true
-        schema:
-          type: string
       responses:
-        '202':
-          content:
-            application/vnd.ceph.api.v1.0+json:
-              type: object
-          description: Operation is still executing. Please check the task queue.
-        '204':
+        '200':
           content:
             application/vnd.ceph.api.v1.0+json:
               type: object
-          description: Resource deleted.
+          description: OK
         '400':
           description: Operation exception. Please check the response body for details.
         '401':
@@ -8127,12 +8077,6 @@ paths:
         name: subsystem_nqn
         schema:
           type: string
-      - allowEmptyValue: true
-        description: NVMeoF subsystem serial number
-        in: query
-        name: serial_number
-        schema:
-          type: string
       responses:
         '200':
           content:
@@ -8157,21 +8101,13 @@ paths:
       description: "\n            Create a new NVMeoF subsystem\n\n            :param\
         \ subsystem_nqn: NVMeoF subsystem NQN\n            :param serial_number: NVMeoF\
         \ subsystem serial number\n            :param max_namespaces: NVMeoF subsystem\
-        \ maximum namespaces\n            :param ana_reporting: NVMeoF subsystem ANA\
-        \ reporting\n            :param enable_ha: NVMeoF subsystem enable HA\n  \
-        \          "
+        \ maximum namespaces\n            "
       parameters: []
       requestBody:
         content:
           application/json:
             schema:
               properties:
-                ana_reporting:
-                  default: false
-                  type: boolean
-                enable_ha:
-                  default: false
-                  type: boolean
                 max_namespaces:
                   default: 256
                   type: integer
@@ -8209,13 +8145,19 @@ paths:
   /api/nvmeof/subsystem/{subsystem_nqn}:
     delete:
       description: "\n            Delete an existing NVMeoF subsystem\n          \
-        \  :param subsystem_nqn: NVMeoF subsystem NQN\n            "
+        \  :param subsystem_nqn: NVMeoF subsystem NQN\n            :param force: Force\
+        \ delete\n            "
       parameters:
       - in: path
         name: subsystem_nqn
         required: true
         schema:
           type: string
+      - default: false
+        in: query
+        name: force
+        schema:
+          type: boolean
       responses:
         '202':
           content:
index bebaef7d9ecbed03ffe1dc11ef3f7932e1537250..2dc0e473c613976cd983e2efb713409690256e8f 100644 (file)
@@ -1,7 +1,6 @@
 import logging
 from typing import Optional
 
-from ..tools import str_to_bool
 from .nvmeof_conf import NvmeofGatewaysConfig
 
 logger = logging.getLogger('nvmeof_client')
@@ -33,50 +32,40 @@ else:
                 serial_number=serial_number
             ))
 
-        def create_subsystem(self, subsystem_nqn: str, serial_number: str, max_namespaces: int,
-                             ana_reporting: bool, enable_ha: bool):
+        def create_subsystem(self, subsystem_nqn: str, serial_number: str, max_namespaces: int):
             return self.stub.create_subsystem(pb2.create_subsystem_req(
                 subsystem_nqn=subsystem_nqn,
                 serial_number=serial_number,
-                max_namespaces=int(max_namespaces),
-                ana_reporting=str_to_bool(ana_reporting),
-                enable_ha=str_to_bool(enable_ha)
+                max_namespaces=int(max_namespaces)
             ))
 
-        def delete_subsystem(self, subsystem_nqn: str):
+        def delete_subsystem(self, subsystem_nqn: str, force: Optional[bool] = False):
             return self.stub.delete_subsystem(pb2.delete_subsystem_req(
-                subsystem_nqn=subsystem_nqn
+                subsystem_nqn=subsystem_nqn,
+                force=force
             ))
 
-        def list_namespaces(self, subsystem_nqn: str, nsid: Optional[int] = 1,
-                            uuid: Optional[str] = None):
+        def list_namespaces(self, subsystem_nqn: str):
             return self.stub.list_namespaces(pb2.list_namespaces_req(
-                subsystem=subsystem_nqn,
-                nsid=int(nsid),
-                uuid=uuid
+                subsystem=subsystem_nqn
             ))
 
         def create_namespace(self, rbd_pool_name: str, rbd_image_name: str,
                              subsystem_nqn: str, block_size: int = 512,
-                             nsid: Optional[int] = 1, uuid: Optional[str] = None,
-                             anagrpid: Optional[int] = 1, create_image: Optional[bool] = True,
+                             create_image: Optional[bool] = True,
                              size: Optional[int] = 1024):
             return self.stub.namespace_add(pb2.namespace_add_req(
                 rbd_pool_name=rbd_pool_name,
                 rbd_image_name=rbd_image_name,
                 subsystem_nqn=subsystem_nqn,
-                nsid=int(nsid),
                 block_size=block_size,
-                uuid=uuid,
-                anagrpid=anagrpid,
                 create_image=create_image,
                 size=size
             ))
 
-        def delete_namespace(self, subsystem_nqn: str, nsid: int):
-            return self.stub.remove_namespace(pb2.remove_namespace_req(
-                subsystem_nqn=subsystem_nqn,
-                nsid=nsid
+        def delete_namespace(self, subsystem_nqn: str):
+            return self.stub.namespace_delete(pb2.namespace_delete_req(
+                subsystem_nqn=subsystem_nqn
             ))
 
         def list_hosts(self, subsystem_nqn: str):
@@ -101,11 +90,7 @@ else:
                 subsystem=subsystem_nqn
             ))
 
-        def create_listener(self, nqn: str, gateway: str, traddr: Optional[str] = None,
-                            transport_type: Optional[str] = 'TCP',
-                            addr_family: Optional[str] = 'IPV4',
-                            transport_svc_id: Optional[int] = 4420,
-                            auto_ha_state: Optional[str] = 'AUTO_HA_UNSET'):
+        def create_listener(self, nqn: str, gateway: str, traddr: Optional[str] = None):
             traddr = None
             if traddr is None:
                 addr = self.gateway_addr
@@ -115,18 +100,11 @@ else:
             req = pb2.create_listener_req(
                 nqn=nqn,
                 gateway_name=gateway,
-                traddr=traddr,
-                trtype=pb2.TransportType.Value(transport_type.upper()),
-                adrfam=pb2.AddressFamily.Value(addr_family.lower()),
-                trsvcid=transport_svc_id,
-                auto_ha_state=pb2.AutoHAState.Value(auto_ha_state.upper())
+                traddr=traddr
             )
             return self.stub.create_listener(req)
 
-        def delete_listener(self, nqn: str, gateway: str, traddr: Optional[str] = None,
-                            transport_type: Optional[str] = 'TCP',
-                            addr_family: Optional[str] = 'IPV4',
-                            transport_svc_id: Optional[int] = 4420):
+        def delete_listener(self, nqn: str, gateway: str, traddr: Optional[str] = None):
             traddr = None
             if traddr is None:
                 addr = self.gateway_addr
@@ -136,10 +114,7 @@ else:
             return self.stub.delete_listener(pb2.delete_listener_req(
                 nqn=nqn,
                 gateway_name=gateway,
-                traddr=traddr,
-                trtype=pb2.TransportType.Value(transport_type.upper()),
-                adrfam=pb2.AddressFamily.Value(addr_family.lower()),
-                trsvcid=int(transport_svc_id)
+                traddr=traddr
             ))
 
         def gateway_info(self):
index 787aefb1ce9f7895aeb994b5b1f4d1101136efcf..81e2b7205ceb1460ab96b15759fe1796b67c5614 100644 (file)
 
 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;
+    ipv4 = 0;
+    ipv6 = 1;
 }
 
 enum LogLevel {
-    DISABLED = 0;
-    ERROR = 1;
-    WARNING = 2;
-    NOTICE = 3;
-    INFO = 4;
-    DEBUG = 5;
-}
-
-enum AutoHAState {
-    AUTO_HA_UNSET = 0;
-    AUTO_HA_OFF = 1;
-    AUTO_HA_ON = 2;
+    ERROR = 0;
+    WARNING = 1;
+    NOTICE = 2;
+    INFO = 3;
+    DEBUG = 4;
 }
 
 service Gateway {
@@ -93,7 +73,13 @@ service Gateway {
        rpc list_listeners(list_listeners_req) returns(listeners_info) {}
 
        // List subsystems
-       rpc list_subsystems(list_subsystems_req) returns(subsystems_info) {}
+       rpc list_subsystems(list_subsystems_req) returns(subsystems_info_cli) {}
+
+        // Gets subsystems
+        rpc get_subsystems(get_subsystems_req) returns(subsystems_info) {}
+
+       // Set gateway ANA states
+       rpc set_ana_state(ana_info) returns(req_status) {}
 
        // 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) {}
@@ -120,6 +106,7 @@ message namespace_add_req {
        optional int32 anagrpid = 7;
        optional bool create_image = 8;
        optional uint32 size = 9;
+       optional bool force = 10;
 }
 
 message namespace_resize_req {
@@ -162,8 +149,7 @@ message create_subsystem_req {
        string subsystem_nqn = 1;
        string serial_number = 2;
        optional uint32 max_namespaces = 3;
-       bool ana_reporting = 4;
-       bool enable_ha = 5;
+       bool enable_ha = 4;
 }
 
 message delete_subsystem_req {
@@ -199,17 +185,14 @@ message create_listener_req {
        string nqn = 1;
        string gateway_name = 2;
        string traddr = 3;
-       optional TransportType trtype = 4;
        optional AddressFamily adrfam = 5;
        optional uint32 trsvcid = 6;
-       optional AutoHAState auto_ha_state = 7;
 }
 
 message delete_listener_req {
        string nqn = 1;
        string gateway_name = 2;
        string traddr = 3;
-       optional TransportType trtype = 4;
        optional AddressFamily adrfam = 5;
        optional uint32 trsvcid = 6;
 }
@@ -223,6 +206,9 @@ message list_subsystems_req {
        optional string serial_number = 2;
 }
 
+message get_subsystems_req {
+}
+
 message get_spdk_nvmf_log_flags_and_level_req {
 }
 
@@ -238,14 +224,39 @@ message get_gateway_info_req {
        optional string cli_version = 1;
 }
 
-// Return messages 
+// From https://nvmexpress.org/wp-content/uploads/NVM-Express-1_4-2019.06.10-Ratified.pdf page 138
+// Asymmetric Namespace Access state for all namespaces in this ANA
+// Group when accessed through this controller.
+// Value Description Reference
+// 01h ANA Optimized state 8.20.3.1
+// 02h ANA Non-Optimized state 8.20.3.2
+// 03h ANA Inaccessible state 8.20.3.3
+// 04h ANA Persistent Loss state 8.20.3.4
+// 0Fh ANA Change state 8.20.3.5
+// All others Reserved
+enum ana_state {
+  UNSET         = 0;
+  OPTIMIZED     = 1;
+  NON_OPTIMIZED = 2;
+  INACCESSIBLE  = 3;
+}
 
-message bdev_status {
-       int32 status = 1;
-       string error_message = 2;
-       string bdev_name = 3;
+message ana_group_state {
+       uint32     grp_id = 1;  // groupd id
+       ana_state  state  = 2;  // ANA state
+}
+
+message nqn_ana_states {
+       string     nqn                     = 1; // subsystem nqn
+       repeated   ana_group_state  states = 2; // list of group states
 }
 
+message ana_info {
+       repeated nqn_ana_states states = 1; // list of nqn states
+}
+
+// Return messages 
+
 message req_status {
        int32 status = 1;
        string error_message = 2;
@@ -258,12 +269,48 @@ message nsid_status {
 }
 
 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 listen_address {
+        string trtype = 1;
+        string adrfam = 2;
+        string traddr = 3;
+        string trsvcid = 4;
+        optional string transport = 5;
+}
+
+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;
+    optional string nonce = 7;
+}
+
+message subsystems_info_cli {
        int32 status = 1;
        string error_message = 2;
-       repeated subsystem subsystems = 3;
+       repeated subsystem_cli subsystems = 3;
 }
 
-message subsystem {
+message subsystem_cli {
        string nqn = 1;
        bool enable_ha = 2;
        string serial_number = 3;
@@ -284,7 +331,7 @@ message gateway_info {
        bool bool_status = 7;
        int32 status = 8;
        string error_message = 9;
-       string spdk_version = 10;
+       optional string spdk_version = 10;
 }
 
 message cli_version {
@@ -301,7 +348,7 @@ message gw_version {
 
 message listener_info {
        string gateway_name = 1;
-       TransportType trtype = 2;
+       string trtype = 2;
        AddressFamily adrfam = 3;
        string traddr = 4;
        uint32 trsvcid = 5;
@@ -329,7 +376,7 @@ message connection {
        string nqn = 1;
        string traddr = 2;
        uint32 trsvcid = 3;
-       TransportType trtype = 4;
+        string trtype = 4;
        AddressFamily adrfam = 5;
        bool connected = 6;
        int32 qpairs_count = 7;
@@ -343,7 +390,7 @@ message connections_info {
        repeated connection connections = 4;
 }
 
-message namespace {
+message namespace_cli {
        uint32 nsid = 1;
        string bdev_name = 2;
        string rbd_image_name = 3;
@@ -362,7 +409,7 @@ message namespaces_info {
        int32 status = 1;
        string error_message = 2;
        string subsystem_nqn = 3;
-       repeated namespace namespaces = 4;
+       repeated namespace_cli namespaces = 4;
 }
 
 message namespace_io_stats_info {
index 00349b5256cdca8b502729557a9a0b85513ce440..6bd40aaee4739ba96a9763fa2945d85b7a7fa502 100644 (file)
@@ -19,60 +19,9 @@ DESCRIPTOR = _descriptor.FileDescriptor(
     syntax='proto3',
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
-    serialized_pb=b'\n\rgateway.proto\"\x91\x02\n\x11namespace_add_req\x12\x15\n\rrbd_pool_name\x18\x01 \x01(\t\x12\x16\n\x0erbd_image_name\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\x11\n\x04nsid\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x12\n\nblock_size\x18\x05 \x01(\r\x12\x11\n\x04uuid\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08\x61nagrpid\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12\x19\n\x0c\x63reate_image\x18\x08 \x01(\x08H\x03\x88\x01\x01\x12\x11\n\x04size\x18\t \x01(\rH\x04\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuidB\x0b\n\t_anagrpidB\x0f\n\r_create_imageB\x07\n\x05_size\"w\n\x14namespace_resize_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08new_size\x18\x04 \x01(\rB\x07\n\x05_nsidB\x07\n\x05_uuid\"k\n\x1anamespace_get_io_stats_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"\xcc\x02\n\x15namespace_set_qos_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11rw_ios_per_second\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12!\n\x14rw_mbytes_per_second\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12 \n\x13r_mbytes_per_second\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12 \n\x13w_mbytes_per_second\x18\x07 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuidB\x14\n\x12_rw_ios_per_secondB\x17\n\x15_rw_mbytes_per_secondB\x16\n\x14_r_mbytes_per_secondB\x16\n\x14_w_mbytes_per_second\"\x8c\x01\n)namespace_change_load_balancing_group_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08\x61nagrpid\x18\x04 \x01(\x05\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"e\n\x14namespace_delete_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"\x9e\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\x1b\n\x0emax_namespaces\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x15\n\rana_reporting\x18\x04 \x01(\x08\x12\x11\n\tenable_ha\x18\x05 \x01(\x08\x42\x11\n\x0f_max_namespaces\"K\n\x14\x64\x65lete_subsystem_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_force\"`\n\x13list_namespaces_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"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\"#\n\x0elist_hosts_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\")\n\x14list_connections_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\"\x86\x02\n\x13\x63reate_listener_req\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x14\n\x0cgateway_name\x18\x02 \x01(\t\x12\x0e\n\x06traddr\x18\x03 \x01(\t\x12#\n\x06trtype\x18\x04 \x01(\x0e\x32\x0e.TransportTypeH\x00\x88\x01\x01\x12#\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamilyH\x01\x88\x01\x01\x12\x14\n\x07trsvcid\x18\x06 \x01(\rH\x02\x88\x01\x01\x12(\n\rauto_ha_state\x18\x07 \x01(\x0e\x32\x0c.AutoHAStateH\x03\x88\x01\x01\x42\t\n\x07_trtypeB\t\n\x07_adrfamB\n\n\x08_trsvcidB\x10\n\x0e_auto_ha_state\"\xca\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\x0e\n\x06traddr\x18\x03 \x01(\t\x12#\n\x06trtype\x18\x04 \x01(\x0e\x32\x0e.TransportTypeH\x00\x88\x01\x01\x12#\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamilyH\x01\x88\x01\x01\x12\x14\n\x07trsvcid\x18\x06 \x01(\rH\x02\x88\x01\x01\x42\t\n\x07_trtypeB\t\n\x07_adrfamB\n\n\x08_trsvcid\"\'\n\x12list_listeners_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\"q\n\x13list_subsystems_req\x12\x1a\n\rsubsystem_nqn\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rserial_number\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x10\n\x0e_subsystem_nqnB\x10\n\x0e_serial_number\"\'\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\x18\n\x0b\x63li_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_cli_version\"G\n\x0b\x62\x64\x65v_status\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x11\n\tbdev_name\x18\x03 \x01(\t\"3\n\nreq_status\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\"B\n\x0bnsid_status\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0c\n\x04nsid\x18\x03 \x01(\r\"X\n\x0fsubsystems_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x1e\n\nsubsystems\x18\x03 \x03(\x0b\x32\n.subsystem\"\xaa\x01\n\tsubsystem\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x11\n\tenable_ha\x18\x02 \x01(\x08\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x14\n\x0cmodel_number\x18\x04 \x01(\t\x12\x12\n\nmin_cntlid\x18\x05 \x01(\r\x12\x12\n\nmax_cntlid\x18\x06 \x01(\r\x12\x17\n\x0fnamespace_count\x18\x07 \x01(\r\x12\x0f\n\x07subtype\x18\x08 \x01(\t\"\xbf\x01\n\x0cgateway_info\x12\x13\n\x0b\x63li_version\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05group\x18\x04 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x05 \x01(\t\x12\x0c\n\x04port\x18\x06 \x01(\t\x12\x13\n\x0b\x62ool_status\x18\x07 \x01(\x08\x12\x0e\n\x06status\x18\x08 \x01(\x05\x12\x15\n\rerror_message\x18\t \x01(\t\x12\x14\n\x0cspdk_version\x18\n \x01(\t\"E\n\x0b\x63li_version\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"D\n\ngw_version\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"\x86\x01\n\rlistener_info\x12\x14\n\x0cgateway_name\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(\r\"Z\n\x0elisteners_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12!\n\tlisteners\x18\x03 \x03(\x0b\x32\x0e.listener_info\"\x13\n\x04host\x12\x0b\n\x03nqn\x18\x01 \x01(\t\"x\n\nhosts_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x16\n\x0e\x61llow_any_host\x18\x03 \x01(\x08\x12\x15\n\rsubsystem_nqn\x18\x04 \x01(\t\x12\x14\n\x05hosts\x18\x05 \x03(\x0b\x32\x05.host\"\xba\x01\n\nconnection\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x0e\n\x06traddr\x18\x02 \x01(\t\x12\x0f\n\x07trsvcid\x18\x03 \x01(\r\x12\x1e\n\x06trtype\x18\x04 \x01(\x0e\x32\x0e.TransportType\x12\x1e\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamily\x12\x11\n\tconnected\x18\x06 \x01(\x08\x12\x14\n\x0cqpairs_count\x18\x07 \x01(\x05\x12\x15\n\rcontroller_id\x18\x08 \x01(\x05\"r\n\x10\x63onnections_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12 \n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\x0b.connection\"\xa6\x02\n\tnamespace\x12\x0c\n\x04nsid\x18\x01 \x01(\r\x12\x11\n\tbdev_name\x18\x02 \x01(\t\x12\x16\n\x0erbd_image_name\x18\x03 \x01(\t\x12\x15\n\rrbd_pool_name\x18\x04 \x01(\t\x12\x1c\n\x14load_balancing_group\x18\x05 \x01(\r\x12\x12\n\nblock_size\x18\x06 \x01(\r\x12\x16\n\x0erbd_image_size\x18\x07 \x01(\x04\x12\x0c\n\x04uuid\x18\x08 \x01(\t\x12\x19\n\x11rw_ios_per_second\x18\t \x01(\x04\x12\x1c\n\x14rw_mbytes_per_second\x18\n \x01(\x04\x12\x1b\n\x13r_mbytes_per_second\x18\x0b \x01(\x04\x12\x1b\n\x13w_mbytes_per_second\x18\x0c \x01(\x04\"o\n\x0fnamespaces_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\x1e\n\nnamespaces\x18\x04 \x03(\x0b\x32\n.namespace\"\xb7\x05\n\x17namespace_io_stats_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\x0c\n\x04nsid\x18\x04 \x01(\r\x12\x0c\n\x04uuid\x18\x05 \x01(\t\x12\x11\n\tbdev_name\x18\x06 \x01(\t\x12\x11\n\ttick_rate\x18\x07 \x01(\x04\x12\r\n\x05ticks\x18\x08 \x01(\x04\x12\x12\n\nbytes_read\x18\t \x01(\x04\x12\x14\n\x0cnum_read_ops\x18\n \x01(\x04\x12\x15\n\rbytes_written\x18\x0b \x01(\x04\x12\x15\n\rnum_write_ops\x18\x0c \x01(\x04\x12\x16\n\x0e\x62ytes_unmapped\x18\r \x01(\x04\x12\x15\n\rnum_unmap_ops\x18\x0e \x01(\x04\x12\x1a\n\x12read_latency_ticks\x18\x0f \x01(\x04\x12\x1e\n\x16max_read_latency_ticks\x18\x10 \x01(\x04\x12\x1e\n\x16min_read_latency_ticks\x18\x11 \x01(\x04\x12\x1b\n\x13write_latency_ticks\x18\x12 \x01(\x04\x12\x1f\n\x17max_write_latency_ticks\x18\x13 \x01(\x04\x12\x1f\n\x17min_write_latency_ticks\x18\x14 \x01(\x04\x12\x1b\n\x13unmap_latency_ticks\x18\x15 \x01(\x04\x12\x1f\n\x17max_unmap_latency_ticks\x18\x16 \x01(\x04\x12\x1f\n\x17min_unmap_latency_ticks\x18\x17 \x01(\x04\x12\x1a\n\x12\x63opy_latency_ticks\x18\x18 \x01(\x04\x12\x1e\n\x16max_copy_latency_ticks\x18\x19 \x01(\x04\x12\x1e\n\x16min_copy_latency_ticks\x18\x1a \x01(\x04\x12\x10\n\x08io_error\x18\x1b \x03(\r\"3\n\x12spdk_log_flag_info\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"\xba\x01\n\"spdk_nvmf_log_flags_and_level_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12+\n\x0envmf_log_flags\x18\x03 \x03(\x0b\x32\x13.spdk_log_flag_info\x12\x1c\n\tlog_level\x18\x04 \x01(\x0e\x32\t.LogLevel\x12\"\n\x0flog_print_level\x18\x05 \x01(\x0e\x32\t.LogLevel*^\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*Q\n\x08LogLevel\x12\x0c\n\x08\x44ISABLED\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x0b\n\x07WARNING\x10\x02\x12\n\n\x06NOTICE\x10\x03\x12\x08\n\x04INFO\x10\x04\x12\t\n\x05\x44\x45\x42UG\x10\x05*A\n\x0b\x41utoHAState\x12\x11\n\rAUTO_HA_UNSET\x10\x00\x12\x0f\n\x0b\x41UTO_HA_OFF\x10\x01\x12\x0e\n\nAUTO_HA_ON\x10\x02\x32\xc0\n\n\x07Gateway\x12\x33\n\rnamespace_add\x12\x12.namespace_add_req\x1a\x0c.nsid_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;\n\x0flist_namespaces\x12\x14.list_namespaces_req\x1a\x10.namespaces_info\"\x00\x12\x38\n\x10namespace_resize\x12\x15.namespace_resize_req\x1a\x0b.req_status\"\x00\x12Q\n\x16namespace_get_io_stats\x12\x1b.namespace_get_io_stats_req\x1a\x18.namespace_io_stats_info\"\x00\x12\x41\n\x18namespace_set_qos_limits\x12\x16.namespace_set_qos_req\x1a\x0b.req_status\"\x00\x12\x62\n%namespace_change_load_balancing_group\x12*.namespace_change_load_balancing_group_req\x1a\x0b.req_status\"\x00\x12\x38\n\x10namespace_delete\x12\x15.namespace_delete_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,\n\nlist_hosts\x12\x0f.list_hosts_req\x1a\x0b.hosts_info\"\x00\x12>\n\x10list_connections\x12\x15.list_connections_req\x1a\x11.connections_info\"\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\x38\n\x0elist_listeners\x12\x13.list_listeners_req\x1a\x0f.listeners_info\"\x00\x12;\n\x0flist_subsystems\x12\x14.list_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'
+    serialized_pb=b'\n\rgateway.proto\"\x91\x02\n\x11namespace_add_req\x12\x15\n\rrbd_pool_name\x18\x01 \x01(\t\x12\x16\n\x0erbd_image_name\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\x11\n\x04nsid\x18\x04 \x01(\rH\x00\x88\x01\x01\x12\x12\n\nblock_size\x18\x05 \x01(\r\x12\x11\n\x04uuid\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x15\n\x08\x61nagrpid\x18\x07 \x01(\x05H\x02\x88\x01\x01\x12\x19\n\x0c\x63reate_image\x18\x08 \x01(\x08H\x03\x88\x01\x01\x12\x11\n\x04size\x18\t \x01(\rH\x04\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuidB\x0b\n\t_anagrpidB\x0f\n\r_create_imageB\x07\n\x05_size\"w\n\x14namespace_resize_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08new_size\x18\x04 \x01(\rB\x07\n\x05_nsidB\x07\n\x05_uuid\"k\n\x1anamespace_get_io_stats_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"\xcc\x02\n\x15namespace_set_qos_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11rw_ios_per_second\x18\x04 \x01(\x04H\x02\x88\x01\x01\x12!\n\x14rw_mbytes_per_second\x18\x05 \x01(\x04H\x03\x88\x01\x01\x12 \n\x13r_mbytes_per_second\x18\x06 \x01(\x04H\x04\x88\x01\x01\x12 \n\x13w_mbytes_per_second\x18\x07 \x01(\x04H\x05\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuidB\x14\n\x12_rw_ios_per_secondB\x17\n\x15_rw_mbytes_per_secondB\x16\n\x14_r_mbytes_per_secondB\x16\n\x14_w_mbytes_per_second\"\x8c\x01\n)namespace_change_load_balancing_group_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x10\n\x08\x61nagrpid\x18\x04 \x01(\x05\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"e\n\x14namespace_delete_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"\x87\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\x1b\n\x0emax_namespaces\x18\x03 \x01(\rH\x00\x88\x01\x01\x12\x11\n\tenable_ha\x18\x04 \x01(\x08\x42\x11\n\x0f_max_namespaces\"K\n\x14\x64\x65lete_subsystem_req\x12\x15\n\rsubsystem_nqn\x18\x01 \x01(\t\x12\x12\n\x05\x66orce\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_force\"`\n\x13list_namespaces_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\x12\x11\n\x04nsid\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x11\n\x04uuid\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_nsidB\x07\n\x05_uuid\"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\"#\n\x0elist_hosts_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\")\n\x14list_connections_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\"\x9a\x01\n\x13\x63reate_listener_req\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x14\n\x0cgateway_name\x18\x02 \x01(\t\x12\x0e\n\x06traddr\x18\x03 \x01(\t\x12#\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamilyH\x00\x88\x01\x01\x12\x14\n\x07trsvcid\x18\x06 \x01(\rH\x01\x88\x01\x01\x42\t\n\x07_adrfamB\n\n\x08_trsvcid\"\x9a\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\x0e\n\x06traddr\x18\x03 \x01(\t\x12#\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamilyH\x00\x88\x01\x01\x12\x14\n\x07trsvcid\x18\x06 \x01(\rH\x01\x88\x01\x01\x42\t\n\x07_adrfamB\n\n\x08_trsvcid\"\'\n\x12list_listeners_req\x12\x11\n\tsubsystem\x18\x01 \x01(\t\"q\n\x13list_subsystems_req\x12\x1a\n\rsubsystem_nqn\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rserial_number\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x10\n\x0e_subsystem_nqnB\x10\n\x0e_serial_number\"\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\x18\n\x0b\x63li_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_cli_version\"<\n\x0f\x61na_group_state\x12\x0e\n\x06grp_id\x18\x01 \x01(\r\x12\x19\n\x05state\x18\x02 \x01(\x0e\x32\n.ana_state\"?\n\x0enqn_ana_states\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12 \n\x06states\x18\x02 \x03(\x0b\x32\x10.ana_group_state\"+\n\x08\x61na_info\x12\x1f\n\x06states\x18\x01 \x03(\x0b\x32\x0f.nqn_ana_states\"3\n\nreq_status\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\"B\n\x0bnsid_status\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0c\n\x04nsid\x18\x03 \x01(\r\"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\"w\n\x0elisten_address\x12\x0e\n\x06trtype\x18\x01 \x01(\t\x12\x0e\n\x06\x61\x64rfam\x18\x02 \x01(\t\x12\x0e\n\x06traddr\x18\x03 \x01(\t\x12\x0f\n\x07trsvcid\x18\x04 \x01(\t\x12\x16\n\ttransport\x18\x05 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_transport\"\xc9\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\x12\x12\n\x05nonce\x18\x07 \x01(\tH\x04\x88\x01\x01\x42\x0c\n\n_bdev_nameB\x08\n\x06_nguidB\x07\n\x05_uuidB\x0b\n\t_anagrpidB\x08\n\x06_nonce\"`\n\x13subsystems_info_cli\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\"\n\nsubsystems\x18\x03 \x03(\x0b\x32\x0e.subsystem_cli\"\xae\x01\n\rsubsystem_cli\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x11\n\tenable_ha\x18\x02 \x01(\x08\x12\x15\n\rserial_number\x18\x03 \x01(\t\x12\x14\n\x0cmodel_number\x18\x04 \x01(\t\x12\x12\n\nmin_cntlid\x18\x05 \x01(\r\x12\x12\n\nmax_cntlid\x18\x06 \x01(\r\x12\x17\n\x0fnamespace_count\x18\x07 \x01(\r\x12\x0f\n\x07subtype\x18\x08 \x01(\t\"\xd5\x01\n\x0cgateway_info\x12\x13\n\x0b\x63li_version\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05group\x18\x04 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x05 \x01(\t\x12\x0c\n\x04port\x18\x06 \x01(\t\x12\x13\n\x0b\x62ool_status\x18\x07 \x01(\x08\x12\x0e\n\x06status\x18\x08 \x01(\x05\x12\x15\n\rerror_message\x18\t \x01(\t\x12\x19\n\x0cspdk_version\x18\n \x01(\tH\x00\x88\x01\x01\x42\x0f\n\r_spdk_version\"E\n\x0b\x63li_version\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"D\n\ngw_version\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"v\n\rlistener_info\x12\x14\n\x0cgateway_name\x18\x01 \x01(\t\x12\x0e\n\x06trtype\x18\x02 \x01(\t\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(\r\"Z\n\x0elisteners_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12!\n\tlisteners\x18\x03 \x03(\x0b\x32\x0e.listener_info\"\x13\n\x04host\x12\x0b\n\x03nqn\x18\x01 \x01(\t\"x\n\nhosts_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x16\n\x0e\x61llow_any_host\x18\x03 \x01(\x08\x12\x15\n\rsubsystem_nqn\x18\x04 \x01(\t\x12\x14\n\x05hosts\x18\x05 \x03(\x0b\x32\x05.host\"\xaa\x01\n\nconnection\x12\x0b\n\x03nqn\x18\x01 \x01(\t\x12\x0e\n\x06traddr\x18\x02 \x01(\t\x12\x0f\n\x07trsvcid\x18\x03 \x01(\r\x12\x0e\n\x06trtype\x18\x04 \x01(\t\x12\x1e\n\x06\x61\x64rfam\x18\x05 \x01(\x0e\x32\x0e.AddressFamily\x12\x11\n\tconnected\x18\x06 \x01(\x08\x12\x14\n\x0cqpairs_count\x18\x07 \x01(\x05\x12\x15\n\rcontroller_id\x18\x08 \x01(\x05\"r\n\x10\x63onnections_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12 \n\x0b\x63onnections\x18\x04 \x03(\x0b\x32\x0b.connection\"\xaa\x02\n\rnamespace_cli\x12\x0c\n\x04nsid\x18\x01 \x01(\r\x12\x11\n\tbdev_name\x18\x02 \x01(\t\x12\x16\n\x0erbd_image_name\x18\x03 \x01(\t\x12\x15\n\rrbd_pool_name\x18\x04 \x01(\t\x12\x1c\n\x14load_balancing_group\x18\x05 \x01(\r\x12\x12\n\nblock_size\x18\x06 \x01(\r\x12\x16\n\x0erbd_image_size\x18\x07 \x01(\x04\x12\x0c\n\x04uuid\x18\x08 \x01(\t\x12\x19\n\x11rw_ios_per_second\x18\t \x01(\x04\x12\x1c\n\x14rw_mbytes_per_second\x18\n \x01(\x04\x12\x1b\n\x13r_mbytes_per_second\x18\x0b \x01(\x04\x12\x1b\n\x13w_mbytes_per_second\x18\x0c \x01(\x04\"s\n\x0fnamespaces_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\"\n\nnamespaces\x18\x04 \x03(\x0b\x32\x0e.namespace_cli\"\xb7\x05\n\x17namespace_io_stats_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12\x15\n\rsubsystem_nqn\x18\x03 \x01(\t\x12\x0c\n\x04nsid\x18\x04 \x01(\r\x12\x0c\n\x04uuid\x18\x05 \x01(\t\x12\x11\n\tbdev_name\x18\x06 \x01(\t\x12\x11\n\ttick_rate\x18\x07 \x01(\x04\x12\r\n\x05ticks\x18\x08 \x01(\x04\x12\x12\n\nbytes_read\x18\t \x01(\x04\x12\x14\n\x0cnum_read_ops\x18\n \x01(\x04\x12\x15\n\rbytes_written\x18\x0b \x01(\x04\x12\x15\n\rnum_write_ops\x18\x0c \x01(\x04\x12\x16\n\x0e\x62ytes_unmapped\x18\r \x01(\x04\x12\x15\n\rnum_unmap_ops\x18\x0e \x01(\x04\x12\x1a\n\x12read_latency_ticks\x18\x0f \x01(\x04\x12\x1e\n\x16max_read_latency_ticks\x18\x10 \x01(\x04\x12\x1e\n\x16min_read_latency_ticks\x18\x11 \x01(\x04\x12\x1b\n\x13write_latency_ticks\x18\x12 \x01(\x04\x12\x1f\n\x17max_write_latency_ticks\x18\x13 \x01(\x04\x12\x1f\n\x17min_write_latency_ticks\x18\x14 \x01(\x04\x12\x1b\n\x13unmap_latency_ticks\x18\x15 \x01(\x04\x12\x1f\n\x17max_unmap_latency_ticks\x18\x16 \x01(\x04\x12\x1f\n\x17min_unmap_latency_ticks\x18\x17 \x01(\x04\x12\x1a\n\x12\x63opy_latency_ticks\x18\x18 \x01(\x04\x12\x1e\n\x16max_copy_latency_ticks\x18\x19 \x01(\x04\x12\x1e\n\x16min_copy_latency_ticks\x18\x1a \x01(\x04\x12\x10\n\x08io_error\x18\x1b \x03(\r\"3\n\x12spdk_log_flag_info\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\"\xba\x01\n\"spdk_nvmf_log_flags_and_level_info\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x15\n\rerror_message\x18\x02 \x01(\t\x12+\n\x0envmf_log_flags\x18\x03 \x03(\x0b\x32\x13.spdk_log_flag_info\x12\x1c\n\tlog_level\x18\x04 \x01(\x0e\x32\t.LogLevel\x12\"\n\x0flog_print_level\x18\x05 \x01(\x0e\x32\t.LogLevel*#\n\rAddressFamily\x12\x08\n\x04ipv4\x10\x00\x12\x08\n\x04ipv6\x10\x01*C\n\x08LogLevel\x12\t\n\x05\x45RROR\x10\x00\x12\x0b\n\x07WARNING\x10\x01\x12\n\n\x06NOTICE\x10\x02\x12\x08\n\x04INFO\x10\x03\x12\t\n\x05\x44\x45\x42UG\x10\x04*J\n\tana_state\x12\t\n\x05UNSET\x10\x00\x12\r\n\tOPTIMIZED\x10\x01\x12\x11\n\rNON_OPTIMIZED\x10\x02\x12\x10\n\x0cINACCESSIBLE\x10\x03\x32\xaa\x0b\n\x07Gateway\x12\x33\n\rnamespace_add\x12\x12.namespace_add_req\x1a\x0c.nsid_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;\n\x0flist_namespaces\x12\x14.list_namespaces_req\x1a\x10.namespaces_info\"\x00\x12\x38\n\x10namespace_resize\x12\x15.namespace_resize_req\x1a\x0b.req_status\"\x00\x12Q\n\x16namespace_get_io_stats\x12\x1b.namespace_get_io_stats_req\x1a\x18.namespace_io_stats_info\"\x00\x12\x41\n\x18namespace_set_qos_limits\x12\x16.namespace_set_qos_req\x1a\x0b.req_status\"\x00\x12\x62\n%namespace_change_load_balancing_group\x12*.namespace_change_load_balancing_group_req\x1a\x0b.req_status\"\x00\x12\x38\n\x10namespace_delete\x12\x15.namespace_delete_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,\n\nlist_hosts\x12\x0f.list_hosts_req\x1a\x0b.hosts_info\"\x00\x12>\n\x10list_connections\x12\x15.list_connections_req\x1a\x11.connections_info\"\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\x38\n\x0elist_listeners\x12\x13.list_listeners_req\x1a\x0f.listeners_info\"\x00\x12?\n\x0flist_subsystems\x12\x14.list_subsystems_req\x1a\x14.subsystems_info_cli\"\x00\x12\x39\n\x0eget_subsystems\x12\x13.get_subsystems_req\x1a\x10.subsystems_info\"\x00\x12)\n\rset_ana_state\x12\t.ana_info\x1a\x0b.req_status\"\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.EnumDescriptor(
-    name='TransportType',
-    full_name='TransportType',
-    filename=None,
-    file=DESCRIPTOR,
-    create_key=_descriptor._internal_create_key,
-    values=[
-        _descriptor.EnumValueDescriptor(
-            name='INVALID', index=0, number=0,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='RDMA', index=1, number=1,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='FC', index=2, number=2,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='TCP', index=3, number=3,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='PCIE', index=4, number=256,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='VFIOUSER', index=5, number=1024,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='CUSTOM', index=6, number=4096,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-    ],
-    containing_type=None,
-    serialized_options=None,
-    serialized_start=5347,
-    serialized_end=5441,
-)
-_sym_db.RegisterEnumDescriptor(_TRANSPORTTYPE)
-
-TransportType = enum_type_wrapper.EnumTypeWrapper(_TRANSPORTTYPE)
 _ADDRESSFAMILY = _descriptor.EnumDescriptor(
     name='AddressFamily',
     full_name='AddressFamily',
@@ -81,35 +30,20 @@ _ADDRESSFAMILY = _descriptor.EnumDescriptor(
     create_key=_descriptor._internal_create_key,
     values=[
         _descriptor.EnumValueDescriptor(
-            name='invalid', index=0, number=0,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='ipv4', index=1, number=1,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='ipv6', index=2, number=2,
+            name='ipv4', index=0, number=0,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='ib', index=3, number=3,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='fc', index=4, number=4,
+            name='ipv6', index=1, number=1,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
     ],
     containing_type=None,
     serialized_options=None,
-    serialized_start=5443,
-    serialized_end=5507,
+    serialized_start=6057,
+    serialized_end=6092,
 )
 _sym_db.RegisterEnumDescriptor(_ADDRESSFAMILY)
 
@@ -122,96 +56,86 @@ _LOGLEVEL = _descriptor.EnumDescriptor(
     create_key=_descriptor._internal_create_key,
     values=[
         _descriptor.EnumValueDescriptor(
-            name='DISABLED', index=0, number=0,
-            serialized_options=None,
-            type=None,
-            create_key=_descriptor._internal_create_key),
-        _descriptor.EnumValueDescriptor(
-            name='ERROR', index=1, number=1,
+            name='ERROR', index=0, number=0,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='WARNING', index=2, number=2,
+            name='WARNING', index=1, number=1,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='NOTICE', index=3, number=3,
+            name='NOTICE', index=2, number=2,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='INFO', index=4, number=4,
+            name='INFO', index=3, number=3,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='DEBUG', index=5, number=5,
+            name='DEBUG', index=4, number=4,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
     ],
     containing_type=None,
     serialized_options=None,
-    serialized_start=5509,
-    serialized_end=5590,
+    serialized_start=6094,
+    serialized_end=6161,
 )
 _sym_db.RegisterEnumDescriptor(_LOGLEVEL)
 
 LogLevel = enum_type_wrapper.EnumTypeWrapper(_LOGLEVEL)
-_AUTOHASTATE = _descriptor.EnumDescriptor(
-    name='AutoHAState',
-    full_name='AutoHAState',
+_ANA_STATE = _descriptor.EnumDescriptor(
+    name='ana_state',
+    full_name='ana_state',
     filename=None,
     file=DESCRIPTOR,
     create_key=_descriptor._internal_create_key,
     values=[
         _descriptor.EnumValueDescriptor(
-            name='AUTO_HA_UNSET', index=0, number=0,
+            name='UNSET', index=0, number=0,
+            serialized_options=None,
+            type=None,
+            create_key=_descriptor._internal_create_key),
+        _descriptor.EnumValueDescriptor(
+            name='OPTIMIZED', index=1, number=1,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='AUTO_HA_OFF', index=1, number=1,
+            name='NON_OPTIMIZED', index=2, number=2,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
         _descriptor.EnumValueDescriptor(
-            name='AUTO_HA_ON', index=2, number=2,
+            name='INACCESSIBLE', index=3, number=3,
             serialized_options=None,
             type=None,
             create_key=_descriptor._internal_create_key),
     ],
     containing_type=None,
     serialized_options=None,
-    serialized_start=5592,
-    serialized_end=5657,
+    serialized_start=6163,
+    serialized_end=6237,
 )
-_sym_db.RegisterEnumDescriptor(_AUTOHASTATE)
-
-AutoHAState = enum_type_wrapper.EnumTypeWrapper(_AUTOHASTATE)
-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
-WARNING = 2
-NOTICE = 3
-INFO = 4
-DEBUG = 5
-AUTO_HA_UNSET = 0
-AUTO_HA_OFF = 1
-AUTO_HA_ON = 2
+_sym_db.RegisterEnumDescriptor(_ANA_STATE)
+
+ana_state = enum_type_wrapper.EnumTypeWrapper(_ANA_STATE)
+ipv4 = 0
+ipv6 = 1
+ERROR = 0
+WARNING = 1
+NOTICE = 2
+INFO = 3
+DEBUG = 4
+UNSET = 0
+OPTIMIZED = 1
+NON_OPTIMIZED = 2
+INACCESSIBLE = 3
 
 
 _NAMESPACE_ADD_REQ = _descriptor.Descriptor(
@@ -699,19 +623,12 @@ _CREATE_SUBSYSTEM_REQ = _descriptor.Descriptor(
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='ana_reporting', full_name='create_subsystem_req.ana_reporting', index=3,
+            name='enable_ha', full_name='create_subsystem_req.enable_ha', index=3,
             number=4, type=8, cpp_type=7, label=1,
             has_default_value=False, default_value=False,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-        _descriptor.FieldDescriptor(
-            name='enable_ha', full_name='create_subsystem_req.enable_ha', index=4,
-            number=5, type=8, cpp_type=7, label=1,
-            has_default_value=False, default_value=False,
-            message_type=None, enum_type=None, containing_type=None,
-            is_extension=False, extension_scope=None,
-            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     ],
     extensions=[
     ],
@@ -730,7 +647,7 @@ _CREATE_SUBSYSTEM_REQ = _descriptor.Descriptor(
             fields=[]),
     ],
     serialized_start=1105,
-    serialized_end=1263,
+    serialized_end=1240,
 )
 
 
@@ -773,8 +690,8 @@ _DELETE_SUBSYSTEM_REQ = _descriptor.Descriptor(
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=1265,
-    serialized_end=1340,
+    serialized_start=1242,
+    serialized_end=1317,
 )
 
 
@@ -829,8 +746,8 @@ _LIST_NAMESPACES_REQ = _descriptor.Descriptor(
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=1342,
-    serialized_end=1438,
+    serialized_start=1319,
+    serialized_end=1415,
 )
 
 
@@ -868,8 +785,8 @@ _ADD_HOST_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=1440,
-    serialized_end=1495,
+    serialized_start=1417,
+    serialized_end=1472,
 )
 
 
@@ -907,8 +824,8 @@ _REMOVE_HOST_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=1497,
-    serialized_end=1555,
+    serialized_start=1474,
+    serialized_end=1532,
 )
 
 
@@ -939,8 +856,8 @@ _LIST_HOSTS_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=1557,
-    serialized_end=1592,
+    serialized_start=1534,
+    serialized_end=1569,
 )
 
 
@@ -971,8 +888,8 @@ _LIST_CONNECTIONS_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=1594,
-    serialized_end=1635,
+    serialized_start=1571,
+    serialized_end=1612,
 )
 
 
@@ -1006,33 +923,19 @@ _CREATE_LISTENER_REQ = _descriptor.Descriptor(
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='trtype', full_name='create_listener_req.trtype', index=3,
-            number=4, type=14, cpp_type=8, label=1,
-            has_default_value=False, default_value=0,
-            message_type=None, enum_type=None, containing_type=None,
-            is_extension=False, extension_scope=None,
-            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-        _descriptor.FieldDescriptor(
-            name='adrfam', full_name='create_listener_req.adrfam', index=4,
+            name='adrfam', full_name='create_listener_req.adrfam', index=3,
             number=5, type=14, cpp_type=8, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='trsvcid', full_name='create_listener_req.trsvcid', index=5,
+            name='trsvcid', full_name='create_listener_req.trsvcid', index=4,
             number=6, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-        _descriptor.FieldDescriptor(
-            name='auto_ha_state', full_name='create_listener_req.auto_ha_state', index=6,
-            number=7, type=14, cpp_type=8, label=1,
-            has_default_value=False, default_value=0,
-            message_type=None, enum_type=None, containing_type=None,
-            is_extension=False, extension_scope=None,
-            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     ],
     extensions=[
     ],
@@ -1044,29 +947,19 @@ _CREATE_LISTENER_REQ = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
-        _descriptor.OneofDescriptor(
-            name='_trtype', full_name='create_listener_req._trtype',
-            index=0, containing_type=None,
-            create_key=_descriptor._internal_create_key,
-            fields=[]),
         _descriptor.OneofDescriptor(
             name='_adrfam', full_name='create_listener_req._adrfam',
-            index=1, containing_type=None,
+            index=0, containing_type=None,
             create_key=_descriptor._internal_create_key,
             fields=[]),
         _descriptor.OneofDescriptor(
             name='_trsvcid', full_name='create_listener_req._trsvcid',
-            index=2, containing_type=None,
-            create_key=_descriptor._internal_create_key,
-            fields=[]),
-        _descriptor.OneofDescriptor(
-            name='_auto_ha_state', full_name='create_listener_req._auto_ha_state',
-            index=3, containing_type=None,
+            index=1, containing_type=None,
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=1638,
-    serialized_end=1900,
+    serialized_start=1615,
+    serialized_end=1769,
 )
 
 
@@ -1100,21 +993,14 @@ _DELETE_LISTENER_REQ = _descriptor.Descriptor(
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='trtype', full_name='delete_listener_req.trtype', index=3,
-            number=4, type=14, cpp_type=8, label=1,
-            has_default_value=False, default_value=0,
-            message_type=None, enum_type=None, containing_type=None,
-            is_extension=False, extension_scope=None,
-            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-        _descriptor.FieldDescriptor(
-            name='adrfam', full_name='delete_listener_req.adrfam', index=4,
+            name='adrfam', full_name='delete_listener_req.adrfam', index=3,
             number=5, type=14, cpp_type=8, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='trsvcid', full_name='delete_listener_req.trsvcid', index=5,
+            name='trsvcid', full_name='delete_listener_req.trsvcid', index=4,
             number=6, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
@@ -1131,24 +1017,19 @@ _DELETE_LISTENER_REQ = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
-        _descriptor.OneofDescriptor(
-            name='_trtype', full_name='delete_listener_req._trtype',
-            index=0, containing_type=None,
-            create_key=_descriptor._internal_create_key,
-            fields=[]),
         _descriptor.OneofDescriptor(
             name='_adrfam', full_name='delete_listener_req._adrfam',
-            index=1, containing_type=None,
+            index=0, containing_type=None,
             create_key=_descriptor._internal_create_key,
             fields=[]),
         _descriptor.OneofDescriptor(
             name='_trsvcid', full_name='delete_listener_req._trsvcid',
-            index=2, containing_type=None,
+            index=1, containing_type=None,
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=1903,
-    serialized_end=2105,
+    serialized_start=1772,
+    serialized_end=1926,
 )
 
 
@@ -1179,8 +1060,8 @@ _LIST_LISTENERS_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=2107,
-    serialized_end=2146,
+    serialized_start=1928,
+    serialized_end=1967,
 )
 
 
@@ -1228,8 +1109,33 @@ _LIST_SUBSYSTEMS_REQ = _descriptor.Descriptor(
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=2148,
-    serialized_end=2261,
+    serialized_start=1969,
+    serialized_end=2082,
+)
+
+
+_GET_SUBSYSTEMS_REQ = _descriptor.Descriptor(
+    name='get_subsystems_req',
+    full_name='get_subsystems_req',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2084,
+    serialized_end=2104,
 )
 
 
@@ -1253,8 +1159,8 @@ _GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=2263,
-    serialized_end=2302,
+    serialized_start=2106,
+    serialized_end=2145,
 )
 
 
@@ -1278,8 +1184,8 @@ _DISABLE_SPDK_NVMF_LOGS_REQ = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=2304,
-    serialized_end=2332,
+    serialized_start=2147,
+    serialized_end=2175,
 )
 
 
@@ -1327,23 +1233,255 @@ _SET_SPDK_NVMF_LOGS_REQ = _descriptor.Descriptor(
             create_key=_descriptor._internal_create_key,
             fields=[]),
     ],
-    serialized_start=2334,
-    serialized_end=2460,
+    serialized_start=2177,
+    serialized_end=2303,
+)
+
+
+_GET_GATEWAY_INFO_REQ = _descriptor.Descriptor(
+    name='get_gateway_info_req',
+    full_name='get_gateway_info_req',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='cli_version', full_name='get_gateway_info_req.cli_version', index=0,
+            number=1, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+        _descriptor.OneofDescriptor(
+            name='_cli_version', full_name='get_gateway_info_req._cli_version',
+            index=0, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+    ],
+    serialized_start=2305,
+    serialized_end=2369,
+)
+
+
+_ANA_GROUP_STATE = _descriptor.Descriptor(
+    name='ana_group_state',
+    full_name='ana_group_state',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='grp_id', full_name='ana_group_state.grp_id', index=0,
+            number=1, type=13, cpp_type=3, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='state', full_name='ana_group_state.state', index=1,
+            number=2, type=14, cpp_type=8, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2371,
+    serialized_end=2431,
+)
+
+
+_NQN_ANA_STATES = _descriptor.Descriptor(
+    name='nqn_ana_states',
+    full_name='nqn_ana_states',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='nqn', full_name='nqn_ana_states.nqn', index=0,
+            number=1, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='states', full_name='nqn_ana_states.states', index=1,
+            number=2, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2433,
+    serialized_end=2496,
+)
+
+
+_ANA_INFO = _descriptor.Descriptor(
+    name='ana_info',
+    full_name='ana_info',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='states', full_name='ana_info.states', index=0,
+            number=1, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2498,
+    serialized_end=2541,
+)
+
+
+_REQ_STATUS = _descriptor.Descriptor(
+    name='req_status',
+    full_name='req_status',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='status', full_name='req_status.status', index=0,
+            number=1, type=5, cpp_type=1, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='error_message', full_name='req_status.error_message', index=1,
+            number=2, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2543,
+    serialized_end=2594,
+)
+
+
+_NSID_STATUS = _descriptor.Descriptor(
+    name='nsid_status',
+    full_name='nsid_status',
+    filename=None,
+    file=DESCRIPTOR,
+    containing_type=None,
+    create_key=_descriptor._internal_create_key,
+    fields=[
+        _descriptor.FieldDescriptor(
+            name='status', full_name='nsid_status.status', index=0,
+            number=1, type=5, cpp_type=1, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='error_message', full_name='nsid_status.error_message', index=1,
+            number=2, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='nsid', full_name='nsid_status.nsid', index=2,
+            number=3, type=13, cpp_type=3, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+    ],
+    extensions=[
+    ],
+    nested_types=[],
+    enum_types=[
+    ],
+    serialized_options=None,
+    is_extendable=False,
+    syntax='proto3',
+    extension_ranges=[],
+    oneofs=[
+    ],
+    serialized_start=2596,
+    serialized_end=2662,
 )
 
 
-_GET_GATEWAY_INFO_REQ = _descriptor.Descriptor(
-    name='get_gateway_info_req',
-    full_name='get_gateway_info_req',
+_SUBSYSTEMS_INFO = _descriptor.Descriptor(
+    name='subsystems_info',
+    full_name='subsystems_info',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='cli_version', full_name='get_gateway_info_req.cli_version', index=0,
-            number=1, type=9, cpp_type=9, label=1,
-            has_default_value=False, default_value=b"".decode('utf-8'),
+            name='subsystems', full_name='subsystems_info.subsystems', index=0,
+            number=1, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
@@ -1358,46 +1496,97 @@ _GET_GATEWAY_INFO_REQ = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
-        _descriptor.OneofDescriptor(
-            name='_cli_version', full_name='get_gateway_info_req._cli_version',
-            index=0, containing_type=None,
-            create_key=_descriptor._internal_create_key,
-            fields=[]),
     ],
-    serialized_start=2462,
-    serialized_end=2526,
+    serialized_start=2664,
+    serialized_end=2713,
 )
 
 
-_BDEV_STATUS = _descriptor.Descriptor(
-    name='bdev_status',
-    full_name='bdev_status',
+_SUBSYSTEM = _descriptor.Descriptor(
+    name='subsystem',
+    full_name='subsystem',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='status', full_name='bdev_status.status', index=0,
-            number=1, type=5, cpp_type=1, label=1,
-            has_default_value=False, default_value=0,
+            name='nqn', full_name='subsystem.nqn', index=0,
+            number=1, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='error_message', full_name='bdev_status.error_message', index=1,
+            name='subtype', full_name='subsystem.subtype', index=1,
             number=2, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='bdev_name', full_name='bdev_status.bdev_name', index=2,
-            number=3, type=9, cpp_type=9, label=1,
+            name='listen_addresses', full_name='subsystem.listen_addresses', index=2,
+            number=3, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='hosts', full_name='subsystem.hosts', index=3,
+            number=4, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='allow_any_host', full_name='subsystem.allow_any_host', index=4,
+            number=5, type=8, cpp_type=7, label=1,
+            has_default_value=False, default_value=False,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='serial_number', full_name='subsystem.serial_number', index=5,
+            number=6, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='model_number', full_name='subsystem.model_number', index=6,
+            number=7, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='max_namespaces', full_name='subsystem.max_namespaces', index=7,
+            number=8, type=13, cpp_type=3, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='min_cntlid', full_name='subsystem.min_cntlid', index=8,
+            number=9, type=13, cpp_type=3, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='max_cntlid', full_name='subsystem.max_cntlid', index=9,
+            number=10, type=13, cpp_type=3, label=1,
+            has_default_value=False, default_value=0,
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='namespaces', full_name='subsystem.namespaces', index=10,
+            number=11, type=11, cpp_type=10, label=3,
+            has_default_value=False, default_value=[],
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     ],
     extensions=[
     ],
@@ -1409,34 +1598,80 @@ _BDEV_STATUS = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
+        _descriptor.OneofDescriptor(
+            name='_serial_number', full_name='subsystem._serial_number',
+            index=0, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_model_number', full_name='subsystem._model_number',
+            index=1, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_max_namespaces', full_name='subsystem._max_namespaces',
+            index=2, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_min_cntlid', full_name='subsystem._min_cntlid',
+            index=3, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_max_cntlid', full_name='subsystem._max_cntlid',
+            index=4, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
     ],
-    serialized_start=2528,
-    serialized_end=2599,
+    serialized_start=2716,
+    serialized_end=3096,
 )
 
 
-_REQ_STATUS = _descriptor.Descriptor(
-    name='req_status',
-    full_name='req_status',
+_LISTEN_ADDRESS = _descriptor.Descriptor(
+    name='listen_address',
+    full_name='listen_address',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='status', full_name='req_status.status', index=0,
-            number=1, type=5, cpp_type=1, label=1,
-            has_default_value=False, default_value=0,
+            name='trtype', full_name='listen_address.trtype', index=0,
+            number=1, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='error_message', full_name='req_status.error_message', index=1,
+            name='adrfam', full_name='listen_address.adrfam', index=1,
             number=2, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='traddr', full_name='listen_address.traddr', index=2,
+            number=3, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='trsvcid', full_name='listen_address.trsvcid', index=3,
+            number=4, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='transport', full_name='listen_address.transport', index=4,
+            number=5, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     ],
     extensions=[
     ],
@@ -1448,41 +1683,74 @@ _REQ_STATUS = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
+        _descriptor.OneofDescriptor(
+            name='_transport', full_name='listen_address._transport',
+            index=0, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
     ],
-    serialized_start=2601,
-    serialized_end=2652,
+    serialized_start=3098,
+    serialized_end=3217,
 )
 
 
-_NSID_STATUS = _descriptor.Descriptor(
-    name='nsid_status',
-    full_name='nsid_status',
+_NAMESPACE = _descriptor.Descriptor(
+    name='namespace',
+    full_name='namespace',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='status', full_name='nsid_status.status', index=0,
-            number=1, type=5, cpp_type=1, label=1,
+            name='nsid', full_name='namespace.nsid', index=0,
+            number=1, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='error_message', full_name='nsid_status.error_message', index=1,
+            name='name', full_name='namespace.name', index=1,
             number=2, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='nsid', full_name='nsid_status.nsid', index=2,
-            number=3, type=13, cpp_type=3, label=1,
+            name='bdev_name', full_name='namespace.bdev_name', index=2,
+            number=3, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='nguid', full_name='namespace.nguid', index=3,
+            number=4, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='uuid', full_name='namespace.uuid', index=4,
+            number=5, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='anagrpid', full_name='namespace.anagrpid', index=5,
+            number=6, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
+        _descriptor.FieldDescriptor(
+            name='nonce', full_name='namespace.nonce', index=6,
+            number=7, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
+            message_type=None, enum_type=None, containing_type=None,
+            is_extension=False, extension_scope=None,
+            serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     ],
     extensions=[
     ],
@@ -1494,36 +1762,61 @@ _NSID_STATUS = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
+        _descriptor.OneofDescriptor(
+            name='_bdev_name', full_name='namespace._bdev_name',
+            index=0, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_nguid', full_name='namespace._nguid',
+            index=1, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_uuid', full_name='namespace._uuid',
+            index=2, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_anagrpid', full_name='namespace._anagrpid',
+            index=3, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
+        _descriptor.OneofDescriptor(
+            name='_nonce', full_name='namespace._nonce',
+            index=4, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
     ],
-    serialized_start=2654,
-    serialized_end=2720,
+    serialized_start=3220,
+    serialized_end=3421,
 )
 
 
-_SUBSYSTEMS_INFO = _descriptor.Descriptor(
-    name='subsystems_info',
-    full_name='subsystems_info',
+_SUBSYSTEMS_INFO_CLI = _descriptor.Descriptor(
+    name='subsystems_info_cli',
+    full_name='subsystems_info_cli',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='status', full_name='subsystems_info.status', index=0,
+            name='status', full_name='subsystems_info_cli.status', index=0,
             number=1, type=5, cpp_type=1, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='error_message', full_name='subsystems_info.error_message', index=1,
+            name='error_message', full_name='subsystems_info_cli.error_message', index=1,
             number=2, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='subsystems', full_name='subsystems_info.subsystems', index=2,
+            name='subsystems', full_name='subsystems_info_cli.subsystems', index=2,
             number=3, type=11, cpp_type=10, label=3,
             has_default_value=False, default_value=[],
             message_type=None, enum_type=None, containing_type=None,
@@ -1541,70 +1834,70 @@ _SUBSYSTEMS_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=2722,
-    serialized_end=2810,
+    serialized_start=3423,
+    serialized_end=3519,
 )
 
 
-_SUBSYSTEM = _descriptor.Descriptor(
-    name='subsystem',
-    full_name='subsystem',
+_SUBSYSTEM_CLI = _descriptor.Descriptor(
+    name='subsystem_cli',
+    full_name='subsystem_cli',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='nqn', full_name='subsystem.nqn', index=0,
+            name='nqn', full_name='subsystem_cli.nqn', index=0,
             number=1, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='enable_ha', full_name='subsystem.enable_ha', index=1,
+            name='enable_ha', full_name='subsystem_cli.enable_ha', index=1,
             number=2, type=8, cpp_type=7, label=1,
             has_default_value=False, default_value=False,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='serial_number', full_name='subsystem.serial_number', index=2,
+            name='serial_number', full_name='subsystem_cli.serial_number', index=2,
             number=3, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='model_number', full_name='subsystem.model_number', index=3,
+            name='model_number', full_name='subsystem_cli.model_number', index=3,
             number=4, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='min_cntlid', full_name='subsystem.min_cntlid', index=4,
+            name='min_cntlid', full_name='subsystem_cli.min_cntlid', index=4,
             number=5, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='max_cntlid', full_name='subsystem.max_cntlid', index=5,
+            name='max_cntlid', full_name='subsystem_cli.max_cntlid', index=5,
             number=6, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='namespace_count', full_name='subsystem.namespace_count', index=6,
+            name='namespace_count', full_name='subsystem_cli.namespace_count', index=6,
             number=7, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='subtype', full_name='subsystem.subtype', index=7,
+            name='subtype', full_name='subsystem_cli.subtype', index=7,
             number=8, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
@@ -1622,8 +1915,8 @@ _SUBSYSTEM = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=2813,
-    serialized_end=2983,
+    serialized_start=3522,
+    serialized_end=3696,
 )
 
 
@@ -1716,9 +2009,14 @@ _GATEWAY_INFO = _descriptor.Descriptor(
     syntax='proto3',
     extension_ranges=[],
     oneofs=[
+        _descriptor.OneofDescriptor(
+            name='_spdk_version', full_name='gateway_info._spdk_version',
+            index=0, containing_type=None,
+            create_key=_descriptor._internal_create_key,
+            fields=[]),
     ],
-    serialized_start=2986,
-    serialized_end=3177,
+    serialized_start=3699,
+    serialized_end=3912,
 )
 
 
@@ -1763,8 +2061,8 @@ _CLI_VERSION = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3179,
-    serialized_end=3248,
+    serialized_start=3914,
+    serialized_end=3983,
 )
 
 
@@ -1809,8 +2107,8 @@ _GW_VERSION = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3250,
-    serialized_end=3318,
+    serialized_start=3985,
+    serialized_end=4053,
 )
 
 
@@ -1831,8 +2129,8 @@ _LISTENER_INFO = _descriptor.Descriptor(
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
             name='trtype', full_name='listener_info.trtype', index=1,
-            number=2, type=14, cpp_type=8, label=1,
-            has_default_value=False, default_value=0,
+            number=2, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
@@ -1869,8 +2167,8 @@ _LISTENER_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3321,
-    serialized_end=3455,
+    serialized_start=4055,
+    serialized_end=4173,
 )
 
 
@@ -1915,8 +2213,8 @@ _LISTENERS_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3457,
-    serialized_end=3547,
+    serialized_start=4175,
+    serialized_end=4265,
 )
 
 
@@ -1947,8 +2245,8 @@ _HOST = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3549,
-    serialized_end=3568,
+    serialized_start=4267,
+    serialized_end=4286,
 )
 
 
@@ -2007,8 +2305,8 @@ _HOSTS_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3570,
-    serialized_end=3690,
+    serialized_start=4288,
+    serialized_end=4408,
 )
 
 
@@ -2043,8 +2341,8 @@ _CONNECTION = _descriptor.Descriptor(
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
             name='trtype', full_name='connection.trtype', index=3,
-            number=4, type=14, cpp_type=8, label=1,
-            has_default_value=False, default_value=0,
+            number=4, type=9, cpp_type=9, label=1,
+            has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
@@ -2088,8 +2386,8 @@ _CONNECTION = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3693,
-    serialized_end=3879,
+    serialized_start=4411,
+    serialized_end=4581,
 )
 
 
@@ -2141,98 +2439,98 @@ _CONNECTIONS_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3881,
-    serialized_end=3995,
+    serialized_start=4583,
+    serialized_end=4697,
 )
 
 
-_NAMESPACE = _descriptor.Descriptor(
-    name='namespace',
-    full_name='namespace',
+_NAMESPACE_CLI = _descriptor.Descriptor(
+    name='namespace_cli',
+    full_name='namespace_cli',
     filename=None,
     file=DESCRIPTOR,
     containing_type=None,
     create_key=_descriptor._internal_create_key,
     fields=[
         _descriptor.FieldDescriptor(
-            name='nsid', full_name='namespace.nsid', index=0,
+            name='nsid', full_name='namespace_cli.nsid', index=0,
             number=1, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='bdev_name', full_name='namespace.bdev_name', index=1,
+            name='bdev_name', full_name='namespace_cli.bdev_name', index=1,
             number=2, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='rbd_image_name', full_name='namespace.rbd_image_name', index=2,
+            name='rbd_image_name', full_name='namespace_cli.rbd_image_name', index=2,
             number=3, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='rbd_pool_name', full_name='namespace.rbd_pool_name', index=3,
+            name='rbd_pool_name', full_name='namespace_cli.rbd_pool_name', index=3,
             number=4, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='load_balancing_group', full_name='namespace.load_balancing_group', index=4,
+            name='load_balancing_group', full_name='namespace_cli.load_balancing_group', index=4,
             number=5, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='block_size', full_name='namespace.block_size', index=5,
+            name='block_size', full_name='namespace_cli.block_size', index=5,
             number=6, type=13, cpp_type=3, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='rbd_image_size', full_name='namespace.rbd_image_size', index=6,
+            name='rbd_image_size', full_name='namespace_cli.rbd_image_size', index=6,
             number=7, type=4, cpp_type=4, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='uuid', full_name='namespace.uuid', index=7,
+            name='uuid', full_name='namespace_cli.uuid', index=7,
             number=8, type=9, cpp_type=9, label=1,
             has_default_value=False, default_value=b"".decode('utf-8'),
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='rw_ios_per_second', full_name='namespace.rw_ios_per_second', index=8,
+            name='rw_ios_per_second', full_name='namespace_cli.rw_ios_per_second', index=8,
             number=9, type=4, cpp_type=4, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='rw_mbytes_per_second', full_name='namespace.rw_mbytes_per_second', index=9,
+            name='rw_mbytes_per_second', full_name='namespace_cli.rw_mbytes_per_second', index=9,
             number=10, type=4, cpp_type=4, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='r_mbytes_per_second', full_name='namespace.r_mbytes_per_second', index=10,
+            name='r_mbytes_per_second', full_name='namespace_cli.r_mbytes_per_second', index=10,
             number=11, type=4, cpp_type=4, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
             is_extension=False, extension_scope=None,
             serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
         _descriptor.FieldDescriptor(
-            name='w_mbytes_per_second', full_name='namespace.w_mbytes_per_second', index=11,
+            name='w_mbytes_per_second', full_name='namespace_cli.w_mbytes_per_second', index=11,
             number=12, type=4, cpp_type=4, label=1,
             has_default_value=False, default_value=0,
             message_type=None, enum_type=None, containing_type=None,
@@ -2250,8 +2548,8 @@ _NAMESPACE = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=3998,
-    serialized_end=4292,
+    serialized_start=4700,
+    serialized_end=4998,
 )
 
 
@@ -2303,8 +2601,8 @@ _NAMESPACES_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=4294,
-    serialized_end=4405,
+    serialized_start=5000,
+    serialized_end=5115,
 )
 
 
@@ -2517,8 +2815,8 @@ _NAMESPACE_IO_STATS_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=4408,
-    serialized_end=5103,
+    serialized_start=5118,
+    serialized_end=5813,
 )
 
 
@@ -2556,8 +2854,8 @@ _SPDK_LOG_FLAG_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=5105,
-    serialized_end=5156,
+    serialized_start=5815,
+    serialized_end=5866,
 )
 
 
@@ -2616,8 +2914,8 @@ _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO = _descriptor.Descriptor(
     extension_ranges=[],
     oneofs=[
     ],
-    serialized_start=5159,
-    serialized_end=5345,
+    serialized_start=5869,
+    serialized_end=6055,
 )
 
 _NAMESPACE_ADD_REQ.oneofs_by_name['_nsid'].fields.append(
@@ -2691,26 +2989,14 @@ _LIST_NAMESPACES_REQ.fields_by_name['nsid'].containing_oneof = _LIST_NAMESPACES_
 _LIST_NAMESPACES_REQ.oneofs_by_name['_uuid'].fields.append(
     _LIST_NAMESPACES_REQ.fields_by_name['uuid'])
 _LIST_NAMESPACES_REQ.fields_by_name['uuid'].containing_oneof = _LIST_NAMESPACES_REQ.oneofs_by_name['_uuid']
-_CREATE_LISTENER_REQ.fields_by_name['trtype'].enum_type = _TRANSPORTTYPE
 _CREATE_LISTENER_REQ.fields_by_name['adrfam'].enum_type = _ADDRESSFAMILY
-_CREATE_LISTENER_REQ.fields_by_name['auto_ha_state'].enum_type = _AUTOHASTATE
-_CREATE_LISTENER_REQ.oneofs_by_name['_trtype'].fields.append(
-    _CREATE_LISTENER_REQ.fields_by_name['trtype'])
-_CREATE_LISTENER_REQ.fields_by_name['trtype'].containing_oneof = _CREATE_LISTENER_REQ.oneofs_by_name['_trtype']
 _CREATE_LISTENER_REQ.oneofs_by_name['_adrfam'].fields.append(
     _CREATE_LISTENER_REQ.fields_by_name['adrfam'])
 _CREATE_LISTENER_REQ.fields_by_name['adrfam'].containing_oneof = _CREATE_LISTENER_REQ.oneofs_by_name['_adrfam']
 _CREATE_LISTENER_REQ.oneofs_by_name['_trsvcid'].fields.append(
     _CREATE_LISTENER_REQ.fields_by_name['trsvcid'])
 _CREATE_LISTENER_REQ.fields_by_name['trsvcid'].containing_oneof = _CREATE_LISTENER_REQ.oneofs_by_name['_trsvcid']
-_CREATE_LISTENER_REQ.oneofs_by_name['_auto_ha_state'].fields.append(
-    _CREATE_LISTENER_REQ.fields_by_name['auto_ha_state'])
-_CREATE_LISTENER_REQ.fields_by_name['auto_ha_state'].containing_oneof = _CREATE_LISTENER_REQ.oneofs_by_name['_auto_ha_state']
-_DELETE_LISTENER_REQ.fields_by_name['trtype'].enum_type = _TRANSPORTTYPE
 _DELETE_LISTENER_REQ.fields_by_name['adrfam'].enum_type = _ADDRESSFAMILY
-_DELETE_LISTENER_REQ.oneofs_by_name['_trtype'].fields.append(
-    _DELETE_LISTENER_REQ.fields_by_name['trtype'])
-_DELETE_LISTENER_REQ.fields_by_name['trtype'].containing_oneof = _DELETE_LISTENER_REQ.oneofs_by_name['_trtype']
 _DELETE_LISTENER_REQ.oneofs_by_name['_adrfam'].fields.append(
     _DELETE_LISTENER_REQ.fields_by_name['adrfam'])
 _DELETE_LISTENER_REQ.fields_by_name['adrfam'].containing_oneof = _DELETE_LISTENER_REQ.oneofs_by_name['_adrfam']
@@ -2734,15 +3020,56 @@ _SET_SPDK_NVMF_LOGS_REQ.fields_by_name['print_level'].containing_oneof = _SET_SP
 _GET_GATEWAY_INFO_REQ.oneofs_by_name['_cli_version'].fields.append(
     _GET_GATEWAY_INFO_REQ.fields_by_name['cli_version'])
 _GET_GATEWAY_INFO_REQ.fields_by_name['cli_version'].containing_oneof = _GET_GATEWAY_INFO_REQ.oneofs_by_name['_cli_version']
+_ANA_GROUP_STATE.fields_by_name['state'].enum_type = _ANA_STATE
+_NQN_ANA_STATES.fields_by_name['states'].message_type = _ANA_GROUP_STATE
+_ANA_INFO.fields_by_name['states'].message_type = _NQN_ANA_STATES
 _SUBSYSTEMS_INFO.fields_by_name['subsystems'].message_type = _SUBSYSTEM
-_LISTENER_INFO.fields_by_name['trtype'].enum_type = _TRANSPORTTYPE
+_SUBSYSTEM.fields_by_name['listen_addresses'].message_type = _LISTEN_ADDRESS
+_SUBSYSTEM.fields_by_name['hosts'].message_type = _HOST
+_SUBSYSTEM.fields_by_name['namespaces'].message_type = _NAMESPACE
+_SUBSYSTEM.oneofs_by_name['_serial_number'].fields.append(
+    _SUBSYSTEM.fields_by_name['serial_number'])
+_SUBSYSTEM.fields_by_name['serial_number'].containing_oneof = _SUBSYSTEM.oneofs_by_name['_serial_number']
+_SUBSYSTEM.oneofs_by_name['_model_number'].fields.append(
+    _SUBSYSTEM.fields_by_name['model_number'])
+_SUBSYSTEM.fields_by_name['model_number'].containing_oneof = _SUBSYSTEM.oneofs_by_name['_model_number']
+_SUBSYSTEM.oneofs_by_name['_max_namespaces'].fields.append(
+    _SUBSYSTEM.fields_by_name['max_namespaces'])
+_SUBSYSTEM.fields_by_name['max_namespaces'].containing_oneof = _SUBSYSTEM.oneofs_by_name['_max_namespaces']
+_SUBSYSTEM.oneofs_by_name['_min_cntlid'].fields.append(
+    _SUBSYSTEM.fields_by_name['min_cntlid'])
+_SUBSYSTEM.fields_by_name['min_cntlid'].containing_oneof = _SUBSYSTEM.oneofs_by_name['_min_cntlid']
+_SUBSYSTEM.oneofs_by_name['_max_cntlid'].fields.append(
+    _SUBSYSTEM.fields_by_name['max_cntlid'])
+_SUBSYSTEM.fields_by_name['max_cntlid'].containing_oneof = _SUBSYSTEM.oneofs_by_name['_max_cntlid']
+_LISTEN_ADDRESS.oneofs_by_name['_transport'].fields.append(
+    _LISTEN_ADDRESS.fields_by_name['transport'])
+_LISTEN_ADDRESS.fields_by_name['transport'].containing_oneof = _LISTEN_ADDRESS.oneofs_by_name['_transport']
+_NAMESPACE.oneofs_by_name['_bdev_name'].fields.append(
+    _NAMESPACE.fields_by_name['bdev_name'])
+_NAMESPACE.fields_by_name['bdev_name'].containing_oneof = _NAMESPACE.oneofs_by_name['_bdev_name']
+_NAMESPACE.oneofs_by_name['_nguid'].fields.append(
+    _NAMESPACE.fields_by_name['nguid'])
+_NAMESPACE.fields_by_name['nguid'].containing_oneof = _NAMESPACE.oneofs_by_name['_nguid']
+_NAMESPACE.oneofs_by_name['_uuid'].fields.append(
+    _NAMESPACE.fields_by_name['uuid'])
+_NAMESPACE.fields_by_name['uuid'].containing_oneof = _NAMESPACE.oneofs_by_name['_uuid']
+_NAMESPACE.oneofs_by_name['_anagrpid'].fields.append(
+    _NAMESPACE.fields_by_name['anagrpid'])
+_NAMESPACE.fields_by_name['anagrpid'].containing_oneof = _NAMESPACE.oneofs_by_name['_anagrpid']
+_NAMESPACE.oneofs_by_name['_nonce'].fields.append(
+    _NAMESPACE.fields_by_name['nonce'])
+_NAMESPACE.fields_by_name['nonce'].containing_oneof = _NAMESPACE.oneofs_by_name['_nonce']
+_SUBSYSTEMS_INFO_CLI.fields_by_name['subsystems'].message_type = _SUBSYSTEM_CLI
+_GATEWAY_INFO.oneofs_by_name['_spdk_version'].fields.append(
+    _GATEWAY_INFO.fields_by_name['spdk_version'])
+_GATEWAY_INFO.fields_by_name['spdk_version'].containing_oneof = _GATEWAY_INFO.oneofs_by_name['_spdk_version']
 _LISTENER_INFO.fields_by_name['adrfam'].enum_type = _ADDRESSFAMILY
 _LISTENERS_INFO.fields_by_name['listeners'].message_type = _LISTENER_INFO
 _HOSTS_INFO.fields_by_name['hosts'].message_type = _HOST
-_CONNECTION.fields_by_name['trtype'].enum_type = _TRANSPORTTYPE
 _CONNECTION.fields_by_name['adrfam'].enum_type = _ADDRESSFAMILY
 _CONNECTIONS_INFO.fields_by_name['connections'].message_type = _CONNECTION
-_NAMESPACES_INFO.fields_by_name['namespaces'].message_type = _NAMESPACE
+_NAMESPACES_INFO.fields_by_name['namespaces'].message_type = _NAMESPACE_CLI
 _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO.fields_by_name['nvmf_log_flags'].message_type = _SPDK_LOG_FLAG_INFO
 _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO.fields_by_name['log_level'].enum_type = _LOGLEVEL
 _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO.fields_by_name['log_print_level'].enum_type = _LOGLEVEL
@@ -2763,15 +3090,22 @@ DESCRIPTOR.message_types_by_name['create_listener_req'] = _CREATE_LISTENER_REQ
 DESCRIPTOR.message_types_by_name['delete_listener_req'] = _DELETE_LISTENER_REQ
 DESCRIPTOR.message_types_by_name['list_listeners_req'] = _LIST_LISTENERS_REQ
 DESCRIPTOR.message_types_by_name['list_subsystems_req'] = _LIST_SUBSYSTEMS_REQ
+DESCRIPTOR.message_types_by_name['get_subsystems_req'] = _GET_SUBSYSTEMS_REQ
 DESCRIPTOR.message_types_by_name['get_spdk_nvmf_log_flags_and_level_req'] = _GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ
 DESCRIPTOR.message_types_by_name['disable_spdk_nvmf_logs_req'] = _DISABLE_SPDK_NVMF_LOGS_REQ
 DESCRIPTOR.message_types_by_name['set_spdk_nvmf_logs_req'] = _SET_SPDK_NVMF_LOGS_REQ
 DESCRIPTOR.message_types_by_name['get_gateway_info_req'] = _GET_GATEWAY_INFO_REQ
-DESCRIPTOR.message_types_by_name['bdev_status'] = _BDEV_STATUS
+DESCRIPTOR.message_types_by_name['ana_group_state'] = _ANA_GROUP_STATE
+DESCRIPTOR.message_types_by_name['nqn_ana_states'] = _NQN_ANA_STATES
+DESCRIPTOR.message_types_by_name['ana_info'] = _ANA_INFO
 DESCRIPTOR.message_types_by_name['req_status'] = _REQ_STATUS
 DESCRIPTOR.message_types_by_name['nsid_status'] = _NSID_STATUS
 DESCRIPTOR.message_types_by_name['subsystems_info'] = _SUBSYSTEMS_INFO
 DESCRIPTOR.message_types_by_name['subsystem'] = _SUBSYSTEM
+DESCRIPTOR.message_types_by_name['listen_address'] = _LISTEN_ADDRESS
+DESCRIPTOR.message_types_by_name['namespace'] = _NAMESPACE
+DESCRIPTOR.message_types_by_name['subsystems_info_cli'] = _SUBSYSTEMS_INFO_CLI
+DESCRIPTOR.message_types_by_name['subsystem_cli'] = _SUBSYSTEM_CLI
 DESCRIPTOR.message_types_by_name['gateway_info'] = _GATEWAY_INFO
 DESCRIPTOR.message_types_by_name['cli_version'] = _CLI_VERSION
 DESCRIPTOR.message_types_by_name['gw_version'] = _GW_VERSION
@@ -2781,15 +3115,14 @@ DESCRIPTOR.message_types_by_name['host'] = _HOST
 DESCRIPTOR.message_types_by_name['hosts_info'] = _HOSTS_INFO
 DESCRIPTOR.message_types_by_name['connection'] = _CONNECTION
 DESCRIPTOR.message_types_by_name['connections_info'] = _CONNECTIONS_INFO
-DESCRIPTOR.message_types_by_name['namespace'] = _NAMESPACE
+DESCRIPTOR.message_types_by_name['namespace_cli'] = _NAMESPACE_CLI
 DESCRIPTOR.message_types_by_name['namespaces_info'] = _NAMESPACES_INFO
 DESCRIPTOR.message_types_by_name['namespace_io_stats_info'] = _NAMESPACE_IO_STATS_INFO
 DESCRIPTOR.message_types_by_name['spdk_log_flag_info'] = _SPDK_LOG_FLAG_INFO
 DESCRIPTOR.message_types_by_name['spdk_nvmf_log_flags_and_level_info'] = _SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO
-DESCRIPTOR.enum_types_by_name['TransportType'] = _TRANSPORTTYPE
 DESCRIPTOR.enum_types_by_name['AddressFamily'] = _ADDRESSFAMILY
 DESCRIPTOR.enum_types_by_name['LogLevel'] = _LOGLEVEL
-DESCRIPTOR.enum_types_by_name['AutoHAState'] = _AUTOHASTATE
+DESCRIPTOR.enum_types_by_name['ana_state'] = _ANA_STATE
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 namespace_add_req = _reflection.GeneratedProtocolMessageType('namespace_add_req', (_message.Message,), {
@@ -2911,6 +3244,13 @@ list_subsystems_req = _reflection.GeneratedProtocolMessageType('list_subsystems_
 })
 _sym_db.RegisterMessage(list_subsystems_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'
@@ -2939,12 +3279,26 @@ get_gateway_info_req = _reflection.GeneratedProtocolMessageType('get_gateway_inf
 })
 _sym_db.RegisterMessage(get_gateway_info_req)
 
-bdev_status = _reflection.GeneratedProtocolMessageType('bdev_status', (_message.Message,), {
-    'DESCRIPTOR': _BDEV_STATUS,
+ana_group_state = _reflection.GeneratedProtocolMessageType('ana_group_state', (_message.Message,), {
+    'DESCRIPTOR': _ANA_GROUP_STATE,
+    '__module__': 'gateway_pb2'
+    # @@protoc_insertion_point(class_scope:ana_group_state)
+})
+_sym_db.RegisterMessage(ana_group_state)
+
+nqn_ana_states = _reflection.GeneratedProtocolMessageType('nqn_ana_states', (_message.Message,), {
+    'DESCRIPTOR': _NQN_ANA_STATES,
+    '__module__': 'gateway_pb2'
+    # @@protoc_insertion_point(class_scope:nqn_ana_states)
+})
+_sym_db.RegisterMessage(nqn_ana_states)
+
+ana_info = _reflection.GeneratedProtocolMessageType('ana_info', (_message.Message,), {
+    'DESCRIPTOR': _ANA_INFO,
     '__module__': 'gateway_pb2'
-    # @@protoc_insertion_point(class_scope:bdev_status)
+    # @@protoc_insertion_point(class_scope:ana_info)
 })
-_sym_db.RegisterMessage(bdev_status)
+_sym_db.RegisterMessage(ana_info)
 
 req_status = _reflection.GeneratedProtocolMessageType('req_status', (_message.Message,), {
     'DESCRIPTOR': _REQ_STATUS,
@@ -2974,6 +3328,34 @@ subsystem = _reflection.GeneratedProtocolMessageType('subsystem', (_message.Mess
 })
 _sym_db.RegisterMessage(subsystem)
 
+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)
+
+namespace = _reflection.GeneratedProtocolMessageType('namespace', (_message.Message,), {
+    'DESCRIPTOR': _NAMESPACE,
+    '__module__': 'gateway_pb2'
+    # @@protoc_insertion_point(class_scope:namespace)
+})
+_sym_db.RegisterMessage(namespace)
+
+subsystems_info_cli = _reflection.GeneratedProtocolMessageType('subsystems_info_cli', (_message.Message,), {
+    'DESCRIPTOR': _SUBSYSTEMS_INFO_CLI,
+    '__module__': 'gateway_pb2'
+    # @@protoc_insertion_point(class_scope:subsystems_info_cli)
+})
+_sym_db.RegisterMessage(subsystems_info_cli)
+
+subsystem_cli = _reflection.GeneratedProtocolMessageType('subsystem_cli', (_message.Message,), {
+    'DESCRIPTOR': _SUBSYSTEM_CLI,
+    '__module__': 'gateway_pb2'
+    # @@protoc_insertion_point(class_scope:subsystem_cli)
+})
+_sym_db.RegisterMessage(subsystem_cli)
+
 gateway_info = _reflection.GeneratedProtocolMessageType('gateway_info', (_message.Message,), {
     'DESCRIPTOR': _GATEWAY_INFO,
     '__module__': 'gateway_pb2'
@@ -3037,12 +3419,12 @@ connections_info = _reflection.GeneratedProtocolMessageType('connections_info',
 })
 _sym_db.RegisterMessage(connections_info)
 
-namespace = _reflection.GeneratedProtocolMessageType('namespace', (_message.Message,), {
-    'DESCRIPTOR': _NAMESPACE,
+namespace_cli = _reflection.GeneratedProtocolMessageType('namespace_cli', (_message.Message,), {
+    'DESCRIPTOR': _NAMESPACE_CLI,
     '__module__': 'gateway_pb2'
-    # @@protoc_insertion_point(class_scope:namespace)
+    # @@protoc_insertion_point(class_scope:namespace_cli)
 })
-_sym_db.RegisterMessage(namespace)
+_sym_db.RegisterMessage(namespace_cli)
 
 namespaces_info = _reflection.GeneratedProtocolMessageType('namespaces_info', (_message.Message,), {
     'DESCRIPTOR': _NAMESPACES_INFO,
@@ -3080,8 +3462,8 @@ _GATEWAY = _descriptor.ServiceDescriptor(
     index=0,
     serialized_options=None,
     create_key=_descriptor._internal_create_key,
-    serialized_start=5660,
-    serialized_end=7004,
+    serialized_start=6240,
+    serialized_end=7690,
     methods=[
         _descriptor.MethodDescriptor(
             name='namespace_add',
@@ -3249,14 +3631,34 @@ _GATEWAY = _descriptor.ServiceDescriptor(
             index=16,
             containing_service=None,
             input_type=_LIST_SUBSYSTEMS_REQ,
+            output_type=_SUBSYSTEMS_INFO_CLI,
+            serialized_options=None,
+            create_key=_descriptor._internal_create_key,
+        ),
+        _descriptor.MethodDescriptor(
+            name='get_subsystems',
+            full_name='Gateway.get_subsystems',
+            index=17,
+            containing_service=None,
+            input_type=_GET_SUBSYSTEMS_REQ,
             output_type=_SUBSYSTEMS_INFO,
             serialized_options=None,
             create_key=_descriptor._internal_create_key,
         ),
+        _descriptor.MethodDescriptor(
+            name='set_ana_state',
+            full_name='Gateway.set_ana_state',
+            index=18,
+            containing_service=None,
+            input_type=_ANA_INFO,
+            output_type=_REQ_STATUS,
+            serialized_options=None,
+            create_key=_descriptor._internal_create_key,
+        ),
         _descriptor.MethodDescriptor(
             name='get_spdk_nvmf_log_flags_and_level',
             full_name='Gateway.get_spdk_nvmf_log_flags_and_level',
-            index=17,
+            index=19,
             containing_service=None,
             input_type=_GET_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_REQ,
             output_type=_SPDK_NVMF_LOG_FLAGS_AND_LEVEL_INFO,
@@ -3266,7 +3668,7 @@ _GATEWAY = _descriptor.ServiceDescriptor(
         _descriptor.MethodDescriptor(
             name='disable_spdk_nvmf_logs',
             full_name='Gateway.disable_spdk_nvmf_logs',
-            index=18,
+            index=20,
             containing_service=None,
             input_type=_DISABLE_SPDK_NVMF_LOGS_REQ,
             output_type=_REQ_STATUS,
@@ -3276,7 +3678,7 @@ _GATEWAY = _descriptor.ServiceDescriptor(
         _descriptor.MethodDescriptor(
             name='set_spdk_nvmf_logs',
             full_name='Gateway.set_spdk_nvmf_logs',
-            index=19,
+            index=21,
             containing_service=None,
             input_type=_SET_SPDK_NVMF_LOGS_REQ,
             output_type=_REQ_STATUS,
@@ -3286,7 +3688,7 @@ _GATEWAY = _descriptor.ServiceDescriptor(
         _descriptor.MethodDescriptor(
             name='get_gateway_info',
             full_name='Gateway.get_gateway_info',
-            index=20,
+            index=22,
             containing_service=None,
             input_type=_GET_GATEWAY_INFO_REQ,
             output_type=_GATEWAY_INFO,
index 9993ca4cf6b991827350cfd8633cad4e7c58e8c8..cc97bb26c53bfad5a678d2dde52fca3208c538b6 100644 (file)
@@ -15,110 +15,120 @@ class GatewayStub(object):
             channel: A grpc.Channel.
         """
         self.namespace_add = channel.unary_unary(
-            '/Gateway/namespace_add',
-            request_serializer=gateway__pb2.namespace_add_req.SerializeToString,
-            response_deserializer=gateway__pb2.nsid_status.FromString,
-        )
+                '/Gateway/namespace_add',
+                request_serializer=gateway__pb2.namespace_add_req.SerializeToString,
+                response_deserializer=gateway__pb2.nsid_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,
-        )
+                '/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,
-        )
+                '/Gateway/delete_subsystem',
+                request_serializer=gateway__pb2.delete_subsystem_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.list_namespaces = channel.unary_unary(
-            '/Gateway/list_namespaces',
-            request_serializer=gateway__pb2.list_namespaces_req.SerializeToString,
-            response_deserializer=gateway__pb2.namespaces_info.FromString,
-        )
+                '/Gateway/list_namespaces',
+                request_serializer=gateway__pb2.list_namespaces_req.SerializeToString,
+                response_deserializer=gateway__pb2.namespaces_info.FromString,
+                )
         self.namespace_resize = channel.unary_unary(
-            '/Gateway/namespace_resize',
-            request_serializer=gateway__pb2.namespace_resize_req.SerializeToString,
-            response_deserializer=gateway__pb2.req_status.FromString,
-        )
+                '/Gateway/namespace_resize',
+                request_serializer=gateway__pb2.namespace_resize_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.namespace_get_io_stats = channel.unary_unary(
-            '/Gateway/namespace_get_io_stats',
-            request_serializer=gateway__pb2.namespace_get_io_stats_req.SerializeToString,
-            response_deserializer=gateway__pb2.namespace_io_stats_info.FromString,
-        )
+                '/Gateway/namespace_get_io_stats',
+                request_serializer=gateway__pb2.namespace_get_io_stats_req.SerializeToString,
+                response_deserializer=gateway__pb2.namespace_io_stats_info.FromString,
+                )
         self.namespace_set_qos_limits = channel.unary_unary(
-            '/Gateway/namespace_set_qos_limits',
-            request_serializer=gateway__pb2.namespace_set_qos_req.SerializeToString,
-            response_deserializer=gateway__pb2.req_status.FromString,
-        )
+                '/Gateway/namespace_set_qos_limits',
+                request_serializer=gateway__pb2.namespace_set_qos_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.namespace_change_load_balancing_group = channel.unary_unary(
-            '/Gateway/namespace_change_load_balancing_group',
-            request_serializer=gateway__pb2.namespace_change_load_balancing_group_req.SerializeToString,
-            response_deserializer=gateway__pb2.req_status.FromString,
-        )
+                '/Gateway/namespace_change_load_balancing_group',
+                request_serializer=gateway__pb2.namespace_change_load_balancing_group_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.namespace_delete = channel.unary_unary(
-            '/Gateway/namespace_delete',
-            request_serializer=gateway__pb2.namespace_delete_req.SerializeToString,
-            response_deserializer=gateway__pb2.req_status.FromString,
-        )
+                '/Gateway/namespace_delete',
+                request_serializer=gateway__pb2.namespace_delete_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,
-        )
+                '/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,
-        )
+                '/Gateway/remove_host',
+                request_serializer=gateway__pb2.remove_host_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.list_hosts = channel.unary_unary(
-            '/Gateway/list_hosts',
-            request_serializer=gateway__pb2.list_hosts_req.SerializeToString,
-            response_deserializer=gateway__pb2.hosts_info.FromString,
-        )
+                '/Gateway/list_hosts',
+                request_serializer=gateway__pb2.list_hosts_req.SerializeToString,
+                response_deserializer=gateway__pb2.hosts_info.FromString,
+                )
         self.list_connections = channel.unary_unary(
-            '/Gateway/list_connections',
-            request_serializer=gateway__pb2.list_connections_req.SerializeToString,
-            response_deserializer=gateway__pb2.connections_info.FromString,
-        )
+                '/Gateway/list_connections',
+                request_serializer=gateway__pb2.list_connections_req.SerializeToString,
+                response_deserializer=gateway__pb2.connections_info.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,
-        )
+                '/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,
-        )
+                '/Gateway/delete_listener',
+                request_serializer=gateway__pb2.delete_listener_req.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.FromString,
+                )
         self.list_listeners = channel.unary_unary(
-            '/Gateway/list_listeners',
-            request_serializer=gateway__pb2.list_listeners_req.SerializeToString,
-            response_deserializer=gateway__pb2.listeners_info.FromString,
-        )
+                '/Gateway/list_listeners',
+                request_serializer=gateway__pb2.list_listeners_req.SerializeToString,
+                response_deserializer=gateway__pb2.listeners_info.FromString,
+                )
         self.list_subsystems = channel.unary_unary(
-            '/Gateway/list_subsystems',
-            request_serializer=gateway__pb2.list_subsystems_req.SerializeToString,
-            response_deserializer=gateway__pb2.subsystems_info.FromString,
-        )
+                '/Gateway/list_subsystems',
+                request_serializer=gateway__pb2.list_subsystems_req.SerializeToString,
+                response_deserializer=gateway__pb2.subsystems_info_cli.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.set_ana_state = channel.unary_unary(
+                '/Gateway/set_ana_state',
+                request_serializer=gateway__pb2.ana_info.SerializeToString,
+                response_deserializer=gateway__pb2.req_status.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,
-        )
+                '/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,
-        )
+                '/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,
-        )
+                '/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,
-        )
+                '/Gateway/get_gateway_info',
+                request_serializer=gateway__pb2.get_gateway_info_req.SerializeToString,
+                response_deserializer=gateway__pb2.gateway_info.FromString,
+                )
 
 
 class GatewayServicer(object):
@@ -243,6 +253,20 @@ class GatewayServicer(object):
         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 set_ana_state(self, request, context):
+        """Set gateway ANA states
+        """
+        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
         """
@@ -274,475 +298,518 @@ class GatewayServicer(object):
 
 def add_GatewayServicer_to_server(servicer, server):
     rpc_method_handlers = {
-        'namespace_add': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_add,
-            request_deserializer=gateway__pb2.namespace_add_req.FromString,
-            response_serializer=gateway__pb2.nsid_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,
-        ),
-        'list_namespaces': grpc.unary_unary_rpc_method_handler(
-            servicer.list_namespaces,
-            request_deserializer=gateway__pb2.list_namespaces_req.FromString,
-            response_serializer=gateway__pb2.namespaces_info.SerializeToString,
-        ),
-        'namespace_resize': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_resize,
-            request_deserializer=gateway__pb2.namespace_resize_req.FromString,
-            response_serializer=gateway__pb2.req_status.SerializeToString,
-        ),
-        'namespace_get_io_stats': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_get_io_stats,
-            request_deserializer=gateway__pb2.namespace_get_io_stats_req.FromString,
-            response_serializer=gateway__pb2.namespace_io_stats_info.SerializeToString,
-        ),
-        'namespace_set_qos_limits': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_set_qos_limits,
-            request_deserializer=gateway__pb2.namespace_set_qos_req.FromString,
-            response_serializer=gateway__pb2.req_status.SerializeToString,
-        ),
-        'namespace_change_load_balancing_group': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_change_load_balancing_group,
-            request_deserializer=gateway__pb2.namespace_change_load_balancing_group_req.FromString,
-            response_serializer=gateway__pb2.req_status.SerializeToString,
-        ),
-        'namespace_delete': grpc.unary_unary_rpc_method_handler(
-            servicer.namespace_delete,
-            request_deserializer=gateway__pb2.namespace_delete_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,
-        ),
-        'list_hosts': grpc.unary_unary_rpc_method_handler(
-            servicer.list_hosts,
-            request_deserializer=gateway__pb2.list_hosts_req.FromString,
-            response_serializer=gateway__pb2.hosts_info.SerializeToString,
-        ),
-        'list_connections': grpc.unary_unary_rpc_method_handler(
-            servicer.list_connections,
-            request_deserializer=gateway__pb2.list_connections_req.FromString,
-            response_serializer=gateway__pb2.connections_info.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,
-        ),
-        'list_listeners': grpc.unary_unary_rpc_method_handler(
-            servicer.list_listeners,
-            request_deserializer=gateway__pb2.list_listeners_req.FromString,
-            response_serializer=gateway__pb2.listeners_info.SerializeToString,
-        ),
-        'list_subsystems': grpc.unary_unary_rpc_method_handler(
-            servicer.list_subsystems,
-            request_deserializer=gateway__pb2.list_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,
-        ),
+            'namespace_add': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_add,
+                    request_deserializer=gateway__pb2.namespace_add_req.FromString,
+                    response_serializer=gateway__pb2.nsid_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,
+            ),
+            'list_namespaces': grpc.unary_unary_rpc_method_handler(
+                    servicer.list_namespaces,
+                    request_deserializer=gateway__pb2.list_namespaces_req.FromString,
+                    response_serializer=gateway__pb2.namespaces_info.SerializeToString,
+            ),
+            'namespace_resize': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_resize,
+                    request_deserializer=gateway__pb2.namespace_resize_req.FromString,
+                    response_serializer=gateway__pb2.req_status.SerializeToString,
+            ),
+            'namespace_get_io_stats': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_get_io_stats,
+                    request_deserializer=gateway__pb2.namespace_get_io_stats_req.FromString,
+                    response_serializer=gateway__pb2.namespace_io_stats_info.SerializeToString,
+            ),
+            'namespace_set_qos_limits': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_set_qos_limits,
+                    request_deserializer=gateway__pb2.namespace_set_qos_req.FromString,
+                    response_serializer=gateway__pb2.req_status.SerializeToString,
+            ),
+            'namespace_change_load_balancing_group': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_change_load_balancing_group,
+                    request_deserializer=gateway__pb2.namespace_change_load_balancing_group_req.FromString,
+                    response_serializer=gateway__pb2.req_status.SerializeToString,
+            ),
+            'namespace_delete': grpc.unary_unary_rpc_method_handler(
+                    servicer.namespace_delete,
+                    request_deserializer=gateway__pb2.namespace_delete_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,
+            ),
+            'list_hosts': grpc.unary_unary_rpc_method_handler(
+                    servicer.list_hosts,
+                    request_deserializer=gateway__pb2.list_hosts_req.FromString,
+                    response_serializer=gateway__pb2.hosts_info.SerializeToString,
+            ),
+            'list_connections': grpc.unary_unary_rpc_method_handler(
+                    servicer.list_connections,
+                    request_deserializer=gateway__pb2.list_connections_req.FromString,
+                    response_serializer=gateway__pb2.connections_info.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,
+            ),
+            'list_listeners': grpc.unary_unary_rpc_method_handler(
+                    servicer.list_listeners,
+                    request_deserializer=gateway__pb2.list_listeners_req.FromString,
+                    response_serializer=gateway__pb2.listeners_info.SerializeToString,
+            ),
+            'list_subsystems': grpc.unary_unary_rpc_method_handler(
+                    servicer.list_subsystems,
+                    request_deserializer=gateway__pb2.list_subsystems_req.FromString,
+                    response_serializer=gateway__pb2.subsystems_info_cli.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,
+            ),
+            'set_ana_state': grpc.unary_unary_rpc_method_handler(
+                    servicer.set_ana_state,
+                    request_deserializer=gateway__pb2.ana_info.FromString,
+                    response_serializer=gateway__pb2.req_status.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)
+            'Gateway', rpc_method_handlers)
     server.add_generic_rpc_handlers((generic_handler,))
 
- # This class is part of an EXPERIMENTAL API.
-
 
+ # This class is part of an EXPERIMENTAL API.
 class Gateway(object):
     """Missing associated documentation comment in .proto file."""
 
     @staticmethod
     def namespace_add(request,
-                      target,
-                      options=(),
-                      channel_credentials=None,
-                      call_credentials=None,
-                      insecure=False,
-                      compression=None,
-                      wait_for_ready=None,
-                      timeout=None,
-                      metadata=None):
+            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/namespace_add',
-                                             gateway__pb2.namespace_add_req.SerializeToString,
-                                             gateway__pb2.nsid_status.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_add_req.SerializeToString,
+            gateway__pb2.nsid_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):
+            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)
+            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):
+            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)
+            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 list_namespaces(request,
-                        target,
-                        options=(),
-                        channel_credentials=None,
-                        call_credentials=None,
-                        insecure=False,
-                        compression=None,
-                        wait_for_ready=None,
-                        timeout=None,
-                        metadata=None):
+            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/list_namespaces',
-                                             gateway__pb2.list_namespaces_req.SerializeToString,
-                                             gateway__pb2.namespaces_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.list_namespaces_req.SerializeToString,
+            gateway__pb2.namespaces_info.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def namespace_resize(request,
-                         target,
-                         options=(),
-                         channel_credentials=None,
-                         call_credentials=None,
-                         insecure=False,
-                         compression=None,
-                         wait_for_ready=None,
-                         timeout=None,
-                         metadata=None):
+            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/namespace_resize',
-                                             gateway__pb2.namespace_resize_req.SerializeToString,
-                                             gateway__pb2.req_status.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_resize_req.SerializeToString,
+            gateway__pb2.req_status.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def namespace_get_io_stats(request,
-                               target,
-                               options=(),
-                               channel_credentials=None,
-                               call_credentials=None,
-                               insecure=False,
-                               compression=None,
-                               wait_for_ready=None,
-                               timeout=None,
-                               metadata=None):
+            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/namespace_get_io_stats',
-                                             gateway__pb2.namespace_get_io_stats_req.SerializeToString,
-                                             gateway__pb2.namespace_io_stats_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_get_io_stats_req.SerializeToString,
+            gateway__pb2.namespace_io_stats_info.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def namespace_set_qos_limits(request,
-                                 target,
-                                 options=(),
-                                 channel_credentials=None,
-                                 call_credentials=None,
-                                 insecure=False,
-                                 compression=None,
-                                 wait_for_ready=None,
-                                 timeout=None,
-                                 metadata=None):
+            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/namespace_set_qos_limits',
-                                             gateway__pb2.namespace_set_qos_req.SerializeToString,
-                                             gateway__pb2.req_status.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_set_qos_req.SerializeToString,
+            gateway__pb2.req_status.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def namespace_change_load_balancing_group(request,
-                                              target,
-                                              options=(),
-                                              channel_credentials=None,
-                                              call_credentials=None,
-                                              insecure=False,
-                                              compression=None,
-                                              wait_for_ready=None,
-                                              timeout=None,
-                                              metadata=None):
+            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/namespace_change_load_balancing_group',
-                                             gateway__pb2.namespace_change_load_balancing_group_req.SerializeToString,
-                                             gateway__pb2.req_status.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_change_load_balancing_group_req.SerializeToString,
+            gateway__pb2.req_status.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def namespace_delete(request,
-                         target,
-                         options=(),
-                         channel_credentials=None,
-                         call_credentials=None,
-                         insecure=False,
-                         compression=None,
-                         wait_for_ready=None,
-                         timeout=None,
-                         metadata=None):
+            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/namespace_delete',
-                                             gateway__pb2.namespace_delete_req.SerializeToString,
-                                             gateway__pb2.req_status.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.namespace_delete_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):
+            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)
+            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):
+            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)
+            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 list_hosts(request,
-                   target,
-                   options=(),
-                   channel_credentials=None,
-                   call_credentials=None,
-                   insecure=False,
-                   compression=None,
-                   wait_for_ready=None,
-                   timeout=None,
-                   metadata=None):
+            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/list_hosts',
-                                             gateway__pb2.list_hosts_req.SerializeToString,
-                                             gateway__pb2.hosts_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.list_hosts_req.SerializeToString,
+            gateway__pb2.hosts_info.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def list_connections(request,
-                         target,
-                         options=(),
-                         channel_credentials=None,
-                         call_credentials=None,
-                         insecure=False,
-                         compression=None,
-                         wait_for_ready=None,
-                         timeout=None,
-                         metadata=None):
+            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/list_connections',
-                                             gateway__pb2.list_connections_req.SerializeToString,
-                                             gateway__pb2.connections_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.list_connections_req.SerializeToString,
+            gateway__pb2.connections_info.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):
+            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)
+            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):
+            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)
+            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 list_listeners(request,
-                       target,
-                       options=(),
-                       channel_credentials=None,
-                       call_credentials=None,
-                       insecure=False,
-                       compression=None,
-                       wait_for_ready=None,
-                       timeout=None,
-                       metadata=None):
+            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/list_listeners',
-                                             gateway__pb2.list_listeners_req.SerializeToString,
-                                             gateway__pb2.listeners_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.list_listeners_req.SerializeToString,
+            gateway__pb2.listeners_info.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
 
     @staticmethod
     def list_subsystems(request,
-                        target,
-                        options=(),
-                        channel_credentials=None,
-                        call_credentials=None,
-                        insecure=False,
-                        compression=None,
-                        wait_for_ready=None,
-                        timeout=None,
-                        metadata=None):
+            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/list_subsystems',
-                                             gateway__pb2.list_subsystems_req.SerializeToString,
-                                             gateway__pb2.subsystems_info.FromString,
-                                             options, channel_credentials,
-                                             insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+            gateway__pb2.list_subsystems_req.SerializeToString,
+            gateway__pb2.subsystems_info_cli.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 set_ana_state(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_ana_state',
+            gateway__pb2.ana_info.SerializeToString,
+            gateway__pb2.req_status.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):
+            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)
+            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):
+            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)
+            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):
+            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)
+            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):
+            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)
+            gateway__pb2.get_gateway_info_req.SerializeToString,
+            gateway__pb2.gateway_info.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)