"""
ISCSI classes and utilities
"""
from .util import *
class IscsiData:
"""
Gather all the iscsi data in one place
"""
imm_data_en = 'Yes'
initial_r2t_en = 'No'
hdrdgst_en = 'None,CRC32C'
datdgst_en = 'None,CRC32C'
first_burst = 256 * 1024
max_burst = 16 * 1024 * 1024 - 1024
max_recv_dlength = 128 * 1024
max_r2t = 1
# the target-name and IP:Port
target = None
ipnr = None
def __init__(self,
imm_data_en=imm_data_en,
initial_r2t_en=initial_r2t_en,
hdrdgst_en=hdrdgst_en,
datdgst_en=datdgst_en,
first_burst=first_burst,
max_burst=max_burst,
max_recv_dlength=max_recv_dlength,
max_r2t=max_r2t):
self.imm_data_en = imm_data_en
self.initial_r2t_en = initial_r2t_en
self.hdrdgst_en = hdrdgst_en
self.datdgst_en = datdgst_en
self.first_burst = first_burst
self.max_burst = max_burst
self.max_recv_dlength = max_recv_dlength
self.max_r2t = max_r2t
def update_cfg(self, target, ipnr):
"""
Update the configuration -- we could do this by hacking on the
appropriate DB file, but this is safer (and slower) by far
"""
if Global.verbosity > 1:
print('* ImmediateData = %s' % self.imm_data_en)
print('* InitialR2T = %s' % self.initial_r2t_en)
print('* HeaderDigest = %s' % self.hdrdgst_en)
print('* DataDigest = %s' % self.datdgst_en)
print('* FirstBurstLength = %d' % self.first_burst)
print('* MaxBurstLength = %d' % self.max_burst)
print('* MaxRecvDataSegmentLength = %d' % self.max_recv_dlength)
print('* MaxOutstandingR2T = %d' % self.max_r2t)
c = ['iscsiadm', '-m', 'node', '-T', target, '-p', ipnr, '-o', 'update']
run_cmd(c + ['-n', 'node.session.iscsi.ImmediateData', '-v', self.imm_data_en])
run_cmd(c + ['-n', 'node.session.iscsi.InitialR2T', '-v', self.initial_r2t_en])
run_cmd(c + ['-n', 'node.conn[0].iscsi.HeaderDigest', '-v', self.hdrdgst_en])
run_cmd(c + ['-n', 'node.conn[0].iscsi.DataDigest', '-v', self.datdgst_en])
run_cmd(c + ['-n', 'node.session.iscsi.FirstBurstLength', '-v', str(self.first_burst)])
run_cmd(c + ['-n', 'node.session.iscsi.MaxBurstLength', '-v', str(self.max_burst)])
run_cmd(c + ['-n', 'node.conn[0].iscsi.MaxRecvDataSegmentLength', '-v', str(self.max_recv_dlength)])
run_cmd(c + ['-n', 'node.session.iscsi.MaxOutstandingR2T', '-v', str(self.max_r2t)])