def set_disk_layout(self, vm): if not vm.part: vm.rootsize = parse_size(vm.rootsize) vm.swapsize = parse_size(vm.swapsize) vm.optsize = parse_size(vm.optsize) if vm.hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE: vm.add_filesystem(size='%dM' % vm.rootsize, type='ext3', mntpnt='/') vm.add_filesystem(size='%dM' % vm.swapsize, type='swap', mntpnt=None) if vm.optsize > 0: vm.add_filesystem(size='%dM' % vm.optsize, type='ext3', mntpnt='/opt') else: if vm.raw: disk = vm.add_disk(filename=vm.raw, preallocated=True) else: size = vm.rootsize + vm.swapsize + vm.optsize disk = vm.add_disk(size='%dM' % size) offset = 0 disk.add_part(offset, vm.rootsize, 'ext3', '/') offset += vm.rootsize disk.add_part(offset, vm.swapsize, 'swap', 'swap') offset += vm.swapsize if vm.optsize > 0: disk.add_part(offset, vm.optsize, 'ext3', '/opt') else: # We need to parse the file specified if vm.hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE: try: for line in file(vm.part): elements = line.strip().split(' ') if elements[0] == 'root': vm.add_filesystem(elements[1], type='ext3', mntpnt='/') elif elements[0] == 'swap': vm.add_filesystem(elements[1], type='swap', mntpnt=None) elif elements[0] == '---': # We just ignore the user's attempt to specify multiple disks pass elif len(elements) == 3: vm.add_filesystem(elements[1], type='ext3', mntpnt=elements[0], devletter='', device=elements[2], dummy=(int(elements[1]) == 0)) else: vm.add_filesystem(elements[1], type='ext3', mntpnt=elements[0]) except IOError, (errno, strerror): vm.optparser.error("%s parsing --part option: %s" % (errno, strerror)) else:
def set_disk_layout(self, vm): if not vm.part: vm.rootsize = parse_size(vm.rootsize) vm.swapsize = parse_size(vm.swapsize) vm.optsize = parse_size(vm.optsize) if vm.hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE: vm.add_filesystem(size='%dM' % vm.rootsize, type='ext3', mntpnt='/') vm.add_filesystem(size='%dM' % vm.swapsize, type='swap', mntpnt=None) if vm.optsize > 0: vm.add_filesystem(size='%dM' % optsize, type='ext3', mntpnt='/opt') else: if vm.raw: disk = vm.add_disk(filename=vm.raw, preallocated=True) else: size = vm.rootsize + vm.swapsize + vm.optsize disk = vm.add_disk(size='%dM' % size) offset = 0 disk.add_part(offset, vm.rootsize, 'ext3', '/') offset += vm.rootsize disk.add_part(offset, vm.swapsize, 'swap', 'swap') offset += vm.swapsize if vm.optsize > 0: disk.add_part(offset, vm.optsize, 'ext3', '/opt') else: # We need to parse the file specified if vm.hypervisor.preferred_storage == VMBuilder.hypervisor.STORAGE_FS_IMAGE: try: for line in file(vm.part): elements = line.strip().split(' ') if elements[0] == 'root': vm.add_filesystem(elements[1], type='ext3', mntpnt='/') elif elements[0] == 'swap': vm.add_filesystem(elements[1], type='swap', mntpnt=None) elif elements[0] == '---': # We just ignore the user's attempt to specify multiple disks pass elif len(elements) == 3: vm.add_filesystem(elements[1], type='ext3', mntpnt=elements[0], devletter='', device=elements[2], dummy=(int(elements[1]) == 0)) else: vm.add_filesystem(elements[1], type='ext3', mntpnt=elements[0]) except IOError, (errno, strerror): vm.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:
def test_K_suffix_counts_as_kilobytes(self): "1024K is counted as 1 megabyte" self.assertEqual(parse_size('1024K'), 1)
def test_rounds_size_to_nearest_megabyte(self): "parse_size rounds to nearest MB" self.assertEqual(parse_size('1025K'), 1) self.assertEqual(parse_size('10250K'), 10)
def test_G_suffix_counts_as_gigabytes(self): "1G is counted as 1024 megabytes" self.assertEqual(parse_size('1G'), 1024)
def test_M_suffix_counts_as_megabytes(self): "Sizes with M suffix are counted as megabytes" self.assertEqual(parse_size('10M'), 10)
def test_suffixless_counts_as_megabytes(self): "Suffix-less size string are counted as megabytes" self.assertEqual(parse_size(10), 10) self.assertEqual(parse_size('10'), 10)
def test_suffixesAreCaseInsensitive(self): "Suffixes in size strings are case-insensitive" for letter in ['K', 'M', 'G']: self.assertEqual(parse_size('1%s' % letter), parse_size('1%s' % letter.lower()))
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: