1
0
Fork 0

plugin repository: use new hardware enumeration to obtain devices

This commit is contained in:
Jan Vcelak 2012-12-06 18:40:44 +01:00
parent 31b0128bbc
commit 74c8c2c0fe
3 changed files with 12 additions and 5 deletions

View file

@ -1,4 +1,4 @@
from tuned import storage, units, monitors, plugins, profiles, exports
from tuned import storage, units, monitors, plugins, profiles, exports, hardware
from tuned.exceptions import TunedException
import tuned.logs
import controller
@ -23,8 +23,9 @@ class Application(object):
unit_factory = units.Factory()
device_matcher = units.DeviceMatcher()
hardware_enumerator = hardware.Enumerator()
monitors_repository = monitors.Repository()
plugins_repository = plugins.Repository(storage_factory, monitors_repository)
plugins_repository = plugins.Repository(storage_factory, monitors_repository, hardware_enumerator)
unit_manager = units.Manager(plugins_repository, monitors_repository, unit_factory, device_matcher)
profile_factory = profiles.Factory()

View file

@ -10,6 +10,7 @@ class Plugin(object):
saving. Plugins use Monitor objects to get information from the running system.
Methods requiring reimplementation:
- device_requirements(cls)
- update_tuning(self)
"""
@ -22,7 +23,8 @@ class Plugin(object):
return {}
@classmethod
def tunable_devices(cls):
def device_requirements(cls):
raise Exception("device_requirements not implemented")
return None
@classmethod

View file

@ -8,11 +8,12 @@ __all__ = ["Repository"]
class Repository(PluginLoader):
def __init__(self, storage_factory, monitor_repository):
def __init__(self, storage_factory, monitor_repository, hardware_enumerator):
super(self.__class__, self).__init__()
self._plugins = set()
self._storage_factory = storage_factory
self._monitor_repository = monitor_repository
self._hardware_enumerator = hardware_enumerator
def _set_loader_parameters(self):
self._namespace = "tuned.plugins"
@ -28,7 +29,10 @@ class Repository(PluginLoader):
def tunable_devices(self, plugin_name):
plugin_cls = self.load_plugin(plugin_name)
return plugin_cls.tunable_devices()
device_requirements = plugin_cls.device_requirements()
devices = self._hardware_enumerator.get_devices(**device_requirements)
return map(lambda device: device.sys_name, devices)
def is_supported(self, plugin_name):
plugin_cls = self.load_plugin(plugin_name)