diff --git a/util/vm/build.py b/util/vm/build.py index 6f8b521..dda4b93 100755 --- a/util/vm/build.py +++ b/util/vm/build.py @@ -765,7 +765,7 @@ def getMininetVersion( vm ): def bootAndRunTests( image, tests=None, pre='', post='', prompt=Prompt, - memory=1024 ): + memory=1024, outputFile=None ): """Boot and test VM tests: list of tests to run pre: command line to run in VM before tests @@ -802,6 +802,9 @@ def bootAndRunTests( image, tests=None, pre='', post='', prompt=Prompt, vm.sendline( 'sudo shutdown -h now ' ) log( '* Waiting for shutdown' ) vm.wait() + if outputFile: + log( '* Saving temporary image to %s' % outputFile ) + convert( cow, outputFile ) log( '* Removing temporary dir', tmpdir ) srun( 'rm -rf ' + tmpdir ) elapsed = time() - bootTestStart @@ -868,6 +871,8 @@ def parseArgs(): help='VM flavor(s) to build (e.g. raring32server)' ) parser.add_argument( '-z', '--zip', action='store_true', help='archive .ovf and .vmdk into .zip file' ) + parser.add_argument( '-o', '--out', + help='output file for test image (vmdk)' ) args = parser.parse_args() if args.depend: depend() @@ -900,7 +905,8 @@ def parseArgs(): exit( 1 ) for image in args.image: bootAndRunTests( image, tests=args.test, pre=args.run, - post=args.post, memory=args.memory) + post=args.post, memory=args.memory, + outputFile=args.out ) if not ( args.depend or args.list or args.clean or args.flavor or args.image ): parser.print_help()