After the "conn" object was transferred into sharedmod, its import was missing.
I also cleaned up and commented few lines in order to use them for
documentation purposes.
---
repos/domain/screenshot.py | 45 ++++++++++++++++++++++++++++++++++---------
1 files changed, 35 insertions(+), 10 deletions(-)
diff --git a/repos/domain/screenshot.py b/repos/domain/screenshot.py
index eb5d0e2..49028fe 100644
--- a/repos/domain/screenshot.py
+++ b/repos/domain/screenshot.py
@@ -4,42 +4,67 @@
import os
import mimetypes
-
import libvirt
+# "sharedmod" is needed in order to get the shared connection object
+import sharedmod
+
+# These variables are mandatory for running the test
+# The test won't be run unless both "guestname" and "filename"
are specified.
required_params = ('guestname', 'filename',)
optional_params = ('screen',)
-last_filename = None
+# In this filename we store the last filename that has a screenshot
+# saved inside in order to be able to clean it after
+filename = None
+# This is just a helper function that will be used later.
def saver(stream, data, file_):
return file_.write(data)
+# This is the main test
def screenshot(params):
"""This method takes a screenshot of a running machine and saves
it in a filename"""
- ret = 1
+
+ # Shared logger to be used for messages output
logger = params['logger']
+ # Shared connection object to be used for messages output
conn = sharedmod.libvirtobj['conn']
- dom = conn.lookupByName(params['guestname'])
+ guestname = params['guestname']
+
+ logger.info('Looking for domain %s' % guestname)
+ dom = conn.lookupByName(guestname)
+ logger.debug('Domain %s found' % guestname)
st = conn.newStream(0)
screen = params.get('screen', 0)
+ logger.info('Taking a screenshot')
mime = dom.screenshot(st, int(screen), 0)
+ logger.debug('Screenshot taken')
+ # As mentioned before, the screenshot format is
+ # hypervisor-specific
ext = mimetypes.guess_extension(mime) or '.ppm'
- last_filename = params['filename'] + ext
+ filename = params['filename'] + ext
+
+ # Here we create a file object used later
f = file(filename, 'w')
- logger.debug('Saving screenshot into %s' % filename)
+ logger.info('Saving screenshot into %s' % filename)
+ logger.info('Mimetype of the file is %s' % mime)
+ # Here is the use of the "saver" function
st.recvAll(saver, f)
- logger.debug('Mimetype of the file is %s' % mime)
-
- ret = st.finish()
+ logger.debug('Screenshot saved')
- return ret
+ # The test fails (return is different from 0) if the stream is not
+ # properly ended
+ return st.finish()
+# This cleanup function is called if specified by the configuration
+# file. In this file we remove the saved screenshot if the filename is
+# known.
def cleanup(params):
if last_filename:
os.remove(last_filename)
--
1.7.8.5