def update_dg(): global DISKGROUP_RESULT js = iscsi_json.JsonOperation() js.json_data = js.read_json() DISKGROUP_RESULT = js.json_data['DiskGroup'] print(DISKGROUP_RESULT) return True
def get(self): dict_data = get_request_data() dg = dict_data['dg_name'] list_disk = dict_data['disk'].split(',') if dict_data['disk'] else [] js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) if not list_disk: js.delete_data('DiskGroup', dg) js.arrange_data('DiskGroup', dg) else: js.update_data('DiskGroup', dg, list_disk) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) # 确认JSON文件在途中未被修改 json_data_now = js.read_json() if json_data_before == json_data_now: obj_iscsi.create_iscsilogicalunit() obj_iscsi.delete_iscsilogicalunit() obj_iscsi.modify_iscsilogicalunit() js.commit_data() message = '操作完成' else: message = '配置文件已被修改,请重新操作' return cors_data(message)
def update_disk(): global DISK_RESULT disk = iscsi.Disk() disk.update_disk() js = iscsi_json.JsonOperation() DISK_RESULT = js.read_json()['Disk'] return True
def update_host(): global HOST_RESULT js = iscsi_json.JsonOperation() js.json_data = js.read_json() HOST_RESULT = js.json_data['Host'] return True
def get(self): dict_data = get_request_data() iscsi_type = dict_data['iscsi_type'] iscsi_name = dict_data['iscsi_name'] print(iscsi_type, iscsi_name) js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) try: js.delete_data(iscsi_type, iscsi_name) except KeyError: message = '配置文件已被修改,请重新操作' return cors_data(message) if iscsi_type != 'Map': js.arrange_data(iscsi_type, iscsi_name) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) # 确认JSON文件在途中未被修改 json_data_now = js.read_json() if json_data_before == json_data_now: obj_iscsi.create_iscsilogicalunit() obj_iscsi.delete_iscsilogicalunit() obj_iscsi.modify_iscsilogicalunit() js.commit_data() message = '操作完成' else: message = '配置文件已被修改,请重新操作' return cors_data(message)
def get(self): dict_data = get_request_data() map = dict_data['map_name'] list_hg = dict_data['hg'].split(',') if dict_data['hg'] else [] list_dg = dict_data['dg'].split(',') if dict_data['dg'] else [] js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) if not list_hg or not list_dg: js.delete_data('Map', map) else: js.update_data('Map', map, { 'HostGroup': list_hg, 'DiskGroup': list_dg }) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) # 确认JSON文件在途中未被修改 json_data_now = js.read_json() if json_data_before == json_data_now: try: obj_iscsi.create_iscsilogicalunit() obj_iscsi.delete_iscsilogicalunit() obj_iscsi.modify_iscsilogicalunit() except Exception: message = '执行失败' else: js.commit_data() message = '操作完成' else: message = '配置文件已被修改,请重新操作' return cors_data(message)
def sycn_data(self, args): # 添加前置检查 obj_crm = CRMData() js = iscsi_json.JsonOperation() # 获取数据 vip = obj_crm.get_vip() portblock = obj_crm.get_portblock() order = obj_crm.get_order() colocation = obj_crm.get_colocation() target = obj_crm.get_target() iscsilogicalunit = obj_crm.get_iscsi_logical_unit() # 检查 obj_crm.check_portal_component(vip, portblock, order, colocation) portal = obj_crm.get_conf_portal(vip,portblock,target) js.cover_data('Portal',portal) target = obj_crm.get_conf_target(vip,target,iscsilogicalunit) js.cover_data('Target',target) logical = obj_crm.get_conf_lun(target,iscsilogicalunit) js.cover_data('LogicalUnit',logical) js.commit_data() sd.prt_log('Configuration file data update completed', 1)
def update_hg(): global HOSTGROUP_RESULT js = iscsi_json.JsonOperation() host_group = iscsi.HostGroup() js.json_data = js.read_json() HOSTGROUP_RESULT = js.json_data['HostGroup'] return True
def get(self): dict_data = get_request_data() dg = dict_data['dg_name'] list_disk = dict_data['disk'].split(',') if dict_data['disk'] else [] js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) js.update_data('DiskGroup', dg, list_disk) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) message = '\n'.join(obj_iscsi.show_info()) dict = {'iscsi_data': True, 'info': message} return cors_data(dict)
def setup_class(self): # path = '../vplx/map_config.json' # os.remove(path) subprocess.run('python3 vtel.py iscsi d s', shell=True) self.js = iscsi_json.JsonOperation() self.js.json_data = { "Host": {}, "Disk": {}, "HostGroup": {}, "DiskGroup": {}, "Map": {}, "Portal": {}, "Target": {} }
def update(self): js = iscsi_json.JsonOperation() # 获取数据 vip = self.get_vip() portblock = self.get_portblock() target = self.get_target() iscsilogicalunit = self.get_iscsi_logical_unit() portal = self.get_conf_portal(vip, portblock, target) js.cover_data('Portal', portal) target = self.get_conf_target(vip, target, iscsilogicalunit) js.cover_data('Target', target) logical = self.get_conf_lun(target, iscsilogicalunit) js.cover_data('LogicalUnit', logical) js.commit_data()
def get(self): dict_data = get_request_data() iscsi_type = dict_data['iscsi_type'] iscsi_name = dict_data['iscsi_name'] print(iscsi_type, iscsi_name) js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) js.delete_data(iscsi_type, iscsi_name) if iscsi_type != 'Map': js.arrange_data(iscsi_type, iscsi_name) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) message = '\n'.join(obj_iscsi.show_info()) dict = {'iscsi_data': True, 'info': message} return cors_data(dict)
def get(self): dict_data = get_request_data() map = dict_data['map_name'] print(dict_data) list_hg = dict_data['hg'].split(',') if dict_data['hg'] else [] list_dg = dict_data['dg'].split(',') if dict_data['dg'] else [] js = iscsi_json.JsonOperation() json_data_before = copy.deepcopy(js.json_data) if not list_hg or not list_dg: js.delete_data('Map', map) else: js.update_data('Map', map, { 'HostGroup': list_hg, 'DiskGroup': list_dg }) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) message = '\n'.join(obj_iscsi.show_info()) dict = {'iscsi_data': True, 'info': message} return cors_data(dict)
def get(self): dict_data = get_request_data() host_name = dict_data['host_name'] host_iqn = dict_data['host_iqn'] js = iscsi_json.JsonOperation() js.json_data = js.read_json() json_data_before = copy.deepcopy(js.json_data) js.update_data('Host', host_name, host_iqn) obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) # 确认JSON文件在途中未被修改 json_data_now = js.read_json() if json_data_before == json_data_now: obj_iscsi.create_iscsilogicalunit() obj_iscsi.delete_iscsilogicalunit() obj_iscsi.modify_iscsilogicalunit() js.commit_data() message = '操作完成' else: message = '配置文件已被修改,请重新操作' return cors_data(message)
def get(self): print("0000000") dict_data = get_request_data() print("1111111") host_name = dict_data['host_name'] print("0022200") host_iqn = dict_data['host_iqn'] print("111111") js = iscsi_json.JsonOperation() print("2222") js.json_data = js.read_json() print("13333331") json_data_before = copy.deepcopy(js.json_data) print("13444444331") js.update_data('Host', host_name, host_iqn) print("6555555533331") obj_iscsi = iscsi.IscsiConfig(json_data_before, js.json_data) print("65566666663331") message = '\n'.join(obj_iscsi.show_info()) print("--------------") print("message", message) dict = {'iscsi_data': True, 'info': message} return cors_data(dict)
def check_env_sync(self, vip, portblock, target, lun): """ 检查CRM环境与JSON配置文件所记录的Portal、Target、LogicalUnit的数据是否一致,不一致提示后退出 :param vip_all:目前CRM环境的vip数据 :param target_all:目前CRM环境的target数据 :return: """ js = iscsi_json.JsonOperation() all_key = js.json_data.keys() if not 'Portal' in all_key: s.prt_log('"Portal" do not exist in the JSON configuration file', 2) return if not 'Target' in all_key: s.prt_log('"Target" do not exist in the JSON configuration file', 2) return if not 'LogicalUnit' in all_key: s.prt_log( '"LogicalUnit" do not exist in the JSON configuration file', 2) return crm_portal = self.get_conf_portal(vip, portblock, target) json_portal = copy.deepcopy( js.json_data['Portal']) # 防止对json对象的数据修改,进行深拷贝,之后修改数据结构再修改 crm_target = self.get_conf_target(vip, target, lun) json_target = copy.deepcopy(js.json_data['Target']) crm_lun = self.get_conf_lun(target, lun) json_lun = copy.deepcopy(js.json_data['LogicalUnit']) # 处理列表的顺序问题 try: for portal_name, portal_data in crm_portal.items(): portal_data['target'] = set(portal_data['target']) for portal_name, portal_data in json_portal.items(): portal_data['target'] = set(portal_data['target']) for target_name, target_data in crm_target.items(): target_data['lun'] = set(target_data['lun']) for target_name, target_data in json_target.items(): target_data['lun'] = set(target_data['lun']) for lun_name, lun_data in crm_target.items(): lun_data['lun'] = set(lun_data['lun']) for lun_name, lun_data in json_target.items(): lun_data['lun'] = set(lun_data['lun']) if not crm_portal == json_portal: s.prt_log( 'The data Portal of the JSON configuration file is inconsistent, please check and try again', 2) return if not crm_target == json_target: s.prt_log( 'The data Target of the JSON configuration file is inconsistent, please check and try again', 2) return if not crm_lun == json_lun: s.prt_log( 'The data LogicalUnit of the JSON configuration file is inconsistent, please check and try again', 2) return except KeyError as key: s.prt_log(f'The configuration file is missing a key: {key}', 2)
def test_check_env_sync(self): #mat:modify """检查CRM环境与JSON配置文件所记录的Portal、Target的数据是否一致,测试用例包括:json文件不包含Portal/json文件不包括Target/json文件的portal与crm不一致/json文件的target与crm的不一致""" assert self.crmdata.check_env_sync(self.crmdata.get_vip(), self.crmdata.get_portblock(), self.crmdata.get_target()) is None js = iscsi_json.JsonOperation() js.json_data = { "Host": {}, "Disk": {}, "HostGroup": {}, "DiskGroup": {}, "Map": {} } with pytest.raises(SystemExit) as exsinfo: self.crmdata.check_env_sync(self.crmdata.get_vip(), self.crmdata.get_portblock(), self.crmdata.get_target()) assert exsinfo.type == SystemExit js.json_data = { "Host": {}, "Disk": {}, "HostGroup": {}, "DiskGroup": {}, "Map": {}, "Portal": {} } with pytest.raises(SystemExit) as exsinfo: self.crmdata.check_env_sync(self.crmdata.get_vip(), self.crmdata.get_portblock(), self.crmdata.get_target()) assert exsinfo.type == SystemExit js.json_data = { "Host": {}, "Disk": {}, "HostGroup": {}, "DiskGroup": {}, "Map": {}, "Portal": { "portal_test_6": { "ip": "10.203.1.201", "port": "3260", "netmask": "24", "target": [] } }, "Target": {} } with pytest.raises(SystemExit) as exsinfo: self.crmdata.check_env_sync(self.crmdata.get_vip(), self.crmdata.get_portblock(), self.crmdata.get_target()) assert exsinfo.type == SystemExit js.json_data = { "Host": {}, "Disk": {}, "HostGroup": {}, "DiskGroup": {}, "Map": {}, "Portal": { "portal_test_4": { "ip": "10.203.1.201", "port": "3260", "netmask": "24", "target": [] }, "vip": { "ip": "10.203.1.75", "port": "3260", "netmask": "24", "target": [ "t_test" ] }, "vip_test2": { "ip": "10.203.1.206", "port": "3260", "netmask": "24", "target": [ "target_test" ] } }, "Target": { "t_test": { "target_iqn": "iqn.2020-04.feixitek.com:versaplx00", "ip": "10.203.1.75", "port": "3260" } } } with pytest.raises(SystemExit) as exsinfo: self.crmdata.check_env_sync(self.crmdata.get_vip(), self.crmdata.get_portblock(), self.crmdata.get_target()) assert exsinfo.type == SystemExit target = self.crmdata.get_target() vip = self.crmdata.get_vip() portblock = self.crmdata.get_portblock() #mat:get_portal_data-->get_conf_portal portal = self.crmdata.get_portal_data(vip, portblock, target) js.cover_data('Portal', portal) js.cover_data('Target', target) js.commit_data() # print(js.json_data) subprocess.run('python3 vtel.py iscsi sync', shell=True)
def __init__(self): self.js = iscsi_json.JsonOperation() self.list_res_created = []
def update_map(): global MAP_RESULT js = iscsi_json.JsonOperation() js.json_data = js.read_json() MAP_RESULT = js.json_data['Map'] return True