From edbe8b454dee31c19bc9bf73ef68390d7b41385a Mon Sep 17 00:00:00 2001 From: Florent Date: Mon, 12 Aug 2013 17:08:22 +0200 Subject: [PATCH] Add get_object_list in generic-munin --- contrib/munin/generic/README | 10 ++++++++-- contrib/munin/generic/generic-munin | 26 ++++++++++++++++++++++---- contrib/munin/generic/test.sh | 22 +++++++++++++++++++++- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/contrib/munin/generic/README b/contrib/munin/generic/README index 8988654a..d738d3d4 100644 --- a/contrib/munin/generic/README +++ b/contrib/munin/generic/README @@ -16,6 +16,7 @@ The Weboob capability to load. Example: env.do get_balance The Weboob command to call the capability. It can take more than one argument. With two argument, the second is used as parameter for the command. The third is used to restrict backends. +If you use get_object_list option, you can use only one argument in env.do. ==== env.import ==== Example: from weboob.capabilities.bank import ICapBank @@ -50,13 +51,18 @@ Example: env.cumulate 0 (default 1) Display data in Area mode (default) or in line mode. +==== env.get_object_list ==== +Exemple: env.get_object_list="iter_subscriptions" + +Run a first time a cap's method to get a list of objects. env.do is then applied on all results. + ==== env.attribid ==== -Example env.attribid id +Example: env.attribid id Munin need an id for each value. The default is to use the id of results objects, but you can configure an other attribut. Like for env.attribvalue, you can configure a hierarchical attribut with / as separator, for example "temp/id". ==== env.title ==== -Example env.title a wonderful graph +Example: env.title a wonderful graph A title for the graph (default: nothing) diff --git a/contrib/munin/generic/generic-munin b/contrib/munin/generic/generic-munin index a7fd60f7..2d709a95 100755 --- a/contrib/munin/generic/generic-munin +++ b/contrib/munin/generic/generic-munin @@ -27,6 +27,7 @@ import logging from weboob.core import Weboob, CallErrors from weboob.tools.browser import BrowserIncorrectPassword + class GenericMuninPlugin(object): def __init__(self): if 'weboob_path' in os.environ: @@ -48,6 +49,9 @@ class GenericMuninPlugin(object): self.mimport = os.environ["import"] exec(self.mimport) # We can monitore only some objects + self.object_list = None + if 'get_object_list' in os.environ: + self.object_list = os.environ["get_object_list"] self.tomonitore = None if 'id_monitored' in os.environ: self.tomonitore = os.environ['id_monitored'].split(' ') @@ -147,12 +151,26 @@ class GenericMuninPlugin(object): self.cache.write('%s\n' % line) def build_do(self): - if len(self.do) == 1: - return self.weboob.do(self.do[0]) + if self.object_list: + results = [] + for result in self.weboob.do(self.object_list): + results.append(result) + for backend, result in results: + try: + for i in self.weboob.do(self.do[0], result.id, backends=backend): + yield i + # Do not crash if one module does not implement the feature + except CallErrors: + pass + elif len(self.do) == 1: + for i in self.weboob.do(self.do[0]): + yield i elif len(self.do) == 2: - return self.weboob.do(self.do[0], self.do[1]) + for i in self.weboob.do(self.do[0], self.do[1]): + yield i elif len(self.do) == 3: - return self.weboob.do(self.do[0], self.do[1], backends=self.do[2]) + for i in self.weboob.do(self.do[0], self.do[1], backends=self.do[2]): + yield i def get_value(self, result): attribs = self.attribvalue.split('/') diff --git a/contrib/munin/generic/test.sh b/contrib/munin/generic/test.sh index 966453da..235b4746 100644 --- a/contrib/munin/generic/test.sh +++ b/contrib/munin/generic/test.sh @@ -23,7 +23,7 @@ rm banbank export cache_expire=7200 export HOME="/home/flo" export capa="ICapGauge" -export do="get_last_measure,501060-level" +export do="get_last_measure,501060-level,sachsen" export import="from weboob.capabilities.gauge import ICapGauge" export attribvalue="level" export title="Niveau de l'elbe" @@ -75,6 +75,26 @@ echo "========= ICapBill config" ./bill config rm bill +# Monitor all balances of all subscriptions +export cache_expire=7200 +export HOME="/home/flo" +export capa="ICapBill" +export do="get_balance" +export get_object_list="iter_subscription" +export import="from weboob.capabilities.bill import ICapBill" +export attribvalue="price" +export title="Solde restant" +export vlabel="Solde" + +echo "========= ICapBill2 fetch" +cp ./generic-munin ./bill +./bill +echo "========= ICapBill2 config" +./bill config +rm bill + +unset get_object_list + # Monitor temperature in Rennes export cache_expire=7200