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:
Example #2
0
    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:
Example #3
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:
Example #4
0
 def test_K_suffix_counts_as_kilobytes(self):
     "1024K is counted as 1 megabyte"
     self.assertEqual(parse_size('1024K'), 1)
Example #5
0
 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)
Example #6
0
 def test_G_suffix_counts_as_gigabytes(self):
     "1G is counted as 1024 megabytes"
     self.assertEqual(parse_size('1G'), 1024)
Example #7
0
 def test_M_suffix_counts_as_megabytes(self):
     "Sizes with M suffix are counted as megabytes"
     self.assertEqual(parse_size('10M'), 10)
Example #8
0
 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)
Example #9
0
    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()))
Example #10
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: