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