Example #1
0
 def __init__(self, filename='/etc/fstab'):
     self._filename = filename
     self._fstab = {}
     with open(filename) as lines:
         for line in lines:
             if not line.startswith('#') and line.strip():
                 if line.startswith('UUID'):
                     fs_spec = line.split()[0].split('=')[1]
                     device = drivereader.get_device_path(uuid=fs_spec)
                     use_uuid = True
                 elif line.startswith('LABEL'):
                     label = line.split()[0].split('=')[1]
                     device = drivereader.get_device_path(label=label)
                     part = drivereader.get_partition(device)
                     fs_spec = part.getUUID()
                     use_uuid = True
                 elif line.startswith('/dev/'):
                     device = line.split()[0]
                     try:
                         part = drivereader.get_partition(device)
                         fs_spec = part.getUUID()
                         use_uuid = True
                     except Exception:
                         fs_spec = line.split()[0]
                         use_uuid = False
                 else:
                     device = line.split()[0]
                     fs_spec = line.split()[0]
                     use_uuid = False
                 fs_file = line.split()[1]
                 fs_vfstype = line.split()[2]
                 fs_mntops = line.split()[3]
                 fs_freq = line.split()[4]
                 fs_passno = line.split()[5]
                 self._fstab[device] = {'fs_spec' : fs_spec, 'fs_file' : fs_file, 'fs_vfstype' : fs_vfstype, 'fs_mntops' : fs_mntops, 'fs_freq' : fs_freq, 'fs_passno' : fs_passno, 'use_uuid' : use_uuid}
Example #2
0
 def onPartCursorChanged(self, selection):
     model, treeiter = selection.get_selected()
     if treeiter is not None:
         device_path = model[treeiter][0]
         part = drivereader.get_partition(device_path)
         self.part_filesystem.set_text(part.getFilesystem())
         self.part_size.set_text(part.getSize())
         self.part_label.set_text(part.getLabel())
         self.current_part = (model, treeiter)
Example #3
0
    def updateFstab(self, device, mountpoint, mountoptions, filesystem):
        try:
            part = drivereader.get_partition(device)
        except Exception:
            part = None
        if mountpoint == '':
            del self._fstab[device]

        if mountpoint != 'none' and not mountpoint.startswith('/'):
            raise Exception('Invalid mountpoint {}'.format(mountpoint))

        if mountpoint != 'none' and mountpoint.startswith('/'):
            if not os.path.exists(mountpoint):
                os.mkdir(mountpoint)

        if device in self._fstab:
            self._fstab[device]['fs_file'] = mountpoint
            self._fstab[device]['fs_vfstype'] = filesystem
            if mountoptions != '':
                self._fstab[device]['fs_mntops'] = mountoptions
            else:
                self._fstab[device]['fs_mntops'] = 'defaults'
        else:
            if part:
                fs_spec = part.getUUID()
                use_uuid = True
            else:
                fs_spec = device
                use_uuid = False
            fs_file = mountpoint
            fs_vfstype = filesystem
            fs_mntops = 'defaults'
            fs_freq = '0'

            ### TODO ###
            if mountpoint == '/':
                fs_passno = '1'
            elif fs_vfstype in ['ext3', 'ext4']:
                fs_passno = '2'
            else:
                fs_passno = '0'
            self._fstab[device] = {'fs_spec' : fs_spec, 'fs_file' : fs_file, 'fs_vfstype' : fs_vfstype, 'fs_mntops' : fs_mntops, 'fs_freq' : fs_freq, 'fs_passno' : fs_passno, 'use_uuid' : use_uuid}