commit bbea2146fd187bb98dd944f6adbed2c9b6de4307 Author: Micha vor dem Berge m@mcvdb.de Date: Sat Jan 16 12:45:24 2010 +0000
extended smart_mod.py for multisystem usage
Signed-off-by: Konstantin Ryabitsev mricon@kernel.org
modules/smart_mod.py | 58 ++++++++++++++++++++++++++----------------------- 1 files changed, 31 insertions(+), 27 deletions(-) --- diff --git a/modules/smart_mod.py b/modules/smart_mod.py index bef7196..8dd3de4 100644 --- a/modules/smart_mod.py +++ b/modules/smart_mod.py @@ -83,39 +83,43 @@ class smart_mod(InternalModule): restuple = (action, system, drive, smart_message) return {restuple: linemap['multiplier']}
- - ## - # FINALIZE! - # def finalize(self, resultset): - logger = self.logger - report = '' - reports = {} - for action in [self.prefailure, self.usage]: - reports[action] = '' - for system in resultset.get_distinct((action,)): - messages = [] - for drive in resultset.get_distinct((action, system)): - mymap = resultset.get_submap((action, system, drive)) - - for message in mymap.keys(): - messages.append('%s (%d)' % (message[0], mymap[message])) - reports[action] += self.report_line % (drive, - '<br>'.join(messages)) - - if reports[self.prefailure]: - report += self.subreport_wrap % self.smart_prefailure_title - report += reports[self.prefailure] - - if reports[self.usage]: - report += self.subreport_wrap % self.smart_usage_title - report += reports[self.usage] + rep = {} + for action in [self.usage, self.prefailure]: + rep[action] = '' + flipper = '' + for key in resultset.get_distinct((action,)): + if flipper: flipper = '' + else: flipper = self.flip + drive_rep = [] + for drive in resultset.get_distinct((action, key)): + mymap = resultset.get_submap((action, key, drive)) + key2s = [] + for key2 in mymap.keys(): + loghost = key2[0] + key2s.append('%s (%d)' % (loghost, mymap[key2])) + if len(key2s) > self.systems_collapse: + loghosts = self.collapsed_rep % (key2s[0],len(key2s)-1) + else: + loghosts = ', '.join(key2s) + drive_rep.append([drive, loghosts]) + blank = 0 + for drvrep in drive_rep: + if blank: key = ' ' + else: blank = 1 + rep[action] += self.line_rep % (flipper, key, + drvrep[0], drvrep[1]) + if rep[self.usage]: + report += self.subreport_wrap % (self.smart_usage_title, + rep[self.usage]) + if rep[self.prefailure]: + report += self.subreport_wrap % (self.smart_prefailure_title, + rep[self.prefailure])
report = self.report_wrap % report return report
- if __name__ == '__main__': from epylog.helpers import ModuleTest ModuleTest(smart_mod, sys.argv)