Commit 2bb70da9 authored by Seth Howell's avatar Seth Howell Committed by Ben Walker
Browse files

spdkcli: add an nvmf transport object



Change-Id: Iba6312db5144910f231cff8d31627fd580656777
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/430642


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent b7c4b7bc
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -10,6 +10,58 @@ class UINVMf(UINode):
    def refresh(self):
        self._children = set([])
        UINVMfSubsystems(self)
        UINVMfTransports(self)


class UINVMfTransports(UINode):
    def __init__(self, parent):
        UINode.__init__(self, "transport", parent)
        self.refresh()

    def refresh(self):
        self._children = set([])
        for transport in self.get_root().get_nvmf_transports():
            UINVMfTransport(transport, self)

    def ui_command_create(self, trtype, max_queue_depth=None, max_qpairs_per_ctrlr=None, in_capsule_data_size=None,
                          max_io_size=None, io_unit_size=None, max_aq_depth=None):
        """Create a transport with given parameters

        Arguments:
            trtype - Example: 'RDMA'.
            max_queue_depth - Optional parameter. Integer, max value 65535.
            max_qpairs_per_ctrlr - Optional parameter. 16 bit Integer, max value 65535.
            in_capsule_data_size - Optional parameter. 32 bit Integer, max value 4294967295
            max_io_size - Optional parameter. 32 bit integer, max value 4294967295
            io_unit_size - Optional parameter. 32 bit integer, max value 4294967295
            max_aq_depth - Optional parameter. 32 bit integer, max value 4294967295
        """
        max_queue_depth = self.ui_eval_param(max_queue_depth, "number", None)
        max_qpairs_per_ctrlr = self.ui_eval_param(max_qpairs_per_ctrlr, "number", None)
        in_capsule_data_size = self.ui_eval_param(in_capsule_data_size, "number", None)
        max_io_size = self.ui_eval_param(max_io_size, "number", None)
        io_unit_size = self.ui_eval_param(io_unit_size, "number", None)
        max_aq_depth = self.ui_eval_param(max_aq_depth, "number", None)
        try:
            self.get_root().create_nvmf_transport(trtype=trtype,
                                                  max_queue_depth=max_queue_depth,
                                                  max_qpairs_per_ctrlr=max_qpairs_per_ctrlr,
                                                  in_capsule_data_size=in_capsule_data_size,
                                                  max_io_size=max_io_size,
                                                  io_unit_size=io_unit_size,
                                                  max_aq_depth=max_aq_depth)
        except JSONRPCException as e:
            self.shell.log.error(e.message)
        self.refresh()

    def summary(self):
        return "Transports: %s" % len(self.children), None


class UINVMfTransport(UINode):
    def __init__(self, transport, parent):
        UINode.__init__(self, transport.trtype, parent)
        self.transport = transport


class UINVMfSubsystems(UINode):
+27 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ class UIRoot(UINode):
        self.current_bdevs = []
        self.current_lvol_stores = []
        self.current_vhost_ctrls = []
        self.current_nvmf_transports = []
        self.current_nvmf_subsystems = []
        self.set_rpc_target(s)
        self.verbose = False
@@ -271,6 +272,20 @@ class UIRoot(UINode):
    def set_vhost_controller_coalescing(self, **kwargs):
        rpc.vhost.set_vhost_controller_coalescing(self.client, **kwargs)

    @verbose
    def create_nvmf_transport(self, **kwargs):
        rpc.nvmf.nvmf_create_transport(self.client, **kwargs)

    def list_nvmf_transports(self):
        if self.is_init:
            self.current_nvmf_transports = rpc.nvmf.get_nvmf_transports(self.client)

    def get_nvmf_transports(self):
        if self.is_init:
            self.list_nvmf_transports()
            for transport in self.current_nvmf_transports:
                yield NvmfTransport(transport)

    def list_nvmf_subsystems(self):
        if self.is_init:
            self.current_nvmf_subsystems = rpc.nvmf.get_nvmf_subsystems(self.client)
@@ -466,6 +481,18 @@ class VhostCtrlr(object):
            setattr(self, i, ctrlr_info[i])


class NvmfTransport(object):
    def __init__(self, transport_info):
        """
        All class attributes are set based on what information is received
        from get_nvmf_transport RPC call.
        # TODO: Document in docstring parameters which describe bdevs.
        # TODO: Possible improvement: JSON schema might be used here in future
        """
        for i in transport_info.keys():
            setattr(self, i, transport_info[i])


class NvmfSubsystem(object):
    def __init__(self, subsystem_info):
        """
+32 −30
Original line number Diff line number Diff line
o- nvmf ...................................................................................................................... [...]
  o- subsystem ..................................................................................................... [Subsystems: 4]
    o- nqn.2014-08.org.nvmexpress.discovery ......................................................... [st=Discovery, Allow any host]
    | o- hosts .......................................................................................................... [Hosts: 0]
    | o- listen_addresses ........................................................................................... [Addresses: 0]
    o- nqn.2014-08.org.spdk:cnode1 ...................................................... [sn=$(S), st=NVMe, Allow any host]
    | o- hosts .......................................................................................................... [Hosts: 1]
  | o- nqn.2014-08.org.nvmexpress.discovery ......................................................... [st=Discovery, Allow any host]
  | | o- hosts .......................................................................................................... [Hosts: 0]
  | | o- listen_addresses ........................................................................................... [Addresses: 0]
  | o- nqn.2014-08.org.spdk:cnode1 ...................................................... [sn=$(S), st=NVMe, Allow any host]
  | | o- hosts .......................................................................................................... [Hosts: 1]
  | | | o- nqn.2014-08.org.spdk:cnode2 ....................................................................................... [...]
  | | o- listen_addresses ........................................................................................... [Addresses: 3]
  | | | o- $(N).$(N).$(N).$(N):4260 $(S) [RDMA]
  | | | o- $(N).$(N).$(N).$(N):4261 $(S) [RDMA]
  | | | o- $(N).$(N).$(N).$(N):4262 $(S) [RDMA]
  | | o- namespaces ................................................................................................ [Namespaces: 4]
  | |   o- Malloc3 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc3, 1]
  | |   o- Malloc4 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc4, 2]
  | |   o- Malloc5 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc5, 3]
  | |   o- Malloc6 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc6, 4]
  | o- nqn.2014-08.org.spdk:cnode2 ...................................................... [sn=$(S), st=NVMe, Allow any host]
  | | o- hosts .......................................................................................................... [Hosts: 0]
  | | o- listen_addresses ........................................................................................... [Addresses: 1]
  | | | o- $(N).$(N).$(N).$(N):4260 $(S) [RDMA]
  | | o- namespaces ................................................................................................ [Namespaces: 1]
  | |   o- Malloc2 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc2, 1]
  | o- nqn.2014-08.org.spdk:cnode3 ...................................................... [sn=$(S), st=NVMe, Allow any host]
  |   o- hosts .......................................................................................................... [Hosts: 2]
  |   | o- nqn.2014-08.org.spdk:cnode1 ....................................................................................... [...]
  |   | o- nqn.2014-08.org.spdk:cnode2 ....................................................................................... [...]
    | o- listen_addresses ........................................................................................... [Addresses: 3]
  |   o- listen_addresses ........................................................................................... [Addresses: 2]
  |   | o- $(N).$(N).$(N).$(N):4260 $(S) [RDMA]
  |   | o- $(N).$(N).$(N).$(N):4261 $(S) [RDMA]
    | | o- $(N).$(N).$(N).$(N):4262 $(S) [RDMA]
    | o- namespaces ................................................................................................ [Namespaces: 4]
    |   o- Malloc3 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc3, 1]
    |   o- Malloc4 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc4, 2]
    |   o- Malloc5 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc5, 3]
    |   o- Malloc6 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc6, 4]
    o- nqn.2014-08.org.spdk:cnode2 ...................................................... [sn=$(S), st=NVMe, Allow any host]
    | o- hosts .......................................................................................................... [Hosts: 0]
    | o- listen_addresses ........................................................................................... [Addresses: 1]
    | | o- $(N).$(N).$(N).$(N):4260 $(S) [RDMA]
  |   o- namespaces ................................................................................................ [Namespaces: 1]
    |   o- Malloc2 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc2, 1]
    o- nqn.2014-08.org.spdk:cnode3 ...................................................... [sn=$(S), st=NVMe, Allow any host]
      o- hosts .......................................................................................................... [Hosts: 2]
      | o- nqn.2014-08.org.spdk:cnode1 ....................................................................................... [...]
      | o- nqn.2014-08.org.spdk:cnode2 ....................................................................................... [...]
      o- listen_addresses ........................................................................................... [Addresses: 2]
      | o- $(N).$(N).$(N).$(N):4260 $(S) [RDMA]
      | o- $(N).$(N).$(N).$(N):4261 $(S) [RDMA]
      o- namespaces ................................................................................................ [Namespaces: 1]
        o- Malloc1 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc1, 1]
  |     o- Malloc1 .............................................................. [$(X)-$(X)-$(X)-$(X)-$(X), Malloc1, 1]
  o- transport ..................................................................................................... [Transports: 1]
    o- RDMA .................................................................................................................. [...]
+4 −3
Original line number Diff line number Diff line
@@ -53,9 +53,10 @@ o- / ...........................................................................
  | o- lvs ................................................................................................ [Size=$(FP)M, Free=$(FP)M]
  o- nvmf .................................................................................................................... [...]
  | o- subsystem ................................................................................................... [Subsystems: 1]
  |   o- nqn.2014-08.org.nvmexpress.discovery ....................................................... [st=Discovery, Allow any host]
  |     o- hosts ........................................................................................................ [Hosts: 0]
  |     o- listen_addresses ......................................................................................... [Addresses: 0]
  | | o- nqn.2014-08.org.nvmexpress.discovery ....................................................... [st=Discovery, Allow any host]
  | |   o- hosts ........................................................................................................ [Hosts: 0]
  | |   o- listen_addresses ......................................................................................... [Addresses: 0]
  | o- transport ................................................................................................... [Transports: 0]
  o- vhost ................................................................................................................... [...]
    o- block ................................................................................................................. [...]
    | o- vhost_blk1 $(S) [$(S)]