1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 from VMBuilder import register_hypervisor, Hypervisor
21 import VMBuilder
22 import VMBuilder.hypervisor
23 import os
24 import os.path
25 import stat
26
27 -class KVM(Hypervisor):
28 name = 'KVM'
29 arg = 'kvm'
30 filetype = 'qcow2'
31 preferred_storage = VMBuilder.hypervisor.STORAGE_DISK_IMAGE
32 needs_bootloader = True
33
35 self.imgs = []
36 self.cmdline = ['kvm', '-m', str(self.vm.mem) ]
37 for disk in self.vm.disks:
38 img_path = disk.convert(self.vm.destdir, self.filetype)
39 self.imgs.append(img_path)
40 self.vm.result_files.append(img_path)
41 self.cmdline += ['-drive', 'file=%s' % os.path.basename(img_path)]
42
43
44 self.cmdline += ['$@']
45
47 script = '%s/run.sh' % self.vm.destdir
48 fp = open(script, 'w')
49 fp.write("#!/bin/sh\n\n%s\n" % ' '.join(self.cmdline))
50 fp.close()
51 os.chmod(script, stat.S_IRWXU | stat.S_IRWXU | stat.S_IROTH | stat.S_IXOTH)
52 self.vm.result_files.append(script)
53
54 register_hypervisor(KVM)
55