Exemplo n.º 1
0
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
Exemplo n.º 2
0
 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