1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 from VMBuilder import register_hypervisor, Hypervisor
20 import VMBuilder
21 import os
22 import stat
23
24 -class KVM(Hypervisor):
25 name = 'KVM'
26 arg = 'kvm'
27 filetype = 'qcow2'
28 preferred_storage = VMBuilder.hypervisor.STORAGE_DISK_IMAGE
29 needs_bootloader = True
30
32 group = self.setting_group('VM settings')
33 group.add_setting('mem', extra_args=['-m'], type='int', default=128, help='Assign MEM megabytes of memory to the guest vm. [default: %default]')
34 group.add_setting('cpus', type='int', default=1, help='Assign NUM cpus to the guest vm. [default: %default]')
35
37 self.imgs = []
38 self.cmdline = ['kvm', '-m', str(self.context.get_setting('mem'))]
39 self.cmdline += ['-smp', str(self.context.get_setting('cpus'))]
40 for disk in disks:
41 img_path = disk.convert(destdir, self.filetype)
42 self.imgs.append(img_path)
43 self.call_hooks('fix_ownership', img_path)
44 self.cmdline += ['-drive', 'file=%s' % os.path.basename(img_path)]
45
46 self.cmdline += ['"$@"']
47
49
50 if self.context.get_setting('libvirt'):
51 return
52
53 script = '%s/run.sh' % destdir
54 fp = open(script, 'w')
55 fp.write("#!/bin/sh\n\nexec %s\n" % ' '.join(self.cmdline))
56 fp.close()
57 os.chmod(script, stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH | stat.S_IXOTH)
58 self.call_hooks('fix_ownership', script)
59
62
64 name = 'QEMu'
65 arg = 'qemu'
66
69
70 register_hypervisor(KVM)
71 register_hypervisor(QEMu)
72