This patch adds a test that obtains a screenshot of a domain and saves it in a file. --- repos/domain/screenshot.py | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 57 insertions(+), 0 deletions(-) create mode 100644 repos/domain/screenshot.py diff --git a/repos/domain/screenshot.py b/repos/domain/screenshot.py new file mode 100644 index 0000000..9986cab --- /dev/null +++ b/repos/domain/screenshot.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +"""This test is used for creating a screenshot of a domain and saving + it in a file. The Screenshot format is hypervisor specific. + + mandatory arguments: guestname + screen + filename +""" + +import os +import mimetypes + +import libvirt + +def check_params(params): + """Verify input parameters""" + for key in ('guestname', 'screen', 'filename'): + if key not in params: + raise KeyError('Missing key %s required for screenshot test' % key) + + params['screen'] = int(params['screen']) + params['filename'] = os.path.abspath(params['filename']) + +def saver(stream, data, file_): + return file_.write(data) + +def screenshot(params): + """This method takes a screenshot of a running machine and saves + it in a filename""" + ret = 1 + try: + logger = params['logger'] + + check_params(params) + + conn = libvirt.open(params['uri']) + dom = conn.lookupByName(params['guestname']) + + st = conn.newStream(0) + mime = dom.screenshot(st, params['screen'], 0) + + ext = mimetypes.guess_extension(mime) or '.ppm' + filename = params['filename'] + ext + f = file(filename, 'w') + + logger.debug('Saving screenshot into %s' % filename) + st.recvAll(saver, f) + logger.debug('Mimetype of the file is %s' % mime) + + ret = st.finish() + + finally: + # Some error occurred, cleanup + if 'conn' in locals() and conn.isAlive(): + conn.close() + + return ret -- 1.7.8.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list