예제 #1
0
 def exists(self, disk_path):
     if os.path.islink(disk_path):
         disk_path = os.path.realpath(disk_path)
     disk = Disk.from_path(disk_path, root_helper=self.root_helper)
     hdd_group = DmLinearTable(self.group_name,
                               root_helper=self.root_helper)
     assert hdd_group.existed, "Group %s dose NOT exist..." % self.group_name
     return self._exists(hdd_group, disk)
예제 #2
0
 def rm_disk(self, disk_path):
     if os.path.islink(disk_path):
         disk_path = os.path.realpath(disk_path)
     if not self.hdd_group:
         self.hdd_group = DmLinearTable(self.group_name,
                                        root_helper=self.root_helper)
     assert self.hdd_group.existed, "Group %s dose NOT exist..." % self.group_name
     disk = self.hdd_group.find_disk(disk_path)
     dm = Dmsetup(root_helper=self.root_helper)
     cached_name = self._cached_disk_name(disk.dev)
     dm.remove_table(cached_name)
     self.hdd_group.remove_disk(disk)
예제 #3
0
    def delete_group(self):
        if not self.hdd_group:
            self.hdd_group = DmLinearTable(self.group_name,
                                           root_helper=self.root_helper)
        assert self.hdd_group.existed, "Group %s dose NOT exist..." % self.group_name
        dm = Dmsetup(root_helper=self.root_helper)
        # TODO: check for wether busy
        for disk in self.hdd_group.disks:
            if disk.mapper != 'error':
                cached_name = self._cached_disk_name(disk.dev)
                dm.remove_table(cached_name)

        self._destroy_cache()

        time.sleep(0.1)

        dm.remove_table(self._ssd_name)
        dm.remove_table(self.group_name)
예제 #4
0
 def add_disk(self, disk_path):
     if os.path.islink(disk_path):
         disk_path = os.path.realpath(disk_path)
     disk = Disk.from_path(disk_path, root_helper=self.root_helper)
     if not self.hdd_group:
         self.hdd_group = DmLinearTable(self.group_name,
                                        root_helper=self.root_helper)
     assert self.hdd_group.existed, "Group %s dose NOT exist..." % self.group_name
     if not self.hdd_group.exists(disk):
         self.hdd_group.append_disk(disk)
     dm = Dmsetup(root_helper=self.root_helper)
     cached_disk_name = self._cached_disk_name(disk.dev)
     if not dm.is_exist(cached_disk_name):
         cache_dev = dm.mapdev_prefix + self._cache_name
         cached_table = '0 %d linear %s %d' % (disk.size, cache_dev,
                                               disk.start)
         dm.create_table(cached_disk_name, cached_table)
     return dm.mapdev_prefix + cached_disk_name