diff --git a/profiles/functions b/profiles/functions index 9a7fc90..957dfb6 100644 --- a/profiles/functions +++ b/profiles/functions @@ -504,8 +504,17 @@ process() { stop RETVAL=$? ;; + verify) + if declare -f verify &> /dev/null; + then + verify + else + : + fi + RETVAL=$? + ;; *) - echo $"Usage: $0 {start|stop}" + echo $"Usage: $0 {start|stop|verify}" RETVAL=2 ;; esac diff --git a/tuned/consts.py b/tuned/consts.py index e7f9a5b..f95dbe6 100644 --- a/tuned/consts.py +++ b/tuned/consts.py @@ -42,7 +42,9 @@ CFG_DEF_SLEEP_INTERVAL = 1 # update interval for dynamic tuning (in seconds) CFG_DEF_UPDATE_INTERVAL = 10 -STR_VERIFY_PROFILE_DEVICE_VALUE_OK = "verify: device %s: %s = %s" -STR_VERIFY_PROFILE_VALUE_OK = "verify: %s = %s" -STR_VERIFY_PROFILE_DEVICE_VALUE_FAIL = "verify: fail: device %s: %s = %s, expected %s" -STR_VERIFY_PROFILE_VALUE_FAIL = "verify: fail: %s = %s, expected %s" +STR_VERIFY_PROFILE_DEVICE_VALUE_OK = "verify: passed: device %s: %s = %s" +STR_VERIFY_PROFILE_VALUE_OK = "verify: passed: %s = %s" +STR_VERIFY_PROFILE_OK = "verify: passed: %s" +STR_VERIFY_PROFILE_DEVICE_VALUE_FAIL = "verify: failed: device %s: %s = %s, expected %s" +STR_VERIFY_PROFILE_VALUE_FAIL = "verify: failed: %s = %s, expected %s" +STR_VERIFY_PROFILE_FAIL = "verify: failed: %s" diff --git a/tuned/plugins/plugin_script.py b/tuned/plugins/plugin_script.py index 1bad579..b1b43b8 100644 --- a/tuned/plugins/plugin_script.py +++ b/tuned/plugins/plugin_script.py @@ -1,3 +1,4 @@ +import tuned.consts as consts import base import tuned.logs import os @@ -35,14 +36,28 @@ class ScriptPlugin(base.Plugin): proc = Popen([script, argument], stdout=PIPE, stderr=PIPE, close_fds=True) out, err = proc.communicate() if proc.returncode: - log.error("script '%s' error: %s" % (script, err[:-1])) + log.error("script '%s' error: %d, '%s'" % (script, proc.returncode, err[:-1])) + return False except (OSError,IOError) as e: log.error("script '%s' error: %s" % (script, e)) + return False + return True def _instance_apply_static(self, instance): super(self.__class__, self)._instance_apply_static(instance) self._call_scripts(instance._scripts, "start") + def _instance_verify_static(self, instance): + ret = True + if super(self.__class__, self)._instance_verify_static(instance) == False: + ret = False + if self._call_scripts(instance._scripts, "verify") == True: + log.info(consts.STR_VERIFY_PROFILE_OK % (instance._scripts)) + else: + log.error(consts.STR_VERIFY_PROFILE_FAIL % (instance._scripts)) + ret = False + return ret + def _instance_unapply_static(self, instance, profile_switch = False): self._call_scripts(reversed(instance._scripts), "stop") super(self.__class__, self)._instance_unapply_static(instance, profile_switch)