]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Switch Cinder to use oslo.concurrency
authorChangBo Guo(gcb) <eric.guo@easystack.cn>
Mon, 10 Nov 2014 12:45:12 +0000 (20:45 +0800)
committerChangBo Guo(gcb) <eric.guo@easystack.cn>
Thu, 20 Nov 2014 14:21:46 +0000 (22:21 +0800)
Let's switch to the newly released oslo library for the
processutils and lockutils. We use the config fixture(s) to
specify disable_process_locking and lock_path in the CONF
variable of oslo.concurrency library for correctly setting the
flags.

Change-Id: Ib8f3aac5449eba66ea84bc5cad8aea061adab276

70 files changed:
cinder/backup/drivers/tsm.py
cinder/brick/executor.py
cinder/brick/initiator/connector.py
cinder/brick/initiator/linuxfc.py
cinder/brick/initiator/linuxscsi.py
cinder/brick/iscsi/iscsi.py
cinder/brick/local_dev/lvm.py
cinder/brick/remotefs/remotefs.py
cinder/image/image_utils.py
cinder/openstack/common/lockutils.py [deleted file]
cinder/openstack/common/processutils.py [deleted file]
cinder/service.py
cinder/test.py
cinder/tests/api/contrib/test_admin_actions.py
cinder/tests/brick/test_brick_connector.py
cinder/tests/brick/test_brick_lvm.py
cinder/tests/fake_utils.py
cinder/tests/test_backup_ceph.py
cinder/tests/test_backup_tsm.py
cinder/tests/test_emc_vnxdirect.py
cinder/tests/test_eqlx.py
cinder/tests/test_glusterfs.py
cinder/tests/test_gpfs.py
cinder/tests/test_ibmnas.py
cinder/tests/test_image_utils.py
cinder/tests/test_netapp_utils.py
cinder/tests/test_pure.py
cinder/tests/test_service.py
cinder/tests/test_sheepdog.py
cinder/tests/test_storwize_svc.py
cinder/tests/test_utils.py
cinder/tests/test_volume_utils.py
cinder/tests/zonemanager/test_brcd_fc_zone_client_cli.py
cinder/tests/zonemanager/test_cisco_fc_zone_client_cli.py
cinder/tests/zonemanager/test_cisco_fc_zone_driver.py
cinder/utils.py
cinder/volume/driver.py
cinder/volume/drivers/coraid.py
cinder/volume/drivers/emc/emc_vnx_cli.py
cinder/volume/drivers/eqlx.py
cinder/volume/drivers/fujitsu_eternus_dx_fc.py
cinder/volume/drivers/fujitsu_eternus_dx_iscsi.py
cinder/volume/drivers/glusterfs.py
cinder/volume/drivers/hds/nfs.py
cinder/volume/drivers/hitachi/hbsd_basiclib.py
cinder/volume/drivers/hitachi/hbsd_horcm.py
cinder/volume/drivers/ibm/gpfs.py
cinder/volume/drivers/ibm/ibmnas.py
cinder/volume/drivers/ibm/storwize_svc/ssh.py
cinder/volume/drivers/lvm.py
cinder/volume/drivers/netapp/nfs.py
cinder/volume/drivers/netapp/utils.py
cinder/volume/drivers/nfs.py
cinder/volume/drivers/pure.py
cinder/volume/drivers/remotefs.py
cinder/volume/drivers/san/hp/hp_lefthand_cliq_proxy.py
cinder/volume/drivers/san/san.py
cinder/volume/drivers/sheepdog.py
cinder/volume/drivers/smbfs.py
cinder/volume/flows/manager/create_volume.py
cinder/volume/iscsi.py
cinder/volume/utils.py
cinder/zonemanager/drivers/brocade/brcd_fc_zone_client_cli.py
cinder/zonemanager/drivers/brocade/brcd_fc_zone_driver.py
cinder/zonemanager/drivers/cisco/cisco_fc_san_lookup_service.py
cinder/zonemanager/drivers/cisco/cisco_fc_zone_client_cli.py
cinder/zonemanager/drivers/cisco/cisco_fc_zone_driver.py
etc/cinder/cinder.conf.sample
openstack-common.conf
requirements.txt

index bf60c28410013f746d1010358200b82a31ff4d8b..5f5f0573bef76a158dd7faa948c14109402ee478 100644 (file)
@@ -29,13 +29,13 @@ import json
 import os
 import stat
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 
 from cinder.backup.driver import BackupDriver
 from cinder import exception
 from cinder.i18n import _LE, _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 
 LOG = logging.getLogger(__name__)
index de689521cce73dcd7f9b6bbbfc77c7d57fbbc809..ea950055b2b7dbf1016c54798c5f82f5bb6efd02 100644 (file)
@@ -18,7 +18,7 @@
    and root_helper settings, so this provides that hook.
 """
 
-from cinder.openstack.common import processutils as putils
+from oslo.concurrency import processutils as putils
 
 
 class Executor(object):
index 57974bbf3a48c3f6aeb5f64ca8d341fc39221499..6f082e0a0d2a2ef22ad0b1ba2199c8b25a1613a9 100644 (file)
@@ -17,6 +17,9 @@ import os
 import socket
 import time
 
+from oslo.concurrency import lockutils
+from oslo.concurrency import processutils as putils
+
 from cinder.brick import exception
 from cinder.brick import executor
 from cinder.brick.initiator import host_driver
@@ -24,10 +27,8 @@ from cinder.brick.initiator import linuxfc
 from cinder.brick.initiator import linuxscsi
 from cinder.brick.remotefs import remotefs
 from cinder.i18n import _, _LE
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.openstack.common import loopingcall
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
index edd9e7c52ac474a55a2ebe34c92b4ecd81580661..710db54a02d08f2e5d80e9112de365a2f333995f 100644 (file)
 
 import errno
 
+from oslo.concurrency import processutils as putils
+
 from cinder.brick.initiator import linuxscsi
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
index 9ee74ae3f010c0822ec57db356dded4c8b4b2564..7a1951c2bad7d550f421f21c76d79eee186b71e2 100644 (file)
 import os
 import re
 
+from oslo.concurrency import processutils as putils
+
 from cinder.brick import executor
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
index fee1685177a4cff7f6add941f778cb6573e3a6bc..14327baab54fcff9bbdeb43be7890339c844a1fc 100644 (file)
@@ -23,6 +23,7 @@ import re
 import stat
 import time
 
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 import six
 
@@ -31,7 +32,6 @@ from cinder.brick import executor
 from cinder.i18n import _, _LE, _LI, _LW
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 
 LOG = logging.getLogger(__name__)
index 2612b9bc8086654d0ef50ba74945ce5cd36ace79..2a94892cc37919e1925501865579a0382f34a93a 100644 (file)
@@ -22,13 +22,13 @@ import math
 import re
 import time
 
+from oslo.concurrency import processutils as putils
 from oslo.utils import excutils
 
 from cinder.brick import exception
 from cinder.brick import executor
 from cinder.i18n import _, _LE, _LW
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 
 LOG = logging.getLogger(__name__)
index e951652225be6ae4f05c3cc16f69500beb810b0e..7a6266ff88d9e16dd67b6e8be62d9ca118bb7b29 100644 (file)
@@ -19,12 +19,12 @@ import hashlib
 import os
 import re
 
+from oslo.concurrency import processutils as putils
 import six
 
 from cinder.brick import exception
 from cinder.i18n import _, _LI
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 
 LOG = logging.getLogger(__name__)
 
index ebd89b8985dfe8153aff7b26726e817d67c92853..608993901bd191f82512a2539164b87c12c4466c 100644 (file)
@@ -28,6 +28,7 @@ import contextlib
 import os
 import tempfile
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import timeutils
 from oslo.utils import units
@@ -37,7 +38,6 @@ from cinder.i18n import _
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import imageutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume import utils as volume_utils
 
diff --git a/cinder/openstack/common/lockutils.py b/cinder/openstack/common/lockutils.py
deleted file mode 100644 (file)
index 3a3100d..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2011 OpenStack Foundation.
-# 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 errno
-import functools
-import os
-import shutil
-import tempfile
-import time
-import weakref
-
-from eventlet import semaphore
-from oslo.config import cfg
-
-from cinder.openstack.common import fileutils
-from cinder.openstack.common.gettextutils import _
-from cinder.openstack.common import local
-from cinder.openstack.common import log as logging
-
-
-LOG = logging.getLogger(__name__)
-
-
-util_opts = [
-    cfg.BoolOpt('disable_process_locking', default=False,
-                help='Whether to disable inter-process locks'),
-    cfg.StrOpt('lock_path',
-               help=('Directory to use for lock files. Default to a '
-                     'temp directory'))
-]
-
-
-CONF = cfg.CONF
-CONF.register_opts(util_opts)
-
-
-def set_defaults(lock_path):
-    cfg.set_defaults(util_opts, lock_path=lock_path)
-
-
-class _InterProcessLock(object):
-    """Lock implementation which allows multiple locks, working around
-    issues like bugs.debian.org/cgi-bin/bugreport.cgi?bug=632857 and does
-    not require any cleanup. Since the lock is always held on a file
-    descriptor rather than outside of the process, the lock gets dropped
-    automatically if the process crashes, even if __exit__ is not executed.
-
-    There are no guarantees regarding usage by multiple green threads in a
-    single process here. This lock works only between processes. Exclusive
-    access between local threads should be achieved using the semaphores
-    in the @synchronized decorator.
-
-    Note these locks are released when the descriptor is closed, so it's not
-    safe to close the file descriptor while another green thread holds the
-    lock. Just opening and closing the lock file can break synchronisation,
-    so lock files must be accessed only using this abstraction.
-    """
-
-    def __init__(self, name):
-        self.lockfile = None
-        self.fname = name
-
-    def __enter__(self):
-        self.lockfile = open(self.fname, 'w')
-
-        while True:
-            try:
-                # Using non-blocking locks since green threads are not
-                # patched to deal with blocking locking calls.
-                # Also upon reading the MSDN docs for locking(), it seems
-                # to have a laughable 10 attempts "blocking" mechanism.
-                self.trylock()
-                return self
-            except IOError as e:
-                if e.errno in (errno.EACCES, errno.EAGAIN):
-                    # external locks synchronise things like iptables
-                    # updates - give it some time to prevent busy spinning
-                    time.sleep(0.01)
-                else:
-                    raise
-
-    def __exit__(self, exc_type, exc_val, exc_tb):
-        try:
-            self.unlock()
-            self.lockfile.close()
-        except IOError:
-            LOG.exception(_("Could not release the acquired lock `%s`"),
-                          self.fname)
-
-    def trylock(self):
-        raise NotImplementedError()
-
-    def unlock(self):
-        raise NotImplementedError()
-
-
-class _WindowsLock(_InterProcessLock):
-    def trylock(self):
-        msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_NBLCK, 1)
-
-    def unlock(self):
-        msvcrt.locking(self.lockfile.fileno(), msvcrt.LK_UNLCK, 1)
-
-
-class _PosixLock(_InterProcessLock):
-    def trylock(self):
-        fcntl.lockf(self.lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
-
-    def unlock(self):
-        fcntl.lockf(self.lockfile, fcntl.LOCK_UN)
-
-
-if os.name == 'nt':
-    import msvcrt
-    InterProcessLock = _WindowsLock
-else:
-    import fcntl
-    InterProcessLock = _PosixLock
-
-_semaphores = weakref.WeakValueDictionary()
-
-
-def synchronized(name, lock_file_prefix, external=False, lock_path=None):
-    """Synchronization decorator.
-
-    Decorating a method like so::
-
-        @synchronized('mylock')
-        def foo(self, *args):
-           ...
-
-    ensures that only one thread will execute the foo method at a time.
-
-    Different methods can share the same lock::
-
-        @synchronized('mylock')
-        def foo(self, *args):
-           ...
-
-        @synchronized('mylock')
-        def bar(self, *args):
-           ...
-
-    This way only one of either foo or bar can be executing at a time.
-
-    :param lock_file_prefix: The lock_file_prefix argument is used to provide
-    lock files on disk with a meaningful prefix. The prefix should end with a
-    hyphen ('-') if specified.
-
-    :param external: The external keyword argument denotes whether this lock
-    should work across multiple processes. This means that if two different
-    workers both run a method decorated with @synchronized('mylock',
-    external=True), only one of them will execute at a time.
-
-    :param lock_path: The lock_path keyword argument is used to specify a
-    special location for external lock files to live. If nothing is set, then
-    CONF.lock_path is used as a default.
-    """
-
-    def wrap(f):
-        @functools.wraps(f)
-        def inner(*args, **kwargs):
-            # NOTE(soren): If we ever go natively threaded, this will be racy.
-            #              See http://stackoverflow.com/questions/5390569/dyn
-            #              amically-allocating-and-destroying-mutexes
-            sem = _semaphores.get(name, semaphore.Semaphore())
-            if name not in _semaphores:
-                # this check is not racy - we're already holding ref locally
-                # so GC won't remove the item and there was no IO switch
-                # (only valid in greenthreads)
-                _semaphores[name] = sem
-
-            with sem:
-                LOG.debug(_('Got semaphore "%(lock)s" for method '
-                            '"%(method)s"...'), {'lock': name,
-                                                 'method': f.__name__})
-
-                # NOTE(mikal): I know this looks odd
-                if not hasattr(local.strong_store, 'locks_held'):
-                    local.strong_store.locks_held = []
-                local.strong_store.locks_held.append(name)
-
-                try:
-                    if external and not CONF.disable_process_locking:
-                        LOG.debug(_('Attempting to grab file lock "%(lock)s" '
-                                    'for method "%(method)s"...'),
-                                  {'lock': name, 'method': f.__name__})
-                        cleanup_dir = False
-
-                        # We need a copy of lock_path because it is non-local
-                        local_lock_path = lock_path
-                        if not local_lock_path:
-                            local_lock_path = CONF.lock_path
-
-                        if not local_lock_path:
-                            cleanup_dir = True
-                            local_lock_path = tempfile.mkdtemp()
-
-                        if not os.path.exists(local_lock_path):
-                            fileutils.ensure_tree(local_lock_path)
-
-                        # NOTE(mikal): the lock name cannot contain directory
-                        # separators
-                        safe_name = name.replace(os.sep, '_')
-                        lock_file_name = '%s%s' % (lock_file_prefix, safe_name)
-                        lock_file_path = os.path.join(local_lock_path,
-                                                      lock_file_name)
-
-                        try:
-                            lock = InterProcessLock(lock_file_path)
-                            with lock:
-                                LOG.debug(_('Got file lock "%(lock)s" at '
-                                            '%(path)s for method '
-                                            '"%(method)s"...'),
-                                          {'lock': name,
-                                           'path': lock_file_path,
-                                           'method': f.__name__})
-                                retval = f(*args, **kwargs)
-                        finally:
-                            LOG.debug(_('Released file lock "%(lock)s" at '
-                                        '%(path)s for method "%(method)s"...'),
-                                      {'lock': name,
-                                       'path': lock_file_path,
-                                       'method': f.__name__})
-                            # NOTE(vish): This removes the tempdir if we needed
-                            #             to create one. This is used to
-                            #             cleanup the locks left behind by unit
-                            #             tests.
-                            if cleanup_dir:
-                                shutil.rmtree(local_lock_path)
-                    else:
-                        retval = f(*args, **kwargs)
-
-                finally:
-                    local.strong_store.locks_held.remove(name)
-
-            return retval
-        return inner
-    return wrap
-
-
-def synchronized_with_prefix(lock_file_prefix):
-    """Partial object generator for the synchronization decorator.
-
-    Redefine @synchronized in each project like so::
-
-        (in nova/utils.py)
-        from nova.openstack.common import lockutils
-
-        synchronized = lockutils.synchronized_with_prefix('nova-')
-
-
-        (in nova/foo.py)
-        from nova import utils
-
-        @utils.synchronized('mylock')
-        def bar(self, *args):
-           ...
-
-    The lock_file_prefix argument is used to provide lock files on disk with a
-    meaningful prefix. The prefix should end with a hyphen ('-') if specified.
-    """
-
-    return functools.partial(synchronized, lock_file_prefix=lock_file_prefix)
diff --git a/cinder/openstack/common/processutils.py b/cinder/openstack/common/processutils.py
deleted file mode 100644 (file)
index a4dc671..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-# Copyright 2011 OpenStack Foundation.
-# 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.
-
-"""
-System-level utilities and helper functions.
-"""
-
-import errno
-import logging
-import multiprocessing
-import os
-import random
-import shlex
-import signal
-
-from eventlet.green import subprocess
-from eventlet import greenthread
-import six
-
-from cinder.openstack.common.gettextutils import _
-from cinder.openstack.common import strutils
-
-
-LOG = logging.getLogger(__name__)
-
-
-class InvalidArgumentError(Exception):
-    def __init__(self, message=None):
-        super(InvalidArgumentError, self).__init__(message)
-
-
-class UnknownArgumentError(Exception):
-    def __init__(self, message=None):
-        super(UnknownArgumentError, self).__init__(message)
-
-
-class ProcessExecutionError(Exception):
-    def __init__(self, stdout=None, stderr=None, exit_code=None, cmd=None,
-                 description=None):
-        self.exit_code = exit_code
-        self.stderr = stderr
-        self.stdout = stdout
-        self.cmd = cmd
-        self.description = description
-
-        if description is None:
-            description = _("Unexpected error while running command.")
-        if exit_code is None:
-            exit_code = '-'
-        message = _('%(description)s\n'
-                    'Command: %(cmd)s\n'
-                    'Exit code: %(exit_code)s\n'
-                    'Stdout: %(stdout)r\n'
-                    'Stderr: %(stderr)r') % {'description': description,
-                                             'cmd': cmd,
-                                             'exit_code': exit_code,
-                                             'stdout': stdout,
-                                             'stderr': stderr}
-        super(ProcessExecutionError, self).__init__(message)
-
-
-class NoRootWrapSpecified(Exception):
-    def __init__(self, message=None):
-        super(NoRootWrapSpecified, self).__init__(message)
-
-
-def _subprocess_setup():
-    # Python installs a SIGPIPE handler by default. This is usually not what
-    # non-Python subprocesses expect.
-    signal.signal(signal.SIGPIPE, signal.SIG_DFL)
-
-
-def execute(*cmd, **kwargs):
-    """Helper method to shell out and execute a command through subprocess.
-
-    Allows optional retry.
-
-    :param cmd:             Passed to subprocess.Popen.
-    :type cmd:              string
-    :param process_input:   Send to opened process.
-    :type process_input:    string
-    :param env_variables:   Environment variables and their values that
-                            will be set for the process.
-    :type env_variables:    dict
-    :param check_exit_code: Single bool, int, or list of allowed exit
-                            codes.  Defaults to [0].  Raise
-                            :class:`ProcessExecutionError` unless
-                            program exits with one of these code.
-    :type check_exit_code:  boolean, int, or [int]
-    :param delay_on_retry:  True | False. Defaults to True. If set to True,
-                            wait a short amount of time before retrying.
-    :type delay_on_retry:   boolean
-    :param attempts:        How many times to retry cmd.
-    :type attempts:         int
-    :param run_as_root:     True | False. Defaults to False. If set to True,
-                            the command is prefixed by the command specified
-                            in the root_helper kwarg.
-    :type run_as_root:      boolean
-    :param root_helper:     command to prefix to commands called with
-                            run_as_root=True
-    :type root_helper:      string
-    :param shell:           whether or not there should be a shell used to
-                            execute this command. Defaults to false.
-    :type shell:            boolean
-    :param loglevel:        log level for execute commands.
-    :type loglevel:         int.  (Should be logging.DEBUG or logging.INFO)
-    :returns:               (stdout, stderr) from process execution
-    :raises:                :class:`UnknownArgumentError` on
-                            receiving unknown arguments
-    :raises:                :class:`ProcessExecutionError`
-    """
-
-    process_input = kwargs.pop('process_input', None)
-    env_variables = kwargs.pop('env_variables', None)
-    check_exit_code = kwargs.pop('check_exit_code', [0])
-    ignore_exit_code = False
-    delay_on_retry = kwargs.pop('delay_on_retry', True)
-    attempts = kwargs.pop('attempts', 1)
-    run_as_root = kwargs.pop('run_as_root', False)
-    root_helper = kwargs.pop('root_helper', '')
-    shell = kwargs.pop('shell', False)
-    loglevel = kwargs.pop('loglevel', logging.DEBUG)
-
-    if isinstance(check_exit_code, bool):
-        ignore_exit_code = not check_exit_code
-        check_exit_code = [0]
-    elif isinstance(check_exit_code, int):
-        check_exit_code = [check_exit_code]
-
-    if kwargs:
-        raise UnknownArgumentError(_('Got unknown keyword args: %r') % kwargs)
-
-    if run_as_root and hasattr(os, 'geteuid') and os.geteuid() != 0:
-        if not root_helper:
-            raise NoRootWrapSpecified(
-                message=_('Command requested root, but did not '
-                          'specify a root helper.'))
-        cmd = shlex.split(root_helper) + list(cmd)
-
-    cmd = map(str, cmd)
-    sanitized_cmd = strutils.mask_password(' '.join(cmd))
-
-    while attempts > 0:
-        attempts -= 1
-        try:
-            LOG.log(loglevel, _('Running cmd (subprocess): %s'), sanitized_cmd)
-            _PIPE = subprocess.PIPE  # pylint: disable=E1101
-
-            if os.name == 'nt':
-                preexec_fn = None
-                close_fds = False
-            else:
-                preexec_fn = _subprocess_setup
-                close_fds = True
-
-            obj = subprocess.Popen(cmd,
-                                   stdin=_PIPE,
-                                   stdout=_PIPE,
-                                   stderr=_PIPE,
-                                   close_fds=close_fds,
-                                   preexec_fn=preexec_fn,
-                                   shell=shell,
-                                   env=env_variables)
-            result = None
-            for _i in six.moves.range(20):
-                # NOTE(russellb) 20 is an arbitrary number of retries to
-                # prevent any chance of looping forever here.
-                try:
-                    if process_input is not None:
-                        result = obj.communicate(process_input)
-                    else:
-                        result = obj.communicate()
-                except OSError as e:
-                    if e.errno in (errno.EAGAIN, errno.EINTR):
-                        continue
-                    raise
-                break
-            obj.stdin.close()  # pylint: disable=E1101
-            _returncode = obj.returncode  # pylint: disable=E1101
-            LOG.log(loglevel, 'Result was %s' % _returncode)
-            if not ignore_exit_code and _returncode not in check_exit_code:
-                (stdout, stderr) = result
-                sanitized_stdout = strutils.mask_password(stdout)
-                sanitized_stderr = strutils.mask_password(stderr)
-                raise ProcessExecutionError(exit_code=_returncode,
-                                            stdout=sanitized_stdout,
-                                            stderr=sanitized_stderr,
-                                            cmd=sanitized_cmd)
-            return result
-        except ProcessExecutionError:
-            if not attempts:
-                raise
-            else:
-                LOG.log(loglevel, _('%r failed. Retrying.'), sanitized_cmd)
-                if delay_on_retry:
-                    greenthread.sleep(random.randint(20, 200) / 100.0)
-        finally:
-            # NOTE(termie): this appears to be necessary to let the subprocess
-            #               call clean something up in between calls, without
-            #               it two execute calls in a row hangs the second one
-            greenthread.sleep(0)
-
-
-def trycmd(*args, **kwargs):
-    """A wrapper around execute() to more easily handle warnings and errors.
-
-    Returns an (out, err) tuple of strings containing the output of
-    the command's stdout and stderr.  If 'err' is not empty then the
-    command can be considered to have failed.
-
-    :discard_warnings   True | False. Defaults to False. If set to True,
-                        then for succeeding commands, stderr is cleared
-
-    """
-    discard_warnings = kwargs.pop('discard_warnings', False)
-
-    try:
-        out, err = execute(*args, **kwargs)
-        failed = False
-    except ProcessExecutionError as exn:
-        out, err = '', six.text_type(exn)
-        failed = True
-
-    if not failed and discard_warnings and err:
-        # Handle commands that output to stderr but otherwise succeed
-        err = ''
-
-    return out, err
-
-
-def ssh_execute(ssh, cmd, process_input=None,
-                addl_env=None, check_exit_code=True):
-    sanitized_cmd = strutils.mask_password(cmd)
-    LOG.debug('Running cmd (SSH): %s', sanitized_cmd)
-    if addl_env:
-        raise InvalidArgumentError(_('Environment not supported over SSH'))
-
-    if process_input:
-        # This is (probably) fixable if we need it...
-        raise InvalidArgumentError(_('process_input not supported over SSH'))
-
-    stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd)
-    channel = stdout_stream.channel
-
-    # NOTE(justinsb): This seems suspicious...
-    # ...other SSH clients have buffering issues with this approach
-    stdout = stdout_stream.read()
-    sanitized_stdout = strutils.mask_password(stdout)
-    stderr = stderr_stream.read()
-    sanitized_stderr = strutils.mask_password(stderr)
-
-    stdin_stream.close()
-
-    exit_status = channel.recv_exit_status()
-
-    # exit_status == -1 if no exit code was returned
-    if exit_status != -1:
-        LOG.debug('Result was %s' % exit_status)
-        if check_exit_code and exit_status != 0:
-            raise ProcessExecutionError(exit_code=exit_status,
-                                        stdout=sanitized_stdout,
-                                        stderr=sanitized_stderr,
-                                        cmd=sanitized_cmd)
-
-    return (sanitized_stdout, sanitized_stderr)
-
-
-def get_worker_count():
-    """Utility to get the default worker count.
-
-    @return: The number of CPUs if that can be determined, else a default
-             worker count of 1 is returned.
-    """
-    try:
-        return multiprocessing.cpu_count()
-    except NotImplementedError:
-        return 1
index bfd2f8979369bdbc981f474bdcc83f2d4ece17a1..0bb4e6d2e491c82e30a55a6a6be597854a28b72e 100644 (file)
@@ -22,6 +22,7 @@ import inspect
 import os
 import random
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.db import exception as db_exc
 from oslo import messaging
@@ -36,7 +37,6 @@ from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
 from cinder.openstack.common import loopingcall
-from cinder.openstack.common import processutils
 from cinder.openstack.common import service
 from cinder import rpc
 from cinder import version
index 16d4860a09948f5cb6e475be4896e915f1286107..1f64ccc28f510a288cc992a170fd04b977250e15 100644 (file)
@@ -24,13 +24,14 @@ inline callbacks.
 import logging
 import os
 import shutil
-import tempfile
 import uuid
 
 import fixtures
 import mock
 import mox
+from oslo.concurrency import lockutils
 from oslo.config import cfg
+from oslo.config import fixture as config_fixture
 from oslo.messaging import conffixture as messaging_conffixture
 from oslo.utils import strutils
 from oslo.utils import timeutils
@@ -187,7 +188,11 @@ class TestCase(testtools.TestCase):
 
         self.override_config('fatal_exception_format_errors', True)
         # This will be cleaned up by the NestedTempfile fixture
-        self.override_config('lock_path', tempfile.mkdtemp())
+        lock_path = self.useFixture(fixtures.TempDir()).path
+        self.fixture = self.useFixture(
+            config_fixture.Config(lockutils.CONF))
+        self.fixture.config(lock_path=lock_path,
+                            group='oslo_concurrency')
         self.override_config('policy_file',
                              os.path.join(
                                  os.path.abspath(
index 727f407d6b3002666e4bbf6e53a604b01aa705cb..a1f0c54ac40267fb7f2357b52e1b066240f0f8a3 100644 (file)
 # under the License.
 
 import ast
-import tempfile
 
+import fixtures
+from oslo.concurrency import lockutils
 from oslo.config import cfg
+from oslo.config import fixture as config_fixture
 from oslo.serialization import jsonutils
 from oslo.utils import timeutils
 import webob
@@ -45,10 +47,13 @@ class AdminActionsTest(test.TestCase):
     def setUp(self):
         super(AdminActionsTest, self).setUp()
 
-        self.tempdir = tempfile.mkdtemp()
+        self.tempdir = self.useFixture(fixtures.TempDir()).path
+        self.fixture = self.useFixture(config_fixture.Config(lockutils.CONF))
+        self.fixture.config(lock_path=self.tempdir,
+                            group='oslo_concurrency')
+        self.fixture.config(disable_process_locking=True,
+                            group='oslo_concurrency')
         self.flags(rpc_backend='cinder.openstack.common.rpc.impl_fake')
-        self.flags(lock_path=self.tempdir,
-                   disable_process_locking=True)
 
         self.volume_api = volume_api.API()
         cast_as_call.mock_cast_as_call(self.volume_api.volume_rpcapi.client)
index 5f5978b993b314e6dc308eed11bf580033310b18..5662eb028ebf1fe5b7697fc8b189a56abbf25778 100644 (file)
@@ -16,13 +16,14 @@ import os.path
 import string
 import time
 
+from oslo.concurrency import processutils as putils
+
 from cinder.brick import exception
 from cinder.brick.initiator import connector
 from cinder.brick.initiator import host_driver
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
 from cinder.openstack.common import loopingcall
-from cinder.openstack.common import processutils as putils
 from cinder import test
 
 LOG = logging.getLogger(__name__)
index 11a317d9adbbd6ece20b36d5024d22ca06107de1..156c9a5ac4ae10396a230d5c4ae9c6ea46ba7fa1 100644 (file)
 #    under the License.
 
 import mox
+from oslo.concurrency import processutils
 
 from cinder.brick import exception
 from cinder.brick.local_dev import lvm as brick
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume import configuration as conf
 
index 8e75e790a1a332d2f9a237f538b34fb1cbe9766e..2cae17ffc526014dc6866bda296a6d1cd9ad23ed 100644 (file)
@@ -17,9 +17,9 @@
 import re
 
 from eventlet import greenthread
+from oslo.concurrency import processutils
 
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 
 LOG = logging.getLogger(__name__)
index 409a3a983dcf1a21657953c03a86290bcf5f3e1b..7827b1c20b438b001b024ed618a72f3fcb2251f6 100644 (file)
@@ -21,6 +21,7 @@ import tempfile
 import uuid
 
 import mock
+from oslo.concurrency import processutils
 from oslo.serialization import jsonutils
 import six
 
@@ -31,7 +32,6 @@ from cinder import db
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume.drivers import rbd as rbddriver
 
index aeca67646630e5a342d0eccfb73120ca6299ae61..f50af7338307c0b47e7b12de6dfbb7d3669602b0 100644 (file)
@@ -22,12 +22,13 @@ import json
 import os
 import posix
 
+from oslo.concurrency import processutils as putils
+
 from cinder.backup.drivers import tsm
 from cinder import context
 from cinder import db
 from cinder import exception
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import test
 from cinder import utils
 
index 6d6200b997a06203bfcfe19658865ecc7e52ffd0..4148d59d8692839add03c614bb38d380c69e2632 100644 (file)
@@ -17,9 +17,9 @@ import os
 import re
 
 import mock
+from oslo.concurrency import processutils
 
 from cinder import exception
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume import configuration as conf
 from cinder.volume.drivers.emc.emc_cli_fc import EMCCLIFCDriver
@@ -1155,7 +1155,7 @@ Time Remaining:  0 second(s)
         fake_cli.assert_has_calls(expect_cmd)
 
     @mock.patch(
-        "cinder.openstack.common.processutils.execute",
+        "oslo.concurrency.processutils.execute",
         mock.Mock(
             return_value=(
                 "fakeportal iqn.1992-04.fake.com:fake.apm00123907237.a8", 0)))
@@ -2474,7 +2474,7 @@ class EMCVNXCLIDriverFCTestCase(test.TestCase):
             return None
 
     @mock.patch(
-        "cinder.openstack.common.processutils.execute",
+        "oslo.concurrency.processutils.execute",
         mock.Mock(
             return_value=(
                 "fakeportal iqn.1992-04.fake.com:fake.apm00123907237.a8", 0)))
index 4324bed0505fca67766134f7c481406eea3d02f0..5139cbbc1747c4c9df8e82d7b1b268f7322636e9 100644 (file)
 import time
 
 import mox
+from oslo.concurrency import processutils
 import paramiko
 
 from cinder import context
 from cinder import exception
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume import configuration as conf
 from cinder.volume.drivers import eqlx
index e839255c8cb6c38a6b85a547f0a45634bbfc21ce..c433f22761e1e8342f57fb86a69a20fb96d0dd54 100644 (file)
@@ -26,6 +26,7 @@ import mox as mox_lib
 from mox import IgnoreArg
 from mox import IsA
 from mox import stubout
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -37,7 +38,6 @@ from cinder import exception
 from cinder.i18n import _
 from cinder.image import image_utils
 from cinder.openstack.common import imageutils
-from cinder.openstack.common import processutils as putils
 from cinder import test
 from cinder import utils
 from cinder.volume import configuration as conf
index 9fd1f6abbda63140bf51e0732055d4dd1455af88..54e760b9454ae6778c2ec1663ba433cf27b2e17a 100644 (file)
@@ -18,6 +18,7 @@ import shutil
 import tempfile
 
 import mock
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -25,7 +26,6 @@ from cinder import context
 from cinder import exception
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder import utils
 from cinder.volume import configuration as conf
index 11b294f42dfc3d50d1d50ee8cb0bc3bbd7037c6b..a190470849df20219dac760823cf35a9033f790c 100644 (file)
@@ -180,7 +180,7 @@ class IBMNASDriverTestCase(test.TestCase):
 
     @mock.patch('cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver.'
                 '_ssh_operation')
-    @mock.patch('cinder.openstack.common.processutils.execute')
+    @mock.patch('oslo.concurrency.processutils.execute')
     def test_create_ibmnas_snap_mount_point_provided(self, mock_ssh,
                                                      mock_execute):
         """Create ibmnas snap if mount point is provided."""
@@ -195,7 +195,7 @@ class IBMNASDriverTestCase(test.TestCase):
 
     @mock.patch('cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver.'
                 '_ssh_operation')
-    @mock.patch('cinder.openstack.common.processutils.execute')
+    @mock.patch('oslo.concurrency.processutils.execute')
     def test_create_ibmnas_snap_nas_gpfs(self, mock_execute, mock_ssh):
         """Create ibmnas snap if mount point is provided."""
 
@@ -300,7 +300,7 @@ class IBMNASDriverTestCase(test.TestCase):
                           self.TEST_EXTEND_SIZE_IN_GB)
 
     @mock.patch('cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver._run_ssh')
-    @mock.patch('cinder.openstack.common.processutils.execute')
+    @mock.patch('oslo.concurrency.processutils.execute')
     def test_delete_snapfiles(self, mock_execute, mock_ssh):
         """Delete_snapfiles test case."""
 
@@ -316,7 +316,7 @@ class IBMNASDriverTestCase(test.TestCase):
                               self.TEST_MNT_POINT)
 
     @mock.patch('cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver._run_ssh')
-    @mock.patch('cinder.openstack.common.processutils.execute')
+    @mock.patch('oslo.concurrency.processutils.execute')
     def test_delete_snapfiles_nas_gpfs(self, mock_execute, mock_ssh):
         """Delete_snapfiles for gpfs-nas platform test case."""
 
@@ -397,7 +397,7 @@ class IBMNASDriverTestCase(test.TestCase):
                 '_get_provider_location')
     @mock.patch('cinder.volume.drivers.ibm.ibmnas.IBMNAS_NFSDriver.'
                 '_get_mount_point_for_share')
-    @mock.patch('cinder.openstack.common.processutils.execute')
+    @mock.patch('oslo.concurrency.processutils.execute')
     def test_delete_snapshot(self, mock_execute, mock_mount, mock_provider):
         """Delete snapshot simple test case."""
 
index 025a12a6c611d126bd1cb62399b20eabf24cdceb..f26afd9389e47298cb8b6efcdeb8cc48dd4f2bf7 100644 (file)
@@ -20,6 +20,7 @@ import tempfile
 
 import mock
 import mox
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -27,7 +28,6 @@ from cinder import context
 from cinder import exception
 from cinder.image import image_utils
 from cinder.openstack.common import fileutils
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder import utils
 from cinder.volume import utils as volume_utils
index 0c9ac42a4de97f8ed63ffb7c488263ee9c3104ff..6d2d4c9b59204b778fb639bbec6f6d1d67f61032 100644 (file)
@@ -15,8 +15,8 @@
 import platform
 
 import mock
+from oslo.concurrency import processutils as putils
 
-from cinder.openstack.common import processutils as putils
 from cinder import test
 from cinder import version
 from cinder.volume.drivers.netapp import utils as na_utils
index 15ef87f219aa361dace05953cc88aa2a680aad3f..1f871824248a8143dcc41f844bca6e3583685712 100644 (file)
@@ -17,10 +17,10 @@ import json
 import urllib2
 
 import mock
+from oslo.concurrency import processutils
 from oslo.utils import units
 
 from cinder import exception
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume.drivers import pure
 
index b547f72ae94fb16d6b6648239fe919e0e5f94ffa..f63271cd2e1f33c4482a4d34068880427394abae 100644 (file)
@@ -22,6 +22,7 @@ Unit Tests for remote procedure calls using queue
 
 import mock
 import mox
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.db import exception as db_exc
 
@@ -29,7 +30,6 @@ from cinder import context
 from cinder import db
 from cinder import exception
 from cinder import manager
-from cinder.openstack.common import processutils
 from cinder import service
 from cinder import test
 from cinder import wsgi
index fe298fe6c59a4437b7e288dc83252655ee397ba5..4bf1f379c18e6f472a6af0c9a0bf3d1237f579b0 100644 (file)
@@ -19,10 +19,10 @@ import contextlib
 import os
 import tempfile
 
+from oslo.concurrency import processutils
 from oslo.utils import units
 
 from cinder.image import image_utils
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume.drivers.sheepdog import SheepdogDriver
 
index 8c6bfb023d7809357df53294bb2b226ccdd1a060..0baed6a051410bee652ec0a3e4a06a8c259d0437 100644 (file)
@@ -23,6 +23,7 @@ import re
 import time
 
 import mock
+from oslo.concurrency import processutils
 from oslo.utils import excutils
 from oslo.utils import importutils
 from oslo.utils import units
@@ -31,7 +32,6 @@ from cinder import context
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.tests import utils as testutils
 from cinder import utils
index 7f0f7912ef7104dde6ebf7a7c18cce709d0a2f83..80decf5980f967ee78316702b8930bc0a34b98ba 100644 (file)
@@ -21,6 +21,7 @@ import tempfile
 import uuid
 
 import mock
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import timeutils
 import paramiko
@@ -30,7 +31,6 @@ import cinder
 from cinder.brick.initiator import connector
 from cinder.brick.initiator import linuxfc
 from cinder import exception
-from cinder.openstack.common import processutils as putils
 from cinder import ssh_utils
 from cinder import test
 from cinder import utils
index 3916692fa98a4b5ac37db7c1a635839ac97a2603..0c0a1f127f0a4db3b2d72643c4c8a0a1eef2b6c6 100644 (file)
@@ -19,6 +19,7 @@ import os
 import re
 
 import mock
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import importutils
 
@@ -26,7 +27,6 @@ from cinder import context
 from cinder import db
 from cinder import exception
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.tests import fake_notifier
 from cinder import utils
index 09f20f2e84efaa4f343520a3eecf60e4f057eefd..fa3157a475d110cf54d36d5eeb40ff35279a8bcf 100644 (file)
 
 import mock
 from mock import patch
+from oslo.concurrency import processutils
 
 from cinder import exception
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.zonemanager.drivers.brocade.brcd_fc_zone_client_cli \
     import BrcdFCZoneClientCLI
index f1e32486af4f5a04dc8e4e0f03430f9a57b406dd..642854f49c596a268dac1c1ac630b87b445dffe0 100644 (file)
@@ -18,9 +18,9 @@
 """Unit tests for Cisco fc zone client cli."""
 
 from mock import patch
+from oslo.concurrency import processutils
 
 from cinder import exception
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.zonemanager.drivers.cisco.cisco_fc_zone_client_cli \
     import CiscoFCZoneClientCLI
index f0cbb9fc16dc3d22ee5e4afb6b83d63a0c435669..d68385d52cb9cc099d2c49b7c48bfb1a5e688b88 100644 (file)
 
 """Unit tests for Cisco FC zone driver."""
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import importutils
 
 from cinder import exception
-from cinder.openstack.common import processutils
 from cinder import test
 from cinder.volume import configuration as conf
 
index ba27646b9df416549daeb9369499580d0ef600e2..15ee88b836dead63a4dcfdf408396eaaa6c12b31 100644 (file)
@@ -35,6 +35,8 @@ from xml import sax
 from xml.sax import expatreader
 from xml.sax import saxutils
 
+from oslo.concurrency import lockutils
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import importutils
 from oslo.utils import timeutils
@@ -43,9 +45,7 @@ import six
 from cinder.brick.initiator import connector
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 
 
 CONF = cfg.CONF
index c02231e706c84194e2892bf179e17185ab4743df..82d5b195859087fe9d7bb7c5c0f43aa3de29e468 100644 (file)
@@ -19,6 +19,7 @@ Drivers for volumes.
 
 import time
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import excutils
 
@@ -27,7 +28,6 @@ from cinder.i18n import _, _LE
 from cinder.image import image_utils
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume import iscsi
 from cinder.volume import rpcapi as volume_rpcapi
index ab48789e17c252a4a8bb48c3722b649f3f42e06f..ad350bee05f41bd1e6655653ce0d95109b897347 100644 (file)
@@ -26,6 +26,7 @@ import math
 import urllib
 import urllib2
 
+from oslo.concurrency import lockutils
 from oslo.config import cfg
 from oslo.serialization import jsonutils
 from oslo.utils import units
@@ -33,7 +34,6 @@ import six.moves.urllib.parse as urlparse
 
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.volume import driver
 from cinder.volume import volume_types
index eeee3877fad40441a6e50b2a7b832dbd0062bb4d..9cd7bd92760baa9ee29136404ce1d1b23456ce8d 100644 (file)
@@ -21,6 +21,8 @@ import random
 import re
 import time
 
+from oslo.concurrency import lockutils
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.serialization import jsonutils as json
 from oslo.utils import excutils
@@ -30,10 +32,8 @@ import six
 from cinder import exception
 from cinder.exception import EMCVnxCLICmdError
 from cinder.i18n import _, _LE, _LI, _LW
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.openstack.common import loopingcall
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.configuration import Configuration
 from cinder.volume.drivers.san import san
index 82e91c46b3dc18d8711deeae5445104e7ae9fb82..7ce2cc015e05b78e0090c22f0fed8f8f1cbba8d4 100644 (file)
@@ -21,13 +21,13 @@ import random
 import eventlet
 from eventlet import greenthread
 import greenlet
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import excutils
 
 from cinder import exception
 from cinder.i18n import _, _LE, _LW, _LI
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import ssh_utils
 from cinder import utils
 from cinder.volume.drivers.san import SanISCSIDriver
index 89569dc67b6ca7ce55222ce1a1b02724c8648cf3..8a17fccf06d0bbb78870cbf5d03ca6547d439f2c 100644 (file)
 FC Drivers for ETERNUS DX arrays based on SMI-S.
 
 """
+from oslo.concurrency import lockutils
 import six
 
 from cinder import context
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.volume import driver
 from cinder.volume.drivers import fujitsu_eternus_dx_common
index 10f4a21da56dd73a009a651acf7485d55508598d..ab41f6eda75e932ea2fab73bd502deb5206b8ccf 100644 (file)
 ISCSI Drivers for ETERNUS DX arrays based on SMI-S.
 
 """
+from oslo.concurrency import lockutils
 import six
 
 from cinder import context
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.volume import driver
 from cinder.volume.drivers import fujitsu_eternus_dx_common
index 0661c054c0ca3f954ef10d28c4f15304c0de73da..0558cff93ef8900a23077299147e95da1e89305f 100644 (file)
@@ -18,6 +18,7 @@ import os
 import stat
 import time
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -29,7 +30,6 @@ from cinder.i18n import _, _LE, _LI, _LW
 from cinder.image import image_utils
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.drivers import remotefs as remotefs_drv
 
index a4694f802a86ecaad79be1d7a58ceb4882e94233..e48af0b5dd799c1cd8cd2c94f8630c1b582203f9 100644 (file)
@@ -21,6 +21,7 @@ import os
 import time
 from xml.etree import ElementTree as ETree
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import excutils
 from oslo.utils import units
@@ -29,7 +30,6 @@ from cinder import exception
 from cinder.i18n import _, _LE, _LI
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder.volume.drivers.hds.hnas_backend import HnasBackend
 from cinder.volume.drivers import nfs
 
index 3390295f21228d9f8ba607acde50aae6036ca305..3df38b8d31aeeb886176f9979d6866ddc9fd0af4 100644 (file)
@@ -16,14 +16,14 @@ import inspect
 import os
 import shlex
 
+from oslo.concurrency import lockutils
+from oslo.concurrency import processutils as putils
 from oslo.utils import excutils
 import six
 
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 
 SMPL = 1
index 34bd88bd9486141dc3b6d90c58440c8a692a709d..17ba43ceb49a870645bd6bbe6d8a756907b8e6ae 100644 (file)
@@ -20,6 +20,7 @@ import shlex
 import threading
 import time
 
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import excutils
 import six
@@ -28,7 +29,6 @@ from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
 from cinder.openstack.common import loopingcall
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 from cinder.volume.drivers.hitachi import hbsd_basiclib as basic_lib
 
index 923458b56706f1f91c5091ed9ee63d5a9ea03da2..5025495c1cbd8f6c70724ce546dd06d61cd1f020 100644 (file)
@@ -21,6 +21,7 @@ import os
 import re
 import shutil
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -29,7 +30,6 @@ from cinder.i18n import _
 from cinder.image import image_utils
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume import driver
 
index 294af38cbc38f9032347cd83a2e8a67f4255da52..120c553d56295f4bcdde97e01ddebd9c6a7087c8 100644 (file)
@@ -32,6 +32,7 @@ Notes:
 import os
 import re
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -39,7 +40,6 @@ from cinder import exception
 from cinder.i18n import _, _LI, _LW
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.drivers import nfs
 from cinder.volume.drivers.remotefs import nas_opts
index 9f90da43a5e8be400eb33cf6ad4fde49abd3bb4a..0e58d93becc1ae45ee0f2445fcb69bceb3420315 100644 (file)
 
 import re
 
+from oslo.concurrency import processutils
+
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 
 LOG = logging.getLogger(__name__)
 
index a4035f81bcb809e68021dfacc80f48f1ea7db8e4..95c885902c1b29dcdb908b0578f9ac065e0ed386 100644 (file)
@@ -22,6 +22,7 @@ import math
 import os
 import socket
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -32,7 +33,6 @@ from cinder.i18n import _, _LE, _LI, _LW
 from cinder.image import image_utils
 from cinder.openstack.common import fileutils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume import driver
 from cinder.volume import utils as volutils
index 288a270059ed24e4954d29f8ef73acca5924f21f..4bb035f479a5fedb84069bf72b6d22a406d617ce 100644 (file)
@@ -23,6 +23,7 @@ from threading import Timer
 import time
 import uuid
 
+from oslo.concurrency import processutils
 from oslo.utils import excutils
 from oslo.utils import units
 import six
@@ -32,7 +33,6 @@ from cinder import exception
 from cinder.i18n import _, _LE, _LI, _LW
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.drivers.netapp.api import NaApiError
 from cinder.volume.drivers.netapp.api import NaElement
index a4fd34afd98eec6dcd3b59a08f27e4d3af82feb7..da5f85807f0a20a795fd8aa4fbe2c68bb28d4abe 100644 (file)
@@ -28,6 +28,7 @@ import platform
 import socket
 import uuid
 
+from oslo.concurrency import processutils as putils
 from oslo.utils import timeutils
 import six
 
@@ -35,7 +36,6 @@ from cinder import context
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 from cinder import version
 from cinder.volume.drivers.netapp.api import NaApiError
index e671e979851c06443a008bdf006bfd80a59fa655..9276ab9a05f5c9f49d8daef2b1b5bef80476177d 100644 (file)
@@ -16,6 +16,7 @@
 import errno
 import os
 
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -24,7 +25,6 @@ from cinder import exception
 from cinder.i18n import _
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 from cinder.volume.drivers import remotefs
 
index 91334975e138863f9ac2f197dec17bf630679cbf..923b91e92c7c3ffdf7b0ebdbfe3dbedc4fd06243 100644 (file)
@@ -24,6 +24,7 @@ import re
 import urllib2
 import uuid
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import excutils
 from oslo.utils import units
@@ -31,7 +32,6 @@ from oslo.utils import units
 from cinder import exception
 from cinder.i18n import _LE, _LI, _LW
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.drivers.san import san
 
index 6cc809b95804498fe1d86b5179ea705244926363..e8a7b091dc768a4b82d79c0266556c0b1093cd7f 100644 (file)
@@ -20,6 +20,7 @@ import os
 import re
 import tempfile
 
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -27,7 +28,6 @@ from cinder import exception
 from cinder.i18n import _, _LE, _LI, _LW
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder.volume import driver
 
 LOG = logging.getLogger(__name__)
index b334002495dd1c56a6583672a9f1c881d8c0e73f..487d39859c1ccb3e0b484cfd222a10d7d7ab259b 100644 (file)
@@ -21,12 +21,12 @@ operations on the SAN.
 """
 
 from lxml import etree
+from oslo.concurrency import processutils
 from oslo.utils import units
 
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder.volume.drivers.san.san import SanISCSIDriver
 
 
index 5637203d9537f0a4c49e6e0a43b418693f2ff1c0..f187f1fde7cbb9639d43e5ff862acaef00b4a366 100644 (file)
@@ -22,13 +22,13 @@ controller on the SAN hardware.  We expect to access it over SSH or some API.
 import random
 
 from eventlet import greenthread
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import excutils
 
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import ssh_utils
 from cinder import utils
 from cinder.volume import driver
index 0ee092efa928fb43ed2f06b0c229f9ae2f4d76cf..75951852380eb968c5d9c13f502ad1f6f21abcbe 100644 (file)
@@ -22,6 +22,7 @@ import os
 import re
 import tempfile
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -29,7 +30,6 @@ from cinder import exception
 from cinder.i18n import _, _LE
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder.volume import driver
 
 
index a6863b3542023a7aa5a0b940dcba23a6d28eea20..7d2c893fb811707809a7008c5a9931239ac67970 100644 (file)
@@ -16,6 +16,7 @@
 import os
 import re
 
+from oslo.concurrency import processutils as putils
 from oslo.config import cfg
 from oslo.utils import units
 
@@ -24,7 +25,6 @@ from cinder import exception
 from cinder.i18n import _
 from cinder.image import image_utils
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder import utils
 from cinder.volume.drivers import remotefs as remotefs_drv
 
index fd206816f85354181b159c67d8ac7a1deaf506de..e64d0b59d4514c1b80477cf8eca7d371c05d554c 100644 (file)
@@ -12,6 +12,7 @@
 
 import traceback
 
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import timeutils
 import taskflow.engines
@@ -23,7 +24,6 @@ from cinder import flow_utils
 from cinder.i18n import _, _LE, _LI
 from cinder.image import glance
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import utils
 from cinder.volume.flows import common
 from cinder.volume import utils as volume_utils
index e18ce821bc288b38cebb400e27b84b88826003c2..c424499f899c11b88b61bfff9fce64fd41630234 100644 (file)
 import os
 import re
 
+from oslo.concurrency import processutils as putils
+
 from cinder.brick.iscsi import iscsi
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils as putils
 from cinder.volume import utils
 
 LOG = logging.getLogger(__name__)
index 61ae354ade2a5533792f8f7e800abdbacaa02415..ea39be0c0b9c6083d6a78cb91887e8baf29df32f 100644 (file)
@@ -18,6 +18,7 @@
 import math
 
 from Crypto.Random import random
+from oslo.concurrency import processutils
 from oslo.config import cfg
 from oslo.utils import strutils
 from oslo.utils import timeutils
@@ -27,7 +28,6 @@ from cinder.brick.local_dev import lvm as brick_lvm
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import rpc
 from cinder import utils
 
index e54a50cf72c73dd0c3afcb88a9b1a7e4a3dacafd..fc9122f2976c8dcbe7309597fdf7df0f59bfc08a 100644 (file)
@@ -25,12 +25,12 @@ import random
 import re
 
 from eventlet import greenthread
+from oslo.concurrency import processutils
 from oslo.utils import excutils
 
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import ssh_utils
 from cinder import utils
 import cinder.zonemanager.drivers.brocade.fc_zone_constants as ZoneConstant
index 96b1629952fca1c6fe7d3f7f6b5eeddc5cc650c4..6740433fbaa40578d9d1fd998acb549fc0c7497a 100644 (file)
@@ -30,13 +30,13 @@ add_connection and delete_connection interfaces.
 """
 
 
+from oslo.concurrency import lockutils
 from oslo.config import cfg
 from oslo.utils import excutils
 from oslo.utils import importutils
 
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.zonemanager.drivers.brocade import brcd_fabric_opts as fabric_opts
 from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver
index 659157a8bbae7519633e0906bf9bca5bb0eea6fa..419489030da0b248b4ee18f34842f59a4b1489f5 100644 (file)
 import random
 
 from eventlet import greenthread
+from oslo.concurrency import processutils
 from oslo.utils import excutils
 import six
 
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import ssh_utils
 from cinder import utils
 from cinder.zonemanager.drivers.cisco import cisco_fabric_opts as fabric_opts
index 8f010dad7d2d39c2a0ab3bcb989f2e40a84fb272..133485fa6bff39c3cb6524d6f67e8d9d292a6147 100644 (file)
@@ -22,13 +22,13 @@ import random
 import re
 
 from eventlet import greenthread
+from oslo.concurrency import processutils
 from oslo.utils import excutils
 import six
 
 from cinder import exception
 from cinder.i18n import _
 from cinder.openstack.common import log as logging
-from cinder.openstack.common import processutils
 from cinder import ssh_utils
 from cinder import utils
 import cinder.zonemanager.drivers.cisco.fc_zone_constants as ZoneConstant
index 15fe0d837bdf52199633593eceb20eddb9fce580..04791c5ea8c3cb091a39efa024fc0b4f0f4dcd7e 100644 (file)
@@ -27,6 +27,7 @@ add_connection and delete_connection interfaces.
 :zone_name_prefix: Used by: class: 'FCZoneDriver'. Defaults to 'openstack'
 """
 
+from oslo.concurrency import lockutils
 from oslo.config import cfg
 from oslo.utils import excutils
 from oslo.utils import importutils
@@ -34,7 +35,6 @@ import six
 
 from cinder import exception
 from cinder.i18n import _
-from cinder.openstack.common import lockutils
 from cinder.openstack.common import log as logging
 from cinder.zonemanager.drivers.cisco import cisco_fabric_opts as fabric_opts
 from cinder.zonemanager.drivers.fc_zone_driver import FCZoneDriver
index 2aa94b42c306ac4eda075a26aca55a62f4045141..0e5235c8bea0437668e9f8713c01c535b308a14f 100644 (file)
 #backdoor_port=<None>
 
 
-#
-# Options defined in cinder.openstack.common.lockutils
-#
-
-# Whether to disable inter-process locks (boolean value)
-#disable_process_locking=false
-
-# Directory to use for lock files. Default to a temp directory
-# (string value)
-#lock_path=<None>
-
-
 #
 # Options defined in cinder.openstack.common.log
 #
index 6152d233ac133f4f4d51b875ffe0a64819ea5a95..7e58f5c8d980918fd423a31c9a63e651dafbe854 100644 (file)
@@ -10,14 +10,12 @@ module=imageutils
 module=install_venv_common
 module=jsonutils
 module=local
-module=lockutils
 module=log
 module=log_handler
 module=loopingcall
 module=middleware
 module=periodic_task
 module=policy
-module=processutils
 module=request_utils
 module=scheduler
 module=scheduler.filters
index 8d5e8676acfbc81fa4b68781b54f33fdd7c3b50f..e2dcbe866c10d8a0a8380529c83af04b06c313ae 100644 (file)
@@ -14,6 +14,7 @@ kombu>=2.5.0
 lxml>=2.3
 netaddr>=0.7.12
 oslo.config>=1.4.0  # Apache-2.0
+oslo.concurrency>=0.1.0 # Apache-2.0
 oslo.db>=1.0.0  # Apache-2.0
 oslo.messaging>=1.4.0
 oslo.rootwrap>=1.3.0