Update requirements from OS Global Requirements.
Update requirements.txt and test-requirements.txt from Global Requirements defined into openstack/requirements project (stable/liberty). Change-Id: I9ecbf5a7fb2c38624cc4f52b13515f8af75a4889 Closes-Bug: #1513118
This commit is contained in:
committed by
Vincent Françoise
parent
7c52a1448d
commit
7c8acebcb2
@@ -2,30 +2,30 @@
|
|||||||
# of appearance. Changing the order has an impact on the overall integration
|
# of appearance. Changing the order has an impact on the overall integration
|
||||||
# process, which may cause wedges in the gate later.
|
# process, which may cause wedges in the gate later.
|
||||||
|
|
||||||
pbr>=0.6,!=0.7,<1.0
|
pbr>=1.6
|
||||||
oslo.config==1.14.0
|
PasteDeploy>=1.5.0
|
||||||
PasteDeploy==1.5.2
|
oslo.config>=2.3.0 # Apache-2.0
|
||||||
oslo.messaging==1.16.0
|
oslo.db>=2.4.1 # Apache-2.0
|
||||||
oslo.db==2.1.0
|
oslo.i18n>=1.5.0 # Apache-2.0
|
||||||
oslo.log>=1.8.0 # Apache-2.0
|
oslo.log>=1.8.0 # Apache-2.0
|
||||||
oslo.i18n>=1.5.0 # Apache-2.0
|
oslo.messaging>=1.16.0,!=1.17.0,!=1.17.1,!=2.6.0,!=2.6.1 # Apache-2.0
|
||||||
oslo.utils==1.8.0 # Apache-2.0
|
oslo.service>=0.7.0 # Apache-2.0
|
||||||
pecan>=0.8
|
oslo.utils>=2.0.0,!=2.6.0 # Apache-2.0
|
||||||
keystonemiddleware>=1.0.0
|
pecan>=1.0.0
|
||||||
six>=1.7.0,<=1.9.0
|
keystonemiddleware>=2.0.0,!=2.4.0
|
||||||
sqlalchemy
|
six>=1.9.0
|
||||||
stevedore>=1.1.0 # Apache-2.0
|
SQLAlchemy>=0.9.9,<1.1.0
|
||||||
WSME>=0.6
|
stevedore>=1.5.0 # Apache-2.0
|
||||||
|
WSME>=0.7
|
||||||
jsonpatch>=1.1
|
jsonpatch>=1.1
|
||||||
enum34==1.0.4
|
enum34;python_version=='2.7' or python_version=='2.6'
|
||||||
|
|
||||||
# watcher Applier
|
# watcher Applier
|
||||||
python-novaclient==2.28.1
|
python-novaclient>=2.28.1,!=2.33.0
|
||||||
python-openstackclient==1.6.0
|
python-openstackclient>=1.5.0
|
||||||
python-neutronclient==3.0.0
|
python-neutronclient>=2.6.0
|
||||||
python-glanceclient==1.1.0
|
python-glanceclient>=0.18.0
|
||||||
python-cinderclient==1.4.0
|
python-cinderclient>=1.3.1
|
||||||
|
|
||||||
# Collector
|
# Collector
|
||||||
python-ceilometerclient==1.5.0
|
python-ceilometerclient>=1.5.0
|
||||||
parsedatetime==1.5
|
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
# of appearance. Changing the order has an impact on the overall integration
|
# of appearance. Changing the order has an impact on the overall integration
|
||||||
# process, which may cause wedges in the gate later.
|
# process, which may cause wedges in the gate later.
|
||||||
|
|
||||||
hacking<0.11,>=0.10.0
|
hacking<0.11,>=0.10
|
||||||
coverage>=3.6
|
coverage>=3.6
|
||||||
discover
|
discover
|
||||||
python-subunit>=0.0.18
|
python-subunit>=0.0.18
|
||||||
oslotest==1.8.0 # Apache-2.0
|
oslotest>=1.10.0 # Apache-2.0
|
||||||
testrepository>=0.0.18
|
testrepository>=0.0.18
|
||||||
testscenarios>=0.4
|
testscenarios>=0.4
|
||||||
testtools==1.7.1
|
testtools>=1.4.0
|
||||||
mock==1.3.0
|
mock>=1.2
|
||||||
|
|
||||||
# Doc requirements
|
# Doc requirements
|
||||||
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
|
sphinx>=1.1.2,!=1.2.0,!=1.3b1,<1.3
|
||||||
oslosphinx==3.0.0 # Apache-2.0
|
oslosphinx>=2.5.0 # Apache-2.0
|
||||||
sphinxcontrib-pecanwsme>=0.8
|
sphinxcontrib-pecanwsme>=0.8
|
||||||
|
|
||||||
# For PyPI distribution
|
# For PyPI distribution
|
||||||
|
|||||||
@@ -27,19 +27,22 @@ import cinderclient.v2.client as ciclient
|
|||||||
import glanceclient.v2.client as glclient
|
import glanceclient.v2.client as glclient
|
||||||
import keystoneclient.v3.client as ksclient
|
import keystoneclient.v3.client as ksclient
|
||||||
import neutronclient.neutron.client as netclient
|
import neutronclient.neutron.client as netclient
|
||||||
|
import novaclient.client as nvclient
|
||||||
import novaclient.exceptions as nvexceptions
|
import novaclient.exceptions as nvexceptions
|
||||||
import novaclient.v2.client as nvclient
|
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class NovaWrapper(object):
|
class NovaWrapper(object):
|
||||||
|
NOVA_CLIENT_API_VERSION = "2"
|
||||||
|
|
||||||
def __init__(self, creds, session):
|
def __init__(self, creds, session):
|
||||||
self.user = creds['username']
|
self.user = creds['username']
|
||||||
self.session = session
|
self.session = session
|
||||||
self.neutron = None
|
self.neutron = None
|
||||||
self.cinder = None
|
self.cinder = None
|
||||||
self.nova = nvclient.Client("3", session=session)
|
self.nova = nvclient.Client(self.NOVA_CLIENT_API_VERSION,
|
||||||
|
session=session)
|
||||||
self.keystone = ksclient.Client(**creds)
|
self.keystone = ksclient.Client(**creds)
|
||||||
self.glance = None
|
self.glance = None
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ from oslo_config import cfg
|
|||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
|
||||||
from watcher.applier.framework.manager_applier import ApplierManager
|
from watcher.applier.framework.manager_applier import ApplierManager
|
||||||
|
from watcher.common import service
|
||||||
from watcher import i18n
|
from watcher import i18n
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
@@ -33,8 +34,7 @@ _LI = i18n._LI
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
cfg.CONF(sys.argv[1:], project='python-watcher')
|
service.prepare_service(sys.argv)
|
||||||
logging.setup(CONF, 'watcher')
|
|
||||||
|
|
||||||
LOG.info(_LI('Starting server in PID %s') % os.getpid())
|
LOG.info(_LI('Starting server in PID %s') % os.getpid())
|
||||||
LOG.debug("Configuration:")
|
LOG.debug("Configuration:")
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import sys
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
|
from watcher.common import service
|
||||||
from watcher.decision_engine.framework.manager import DecisionEngineManager
|
from watcher.decision_engine.framework.manager import DecisionEngineManager
|
||||||
|
|
||||||
from watcher import i18n
|
from watcher import i18n
|
||||||
@@ -34,8 +35,7 @@ _LI = i18n._LI
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
cfg.CONF(sys.argv[1:], project='python-watcher')
|
service.prepare_service(sys.argv)
|
||||||
logging.setup(CONF, 'watcher')
|
|
||||||
|
|
||||||
LOG.info(_LI('Starting server in PID %s') % os.getpid())
|
LOG.info(_LI('Starting server in PID %s') % os.getpid())
|
||||||
LOG.debug("Configuration:")
|
LOG.debug("Configuration:")
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import eventlet
|
import eventlet
|
||||||
from oslo import messaging
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
import oslo_messaging as messaging
|
||||||
|
|
||||||
from watcher.common.messaging.utils.observable import \
|
from watcher.common.messaging.utils.observable import \
|
||||||
Observable
|
Observable
|
||||||
|
|||||||
@@ -17,10 +17,11 @@
|
|||||||
import signal
|
import signal
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
from oslo import messaging
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import _options
|
from oslo_log import _options
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
import oslo_messaging as messaging
|
||||||
|
from oslo_service import service
|
||||||
from oslo_utils import importutils
|
from oslo_utils import importutils
|
||||||
|
|
||||||
from watcher.common import config
|
from watcher.common import config
|
||||||
@@ -29,7 +30,6 @@ from watcher.common.i18n import _LE
|
|||||||
from watcher.common.i18n import _LI
|
from watcher.common.i18n import _LI
|
||||||
from watcher.common import rpc
|
from watcher.common import rpc
|
||||||
from watcher.objects import base as objects_base
|
from watcher.objects import base as objects_base
|
||||||
from watcher.openstack.common import service
|
|
||||||
|
|
||||||
|
|
||||||
service_opts = [
|
service_opts = [
|
||||||
@@ -125,6 +125,7 @@ _DEFAULT_LOG_LEVELS = ['amqp=WARN', 'amqplib=WARN', 'qpid.messaging=INFO',
|
|||||||
|
|
||||||
|
|
||||||
def prepare_service(argv=[]):
|
def prepare_service(argv=[]):
|
||||||
|
log.register_options(cfg.CONF)
|
||||||
config.parse_args(argv)
|
config.parse_args(argv)
|
||||||
cfg.set_defaults(_options.log_opts,
|
cfg.set_defaults(_options.log_opts,
|
||||||
default_log_levels=_DEFAULT_LOG_LEVELS)
|
default_log_levels=_DEFAULT_LOG_LEVELS)
|
||||||
|
|||||||
@@ -19,13 +19,13 @@ import copy
|
|||||||
|
|
||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
import oslo_messaging as messaging
|
import oslo_messaging as messaging
|
||||||
|
from oslo_utils import versionutils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
from watcher.common.i18n import _
|
from watcher.common.i18n import _
|
||||||
from watcher.common.i18n import _LE
|
from watcher.common.i18n import _LE
|
||||||
from watcher.objects import utils as obj_utils
|
from watcher.objects import utils as obj_utils
|
||||||
from watcher.openstack.common import versionutils
|
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger('object')
|
LOG = logging.getLogger('object')
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ except ImportError:
|
|||||||
|
|
||||||
import eventlet
|
import eventlet
|
||||||
from eventlet import event
|
from eventlet import event
|
||||||
from oslo.config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
# from watcher.openstack.common import eventlet_backdoor
|
# from watcher.openstack.common import eventlet_backdoor
|
||||||
from watcher.openstack.common._i18n import _LE, _LI, _LW
|
from watcher.openstack.common._i18n import _LE, _LI, _LW
|
||||||
|
|||||||
@@ -1,203 +0,0 @@
|
|||||||
# Copyright (c) 2013 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.
|
|
||||||
|
|
||||||
"""
|
|
||||||
Helpers for comparing version strings.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import functools
|
|
||||||
import inspect
|
|
||||||
|
|
||||||
import pkg_resources
|
|
||||||
import six
|
|
||||||
|
|
||||||
from watcher.openstack.common.gettextutils import _
|
|
||||||
from watcher.openstack.common import log as logging
|
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class deprecated(object):
|
|
||||||
"""A decorator to mark callables as deprecated.
|
|
||||||
|
|
||||||
This decorator logs a deprecation message when the callable it decorates is
|
|
||||||
used. The message will include the release where the callable was
|
|
||||||
deprecated, the release where it may be removed and possibly an optional
|
|
||||||
replacement.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
1. Specifying the required deprecated release
|
|
||||||
|
|
||||||
>>> @deprecated(as_of=deprecated.ICEHOUSE)
|
|
||||||
... def a(): pass
|
|
||||||
|
|
||||||
2. Specifying a replacement:
|
|
||||||
|
|
||||||
>>> @deprecated(as_of=deprecated.ICEHOUSE, in_favor_of='f()')
|
|
||||||
... def b(): pass
|
|
||||||
|
|
||||||
3. Specifying the release where the functionality may be removed:
|
|
||||||
|
|
||||||
>>> @deprecated(as_of=deprecated.ICEHOUSE, remove_in=+1)
|
|
||||||
... def c(): pass
|
|
||||||
|
|
||||||
4. Specifying the deprecated functionality will not be removed:
|
|
||||||
>>> @deprecated(as_of=deprecated.ICEHOUSE, remove_in=0)
|
|
||||||
... def d(): pass
|
|
||||||
|
|
||||||
5. Specifying a replacement, deprecated functionality will not be removed:
|
|
||||||
>>> @deprecated(as_of=deprecated.ICEHOUSE, in_favor_of='f()', remove_in=0)
|
|
||||||
... def e(): pass
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# NOTE(morganfainberg): Bexar is used for unit test purposes, it is
|
|
||||||
# expected we maintain a gap between Bexar and Folsom in this list.
|
|
||||||
BEXAR = 'B'
|
|
||||||
FOLSOM = 'F'
|
|
||||||
GRIZZLY = 'G'
|
|
||||||
HAVANA = 'H'
|
|
||||||
ICEHOUSE = 'I'
|
|
||||||
JUNO = 'J'
|
|
||||||
KILO = 'K'
|
|
||||||
|
|
||||||
_RELEASES = {
|
|
||||||
# NOTE(morganfainberg): Bexar is used for unit test purposes, it is
|
|
||||||
# expected we maintain a gap between Bexar and Folsom in this list.
|
|
||||||
'B': 'Bexar',
|
|
||||||
'F': 'Folsom',
|
|
||||||
'G': 'Grizzly',
|
|
||||||
'H': 'Havana',
|
|
||||||
'I': 'Icehouse',
|
|
||||||
'J': 'Juno',
|
|
||||||
'K': 'Kilo',
|
|
||||||
}
|
|
||||||
|
|
||||||
_deprecated_msg_with_alternative = _(
|
|
||||||
'%(what)s is deprecated as of %(as_of)s in favor of '
|
|
||||||
'%(in_favor_of)s and may be removed in %(remove_in)s.')
|
|
||||||
|
|
||||||
_deprecated_msg_no_alternative = _(
|
|
||||||
'%(what)s is deprecated as of %(as_of)s and may be '
|
|
||||||
'removed in %(remove_in)s. It will not be superseded.')
|
|
||||||
|
|
||||||
_deprecated_msg_with_alternative_no_removal = _(
|
|
||||||
'%(what)s is deprecated as of %(as_of)s in favor of %(in_favor_of)s.')
|
|
||||||
|
|
||||||
_deprecated_msg_with_no_alternative_no_removal = _(
|
|
||||||
'%(what)s is deprecated as of %(as_of)s. It will not be superseded.')
|
|
||||||
|
|
||||||
def __init__(self, as_of, in_favor_of=None, remove_in=2, what=None):
|
|
||||||
"""Initialize decorator
|
|
||||||
|
|
||||||
:param as_of: the release deprecating the callable. Constants
|
|
||||||
are define in this class for convenience.
|
|
||||||
:param in_favor_of: the replacement for the callable (optional)
|
|
||||||
:param remove_in: an integer specifying how many releases to wait
|
|
||||||
before removing (default: 2)
|
|
||||||
:param what: name of the thing being deprecated (default: the
|
|
||||||
callable's name)
|
|
||||||
|
|
||||||
"""
|
|
||||||
self.as_of = as_of
|
|
||||||
self.in_favor_of = in_favor_of
|
|
||||||
self.remove_in = remove_in
|
|
||||||
self.what = what
|
|
||||||
|
|
||||||
def __call__(self, func_or_cls):
|
|
||||||
if not self.what:
|
|
||||||
self.what = func_or_cls.__name__ + '()'
|
|
||||||
msg, details = self._build_message()
|
|
||||||
|
|
||||||
if inspect.isfunction(func_or_cls):
|
|
||||||
|
|
||||||
@six.wraps(func_or_cls)
|
|
||||||
def wrapped(*args, **kwargs):
|
|
||||||
LOG.deprecated(msg, details)
|
|
||||||
return func_or_cls(*args, **kwargs)
|
|
||||||
return wrapped
|
|
||||||
elif inspect.isclass(func_or_cls):
|
|
||||||
orig_init = func_or_cls.__init__
|
|
||||||
|
|
||||||
# TODO(tsufiev): change `functools` module to `six` as
|
|
||||||
# soon as six 1.7.4 (with fix for passing `assigned`
|
|
||||||
# argument to underlying `functools.wraps`) is released
|
|
||||||
# and added to the watcher-incubator requrements
|
|
||||||
@functools.wraps(orig_init, assigned=('__name__', '__doc__'))
|
|
||||||
def new_init(self, *args, **kwargs):
|
|
||||||
LOG.deprecated(msg, details)
|
|
||||||
orig_init(self, *args, **kwargs)
|
|
||||||
func_or_cls.__init__ = new_init
|
|
||||||
return func_or_cls
|
|
||||||
else:
|
|
||||||
raise TypeError('deprecated can be used only with functions or '
|
|
||||||
'classes')
|
|
||||||
|
|
||||||
def _get_safe_to_remove_release(self, release):
|
|
||||||
# TODO(dstanek): this method will have to be reimplemented once
|
|
||||||
# when we get to the X release because once we get to the Y
|
|
||||||
# release, what is Y+2?
|
|
||||||
new_release = chr(ord(release) + self.remove_in)
|
|
||||||
if new_release in self._RELEASES:
|
|
||||||
return self._RELEASES[new_release]
|
|
||||||
else:
|
|
||||||
return new_release
|
|
||||||
|
|
||||||
def _build_message(self):
|
|
||||||
details = dict(what=self.what,
|
|
||||||
as_of=self._RELEASES[self.as_of],
|
|
||||||
remove_in=self._get_safe_to_remove_release(self.as_of))
|
|
||||||
|
|
||||||
if self.in_favor_of:
|
|
||||||
details['in_favor_of'] = self.in_favor_of
|
|
||||||
if self.remove_in > 0:
|
|
||||||
msg = self._deprecated_msg_with_alternative
|
|
||||||
else:
|
|
||||||
# There are no plans to remove this function, but it is
|
|
||||||
# now deprecated.
|
|
||||||
msg = self._deprecated_msg_with_alternative_no_removal
|
|
||||||
else:
|
|
||||||
if self.remove_in > 0:
|
|
||||||
msg = self._deprecated_msg_no_alternative
|
|
||||||
else:
|
|
||||||
# There are no plans to remove this function, but it is
|
|
||||||
# now deprecated.
|
|
||||||
msg = self._deprecated_msg_with_no_alternative_no_removal
|
|
||||||
return msg, details
|
|
||||||
|
|
||||||
|
|
||||||
def is_compatible(requested_version, current_version, same_major=True):
|
|
||||||
"""Determine whether `requested_version` is satisfied by
|
|
||||||
`current_version`; in other words, `current_version` is >=
|
|
||||||
`requested_version`.
|
|
||||||
|
|
||||||
:param requested_version: version to check for compatibility
|
|
||||||
:param current_version: version to check against
|
|
||||||
:param same_major: if True, the major version must be identical between
|
|
||||||
`requested_version` and `current_version`. This is used when a
|
|
||||||
major-version difference indicates incompatibility between the two
|
|
||||||
versions. Since this is the common-case in practice, the default is
|
|
||||||
True.
|
|
||||||
:returns: True if compatible, False if not
|
|
||||||
"""
|
|
||||||
requested_parts = pkg_resources.parse_version(requested_version)
|
|
||||||
current_parts = pkg_resources.parse_version(current_version)
|
|
||||||
|
|
||||||
if same_major and (requested_parts[0] != current_parts[0]):
|
|
||||||
return False
|
|
||||||
|
|
||||||
return current_parts >= requested_parts
|
|
||||||
@@ -31,7 +31,7 @@ cfg.CONF.register_opts(service_opts)
|
|||||||
|
|
||||||
|
|
||||||
def prepare_service(args=None, conf=cfg.CONF):
|
def prepare_service(args=None, conf=cfg.CONF):
|
||||||
# log.register_options(conf)
|
log.register_options(conf)
|
||||||
log.setup(conf, 'watcher')
|
log.setup(conf, 'watcher')
|
||||||
conf(args, project='python-watcher')
|
conf(args, project='python-watcher')
|
||||||
conf.log_opt_values(LOG, logging.DEBUG)
|
conf.log_opt_values(LOG, logging.DEBUG)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
import oslo.messaging as om
|
import oslo_messaging as om
|
||||||
from watcher.applier.framework.rpcapi import ApplierAPI
|
from watcher.applier.framework.rpcapi import ApplierAPI
|
||||||
|
|
||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import os
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
from oslo_log import log
|
||||||
from oslotest import base
|
from oslotest import base
|
||||||
import pecan
|
import pecan
|
||||||
from pecan import testing
|
from pecan import testing
|
||||||
@@ -31,6 +32,7 @@ from watcher.tests import conf_fixture
|
|||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
log.register_options(CONF)
|
||||||
CONF.set_override('use_stderr', False)
|
CONF.set_override('use_stderr', False)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,12 +22,12 @@ import types
|
|||||||
from mock import patch
|
from mock import patch
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from watcher.decision_engine.framework.manager import DecisionEngineManager
|
from watcher.decision_engine.framework.manager import DecisionEngineManager
|
||||||
from watcher.tests.base import TestCase
|
from watcher.tests.base import BaseTestCase
|
||||||
|
|
||||||
from watcher.cmd import decisionengine
|
from watcher.cmd import decisionengine
|
||||||
|
|
||||||
|
|
||||||
class TestDecisionEngine(TestCase):
|
class TestDecisionEngine(BaseTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestDecisionEngine, self).setUp()
|
super(TestDecisionEngine, self).setUp()
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
from oslo import messaging
|
import oslo_messaging as messaging
|
||||||
from watcher.common.messaging.notification_handler import NotificationHandler
|
from watcher.common.messaging.notification_handler import NotificationHandler
|
||||||
from watcher.common.messaging.utils.observable import Observable
|
from watcher.common.messaging.utils.observable import Observable
|
||||||
from watcher.tests import base
|
from watcher.tests import base
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
import oslo.messaging as om
|
import oslo_messaging as om
|
||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
from watcher.common import utils
|
from watcher.common import utils
|
||||||
from watcher.decision_engine.framework.rpcapi import DecisionEngineAPI
|
from watcher.decision_engine.framework.rpcapi import DecisionEngineAPI
|
||||||
|
|||||||
Reference in New Issue
Block a user