43b335f917
"get_nvme_controllers" can be used to list NVMe controllers. Names and transport IDs of the NVMe controllers will be reported by this method. Change-Id: Ie59b567afc09e70475f97939e86a872af39c5d8a Signed-off-by: Liu Xiaodong <xiaodong.liu@intel.com> Reviewed-on: https://review.gerrithub.io/419094 Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: GangCao <gang.cao@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
|
|
|
|
def send_nvme_cmd(client, name, cmd_type, data_direction, cmdbuf,
|
|
data=None, metadata=None,
|
|
data_len=None, metadata_len=None,
|
|
timeout_ms=None):
|
|
"""Send one NVMe command
|
|
|
|
Args:
|
|
name: Name of the operating NVMe controller
|
|
cmd_type: Type of nvme cmd. Valid values are: admin, io
|
|
data_direction: Direction of data transfer. Valid values are: c2h, h2c
|
|
cmdbuf: NVMe command encoded by base64 urlsafe
|
|
data: Data transferring to controller from host, encoded by base64 urlsafe
|
|
metadata: metadata transferring to controller from host, encoded by base64 urlsafe
|
|
data_length: Data length required to transfer from controller to host
|
|
metadata_length: Metadata length required to transfer from controller to host
|
|
timeout-ms: Command execution timeout value, in milliseconds, if 0, don't track timeout
|
|
|
|
Returns:
|
|
NVMe completion queue entry, requested data and metadata, all are encoded by base64 urlsafe.
|
|
"""
|
|
params = {'name': name,
|
|
'cmd_type': cmd_type,
|
|
'data_direction': data_direction,
|
|
'cmdbuf': cmdbuf}
|
|
|
|
if data:
|
|
params['data'] = data
|
|
if metadata:
|
|
params['metadata'] = metadata
|
|
if data_len:
|
|
params['data_len'] = data_len
|
|
if metadata_len:
|
|
params['metadata_len'] = metadata_len
|
|
if timeout_ms:
|
|
params['timeout_ms'] = timeout_ms
|
|
|
|
return client.call('send_nvme_cmd', params)
|
|
|
|
|
|
def get_nvme_controllers(client, name=None):
|
|
"""Get information about NVMe controllers.
|
|
|
|
Args:
|
|
name: NVMe controller name to query (optional; if omitted, query all NVMe controllers)
|
|
|
|
Returns:
|
|
List of NVMe controller information objects.
|
|
"""
|
|
params = {}
|
|
if name:
|
|
params['name'] = name
|
|
return client.call('get_nvme_controllers', params)
|