def qcs_trgt_set_chap(trgt_iqn, chap_opts): enable = 0 if chap_opts['enable'] or chap_opts['mutual_enable'] == 1: #at least 1 enable enable = 1 # enable auth cmd = TRGT_CHAP_CTRL%(trgt_iqn, enable) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_chap:%s"%(ret['return_code'], cmd)) # set userid cmd = TRGT_SET_CHAP%(trgt_iqn, "userid", chap_opts['userid']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_chap:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() # set password cmd = TRGT_SET_CHAP%(trgt_iqn, "password", chap_opts['password']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_chap:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() # set mutual_userid cmd = TRGT_SET_CHAP%(trgt_iqn, "mutual_userid", chap_opts['mutual_userid']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_chap:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() # set mutual_password cmd = TRGT_SET_CHAP%(trgt_iqn, "mutual_password", chap_opts['mutual_password']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_chap:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() return ret['return_code']
def qcs_create_target(trgt_iqn): cmd = CREATE_TRGT%(trgt_iqn) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_create_target:%s"%(ret['return_code'], cmd)) # add network portal ip = qcs_get_vm_host_ip() cmd = ADD_TRGT_NP%(trgt_iqn, ip, "3260") ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_create_target:%s"%(ret['return_code'], cmd)) return ret['return_code']
def qcs_trgt_set_crc(trgt_iqn, crc_opts): # Set DataDigest if crc_opts['data_digest'] is 1: cmd = TRGT_SET_CRC%(trgt_iqn, "DataDigest", "CRC32C") else: cmd = TRGT_SET_CRC%(trgt_iqn, "DataDigest", "CRC32C,None") ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_crc:%s"%(ret['return_code'], cmd)) # Set HeaderDigest if crc_opts['header_digest'] is 1: cmd = TRGT_SET_CRC%(trgt_iqn, "HeaderDigest", "CRC32C") else: cmd = TRGT_SET_CRC%(trgt_iqn, "HeaderDigest", "CRC32C,None") ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_trgt_set_crc:%s"%(ret['return_code'], cmd)) return ret['return_code']
def _qcs_unmap_rbd_from_device(self, pool_name, lun_name): cmd = self.RBD_UNMAP_DEVICE %(pool_name, lun_name, pool_name, pool_name) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d _qcs_unmap_rbd_from_device:%s"%(ret['return_code'], cmd)) if ret['return_code'] is not 0: ERR_TRACE(TRACE_ERROR, "_qcs_unmap_rbd_from_device: unmap %s fail."%(lun_name)) return ret['return_code']
def qcs_resize_lun(pool, lun_name, disk_size): HOST_LUN_CONFIG = qcs_get_host_lun_conf(pool) data = qcs_get_disk_data(HOST_LUN_CONFIG) image_name = data[lun_name]['image_name'] cmd = RBD_RESIZE_IMAGE %(pool, image_name, disk_size) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_resize_lun:%s"%(ret['return_code'], cmd)) if ret['return_code'] is 0: ERR_TRACE(TRACE_ENTRY, "qcs_resize_lun:%s resize %s to %s "%(lun_name, data[lun_name]['size'], disk_size)) data[lun_name]['size'] = disk_size ret = JSON_CONF(HOST_LUN_CONFIG).JSON_Write_Conf(data) return ret
def qcs_add_init(trgt_iqn, init_iqn): cmd = ADD_INIT%(trgt_iqn, init_iqn) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_add_init:%s"%(ret['return_code'], cmd)) # After adding init, must check chap and chap_mutual enable, chap = get_target_chap(trgt_iqn) if enable: # set userid cmd = INIT_SET_CHAP%(trgt_iqn, init_iqn, "userid", chap['userid']) ret = cmd_utils(cmd).check_output() # set password cmd = INIT_SET_CHAP%(trgt_iqn, init_iqn, "password", chap['password']) ret = cmd_utils(cmd).check_output() # set mutual_userid cmd = INIT_SET_CHAP%(trgt_iqn, init_iqn, "mutual_userid", chap['mutual_userid']) ret = cmd_utils(cmd).check_output() # set mutual_password cmd = INIT_SET_CHAP%(trgt_iqn, init_iqn, "mutual_password", chap['mutual_password']) ret = cmd_utils(cmd).check_output() # disable do nothing ERR_TRACE(TRACE_ENTRY, "qcs_add_init:chap enable=%d"%(enable)) return ret['return_code']
def get_target_chap(trgt_iqn): cmd = TRGT_CHAP_STATUS%(trgt_iqn) ret = cmd_utils(cmd).check_output() enable = 1 if ret['json_output'][0]['raw_data'].split('=')[1] is '1' else 0 dic = {} if enable: #get auth value # get userid cmd = TRGT_GET_CHAP%(trgt_iqn, "userid") ret = cmd_utils(cmd).check_output() userid = ret['json_output'][0]['raw_data'].split('=')[1] # get password cmd = TRGT_GET_CHAP%(trgt_iqn, "password") ret = cmd_utils(cmd).check_output() password = ret['json_output'][0]['raw_data'].split('=')[1] # get mutual_userid cmd = TRGT_GET_CHAP%(trgt_iqn, "mutual_userid") ret = cmd_utils(cmd).check_output() mutual_userid = ret['json_output'][0]['raw_data'].split('=')[1] # get mutual_password cmd = TRGT_GET_CHAP%(trgt_iqn, "mutual_password") ret = cmd_utils(cmd).check_output() mutual_password = ret['json_output'][0]['raw_data'].split('=')[1] dic = {'userid': userid, 'password': password, 'mutual_userid': mutual_userid, 'mutual_password': mutual_password} return enable, dic
def qcs_check_image_exist(self, pool_name, lun_name): cmd = self.RBD_GET_INFO %(pool_name, lun_name, pool_name, pool_name) ret = cmd_utils(cmd).check_output() return ret['return_code']
def qcs_get_ceph_root(): cmd = "mount | grep CEPH | grep -Ev bind | awk '{print $3}'" ret = cmd_utils(cmd).check_output() return ret['json_output'][0]['raw_data']
def qcs_remove_init(trgt_iqn, init_iqn): cmd = REMOVE_INIT%(trgt_iqn, init_iqn) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_remove_init:%s"%(ret['return_code'], cmd)) return ret['return_code']
def qcs_init_unlink_lun(trgt_iqn, init_iqn, lun_name): cmd = INIT_UNLINK_LUN%(trgt_iqn, init_iqn, lun_name['index']) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_init_unlink_lun:%s"%(ret['return_code'], cmd)) return ret['return_code']
def _qcs_remove_rbd_image(self, pool_name, lun_name): cmd = self.RBD_REMOVE_IMAGE %(pool_name, lun_name, pool_name, pool_name) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d _qcs_remove_rbd_image:%s"%(ret['return_code'], cmd)) return ret['return_code']
def qcs_unmap_lun_from_trgt(trgt_iqn, lun_name): cmd = TRGT_UNMAP_LUN%(trgt_iqn, lun_name['index']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_unmap_lun_from_trgt:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() return ret['return_code']
def qcs_map_lun_to_trgt(trgt_iqn, lun_name): cmd = TRGT_MAP_LUN%(trgt_iqn, lun_name['stor_object'], lun_name['index']) ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_map_lun_to_trgt:%s"%(ret['return_code'], cmd)) ret = cmd_utils(cmd).check_output() return ret['return_code']
def qcs_target_ctrl(trgt_iqn, enable): cmd = TRGT_CTRL%(trgt_iqn, "enable") if enable else TRGT_CTRL%(trgt_iqn, "disable") ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_target_ctrl:%s"%(ret['return_code'], cmd)) return ret['return_code']
def _qcs_create_rbd_image(self, disk_size, pool_name, lun_name): cmd = self.RBD_CREATE_IMAGE %(disk_size, pool_name, lun_name, pool_name, pool_name) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d _qcs_create_rbd_image:%s"%(ret['return_code'], cmd)) return ret['return_code']
def _qcs_map_rbd_to_device(pool_name, lun_name): cmd = self.RBD_MAP_DEVICE %(pool_name, lun_name, pool_name, pool_name) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d _qcs_map_rbd_to_device:%s dev:%s"%(ret['return_code'], cmd, ret['json_output'][0]['raw_data'])) return ret['return_code'], ret['json_output'][0]['raw_data']
def qcs_init_link_lun(trgt_iqn, init_iqn, lun_name, access): if access is not -1: cmd = INIT_LINK_LUN%(trgt_iqn, init_iqn, file_data[lun]['index'], file_data[lun]['index'], access) ret = cmd_utils(cmd).check_output() ERR_TRACE(TRACE_ENTRY, "ret:%d qcs_init_link_lun:%s"%(ret['return_code'], cmd)) return ret['return_code']