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:
@ -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):
|
||||
|
@ -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):
|
||||
|
Reference in New Issue
Block a user