oslo.service/oslo_service/loopingcall.py
Daniel Bengtsson 861e8d6677 Migrate Eventlet components to the new backend system
This commit migrates Eventlet-specific components to the newly
introduced
backend system, isolating their implementation within the
`oslo_service.backend.eventlet` module. The following changes have been
made:

- Eventlet Components:
  - Moved Eventlet-specific implementations of `service`, `loopingcall`,
  and `threadgroup` into `oslo_service/backend/eventlet/`.
  - Introduced an `EventletBackend` class with
  `get_service_components()` to expose these implementations
  dynamically.

- Core Refactors:
  - Updated `service.py`, `loopingcall.py`, and `threadgroup.py` to
  retrieve Eventlet components via the backend system (`get_backend()`).

- Backward Compatibility:
  - Ensured no changes to public APIs in `service.py`, `loopingcall.py`,
  and `threadgroup.py`.

- Tests: Existing tests for Eventlet components remain applicable as the
logic in the core files has not been modified.
- Documentation: This change completes the migration of
Eventlet-specific logic and prepares the codebase for alternative
backend implementations in the future.

Change-Id: Ieba0109491c37f260163fe2eb1ed2e03ecc6b15d
2025-01-30 11:12:20 +01:00

32 lines
1.3 KiB
Python

# Copyright 2010 United States Government as represented by the
# Administrator of the National Aeronautics and Space Administration.
# Copyright 2011 Justin Santa Barbara
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from oslo_service.backend import get_component
# Dynamically load looping call components from the backend
LoopingCallBase = get_component("LoopingCallBase")
LoopingCallDone = get_component("LoopingCallDone")
LoopingCallTimeOut = get_component("LoopingCallTimeOut")
FixedIntervalLoopingCall = get_component("FixedIntervalLoopingCall")
FixedIntervalWithTimeoutLoopingCall = get_component(
"FixedIntervalWithTimeoutLoopingCall")
DynamicLoopingCall = get_component("DynamicLoopingCall")
BackOffLoopingCall = get_component("BackOffLoopingCall")
RetryDecorator = get_component("RetryDecorator")