From dd419bb36844234694266b23608cada4b6999841 Mon Sep 17 00:00:00 2001 From: Jan Vcelak Date: Tue, 22 Jan 2013 16:05:48 +0100 Subject: [PATCH] manager, plugin base: control initialization order by plugin --- tuned/plugins/base.py | 24 +++++++++++++----------- tuned/units/manager.py | 5 +---- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/tuned/plugins/base.py b/tuned/plugins/base.py index 47895e1..b347893 100644 --- a/tuned/plugins/base.py +++ b/tuned/plugins/base.py @@ -29,7 +29,7 @@ class Plugin(object): self._has_dynamic_options = False def cleanup(self): - self._destroy_all_instances() + self.destroy_instances() @property def name(self): @@ -94,21 +94,23 @@ class Plugin(object): self._destroy_instance(instance) del self._instances[instance.name] - def initialize_instance(self, instance): - """Initialize instance.""" - assert(instance._plugin == self) - self._instance_init(instance) + def initialize_instances(self): + """Initialize all created instances.""" + for (instance_name, instance) in self._instances.items(): + log.debug("initializing instance %s (%s)" % (instance_name, self.name)) + self._instance_init(instance) - def _destroy_instance(self, instance): - log.debug("destroying instance %s (%s)" % (instance.name, self.name)) - self.release_devices(instance) - self._instance_cleanup(instance) - - def _destroy_all_instances(self): + def destroy_instances(self): + """Destroy all instances.""" for instance in self._instances.values(): + log.debug("destroying instance %s (%s)" % (instance.name, self.name)) self._destroy_instance(instance) self._instances.clear() + def _destroy_instance(self, instance): + self.release_devices(instance) + self._instance_cleanup(instance) + def _instance_init(self, instance): raise NotImplementedError() diff --git a/tuned/units/manager.py b/tuned/units/manager.py index e35bdca..ebc49b3 100644 --- a/tuned/units/manager.py +++ b/tuned/units/manager.py @@ -61,10 +61,7 @@ class Manager(object): created_instances.append(new_instance) plugin.assign_free_devices() - - for instance in created_instances: - log.debug("initializing '%s'" % instance.name) - plugin.initialize_instance(instance) + plugin.initialize_instances() self._instances.extend(created_instances)