annotate newvm.py @ 55:2aa12d6f79e0 default tip

2to3
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 22 Oct 2020 14:27:23 +0900
parents fecd206e005f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #!/usr/bin/python
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 # Used to create a vm from template
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 # By Curu Wong contact: prinbra(at)gmail(dot)com
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
4 import sys,os,string,re
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 from optparse import OptionParser
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 from virtinst.util import *
51
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
7 from virtinst.connection import *
49
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
8 import string
25
1c4fb56f3cd5 add extension .sh to libvirt
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
9
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 if sys.version_info < (2,5):
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
11 import lxml.etree as ET
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 else:
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
13 import xml.etree.ElementTree as ET
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
14
35
f01dc83040a9 Change mount point and template xml
atton
parents: 32
diff changeset
15 mount_point = '/media/iscsi/' # root directory
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
16
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
17 # vm_name should be
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
18 # students/e10/e105730/01
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
19 # teachers/kono/01
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
20 # managers/name/01
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
21 # guests/name/01
10
0740e88a783b fix pattern match
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
22 # bad name returns 1
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
23 def ie_check_name(name):
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
24 m=re.match('^students/[ek](\d\d)/[ek](\d\d)[58]\d\d\d/0[1-4]$',name)
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
25 if m is not None:
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
26 if m.group(1)==m.group(2):
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
27 return 0
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
28 else:
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
29 return 1
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
30 elif re.match('^teachers/[-a-z0-9]+/0[1-4]$',name):
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
31 return 0
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
32 elif re.match('^managers/[-a-z0-9]+/0[1-4]$',name):
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
33 return 0
50
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
34 elif re.match('^guests/[-a-zA-Z0-9]+/0[1-4]$',name):
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
35 return 0
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
36 elif re.match('^others/[-a-z0-9]+/0[1-4]$',name):
23
66a88f51993f add libvirtd file for bldsv11
taiki
parents: 22
diff changeset
37 return 0
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
38 else:
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
39 return 1
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
40
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
41 # make necessary sub directory
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
42 # /etc/libvirt/qemu/teachers
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
43 # /var/log/libvirt/qemu/teachers
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
44 # /var/run/libvirt/qemu/teachers
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
45
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
46 def ie_mkdir1(name):
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
47 if not os.path.exists(name):
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
48 os.makedirs(name);
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
49
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
50
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
51 # sample : students/e14/k145740/01
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
52 # : master students/k13/k138582/01
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
53 def ie_mkdir(name):
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
54 m=re.match('^(students/[ek]\d\d/[ek]\d\d[58]\d\d\d)/0[1-4]$',name)
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
55 if m is None:
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
56 m=re.match('^(teachers/[-a-z0-9]+)/0[1-4]$',name)
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
57 if m is None:
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
58 m=re.match('^(managers/[-a-z0-9]+)/0[1-4]$',name)
23
66a88f51993f add libvirtd file for bldsv11
taiki
parents: 22
diff changeset
59 if m is None:
50
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
60 m=re.match('^(guests/[-a-zA-Z0-9]+)/0[1-4]$',name)
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
61 if m is None:
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
62 m=re.match('^(others/[-a-z0-9]+)/0[1-4]$',name)
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
63 if m is not None:
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
64 dir=m.group(1)
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
65 ie_mkdir1(mount_point+dir)
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
66 # ie_mkdir1('/usr/local/etc/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
67 # ie_mkdir1('/usr/local/var/log/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
68 # ie_mkdir1('/usr/local/var/run/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
69 # ie_mkdir1('/usr/local/var/lib/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
70 ie_mkdir1('/etc/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
71 ie_mkdir1('/var/log/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
72 ie_mkdir1('/var/run/libvirt/qemu/'+dir)
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
73 ie_mkdir1('/var/lib/libvirt/qemu/'+dir)
32
4bd7d676e608 add debugvm.py to method for manage port.
taiki
parents: 29
diff changeset
74 os.system("/bin/chown "+os.getlogin()+" "+ mount_point+dir)
19
7b4cdb0c9a99 unknown changed
taiki
parents: 10
diff changeset
75
38
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
76 # virtinst.utils.randomMac is omitted from RHEL 7.
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
77 import random
49
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
78 from random import choice
38
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
79 def randomMAC():
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
80 mac = [ 0x52, 0x54, 0x00,
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
81 random.randint(0x00, 0xff),
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
82 random.randint(0x00, 0xff),
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
83 random.randint(0x00, 0xff) ]
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
84 return ':'.join(["%02x" % x for x in mac])
38
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
85
51
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
86 # def randomUUID():
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
87 # u = [random.randint(0, 255) for ignore in range(0, 16)]
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
88 # u[6] = (u[6] & 0x0F) | (4 << 4)
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
89 # u[8] = (u[8] & 0x3F) | (2 << 6)
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
90 # return "-".join(["%02x" * 4, "%02x" * 2, "%02x" * 2, "%02x" * 2,
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
91 # "%02x" * 6]) % tuple(u)
50
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
92
7a02dee972c4 easy fix randomUUID
kono
parents: 49
diff changeset
93
49
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
94 def genPassword():
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
95 chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
96 echars = "!@#$%^&*-,./"
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
97 passwd = ""
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
98 p = random.randint(0,7)
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
99 passwd += "".join(choice(chars) for _ in range (p))
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
100 passwd += "".join(choice(echars) for _ in range (1))
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
101 passwd += "".join(choice(chars) for _ in range (7-p))
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
102 return passwd
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
103
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 parser = OptionParser();
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 parser.add_option("-n", "--name", dest="name",
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 help="VM name");
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 parser.add_option("-c", "--config", dest="config",
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 help="Template VM XML config file");
25
1c4fb56f3cd5 add extension .sh to libvirt
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
109 parser.add_option("-i", "--iso", dest="iso",
1c4fb56f3cd5 add extension .sh to libvirt
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
110 help="When boot VM from ISO");
46
6b1dddd65d7c Generate kernel debug port randomly between 10000 to 30000
atton
parents: 45
diff changeset
111 parser.add_option("-d", "--debug", dest="debug", type="int",
42
09fe50fc0629 try to fix debug mode
innparusu
parents: 39
diff changeset
112 help="Kernel debug mode");
25
1c4fb56f3cd5 add extension .sh to libvirt
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
113
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 (options, args) = parser.parse_args();
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
115
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 if not options.name or not options.config:
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
117 print(("Usage %s -n name -c template_xml [-d debug_port]" % sys.argv[0]))
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
118 sys.exit(1)
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
119
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 config = ET.parse(options.config)
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 vm_name = options.name
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
122 print((options.config))
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
123 if ie_check_name(vm_name):
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
124 print(("Can't make new vm. Bad vmname %s. Try 01 - 04" % vm_name))
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
125 sys.exit(1)
25
1c4fb56f3cd5 add extension .sh to libvirt
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 24
diff changeset
126
6
25c14d1144a8 add xml generation and define
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
127 ie_mkdir(vm_name)
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 name = config.find('name')
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
129
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
130 new_name = vm_name.translate(string.maketrans('/','_'))
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
131
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
132 name.text = new_name
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 uuid = config.find('uuid')
51
fecd206e005f fix randomaUUID
kono
parents: 50
diff changeset
134 uuid.text = randomUUID(VirtualConnection("qemu:///system"))
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 mac = config.find('devices/interface/mac')
38
16840a2375ae Adapt to CentOS7
atton
parents: 35
diff changeset
136 mac.attrib['address'] = randomMAC()
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 disk = config.find('devices/disk/source')
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 disk_old = disk.attrib['file']
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 disk_path = os.path.dirname(disk_old)
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 disk_ext = os.path.splitext(disk_old)[1]
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 disk_image = disk_path + '/' + vm_name + disk_ext
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 disk.attrib['file'] = disk_image
49
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
143 vnc = config.find('devices/graphics')
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
144 vnc.attrib['passwd'] = genPassword()
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
145 print(("vnc password : %s" % vnc.attrib['passwd']))
49
b8887c40f8b8 vncdisplay
mir3636
parents: 47
diff changeset
146
42
09fe50fc0629 try to fix debug mode
innparusu
parents: 39
diff changeset
147 if (options.debug):
43
3eb0b5edad30 Support kernel debug without random port
atton
parents: 42
diff changeset
148 # http://wiki.libvirt.org/page/QEMUSwitchToLibvirt
44
546504699402 Generate xml which enabled kernel debug. but needs reload in virsh
atton
parents: 43
diff changeset
149 domain = config.getroot()
45
7f6c5d7355bc Fix typo in xml attribute
atton
parents: 44
diff changeset
150 domain.attrib['xmlns:qemu'] = "http://libvirt.org/schemas/domain/qemu/1.0"
44
546504699402 Generate xml which enabled kernel debug. but needs reload in virsh
atton
parents: 43
diff changeset
151 qemu_elem = ET.Element('qemu:commandline')
45
7f6c5d7355bc Fix typo in xml attribute
atton
parents: 44
diff changeset
152 ET.SubElement(qemu_elem, 'qemu:arg', {'value' : '-S'})
47
96661b8aaf68 Fix qemu:arg
atton
parents: 46
diff changeset
153 ET.SubElement(qemu_elem, 'qemu:arg', {'value' : ('-gdb')})
96661b8aaf68 Fix qemu:arg
atton
parents: 46
diff changeset
154 ET.SubElement(qemu_elem, 'qemu:arg', {'value' : ('tcp::%d' % options.debug)})
44
546504699402 Generate xml which enabled kernel debug. but needs reload in virsh
atton
parents: 43
diff changeset
155 domain.append(qemu_elem)
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
156
3
203445eb53a8 add xml generator.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 if os.path.exists(vm_name + '.xml'):
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
158 print(("File %s.xml exists, abort" % vm_name))
22
daa7279b0d78 fix indent
taiki
parents: 20
diff changeset
159 sys.exit(1)
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
160 # config.write('/usr/local/etc/libvirt/qemu/' + vm_name + '.xml')
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
161 print(("VM_NAME:" + new_name))
29
cfa197bad124 fix bug
taiki <taiki@cr.ie.u-ryukyu.ac.jp>
parents: 25
diff changeset
162 config.write('/etc/libvirt/qemu/' + vm_name + '.xml')
55
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
163 print(("Created vm config file %s.xml" % vm_name))
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
164 print(("Use disk image %s" % disk_image))
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 51
diff changeset
165 print("Done!")