blob: f93e64e448c7a8e9d722ebfb780a055733141762 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# -*- coding: utf-8 -*-
import CCDBusBackend
from ABRTPlugin import PluginInfo, PluginSettings
from abrt_utils import _, log, log1, log2
class PluginInfoList(list):
"""Class to store list of PluginInfos"""
def __init__(self,dbus_manager=None):
list.__init__(self)
self.dm = dbus_manager
def load(self):
if self.dm:
rows = self.dm.getPluginsInfo()
for plugin_name in rows:
row = rows[plugin_name]
entry = PluginInfo()
for attr_name in row:
log2("PluginInfoList: adding %s[%s]:%s", plugin_name, attr_name, row[attr_name])
entry.__dict__[attr_name] = row[attr_name]
daemon_settings = self.dm.getPluginSettings(plugin_name)
entry.load_daemon_settings(daemon_settings)
self.append(entry)
else:
log("PluginInfoList: db == None")
def getReporterByName(self, name):
try:
return [x for x in self if x["Name"] == name and x.Type == "Reporter" ][0]
except:
# if such reporter doesnt't exist return None
return None
def getEnabledPlugins(self):
return [x for x in self if x["Enabled"] == 'yes']
def getActionPlugins(self):
return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Action']
def getDatabasePlugins(self):
return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Database']
def getAnalyzerPlugins(self):
return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Analyzer']
def getReporterPlugins(self):
return [x for x in self if x["Enabled"] == 'yes' and x["Type"] == 'Reporter']
def getReporterPluginsSettings(self):
reporters_settings = {}
for plugin in self.getReporterPlugins():
reporters_settings[str(plugin)] = plugin.Settings
return reporters_settings
__PFList = None
__PFList_dbmanager = None
def getPluginInfoList(dbmanager,refresh=None):
global __PFList
global __PFList_dbmanager
if __PFList == None or refresh or __PFList_dbmanager != dbmanager:
__PFList = PluginInfoList(dbus_manager=dbmanager)
__PFList.load()
__PFList_dbmanager = dbmanager
return __PFList
__PFList = None
|