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 VMBuilder.hypervisor
22 import os
23 import os.path
24 import stat
25
26 -class KVM(Hypervisor):
27 name = 'KVM'
28 arg = 'kvm'
29 filetype = 'qcow2'
30 preferred_storage = VMBuilder.hypervisor.STORAGE_DISK_IMAGE
31 needs_bootloader = True
32
34 self.imgs = []
35 self.cmdline = ['kvm', '-m', str(self.vm.mem), '-smp', str(self.vm.cpus) ]
36 for disk in self.vm.disks:
37 img_path = disk.convert(self.vm.destdir, self.filetype)
38 self.imgs.append(img_path)
39 self.vm.result_files.append(img_path)
40 self.cmdline += ['-drive', 'file=%s' % os.path.basename(img_path)]
41
42
43 self.cmdline += ['"$@"']
44
46 script = '%s/run.sh' % self.vm.destdir
47 fp = open(script, 'w')
48 fp.write("#!/bin/sh\n\nexec %s\n" % ' '.join(self.cmdline))
49 fp.close()
50 os.chmod(script, stat.S_IRWXU | stat.S_IRWXU | stat.S_IROTH | stat.S_IXOTH)
51 self.vm.result_files.append(script)
52
53 register_hypervisor(KVM)
54