From 93e1664321aaf3c77a8ff6c4974045291c9e749a Mon Sep 17 00:00:00 2001 From: Sergey Vilgelm Date: Wed, 24 Jun 2015 11:07:37 +0200 Subject: [PATCH] Switch to oslo.service oslo.service has graduated, so ironic should consume it. Change-Id: I93f1698016a30916f162a370728e87e18013c2bb Partial-Bug: #1466851 --- ironic_lib/disk_partitioner.py | 2 +- ironic_lib/openstack/common/loopingcall.py | 148 --------------------- openstack-common.conf | 1 - requirements.txt | 1 + 4 files changed, 2 insertions(+), 150 deletions(-) delete mode 100644 ironic_lib/openstack/common/loopingcall.py diff --git a/ironic_lib/disk_partitioner.py b/ironic_lib/disk_partitioner.py index 8c8a1ae..5769c20 100644 --- a/ironic_lib/disk_partitioner.py +++ b/ironic_lib/disk_partitioner.py @@ -18,10 +18,10 @@ import re from oslo_concurrency import processutils from oslo_config import cfg +from oslo_service import loopingcall from ironic_lib.openstack.common._i18n import _ from ironic_lib.openstack.common._i18n import _LW -from ironic_lib.openstack.common import loopingcall from ironic_lib import exception from ironic_lib import utils diff --git a/ironic_lib/openstack/common/loopingcall.py b/ironic_lib/openstack/common/loopingcall.py deleted file mode 100644 index 9dd47a1..0000000 --- a/ironic_lib/openstack/common/loopingcall.py +++ /dev/null @@ -1,148 +0,0 @@ -# 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. - -import logging -import sys -import time - -from eventlet import event -from eventlet import greenthread - -from ironic_lib.openstack.common._i18n import _LE -from ironic_lib.openstack.common._i18n import _LW - -LOG = logging.getLogger(__name__) - -# NOTE(zyluo): This lambda function was declared to avoid mocking collisions -# with time.time() called in the standard logging module -# during unittests. -_ts = lambda: time.time() - - -class LoopingCallDone(Exception): - """Exception to break out and stop a LoopingCallBase. - - The poll-function passed to LoopingCallBase can raise this exception to - break out of the loop normally. This is somewhat analogous to - StopIteration. - - An optional return-value can be included as the argument to the exception; - this return-value will be returned by LoopingCallBase.wait() - - """ - - def __init__(self, retvalue=True): - """:param retvalue: Value that LoopingCallBase.wait() should return.""" - self.retvalue = retvalue - - -class LoopingCallBase(object): - def __init__(self, f=None, *args, **kw): - self.args = args - self.kw = kw - self.f = f - self._running = False - self.done = None - - def stop(self): - self._running = False - - def wait(self): - return self.done.wait() - - -class FixedIntervalLoopingCall(LoopingCallBase): - """A fixed interval looping call.""" - - def start(self, interval, initial_delay=None): - self._running = True - done = event.Event() - - def _inner(): - if initial_delay: - greenthread.sleep(initial_delay) - - try: - while self._running: - start = _ts() - self.f(*self.args, **self.kw) - end = _ts() - if not self._running: - break - delay = end - start - interval - if delay > 0: - LOG.warn(_LW('task %(func_name)r run outlasted ' - 'interval by %(delay).2f sec'), - {'func_name': self.f, 'delay': delay}) - greenthread.sleep(-delay if delay < 0 else 0) - except LoopingCallDone as e: - self.stop() - done.send(e.retvalue) - except Exception: - LOG.exception(_LE('in fixed duration looping call')) - done.send_exception(*sys.exc_info()) - return - else: - done.send(True) - - self.done = done - - greenthread.spawn_n(_inner) - return self.done - - -class DynamicLoopingCall(LoopingCallBase): - """A looping call which sleeps until the next known event. - - The function called should return how long to sleep for before being - called again. - """ - - def start(self, initial_delay=None, periodic_interval_max=None): - self._running = True - done = event.Event() - - def _inner(): - if initial_delay: - greenthread.sleep(initial_delay) - - try: - while self._running: - idle = self.f(*self.args, **self.kw) - if not self._running: - break - - if periodic_interval_max is not None: - idle = min(idle, periodic_interval_max) - LOG.debug('Dynamic looping call %(func_name)r sleeping ' - 'for %(idle).02f seconds', - {'func_name': self.f, 'idle': idle}) - greenthread.sleep(idle) - except LoopingCallDone as e: - self.stop() - done.send(e.retvalue) - except Exception: - LOG.exception(_LE('in dynamic looping call')) - done.send_exception(*sys.exc_info()) - return - else: - done.send(True) - - self.done = done - - greenthread.spawn(_inner) - return self.done diff --git a/openstack-common.conf b/openstack-common.conf index f897283..f00ef87 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -2,7 +2,6 @@ # The list of modules to copy from oslo-incubator module=imageutils -module=loopingcall # The base module to hold the copy of openstack.common base=ironic_lib diff --git a/requirements.txt b/requirements.txt index 6f5f5f3..60f8931 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,6 +11,7 @@ oslo.concurrency>=2.0.0 # Apache-2.0 oslo.config>=1.11.0 # Apache-2.0 oslo.middleware!=2.0.0,>=1.2.0 # Apache-2.0 oslo.serialization>=1.4.0 # Apache-2.0 +oslo.service>=0.1.0 # Apache-2.0 oslo.utils>=1.6.0 # Apache-2.0 PrettyTable<0.8,>=0.7 psutil<2.0.0,>=1.1.1