59b3479bfd
An new RPC set_iscsi_options allocates and set options dynamically. Initialization of iSCSI subsystem skips initialization of options if it is already allocated. To use and test this RPC easily, add python script too. Change-Id: I71e252da6495a194ae9a1a9e3aaae4feb543487a Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/403624 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
202 lines
6.4 KiB
Python
Executable File
202 lines
6.4 KiB
Python
Executable File
def set_iscsi_options(client, args):
|
|
params = {}
|
|
|
|
if args.auth_file:
|
|
params['auth_file'] = args.auth_file
|
|
if args.node_base:
|
|
params['node_base'] = args.node_base
|
|
if args.nop_timeout:
|
|
params['nop_timeout'] = args.nop_timeout
|
|
if args.nop_in_interval:
|
|
params['nop_in_interval'] = args.nop_in_interval
|
|
if args.no_discovery_auth:
|
|
params['no_discovery_auth'] = args.no_discovery_auth
|
|
if args.req_discovery_auth:
|
|
params['req_discovery_auth'] = args.req_discovery_auth
|
|
if args.req_discovery_auth_mutual:
|
|
params['req_discovery_auth_mutual'] = args.req_discovery_auth_mutual
|
|
if args.discovery_auth_group:
|
|
params['discovery_auth_group'] = args.discovery_auth_group
|
|
if args.max_sessions:
|
|
params['max_sessions'] = args.max_sessions
|
|
if args.max_connections_per_session:
|
|
params['max_connections_per_session'] = args.max_connections_per_session
|
|
if args.default_time2wait:
|
|
params['default_time2wait'] = args.default_time2wait
|
|
if args.default_time2retain:
|
|
params['default_time2retain'] = args.default_time2retain
|
|
if args.immediate_data:
|
|
params['immediate_data'] = args.immediate_data
|
|
if args.error_recovery_level:
|
|
params['error_recovery_level'] = args.error_recovery_level
|
|
if args.allow_duplicated_isid:
|
|
params['allow_duplicated_isid'] = args.allow_duplicated_isid
|
|
if args.min_connections_per_session:
|
|
params['min_connections_per_session'] = args.min_connections_per_session
|
|
return client.call('set_iscsi_options', params)
|
|
|
|
|
|
def get_portal_groups(client, args):
|
|
return client.call('get_portal_groups')
|
|
|
|
|
|
def get_initiator_groups(client, args):
|
|
return client.call('get_initiator_groups')
|
|
|
|
|
|
def get_target_nodes(client, args):
|
|
return client.call('get_target_nodes')
|
|
|
|
|
|
def construct_target_node(client, args):
|
|
luns = []
|
|
for u in args.bdev_name_id_pairs.strip().split(" "):
|
|
bdev_name, lun_id = u.split(":")
|
|
luns.append({"bdev_name": bdev_name, "lun_id": int(lun_id)})
|
|
|
|
pg_ig_maps = []
|
|
for u in args.pg_ig_mappings.strip().split(" "):
|
|
pg, ig = u.split(":")
|
|
pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)})
|
|
|
|
params = {
|
|
'name': args.name,
|
|
'alias_name': args.alias_name,
|
|
'pg_ig_maps': pg_ig_maps,
|
|
'luns': luns,
|
|
'queue_depth': args.queue_depth,
|
|
}
|
|
|
|
if args.chap_group:
|
|
params['chap_group'] = args.chap_group
|
|
if args.disable_chap:
|
|
params['disable_chap'] = args.disable_chap
|
|
if args.require_chap:
|
|
params['require_chap'] = args.require_chap
|
|
if args.mutual_chap:
|
|
params['mutual_chap'] = args.mutual_chap
|
|
if args.header_digest:
|
|
params['header_digest'] = args.header_digest
|
|
if args.data_digest:
|
|
params['data_digest'] = args.data_digest
|
|
return client.call('construct_target_node', params)
|
|
|
|
|
|
def target_node_add_lun(client, args):
|
|
params = {
|
|
'name': args.name,
|
|
'bdev_name': args.bdev_name,
|
|
}
|
|
if args.lun_id:
|
|
params['lun_id'] = args.lun_id
|
|
return client.call('target_node_add_lun', params)
|
|
|
|
|
|
def delete_pg_ig_maps(client, args):
|
|
pg_ig_maps = []
|
|
for u in args.pg_ig_mappings.strip().split(" "):
|
|
pg, ig = u.split(":")
|
|
pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)})
|
|
params = {
|
|
'name': args.name,
|
|
'pg_ig_maps': pg_ig_maps,
|
|
}
|
|
return client.call('delete_pg_ig_maps', params)
|
|
|
|
|
|
def add_pg_ig_maps(client, args):
|
|
pg_ig_maps = []
|
|
for u in args.pg_ig_mappings.strip().split(" "):
|
|
pg, ig = u.split(":")
|
|
pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)})
|
|
params = {
|
|
'name': args.name,
|
|
'pg_ig_maps': pg_ig_maps,
|
|
}
|
|
return client.call('add_pg_ig_maps', params)
|
|
|
|
|
|
def add_portal_group(client, args):
|
|
# parse out portal list host1:port1 host2:port2
|
|
portals = []
|
|
for p in args.portal_list:
|
|
ip, separator, port_cpumask = p.rpartition(':')
|
|
split_port_cpumask = port_cpumask.split('@')
|
|
if len(split_port_cpumask) == 1:
|
|
port = port_cpumask
|
|
portals.append({'host': ip, 'port': port})
|
|
else:
|
|
port = split_port_cpumask[0]
|
|
cpumask = split_port_cpumask[1]
|
|
portals.append({'host': ip, 'port': port, 'cpumask': cpumask})
|
|
|
|
params = {'tag': args.tag, 'portals': portals}
|
|
return client.call('add_portal_group', params)
|
|
|
|
|
|
def add_initiator_group(client, args):
|
|
initiators = []
|
|
netmasks = []
|
|
for i in args.initiator_list.strip().split(' '):
|
|
initiators.append(i)
|
|
for n in args.netmask_list.strip().split(' '):
|
|
netmasks.append(n)
|
|
|
|
params = {'tag': args.tag, 'initiators': initiators, 'netmasks': netmasks}
|
|
return client.call('add_initiator_group', params)
|
|
|
|
|
|
def add_initiators_to_initiator_group(client, args):
|
|
initiators = []
|
|
netmasks = []
|
|
if args.initiator_list:
|
|
for i in args.initiator_list.strip().split(' '):
|
|
initiators.append(i)
|
|
if args.netmask_list:
|
|
for n in args.netmask_list.strip().split(' '):
|
|
netmasks.append(n)
|
|
|
|
params = {'tag': args.tag, 'initiators': initiators, 'netmasks': netmasks}
|
|
return client.call('add_initiators_to_initiator_group', params)
|
|
|
|
|
|
def delete_initiators_from_initiator_group(client, args):
|
|
initiators = []
|
|
netmasks = []
|
|
if args.initiator_list:
|
|
for i in args.initiator_list.strip().split(' '):
|
|
initiators.append(i)
|
|
if args.netmask_list:
|
|
for n in args.netmask_list.strip().split(' '):
|
|
netmasks.append(n)
|
|
|
|
params = {'tag': args.tag, 'initiators': initiators, 'netmasks': netmasks}
|
|
return client.call('delete_initiators_from_initiator_group', params)
|
|
|
|
|
|
def delete_target_node(client, args):
|
|
params = {'name': args.target_node_name}
|
|
return client.call('delete_target_node', params)
|
|
|
|
|
|
def delete_portal_group(client, args):
|
|
params = {'tag': args.tag}
|
|
return client.call('delete_portal_group', params)
|
|
|
|
|
|
def delete_initiator_group(client, args):
|
|
params = {'tag': args.tag}
|
|
return client.call('delete_initiator_group', params)
|
|
|
|
|
|
def get_iscsi_connections(client, args):
|
|
return client.call('get_iscsi_connections')
|
|
|
|
|
|
def get_iscsi_global_params(client, args):
|
|
return client.call('get_iscsi_global_params')
|
|
|
|
|
|
def get_scsi_devices(client, args):
|
|
return client.call('get_scsi_devices')
|