def scan_controller(): sas2_con = linux.exe_shell("sas2ircu list|grep -P 'SAS[0-9]{4}'") sas3_con = linux.exe_shell("sas3ircu list|grep -P 'SAS[0-9]{4}'") mega_raid_con = linux.exe_shell("storcli show|grep LSI") cons = [] if "" != sas2_con.strip(): indexs = linux.search_regex_strings_column(sas2_con, "[0-9]+ *SAS[0-9]{4}.*", " ", 0) con_str = linux.search_regex_strings(sas2_con, "SAS[0-9]{4}") for i in range(len(indexs)): c = LsiSas2Controller(int(indexs[i]), con_str[i]) c.fill_attrs() cons.append(c) if "" != sas3_con.strip(): indexs = linux.search_regex_strings_column(sas3_con, "[0-9]+ *SAS[0-9]{4}.*", " ", 0) con_str = linux.search_regex_strings(sas3_con, "SAS[0-9]{4}") for i in range(len(indexs)): c = LsiSas3Controller(int(indexs[i]), con_str[i]) c.fill_attrs() cons.append(c) if "" != mega_raid_con.strip(): indexs = linux.search_regex_strings_column(sas2_con, ".*SAS[0-9]{4}.*", " ", 0) con_str = linux.search_regex_strings(sas2_con, "SAS[0-9]{4}") for i in range(len(indexs)): c = LsiSas2Controller(int(indexs[i]), con_str[i]) c.fill_attrs() cons.append(c) return cons
def fill_attrs(self): sas2ircu_string = linux.exe_shell("sas2ircu %d display" % self.index) fw_str = linux.get_match_sub_string(sas2ircu_string, 'Firmware.*(?:[0-9]+\\.)+[0-9]*') sn_list = linux.search_regex_strings_column(sas2ircu_string, "^ +Serial No.+", ":", 1) disk_name_sns = Controller.scan_disk_name_sn() tmp = fw_str.split(":") tmp_str = tmp[1].strip() if "" != tmp_str: self.fw = tmp_str else: self.fw = "null" for s in disk_name_sns: if s["sn"] in sn_list: d = disk.DiskFromLsiSas2(s["sn"], s["name"]) d.fill_attrs() self.disks.append(d)