rpc/bdev: construct RPC return a string instead array

Construct calls that create single new bdev,
now return a string instead of array with single element.

Change-Id: Iad841b8e5eab0265693efb6be472354ea616c562
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/416081
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Tomasz Zawadzki 2018-06-21 06:46:59 -04:00 committed by Jim Harris
parent 356b68a7c1
commit 160850f0a6
12 changed files with 77 additions and 94 deletions

View File

@ -87,9 +87,7 @@ spdk_rpc_construct_aio_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;

View File

@ -76,9 +76,7 @@ construct_iscsi_bdev_cb(void *cb_arg, struct spdk_bdev *bdev, int status)
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
} }
} }

View File

@ -107,9 +107,7 @@ _spdk_rpc_lvol_store_construct_cb(void *cb_arg, struct spdk_lvol_store *lvol_sto
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, lvol_store_uuid); spdk_json_write_string(w, lvol_store_uuid);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;
@ -358,9 +356,7 @@ _spdk_rpc_construct_lvol_bdev_cb(void *cb_arg, struct spdk_lvol *lvol, int lvole
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, lvol->bdev->name); spdk_json_write_string(w, lvol->bdev->name);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;
@ -447,9 +443,7 @@ _spdk_rpc_snapshot_lvol_bdev_cb(void *cb_arg, struct spdk_lvol *lvol, int lvoler
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, lvol->bdev->name); spdk_json_write_string(w, lvol->bdev->name);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;
@ -535,9 +529,7 @@ _spdk_rpc_clone_lvol_bdev_cb(void *cb_arg, struct spdk_lvol *lvol, int lvolerrno
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, lvol->bdev->name); spdk_json_write_string(w, lvol->bdev->name);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;

View File

@ -95,9 +95,7 @@ spdk_rpc_construct_malloc_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;

View File

@ -95,9 +95,7 @@ spdk_rpc_construct_null_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, bdev->name); spdk_json_write_string(w, bdev->name);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
free_rpc_construct_null(&req); free_rpc_construct_null(&req);
return; return;

View File

@ -86,9 +86,7 @@ spdk_rpc_construct_passthru_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, req.passthru_bdev_name); spdk_json_write_string(w, req.passthru_bdev_name);
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
free_rpc_construct_passthru(&req); free_rpc_construct_passthru(&req);
return; return;

View File

@ -86,9 +86,7 @@ spdk_rpc_construct_pmem_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
free_rpc_construct_pmem_bdev(&req); free_rpc_construct_pmem_bdev(&req);

View File

@ -86,9 +86,7 @@ spdk_rpc_construct_rbd_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;

View File

@ -348,9 +348,7 @@ spdk_rpc_create_virtio_user_blk_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;
@ -405,9 +403,7 @@ spdk_rpc_create_virtio_pci_blk_bdev(struct spdk_jsonrpc_request *request,
return; return;
} }
spdk_json_write_array_begin(w);
spdk_json_write_string(w, spdk_bdev_get_name(bdev)); spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(request, w); spdk_jsonrpc_end_result(request, w);
return; return;

View File

@ -124,11 +124,11 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_malloc_bdev(args): def construct_malloc_bdev(args):
num_blocks = (args.total_size * 1024 * 1024) // args.block_size num_blocks = (args.total_size * 1024 * 1024) // args.block_size
print_array(rpc.bdev.construct_malloc_bdev(args.client, print(rpc.bdev.construct_malloc_bdev(args.client,
num_blocks=num_blocks, num_blocks=num_blocks,
block_size=args.block_size, block_size=args.block_size,
name=args.name, name=args.name,
uuid=args.uuid)) uuid=args.uuid))
p = subparsers.add_parser('construct_malloc_bdev', p = subparsers.add_parser('construct_malloc_bdev',
help='Add a bdev with malloc backend') help='Add a bdev with malloc backend')
@ -151,11 +151,11 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_null_bdev(args): def construct_null_bdev(args):
num_blocks = (args.total_size * 1024 * 1024) // args.block_size num_blocks = (args.total_size * 1024 * 1024) // args.block_size
print_array(rpc.bdev.construct_null_bdev(args.client, print(rpc.bdev.construct_null_bdev(args.client,
num_blocks=num_blocks, num_blocks=num_blocks,
block_size=args.block_size, block_size=args.block_size,
name=args.name, name=args.name,
uuid=args.uuid)) uuid=args.uuid))
p = subparsers.add_parser('construct_null_bdev', p = subparsers.add_parser('construct_null_bdev',
help='Add a bdev with null backend') help='Add a bdev with null backend')
@ -168,10 +168,10 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_aio_bdev(args): def construct_aio_bdev(args):
print_array(rpc.bdev.construct_aio_bdev(args.client, print(rpc.bdev.construct_aio_bdev(args.client,
filename=args.filename, filename=args.filename,
name=args.name, name=args.name,
block_size=args.block_size)) block_size=args.block_size))
p = subparsers.add_parser('construct_aio_bdev', p = subparsers.add_parser('construct_aio_bdev',
help='Add a bdev with aio backend') help='Add a bdev with aio backend')
@ -215,11 +215,11 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_rbd_bdev(args): def construct_rbd_bdev(args):
print_array(rpc.bdev.construct_rbd_bdev(args.client, print(rpc.bdev.construct_rbd_bdev(args.client,
name=args.name, name=args.name,
pool_name=args.pool_name, pool_name=args.pool_name,
rbd_name=args.rbd_name, rbd_name=args.rbd_name,
block_size=args.block_size)) block_size=args.block_size))
p = subparsers.add_parser('construct_rbd_bdev', p = subparsers.add_parser('construct_rbd_bdev',
help='Add a bdev with ceph rbd backend') help='Add a bdev with ceph rbd backend')
@ -231,8 +231,8 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_error_bdev(args): def construct_error_bdev(args):
rpc.bdev.construct_error_bdev(args.client, print(rpc.bdev.construct_error_bdev(args.client,
base_name=args.base_name) base_name=args.base_name))
p = subparsers.add_parser('construct_error_bdev', p = subparsers.add_parser('construct_error_bdev',
help='Add bdev with error injection backend') help='Add bdev with error injection backend')
@ -250,10 +250,10 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_iscsi_bdev(args): def construct_iscsi_bdev(args):
rpc.bdev.construct_iscsi_bdev(args.client, print(rpc.bdev.construct_iscsi_bdev(args.client,
name=args.name, name=args.name,
url=args.url, url=args.url,
initiator_iqn=args.initiator_iqn) initiator_iqn=args.initiator_iqn))
p = subparsers.add_parser('construct_iscsi_bdev', p = subparsers.add_parser('construct_iscsi_bdev',
help='Add bdev with iSCSI initiator backend') help='Add bdev with iSCSI initiator backend')
@ -273,9 +273,9 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_pmem_bdev(args): def construct_pmem_bdev(args):
print_array(rpc.bdev.construct_pmem_bdev(args.client, print(rpc.bdev.construct_pmem_bdev(args.client,
pmem_file=args.pmem_file, pmem_file=args.pmem_file,
name=args.name)) name=args.name))
p = subparsers.add_parser('construct_pmem_bdev', help='Add a bdev with pmem backend') p = subparsers.add_parser('construct_pmem_bdev', help='Add a bdev with pmem backend')
p.add_argument('pmem_file', help='Path to pmemblk pool file') p.add_argument('pmem_file', help='Path to pmemblk pool file')
@ -284,9 +284,9 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_passthru_bdev(args): def construct_passthru_bdev(args):
print_array(rpc.bdev.construct_passthru_bdev(args.client, print(rpc.bdev.construct_passthru_bdev(args.client,
base_bdev_name=args.base_bdev_name, base_bdev_name=args.base_bdev_name,
passthru_bdev_name=args.passthru_bdev_name)) passthru_bdev_name=args.passthru_bdev_name))
p = subparsers.add_parser('construct_passthru_bdev', p = subparsers.add_parser('construct_passthru_bdev',
help='Add a pass through bdev on existing bdev') help='Add a pass through bdev on existing bdev')
@ -659,10 +659,10 @@ if __name__ == "__main__":
# lvol # lvol
@call_cmd @call_cmd
def construct_lvol_store(args): def construct_lvol_store(args):
print_array(rpc.lvol.construct_lvol_store(args.client, print(rpc.lvol.construct_lvol_store(args.client,
bdev_name=args.bdev_name, bdev_name=args.bdev_name,
lvs_name=args.lvs_name, lvs_name=args.lvs_name,
cluster_sz=args.cluster_sz)) cluster_sz=args.cluster_sz))
p = subparsers.add_parser('construct_lvol_store', help='Add logical volume store on base bdev') p = subparsers.add_parser('construct_lvol_store', help='Add logical volume store on base bdev')
p.add_argument('bdev_name', help='base bdev name') p.add_argument('bdev_name', help='base bdev name')
@ -683,12 +683,12 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_lvol_bdev(args): def construct_lvol_bdev(args):
print_array(rpc.lvol.construct_lvol_bdev(args.client, print(rpc.lvol.construct_lvol_bdev(args.client,
lvol_name=args.lvol_name, lvol_name=args.lvol_name,
size=args.size * 1024 * 1024, size=args.size * 1024 * 1024,
thin_provision=args.thin_provision, thin_provision=args.thin_provision,
uuid=args.uuid, uuid=args.uuid,
lvs_name=args.lvs_name)) lvs_name=args.lvs_name))
p = subparsers.add_parser('construct_lvol_bdev', help='Add a bdev with an logical volume backend') p = subparsers.add_parser('construct_lvol_bdev', help='Add a bdev with an logical volume backend')
p.add_argument('-u', '--uuid', help='lvol store UUID', required=False) p.add_argument('-u', '--uuid', help='lvol store UUID', required=False)
@ -700,9 +700,9 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def snapshot_lvol_bdev(args): def snapshot_lvol_bdev(args):
rpc.lvol.snapshot_lvol_bdev(args.client, print(rpc.lvol.snapshot_lvol_bdev(args.client,
lvol_name=args.lvol_name, lvol_name=args.lvol_name,
snapshot_name=args.snapshot_name) snapshot_name=args.snapshot_name))
p = subparsers.add_parser('snapshot_lvol_bdev', help='Create a snapshot of an lvol bdev') p = subparsers.add_parser('snapshot_lvol_bdev', help='Create a snapshot of an lvol bdev')
p.add_argument('lvol_name', help='lvol bdev name') p.add_argument('lvol_name', help='lvol bdev name')
@ -711,9 +711,9 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def clone_lvol_bdev(args): def clone_lvol_bdev(args):
rpc.lvol.clone_lvol_bdev(args.client, print(rpc.lvol.clone_lvol_bdev(args.client,
snapshot_name=args.snapshot_name, snapshot_name=args.snapshot_name,
clone_name=args.clone_name) clone_name=args.clone_name))
p = subparsers.add_parser('clone_lvol_bdev', help='Create a clone of an lvol snapshot') p = subparsers.add_parser('clone_lvol_bdev', help='Create a clone of an lvol snapshot')
p.add_argument('snapshot_name', help='lvol snapshot name') p.add_argument('snapshot_name', help='lvol snapshot name')
@ -794,10 +794,10 @@ if __name__ == "__main__":
# split # split
@call_cmd @call_cmd
def construct_split_vbdev(args): def construct_split_vbdev(args):
print_dict(rpc.bdev.construct_split_vbdev(args.client, print_array(rpc.bdev.construct_split_vbdev(args.client,
base_bdev=args.base_bdev, base_bdev=args.base_bdev,
split_count=args.split_count, split_count=args.split_count,
split_size_mb=args.split_size_mb)) split_size_mb=args.split_size_mb))
p = subparsers.add_parser('construct_split_vbdev', help="""Add given disk name to split config. If bdev with base_name p = subparsers.add_parser('construct_split_vbdev', help="""Add given disk name to split config. If bdev with base_name
name exist the split bdevs will be created right away, if not split bdevs will be created when base bdev became name exist the split bdevs will be created right away, if not split bdevs will be created when base bdev became
@ -1312,11 +1312,11 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_virtio_user_blk_bdev(args): def construct_virtio_user_blk_bdev(args):
print_dict(rpc.vhost.construct_virtio_user_blk_bdev(args.client, print(rpc.vhost.construct_virtio_user_blk_bdev(args.client,
path=args.path, path=args.path,
name=args.name, name=args.name,
vq_count=args.vq_count, vq_count=args.vq_count,
vq_size=args.vq_size)) vq_size=args.vq_size))
p = subparsers.add_parser('construct_virtio_user_blk_bdev', help='Connect to a virtio user blk device.') p = subparsers.add_parser('construct_virtio_user_blk_bdev', help='Connect to a virtio user blk device.')
p.add_argument('path', help='Path to Virtio BLK socket') p.add_argument('path', help='Path to Virtio BLK socket')
@ -1327,9 +1327,9 @@ if __name__ == "__main__":
@call_cmd @call_cmd
def construct_virtio_pci_blk_bdev(args): def construct_virtio_pci_blk_bdev(args):
print_dict(rpc.vhost.construct_virtio_pci_blk_bdev(args.client, print(rpc.vhost.construct_virtio_pci_blk_bdev(args.client,
pci_address=args.pci_address, pci_address=args.pci_address,
name=args.name)) name=args.name))
p = subparsers.add_parser('construct_virtio_pci_blk_bdev', help='Create a Virtio Blk device from a virtio-pci device.') p = subparsers.add_parser('construct_virtio_pci_blk_bdev', help='Create a Virtio Blk device from a virtio-pci device.')
p.add_argument('pci_address', help="""PCI address in domain:bus:device.function format or p.add_argument('pci_address', help="""PCI address in domain:bus:device.function format or

View File

@ -25,7 +25,7 @@ def construct_malloc_bdev(client, num_blocks, block_size, name=None, uuid=None):
uuid: UUID of block device (optional) uuid: UUID of block device (optional)
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = {'num_blocks': num_blocks, 'block_size': block_size} params = {'num_blocks': num_blocks, 'block_size': block_size}
if name: if name:
@ -55,7 +55,7 @@ def construct_null_bdev(client, num_blocks, block_size, name, uuid=None):
uuid: UUID of block device (optional) uuid: UUID of block device (optional)
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = {'name': name, 'num_blocks': num_blocks, params = {'name': name, 'num_blocks': num_blocks,
'block_size': block_size} 'block_size': block_size}
@ -73,7 +73,7 @@ def construct_aio_bdev(client, filename, name, block_size=None):
block_size: block size of device (optional; autodetected if omitted) block_size: block size of device (optional; autodetected if omitted)
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = {'name': name, params = {'name': name,
'filename': filename} 'filename': filename}
@ -95,7 +95,7 @@ def delete_aio_bdev(client, name):
def construct_nvme_bdev(client, name, trtype, traddr, adrfam=None, trsvcid=None, subnqn=None): def construct_nvme_bdev(client, name, trtype, traddr, adrfam=None, trsvcid=None, subnqn=None):
"""Construct NVMe namespace block devices. """Construct NVMe namespace block device.
Args: Args:
name: bdev name prefix; "n" + namespace ID will be appended to create unique names name: bdev name prefix; "n" + namespace ID will be appended to create unique names
@ -106,7 +106,7 @@ def construct_nvme_bdev(client, name, trtype, traddr, adrfam=None, trsvcid=None,
subnqn: subsystem NQN to connect to (optional) subnqn: subsystem NQN to connect to (optional)
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = {'name': name, params = {'name': name,
'trtype': trtype, 'trtype': trtype,
@ -134,7 +134,7 @@ def construct_rbd_bdev(client, pool_name, rbd_name, block_size, name=None):
name: name of block device (optional) name: name of block device (optional)
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = { params = {
'pool_name': pool_name, 'pool_name': pool_name,
@ -177,7 +177,7 @@ def construct_iscsi_bdev(client, name, url, initiator_iqn):
initiator_iqn: IQN name to be used by initiator initiator_iqn: IQN name to be used by initiator
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = { params = {
'name': name, 'name': name,
@ -205,7 +205,7 @@ def construct_pmem_bdev(client, pmem_file, name):
name: name of block device name: name of block device
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = { params = {
'pmem_file': pmem_file, 'pmem_file': pmem_file,
@ -222,7 +222,7 @@ def construct_passthru_bdev(client, base_bdev_name, passthru_bdev_name):
passthru_bdev_name: name of block device passthru_bdev_name: name of block device
Returns: Returns:
List of created block devices. Name of created block device.
""" """
params = { params = {
'base_bdev_name': base_bdev_name, 'base_bdev_name': base_bdev_name,

View File

@ -40,6 +40,9 @@ def construct_lvol_bdev(client, lvol_name, size, thin_provision=False, uuid=None
lvs_name: name of logical volume store to create logical volume on (optional) lvs_name: name of logical volume store to create logical volume on (optional)
Either uuid or lvs_name must be specified, but not both. Either uuid or lvs_name must be specified, but not both.
Returns:
Name of created logical volume block device.
""" """
if (uuid and lvs_name) or (not uuid and not lvs_name): if (uuid and lvs_name) or (not uuid and not lvs_name):
raise ValueError("Either uuid or lvs_name must be specified, but not both") raise ValueError("Either uuid or lvs_name must be specified, but not both")
@ -60,6 +63,9 @@ def snapshot_lvol_bdev(client, lvol_name, snapshot_name):
Args: Args:
lvol_name: logical volume to create a snapshot from lvol_name: logical volume to create a snapshot from
snapshot_name: name for the newly created snapshot snapshot_name: name for the newly created snapshot
Returns:
Name of created logical volume snapshot.
""" """
params = { params = {
'lvol_name': lvol_name, 'lvol_name': lvol_name,
@ -74,6 +80,9 @@ def clone_lvol_bdev(client, snapshot_name, clone_name):
Args: Args:
snapshot_name: snapshot to clone snapshot_name: snapshot to clone
clone_name: name of logical volume to create clone_name: name of logical volume to create
Returns:
Name of created logical volume clone.
""" """
params = { params = {
'snapshot_name': snapshot_name, 'snapshot_name': snapshot_name,