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)
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)
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)
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