diff --git a/doc/source/dev/architecture.rst b/doc/source/dev/architecture.rst index f753588e61..c4bf639996 100644 --- a/doc/source/dev/architecture.rst +++ b/doc/source/dev/architecture.rst @@ -76,8 +76,8 @@ Driver-Specific Periodic Tasks ------------------------------ Drivers may run their own periodic tasks, i.e. actions run repeatedly after -a certain amount of time. Such task is created by decorating a method on the -driver itself or on any interface with periodic_ decorator, e.g. +a certain amount of time. Such task is created by decorating a method on +an interface with periodic_ decorator, e.g. :: @@ -88,18 +88,15 @@ driver itself or on any interface with periodic_ decorator, e.g. def task(self, manager, context): pass # do something - class FakeDriver(base.BaseDriver): - def __init__(self): - self.power = FakePower() - - @periodics.periodic(spacing=42) - def task2(self, manager, context): - pass # do something - Here the ``spacing`` argument is a period in seconds for a given periodic task. For example 'spacing=5' means every 5 seconds. +.. note:: + As of the Newton release, it's possible to bind periodic tasks to a driver + object instead of an interface. This is deprecated and support for it will + be removed in the Ocata release. + Message Routing =============== diff --git a/ironic/conductor/base_manager.py b/ironic/conductor/base_manager.py index d1c2b1261b..cf9176a6ff 100644 --- a/ironic/conductor/base_manager.py +++ b/ironic/conductor/base_manager.py @@ -110,6 +110,8 @@ class BaseConductorManager(object): periodic_task_classes = set() self._collect_periodic_tasks(self, (admin_context,)) for driver_obj in drivers.values(): + # TODO(dtantsur): collecting tasks from driver objects is + # deprecated and should be removed in Ocata. self._collect_periodic_tasks(driver_obj, (self, admin_context)) for iface_name in driver_obj.all_interfaces: iface = getattr(driver_obj, iface_name, None) diff --git a/releasenotes/notes/periodic-tasks-drivers-ae9cddab88b546c6.yaml b/releasenotes/notes/periodic-tasks-drivers-ae9cddab88b546c6.yaml new file mode 100644 index 0000000000..0c9f7bd7a2 --- /dev/null +++ b/releasenotes/notes/periodic-tasks-drivers-ae9cddab88b546c6.yaml @@ -0,0 +1,5 @@ +--- +deprecations: + - Putting periodic tasks on a driver object (rather than interface) is + deprecated. Driver developers should move periodic tasks from driver + objects to interface objects.