plugin_script: added support for verify
Added 'verify' shell function to the 'functions' API. This function is optional, if defined in the script, it is called during the verification. It's return code is checked. Function return code '0' means verification passed, other value means failure. Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
This commit is contained in:
parent
758a561a53
commit
d4038a7e64
3 changed files with 32 additions and 6 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue