Check-in [e43aa4d9b2]
Not logged in
Overview
Comment:More or less written command line interface to create vms. Fixed monitor path in the start.template
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: e43aa4d9b252d87582143416070ac1b03fcdd77f
User & Date: vitus on 2015-12-11 15:27:48
Other Links: manifest | tags
Context
2015-12-11
20:21
Moved create functionality into main vws script check-in: 8f4a02281b user: vitus tags: trunk
15:27
More or less written command line interface to create vms. Fixed monitor path in the start.template check-in: e43aa4d9b2 user: vitus tags: trunk
2015-11-18
14:44
Implemented list --state. Fixed first start of vm, when no monitor socket exists yet check-in: 33f6d5eeca user: vitus tags: trunk
Changes

mkvm became executable with contents [c9b2ef6117].

Modified start.template from [8a854bae9d] to [f5e7877513].

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{qemubinary} -name $NAME {accel} \
-m {memory}
{drive} \
{cdrom}$CDROM \
{net} \
{usb} \
{sound} \
-chardev socket,server,nowait,path=/home/vitus/asta.monitor,id=monitor \
-mon chardev=monitor,mode=readline \
-vga qxl \
-spice port=$SPICE_PORT,$SPICE_AUTH \
-device virtio-serial -chardev spicevmc,id=vdagent,name=vdagent \
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
-device ich9-usb-ehci1,id=usb \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
-daemonize -pidfile pid







|










20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{qemubinary} -name $NAME {accel} \
-m {memory}
{drive} \
{cdrom}$CDROM \
{net} \
{usb} \
{sound} \
-chardev socket,server,nowait,path=monitor,id=monitor \
-mon chardev=monitor,mode=readline \
-vga qxl \
-spice port=$SPICE_PORT,$SPICE_AUTH \
-device virtio-serial -chardev spicevmc,id=vdagent,name=vdagent \
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
-device ich9-usb-ehci1,id=usb \
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on \
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1 \
-daemonize -pidfile pid

Added vwscreate version [fd646c2a4e].























































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/python
import os,sys
from argparse import ArgumentParser
libdir="/usr/local/lib/vws"
drivename="drive0.qcow2"
args = ArgumentParser()

args.add_argument("--no-usb",help="Disable USB controller",action='store_const', const = False, default=True, dest="usb")
args.add_argument("--size",help="Size of primary disk images",dest="size",default="20G");
args.add_argument("--arch",help="Emulated architecture",dest="arch",default='x86_64');
args.add_argument("--no-sound",help="Disable sound card",action='store_const',const = False, default=True, dest="sound")
args.add_argument("--net",help="Network - 'user' or bridge name",dest='net',default="user")
args.add_argument("--mem",help="Size of memory",dest="mem",default="1024M")
args.add_argument("--diskif",help="Disk interface",dest="diskif",default="virtio")
args.add_argument('name',type=str,help='name of machine to create')
args.add_argument('--shared',help='Create shared VM instead of private one',action='store_const',const= True,dest='shared',default=False)
args.add_Argumnen('--image',help='Existing disk image to import',dest=image,default=None))
parsed_args = args.parse_args(sys.argv[1:])

options={'qemubinary':'qemu-system-x86_64',
"accel":"-enable-kvm",
"memory":"1024M",
"drive":"-drive media=disk,index=0,if={interface},file={image}",
"cdrom":"-drive media=cdrom,index=2,if=ide",
"sound":"-soundhw hda",
"usb":"-usb"}


macaddr=":".join(map(lambda x: "%02x"%random.randrange(0,256),range(0,5)))

if parsed_args.net != 'user':
    options["net"]="-net nic,macaddr=%s -net bridge,br=%s"%(macaddr,parsed_args.net),
else:
    options["net"]="-net nic,macaddr=%s -net user"%(macaddr,))

optons["qemubinary"] = 'qemu-system-'+parset_args.arch

if not parsed_args.arch in ('i386','x86_64'):
    print >>sys.stderr,"KVM acceleration disabled due to target architecture"
    options.accel = ''
elif not os.access("/dev/kvm",os.W_OK):
    print >>sys.stderr,"KVM acceleration disabled due to unavailability on the host system"
    options.accel = ''

if not parsed_args.usb:
    options["usb"]=''

if not parsed_args.sound:
    options["sound"]=''

options["memory"]=parsed_args.mem


#  Creating directory for VM

driveopts={"interface":parsed_args.diskif,"image":drivename}
if parsed_args.image:
    # Copying image file
    print >>sys.stderr,"Copying %s to %s"%(parsed_args.image,machinedir+"/"+drivename)

    chdir(machinedir)
else:
    print >>sys.stderr,"Creating new image file"
    os.chdir(machinedir)
    os.system("qemu-img create -f qcow2 %s %s"%(drivename,parsed_args.size))
options["drive"]=options["drive"].format(driveopts) 
with open(libdir+"/start.template","r") as f:
    template=f.read()
with open("start","w") as script:
    print script,template.format(options),

os.chmod(start,0755)

# If installation media is specified vws start for new vm