def scan_vg_entries(bu_vg): """ Probe LVM VG bu_vg for filesystems, disk images and others return a list of LVMBackupGroups """ def add_bu_entry(bu_group, path, fst, is_mapping=False): assert isinstance(bu_group, BackupGroup) tmp = BackupEntry(path, fst, needs_mapping=is_mapping) bu_group.add_entry(tmp) bu_group_list = set() for entry in os.listdir(os.path.join("/dev", bu_vg)): entry = os.path.join("/dev", bu_vg, entry) tmp_bu_group = LVMBackupGroup(os.path.basename(entry), bu_vg) fst = get_fstype(entry) if fst is not None: add_bu_entry(tmp_bu_group, entry, fst) else: pt_entries = partition.get_pt_entries(entry) pt_mappings = partition.create_mappings(entry, pt_entries) for subentry in pt_mappings: prefix, name = subentry fst = get_fstype("/dev/mapper/" + prefix + name) if fst is not None: add_bu_entry(tmp_bu_group, name, fst, is_mapping=True) partition.remove_mappings(pt_mappings) bu_group_list.add(tmp_bu_group) return bu_group_list
def _create_mappings(self): """ Create mappings for partition table entries via dmsetup """ if len(self._pt_entries) == 0: return print "creating mappings on", self._parent_dev pt_mappings = partition.create_mappings(self.parent_dev, self._pt_entries) prefix = pt_mappings[0][0] for entry in self.__bu_list: entry.set_dmprefix(prefix) self.__pt_mappings = pt_mappings