This patch will run pre and post scripts defined in config file with the parameter pre_command and post_command post_command. Also exports all the prameters in preprocess for passing arguments to the script. --- client/tests/kvm_runtest_2/kvm_preprocessing.py | 31 +++++++++++++++++++++- 1 files changed, 29 insertions(+), 2 deletions(-) diff --git a/client/tests/kvm_runtest_2/kvm_preprocessing.py b/client/tests/kvm_runtest_2/kvm_preprocessing.py index c9eb35d..02df615 100644 --- a/client/tests/kvm_runtest_2/kvm_preprocessing.py +++ b/client/tests/kvm_runtest_2/kvm_preprocessing.py @@ -135,8 +135,7 @@ def postprocess_vm(test, params, env, name): "Waiting for VM to kill itself..."): kvm_log.debug("'kill_vm' specified; killing VM...") vm.destroy(gracefully = params.get("kill_vm_gracefully") == "yes") - - + def process(test, params, env, image_func, vm_func): """Pre- or post-process VMs and images according to the instructions in params. @@ -169,6 +168,7 @@ def preprocess(test, params, env): params -- a dict containing all VM and image parameters env -- the environment (a dict-like object) + Also, runs any setup command defined in the parameter pre_command Also, collect some host information, such as the KVM version. """ # Verify the identities of all living VMs @@ -192,6 +192,22 @@ def preprocess(test, params, env): vm.destroy() del env[key] + #execute any pre_commands + pre_command = params.get("pre_command") + if pre_command: + # export environment vars + for k in params.keys(): + kvm_log.info("Adding KVM_TEST_%s to Environment" % (k)) + os.putenv("KVM_TEST_%s" % (k), str(params[k])) + + # execute command + kvm_log.info("Executing command '%s'..." % pre_command) + (status, pid, output) = kvm_utils.run_bg("cd %s; %s" % (test.bindir, pre_command), + None, kvm_log.debug, "(pre_command) ", timeout=600) + if status != 0: + kvm_utils.safe_kill(pid, signal.SIGTERM) + raise error.TestError, "Custom processing pre_command failed" + # Preprocess all VMs and images process(test, params, env, preprocess_image, preprocess_vm) @@ -232,6 +248,8 @@ def postprocess(test, params, env): test -- an Autotest test object params -- a dict containing all VM and image parameters env -- the environment (a dict-like object) + + Also, runs any command defined in the parameter post_command """ process(test, params, env, postprocess_image, postprocess_vm) @@ -241,6 +259,15 @@ def postprocess(test, params, env): kvm_log.debug("'keep_ppm_files' not specified; removing all PPM files from results dir...") kvm_utils.run_bg("rm -vf %s" % os.path.join(test.debugdir, "*.ppm"), None, kvm_log.debug, "(rm) ", timeout=5.0) + #execute any post_commands + post_command = params.get("post_command") + if post_command: + kvm_log.info("Executing command '%s'..." % post_command) + (status, pid, output) = kvm_utils.run_bg("cd %s; %s" % (test.bindir, post_command), + None, kvm_log.debug, "(post_command) ", timeout=600) + if status != 0: + kvm_utils.safe_kill(pid, signal.SIGTERM) + raise error.TestError, "Custom processing command failed" def postprocess_on_error(test, params, env): """Perform postprocessing operations required only if the test failed. -- 1.6.0.6 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html