OLD | NEW |
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 """This file contains the analysis plugin manager class.""" | 2 """This file contains the analysis plugin manager class.""" |
3 | 3 |
4 from plaso.analysis import definitions | 4 from plaso.analysis import definitions |
5 | 5 |
6 | 6 |
7 class AnalysisPluginManager(object): | 7 class AnalysisPluginManager(object): |
8 """Class that implements the analysis plugin manager.""" | 8 """Class that implements the analysis plugin manager.""" |
9 | 9 |
10 _plugin_classes = {} | 10 _plugin_classes = {} |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 | 62 |
63 # TODO: Use a specific description variable, not the docstring. | 63 # TODO: Use a specific description variable, not the docstring. |
64 doc_string, _, _ = plugin_class.__doc__.partition(u'\n') | 64 doc_string, _, _ = plugin_class.__doc__.partition(u'\n') |
65 type_string = cls._PLUGIN_TYPE_STRINGS.get(plugin_object.plugin_type) | 65 type_string = cls._PLUGIN_TYPE_STRINGS.get(plugin_object.plugin_type) |
66 information_tuple = (plugin_object.plugin_name, doc_string, type_string) | 66 information_tuple = (plugin_object.plugin_name, doc_string, type_string) |
67 results.append(information_tuple) | 67 results.append(information_tuple) |
68 | 68 |
69 return sorted(results) | 69 return sorted(results) |
70 | 70 |
71 @classmethod | 71 @classmethod |
| 72 def GetPluginNames(cls): |
| 73 """Retrieves the analysis plugin names. |
| 74 |
| 75 Returns: |
| 76 list[str]: analysis plugin names. |
| 77 """ |
| 78 return sorted(cls._plugin_classes.keys()) |
| 79 |
| 80 @classmethod |
72 def GetPluginObjects(cls, plugin_names): | 81 def GetPluginObjects(cls, plugin_names): |
73 """Retrieves the plugin objects. | 82 """Retrieves the plugin objects. |
74 | 83 |
75 Args: | 84 Args: |
76 plugin_names (list[str]): names of plugins that should be retrieved. | 85 plugin_names (list[str]): names of plugins that should be retrieved. |
77 | 86 |
78 Returns: | 87 Returns: |
79 dict[str,AnalysisPlugin]: analysis plugins per name. | 88 dict[str, AnalysisPlugin]: analysis plugins per name. |
80 """ | 89 """ |
81 plugin_objects = {} | 90 plugin_objects = {} |
82 for plugin_name, plugin_class in iter(cls._plugin_classes.items()): | 91 for plugin_name, plugin_class in iter(cls._plugin_classes.items()): |
83 if plugin_name not in plugin_names: | 92 if plugin_name not in plugin_names: |
84 continue | 93 continue |
85 | 94 |
86 plugin_objects[plugin_name] = plugin_class() | 95 plugin_objects[plugin_name] = plugin_class() |
87 | 96 |
88 return plugin_objects | 97 return plugin_objects |
89 | 98 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 | 137 |
129 Args: | 138 Args: |
130 plugin_classes (list[type]): classes of the analysis plugin. | 139 plugin_classes (list[type]): classes of the analysis plugin. |
131 | 140 |
132 Raises: | 141 Raises: |
133 KeyError: if an analysis plugin class is already set for the corresponding | 142 KeyError: if an analysis plugin class is already set for the corresponding |
134 name. | 143 name. |
135 """ | 144 """ |
136 for plugin_class in plugin_classes: | 145 for plugin_class in plugin_classes: |
137 cls.RegisterPlugin(plugin_class) | 146 cls.RegisterPlugin(plugin_class) |
OLD | NEW |