From e49c9d260018b973378c2d6379cd2af2c54c28da Mon Sep 17 00:00:00 2001 From: Brian O'Connor Date: Fri, 6 Jun 2014 21:21:13 -0700 Subject: [PATCH] build.py: making ovf generation more generic --- util/vm/build.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/util/vm/build.py b/util/vm/build.py index af39e05..be809ec 100755 --- a/util/vm/build.py +++ b/util/vm/build.py @@ -158,7 +158,7 @@ def depend(): run( 'sudo apt-get -y update' ) run( 'sudo apt-get install -y' ' kvm cloud-utils genisoimage qemu-kvm qemu-utils' - ' e2fsprogs dnsmasq' + ' e2fsprogs dnsmasq curl' ' python-setuptools mtools zip' ) run( 'sudo easy_install pexpect' ) @@ -457,16 +457,16 @@ def boot( cow, kernel, initrd, logfile, memory=1024 ): return vm -def login( vm ): +def login( vm, user='mininet', password='mininet' ): "Log in to vm (pexpect object)" log( '* Waiting for login prompt' ) vm.expect( 'login: ' ) log( '* Logging in' ) - vm.sendline( 'mininet' ) + vm.sendline( user ) log( '* Waiting for password prompt' ) vm.expect( 'Password: ' ) log( '* Sending password' ) - vm.sendline( 'mininet' ) + vm.sendline( password ) log( '* Waiting for login...' ) @@ -628,9 +628,9 @@ OVFTemplate = """ The nat network - -A Mininet Virtual Machine (%(name)s) -mininet-vm + +%(vminfo)s (%(name)s) +%(vmname)s The kind of installed guest operating system %(osname)s @@ -640,10 +640,10 @@ OVFTemplate = """ hertz * 10^6 Number of Virtual CPUs -1 virtual CPU(s) +%(cpus)s virtual CPU(s) 1 3 -1 +%(cpus)s byte * 2^20 @@ -694,19 +694,23 @@ OVFTemplate = """ """ -def generateOVF( name, osname, osid, diskname, disksize, mem=1024 ): +def generateOVF( name, osname, osid, diskname, disksize, mem=1024, cpus=1, + vmname='Mininet-VM', vminfo='A Mininet Virtual Machine' ): """Generate (and return) OVF file "name.ovf" name: root name of OVF file to generate osname: OS name for OVF (Ubuntu | Ubuntu 64-bit) osid: OS ID for OVF (93 | 94 ) diskname: name of disk file disksize: size of virtual disk in bytes - mem: VM memory size in MB""" + mem: VM memory size in MB + cpus: # of virtual CPUs + vmname: Name for VM (default name when importing) + vmimfo: Brief description of VM for OVF""" ovf = name + '.ovf' filesize = stat( diskname )[ ST_SIZE ] params = dict( osname=osname, osid=osid, diskname=diskname, filesize=filesize, disksize=disksize, name=name, - mem=mem ) + mem=mem, cpus=cpus, vmname=vmname, vminfo=vminfo ) xmltext = OVFTemplate % params with open( ovf, 'w+' ) as f: f.write( xmltext )