diff --git a/neutron_dynamic_routing/db/bgp_dragentscheduler_db.py b/neutron_dynamic_routing/db/bgp_dragentscheduler_db.py index 37dd07fa..cf36f461 100644 --- a/neutron_dynamic_routing/db/bgp_dragentscheduler_db.py +++ b/neutron_dynamic_routing/db/bgp_dragentscheduler_db.py @@ -69,10 +69,11 @@ class BgpDrAgentSchedulerDbMixin(bgp_dras_ext.BgpDrSchedulerPluginBase, def add_periodic_dragent_status_check(self): if self.bgp_drscheduler: - self.add_agent_status_check_worker( - self.remove_bgp_speaker_from_down_dragents) - self.add_agent_status_check_worker( - self.schedule_all_unscheduled_bgp_speakers) + if self.bgp_drscheduler.periodic_actions: + self.add_agent_status_check_worker( + self.remove_bgp_speaker_from_down_dragents) + self.add_agent_status_check_worker( + self.schedule_all_unscheduled_bgp_speakers) else: LOG.warning(_LW("Cannot schedule BgpSpeaker to DrAgent. " "Reason: No scheduler registered.")) diff --git a/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py b/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py index e68afd1b..69f02b6d 100644 --- a/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py +++ b/neutron_dynamic_routing/services/bgp/scheduler/bgp_dragent_scheduler.py @@ -128,6 +128,8 @@ class BgpDrAgentFilter(base_resource_filter.BaseResourceFilter): class BgpDrAgentSchedulerBase(BgpDrAgentFilter): + periodic_actions = True + def _register_callbacks(self): registry.subscribe(self.schedule_bgp_speaker_callback, dr_resources.BGP_SPEAKER, @@ -223,6 +225,8 @@ class WeightScheduler(base_scheduler.BaseWeightScheduler, class StaticScheduler(base_scheduler.BaseScheduler, BgpDrAgentFilter): + periodic_actions = False + def schedule_all_unscheduled_bgp_speakers(self, context): return True