def get_device_items()

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