From 99a600b1eba53bb2bb8371ecab1e0158a6a3fcee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= Date: Thu, 16 Jun 2016 18:53:24 +0200 Subject: [PATCH] functions: added assertion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This function takes three arguments: etxt - the text to be logged if the assertion fails var1 - first variable to compare var2 - seconf variable to compare The function compares 'var1' and' var2', if they don't match it logs 'etxt' and raises exception which will abort profile loading. Signed-off-by: Jaroslav Škarvada --- .../profiles/functions/function_assertion.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 tuned/profiles/functions/function_assertion.py diff --git a/tuned/profiles/functions/function_assertion.py b/tuned/profiles/functions/function_assertion.py new file mode 100644 index 0000000..2638672 --- /dev/null +++ b/tuned/profiles/functions/function_assertion.py @@ -0,0 +1,25 @@ +import os +import tuned.logs +import base +from tuned.utils.commands import commands +from tuned.profiles.exceptions import InvalidProfileException + +log = tuned.logs.get() + +class assertion(base.Function): + """ + Assertion: compares argument 2 with argument 3. If they don't match + it logs text from argument 1 and throws InvalidProfileException. This + exception will abort profile loading. + """ + def __init__(self): + # 2 arguments + super(self.__class__, self).__init__("exec", 3) + + def execute(self, args): + if not super(self.__class__, self).execute(args): + return None + if args[1] != args[2]: + log.error("assertion '%s' failed: '%s' != '%s'" % (args[0], args[1], args[2])) + raise InvalidProfileException("Assertion '%s' failed." % args[0]) + return None