in VMBackup/main/Utils/DiskUtil.py [0:0]
def get_device_items(self, dev_path):
if(self.patching.distro_info[0].lower() == 'suse' and self.patching.distro_info[1] == '11'):
return self.get_device_items_sles(dev_path)
else:
self.logger.log("getting the blk info from " + str(dev_path), True)
device_items = []
lsblk_path = self.patching.lsblk_path
# Get lsblk command output using lsblk_path as self.patching.lsblk_path
is_lsblk_path_wrong, out_lsblk_output, error_msg = self.get_lsblk_pairs_output(lsblk_path, dev_path)
# if lsblk_path was wrong, use /bin/lsblk or usr/bin/lsblk based on self.patching.usr_flag to get lsblk command output again for centos/redhat distros
if (is_lsblk_path_wrong == True) and (self.patching.distro_info[0].lower() == 'centos' or self.patching.distro_info[0].lower() == 'redhat'):
if self.patching.usr_flag == 1:
self.logger.log("lsblk path is wrong, removing /usr prefix", True, 'Warning')
lsblk_path = "/bin/lsblk"
else:
self.logger.log("lsblk path is wrong, adding /usr prefix", True, 'Warning')
lsblk_path = "/usr/bin/lsblk"
is_lsblk_path_wrong, out_lsblk_output, error_msg = self.get_lsblk_pairs_output(lsblk_path, dev_path)
# if lsblk_path was still wrong, lsblk_path using "which" command
if (is_lsblk_path_wrong == True):
self.logger.log("lsblk path is wrong. finding path using which command", True, 'Warning')
out_which_output, which_error_msg = self.get_which_command_result('lsblk')
# get lsblk command output
if (out_which_output is not None):
lsblk_path = str(out_which_output)
is_lsblk_path_wrong, out_lsblk_output, error_msg = self.get_lsblk_pairs_output(lsblk_path, dev_path)
# if error_msg contains "invalid option" or "P" (rely on only "-P" optiont in error to handle non-English locales), then get device_items using method get_device_items_from_lsblk_list
if (error_msg is not None and error_msg.strip() != "" and ('invalid option' in error_msg or 'P' in error_msg)):
device_items = self.get_device_items_from_lsblk_list(lsblk_path, dev_path)
# else get device_items from parsing the lsblk command output
elif (out_lsblk_output is not None):
lines = out_lsblk_output.splitlines()
for i in range(0,len(lines)):
item_value_str = lines[i].strip()
if(item_value_str != ""):
disk_info_item_array =Utils.HandlerUtil.HandlerUtility.split(self.logger, item_value_str)
device_item = DeviceItem()
disk_info_item_array_length = len(disk_info_item_array)
for j in range(0, disk_info_item_array_length):
disk_info_property = disk_info_item_array[j]
property_item_pair = disk_info_property.split('=')
if(property_item_pair[0] == 'NAME'):
device_item.name = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'TYPE'):
device_item.type = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'FSTYPE'):
device_item.file_system = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'MOUNTPOINT'):
device_item.mount_point = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'LABEL'):
device_item.label = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'UUID'):
device_item.uuid = property_item_pair[1].strip('"')
if(property_item_pair[0] == 'MODEL'):
device_item.model = property_item_pair[1].strip('"')
self.logger.log("lsblk MOUNTPOINT=" + str(device_item.mount_point) + ", NAME=" + str(device_item.name) + ", TYPE=" + str(device_item.type) + ", FSTYPE=" + str(device_item.file_system) + ", LABEL=" + str(device_item.label) + ", UUID=" + str(device_item.uuid) + ", MODEL=" + str(device_item.model), True)
if(device_item.mount_point is not None and device_item.mount_point != "" and device_item.mount_point != " "):
device_items.append(device_item)
return device_items