Пример #1
0
    def do_disk(self,
                hypervisor,
                curdisk,
                size,
                disk_idx,
                diskpartition=False):
        default_filesystem = hypervisor.distro.preferred_filesystem()

        if self.options.raw:
            disk = hypervisor.add_disk(diskpartition=diskpartition,
                                       filename=self.options.raw[disk_idx])
        else:
            disk = hypervisor.add_disk(
                util.tmp_filename(tmp_root=self.options.tmp_root), size + 1)

        logging.debug("do_disk #%i - size: %d" % (disk_idx, size))
        if diskpartition and len(curdisk) > 1:
            raise VMBuilderUserError(
                'Only one partition is supported on diskpartitions, since there is no partition table!'
            )
        offset = 0
        for pair in curdisk:
            logging.debug("do_disk #%i - part: %s, size: %s, offset: %d" %
                          (disk_idx, pair[0], pair[1], offset))
            if pair[0] == 'root':
                disk.add_part(offset, int(pair[1]), default_filesystem, '/')
            elif pair[0] == 'swap':
                disk.add_part(offset, int(pair[1]), pair[0], pair[0])
            else:
                disk.add_part(offset, int(pair[1]), default_filesystem,
                              pair[0])
            offset += int(pair[1])
Пример #2
0
    def do_disk(self, hypervisor, curdisk, size, disk_idx):
        default_filesystem = hypervisor.distro.preferred_filesystem()

        if self.options.raw:
            disk = hypervisor.add_disk(filename=self.options.raw[disk_idx])
        else:
            disk = hypervisor.add_disk(util.tmp_filename(tmp_root=self.options.tmp_root), size + 1)

        logging.debug("do_disk #%i - size: %d" % (disk_idx, size))
        offset = 0
        for pair in curdisk:
            logging.debug("do_disk #%i - part: %s, size: %s, offset: %d" % (disk_idx, pair[0], pair[1], offset))
            if pair[0] == "root":
                disk.add_part(offset, int(pair[1]), default_filesystem, "/")
            elif pair[0] == "swap":
                disk.add_part(offset, int(pair[1]), pair[0], pair[0])
            else:
                disk.add_part(offset, int(pair[1]), default_filesystem, pair[0])
            offset += int(pair[1])
Пример #3
0
    def do_disk(self, hypervisor, curdisk, size, disk_idx):
        default_filesystem = hypervisor.distro.preferred_filesystem()

        if self.options.raw:
            disk = hypervisor.add_disk(filename=self.options.raw[disk_idx])
        else:
            disk = hypervisor.add_disk(
                util.tmp_filename(tmp_root=self.options.tmp_root), size + 1)

        logging.debug("do_disk #%i - size: %d" % (disk_idx, size))
        offset = 0
        for pair in curdisk:
            logging.debug("do_disk #%i - part: %s, size: %s, offset: %d" %
                          (disk_idx, pair[0], pair[1], offset))
            if pair[0] == 'root':
                disk.add_part(offset, int(pair[1]), default_filesystem, '/')
            elif pair[0] == 'swap':
                disk.add_part(offset, int(pair[1]), pair[0], pair[0])
            else:
                disk.add_part(offset, int(pair[1]), default_filesystem,
                              pair[0])
            offset += int(pair[1])
Пример #4
0
    def do_disk(self, hypervisor, curdisk, size, disk_idx, diskpartition=False):
        default_filesystem = hypervisor.distro.preferred_filesystem()

        if self.options.raw:
            disk = hypervisor.add_disk(diskpartition=diskpartition, filename=self.options.raw[disk_idx])
        else:
            disk = hypervisor.add_disk(
                util.tmp_filename(tmp_root=self.options.tmp_root),
                size+1)

        logging.debug("do_disk #%i - size: %d" % (disk_idx, size))
        if diskpartition and len(curdisk) > 1:
                raise VMBuilderUserError('Only one partition is supported on diskpartitions, since there is no partition table!')
        offset = 0
        for pair in curdisk:
            logging.debug("do_disk #%i - part: %s, size: %s, offset: %d" %
                                           (disk_idx, pair[0], pair[1], offset))
            if pair[0] == 'root':
                disk.add_part(offset, int(pair[1]), default_filesystem, '/')
            elif pair[0] == 'swap':
                disk.add_part(offset, int(pair[1]), pair[0], pair[0])
            else:
                disk.add_part(offset, int(pair[1]), default_filesystem, pair[0])
            offset += int(pair[1])
Пример #5
0
    def set_disk_layout(self, optparser, hypervisor):
        default_filesystem = hypervisor.distro.preferred_filesystem()
        if not self.options.part:
            rootsize = parse_size(self.options.rootsize)
            swapsize = parse_size(self.options.swapsize)
            optsize = parse_size(self.options.optsize)
            if hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE:
                tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                hypervisor.add_filesystem(filename=tmpfile,
                                          size='%dM' % rootsize,
                                          type='ext3',
                                          mntpnt='/')
                if swapsize > 0:
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    hypervisor.add_filesystem(filename=tmpfile,
                                              size='%dM' % swapsize,
                                              type='swap',
                                              mntpnt=None)
                if optsize > 0:
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    hypervisor.add_filesystem(filename=tmpfile,
                                              size='%dM' % optsize,
                                              type='ext3',
                                              mntpnt='/opt')
            else:
                if self.options.raw:
                    for raw_disk in self.options.raw:
                        hypervisor.add_disk(filename=raw_disk)
                    disk = hypervisor.disks[0]
                else:
                    size = rootsize + swapsize + optsize
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    disk = hypervisor.add_disk(tmpfile, size='%dM' % size)
                offset = 0
                disk.add_part(offset, rootsize, default_filesystem, '/')
                offset += rootsize
                if swapsize > 0:
                    disk.add_part(offset, swapsize, 'swap', 'swap')
                    offset += swapsize
                if optsize > 0:
                    disk.add_part(offset, optsize, default_filesystem, '/opt')
        else:
            # We need to parse the file specified
            if hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE:
                try:
                    for line in file(self.options.part):
                        elements = line.strip().split(' ')
                        if len(elements) < 4:
                            tmpfile = util.tmp_filename(
                                tmp_root=self.options.tmp_root)
                        else:
                            tmpfile = elements[3]

                        if elements[0] == 'root':
                            hypervisor.add_filesystem(elements[1],
                                                      default_filesystem,
                                                      filename=tmpfile,
                                                      mntpnt='/')
                        elif elements[0] == 'swap':
                            hypervisor.add_filesystem(elements[1],
                                                      type='swap',
                                                      filename=tmpfile,
                                                      mntpnt=None)
                        elif elements[0] == '---':
                            # We just ignore the user's attempt to specify multiple disks
                            pass
                        elif len(elements) == 3:
                            hypervisor.add_filesystem(elements[1],
                                                      type=default_filesystem,
                                                      filename=tmpfile,
                                                      mntpnt=elements[0],
                                                      devletter='',
                                                      device=elements[2],
                                                      dummy=(int(
                                                          elements[1]) == 0))
                        else:
                            hypervisor.add_filesystem(elements[1],
                                                      type=default_filesystem,
                                                      filename=tmpfile,
                                                      mntpnt=elements[0])
                except IOError, (errno, strerror):
                    optparser.error("%s parsing --part option: %s" %
                                    (errno, strerror))
            else:
Пример #6
0
    def set_disk_layout(self, optparser, hypervisor):
        default_filesystem = hypervisor.distro.preferred_filesystem()
        if not self.options.part:
            rootsize = parse_size(self.options.rootsize)
            swapsize = parse_size(self.options.swapsize)
            optsize = parse_size(self.options.optsize)
            if hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE:
                tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                hypervisor.add_filesystem(filename=tmpfile,
                                          size='%dM' % rootsize,
                                          type='ext3',
                                          mntpnt='/')
                if swapsize > 0:
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    hypervisor.add_filesystem(filename=tmpfile,
                                              size='%dM' % swapsize,
                                              type='swap',
                                              mntpnt=None)
                if optsize > 0:
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    hypervisor.add_filesystem(filename=tmpfile,
                                              size='%dM' % optsize,
                                              type='ext3',
                                              mntpnt='/opt')
            else:
                if self.options.raw:
                    for raw_disk in self.options.raw:
                        hypervisor.add_disk(filename=raw_disk)
                    disk = hypervisor.disks[0]
                else:
                    size = rootsize + swapsize + optsize
                    tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                    disk = hypervisor.add_disk(tmpfile, size='%dM' % size)
                offset = 0
                disk.add_part(offset, rootsize, default_filesystem, '/')
                offset += rootsize
                if swapsize > 0:
                    disk.add_part(offset, swapsize, 'swap', 'swap')
                    offset += swapsize
                if optsize > 0:
                    disk.add_part(offset, optsize, default_filesystem, '/opt')
        else:
            # We need to parse the file specified
            if hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE:
                try:
                    for line in file(self.options.part):
                        elements = line.strip().split(' ')
                        if len(elements) < 4:
                            tmpfile = util.tmp_filename(tmp_root=self.options.tmp_root)
                        else:
                            tmpfile = elements[3]

                        if elements[0] == 'root':
                            hypervisor.add_filesystem(elements[1],
                                                       default_filesystem,
                                                       filename=tmpfile,
                                                       mntpnt='/')
                        elif elements[0] == 'swap':
                            hypervisor.add_filesystem(elements[1],
                                                      type='swap',
                                                      filename=tmpfile,
                                                      mntpnt=None)
                        elif elements[0] == '---':
                            # We just ignore the user's attempt to specify multiple disks
                            pass
                        elif len(elements) == 3:
                            hypervisor.add_filesystem(elements[1],
                                                      type=default_filesystem,
                                                      filename=tmpfile,
                                                      mntpnt=elements[0],
                                                      devletter='',
                                                      device=elements[2],
                                                      dummy=(int(elements[1]) == 0))
                        else:
                            hypervisor.add_filesystem(elements[1],
                                                      type=default_filesystem,
                                                      filename=tmpfile,
                                                      mntpnt=elements[0])
                except IOError, (errno, strerror):
                    optparser.error("%s parsing --part option: %s" %
                                    (errno, strerror))
            else: