Ejemplo n.º 1
0
class Table(object):
    def __init__(self, name, method, root_helper=''):
        self.root_helper = root_helper
        self.name = name
        self.method = method
        self.path = ''
        self.dm = Dmsetup(root_helper=root_helper)
        self.block = Blockdev(root_helper=root_helper)
        if self.dm.is_exist(self.name):
            self.existed = True
        else:
            self.existed = False

    def __str__(self):
        return NotImplementedError()

    def _parse_table(self):
        return NotImplementedError()

    def create_table(self):
        if self.existed:
            raise Exception("%s has been existed!" % self.name)
        else:
            self.path = self.dm.create_table(self.name, str(self))
            self.existed = True

    def remove_table(self):
        if not self.existed:
            raise Exception("%s does NOT exist!" % self.name)
        else:
            self.dm.remove_table(self.name)

    def reload_table(self):
        self.dm.reload_table(self.name, str(self))
Ejemplo n.º 2
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)
     hdd_group = FcgLinearTable(self.group_name, root_helper=self.root_helper)
     assert hdd_group.existed, "Group %s dose NOT exist..." % self.group_name
     if not hdd_group.exists(disk):
         hdd_group.insert_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
Ejemplo n.º 3
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
Ejemplo n.º 4
0
 def _exists(self, fcg_table, disk):
     dm = Dmsetup(root_helper=self.root_helper)
     cached_disk_name = self._cached_disk_name(disk.dev)
     return fcg_table.exists(disk) and dm.is_exist(cached_disk_name)
Ejemplo n.º 5
0
 def _exists(self, fcg_table, disk):
     dm = Dmsetup(root_helper=self.root_helper)
     cached_disk_name = self._cached_disk_name(disk.dev)
     return fcg_table.exists(disk) and dm.is_exist(cached_disk_name)