Replace eventlet usage in pxe_filter

Drop the last eventlet usage in pxe filter script for the native
threading equivalent. Behavior "should" be identical.

Change-Id: I2b490a78288ad477131dbe60ea64d7ea905953ec
This commit is contained in:
Afonne-CID
2025-05-26 17:38:05 +01:00
parent bc6cd744f5
commit 9211ab6296
2 changed files with 21 additions and 9 deletions

View File

@ -13,9 +13,8 @@
import os
import time
import eventlet
from eventlet import event
from oslo_log import log
import threading
from ironic.common.i18n import _
from ironic.common import metrics_utils
@ -52,14 +51,25 @@ class PXEFilterManager:
raise RuntimeError(_('Attempt to start an already running '
'PXE filter manager'))
self._shutdown = event.Event()
self._thread = eventlet.spawn_after(_START_DELAY, self._periodic_sync)
self._shutdown = threading.Event()
# Delay startup by ``_START_DELAY`` seconds to mimic the former
# ``eventlet.spawn_after`` behaviour.
def _delayed_start():
time.sleep(_START_DELAY)
self._periodic_sync()
self._thread = threading.Thread(
target=_delayed_start, name="pxe-sync",
daemon=True)
self._thread.start()
self._started = True
def del_host(self):
self._shutdown.send(True)
eventlet.sleep(0)
self._thread.wait()
self._shutdown.set()
time.sleep(0)
self._thread.join()
self._started = False
def _periodic_sync(self):

View File

@ -111,8 +111,10 @@ class TestSync(test_base.DbTestCase):
class TestManager(test_base.DbTestCase):
@mock.patch('eventlet.spawn_after', lambda delay, func: func())
@mock.patch('eventlet.event.Event', autospec=True)
@mock.patch('time.sleep', lambda _: None)
@mock.patch('threading.Thread.start',
lambda self: self._target(*self._args, **self._kwargs))
@mock.patch('threading.Event', autospec=True)
@mock.patch.object(pxe_filter_service.PXEFilterManager, '_sync',
autospec=True)
def test_init_and_run(self, mock_sync, mock_event):