Move warnings to their own module
Raising warnings from an exception module can result in a rather confusing message: Running command: '/usr/bin/nova-scheduler ' /.../sqlalchemy/enginefacade.py:332: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported exception.NotSupportedWarning For someone not used to Python's 'warning' infrastructure, this can look worse than it is, as seen at [1]. While this particular warning was resolved in change I4a5f8958c3e, it's possible that a similar warning could be raised for other options. Best to move this out of the 'exception' module and into something more sensible. [1] https://bugzilla.redhat.com/show_bug.cgi?id=1639423 Change-Id: I8e0480fb11123067a111ed6aeda6b47614615645 Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
parent
baa0a045b5
commit
1f0f5654a7
@ -43,10 +43,12 @@ with `try/except` statement. This is required for consistent handling of
|
||||
database errors.
|
||||
"""
|
||||
|
||||
from debtcollector import moves
|
||||
from oslo_utils.excutils import CausedByException
|
||||
import six
|
||||
|
||||
from oslo_db._i18n import _
|
||||
from oslo_utils.excutils import CausedByException
|
||||
from oslo_db import warning
|
||||
|
||||
|
||||
class DBError(CausedByException):
|
||||
@ -299,27 +301,10 @@ class CantStartEngineError(Exception):
|
||||
"""Error raised when the enginefacade cannot start up correctly."""
|
||||
|
||||
|
||||
class NotSupportedWarning(Warning):
|
||||
"""Warn that an argument or call that was passed is not supported.
|
||||
moves.moved_class(warning.NotSupportedWarning,
|
||||
'NotSupportedWarning',
|
||||
__name__, version='Stein')
|
||||
|
||||
This subclasses Warning so that it can be filtered as a distinct
|
||||
category.
|
||||
|
||||
.. seealso::
|
||||
|
||||
https://docs.python.org/2/library/warnings.html
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class OsloDBDeprecationWarning(DeprecationWarning):
|
||||
"""Issued per usage of a deprecated API.
|
||||
|
||||
This subclasses DeprecationWarning so that it can be filtered as a distinct
|
||||
category.
|
||||
|
||||
.. seealso::
|
||||
|
||||
https://docs.python.org/2/library/warnings.html
|
||||
|
||||
"""
|
||||
moves.moved_class(warning.OsloDBDeprecationWarning,
|
||||
'OsloDBDeprecationWarning',
|
||||
__name__, version='Stein')
|
||||
|
@ -10,7 +10,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
import contextlib
|
||||
import functools
|
||||
import operator
|
||||
@ -28,6 +27,7 @@ from oslo_db import options
|
||||
from oslo_db.sqlalchemy import engines
|
||||
from oslo_db.sqlalchemy import orm
|
||||
from oslo_db.sqlalchemy import utils
|
||||
from oslo_db import warning
|
||||
|
||||
|
||||
class _symbol(object):
|
||||
@ -334,7 +334,7 @@ class _TransactionFactory(object):
|
||||
warnings.warn(
|
||||
"Configuration option(s) %r not supported" %
|
||||
sorted(not_supported),
|
||||
exception.NotSupportedWarning
|
||||
warning.NotSupportedWarning
|
||||
)
|
||||
|
||||
def get_legacy_facade(self):
|
||||
@ -1253,7 +1253,7 @@ class LegacyEngineFacade(object):
|
||||
warnings.warn(
|
||||
"EngineFacade is deprecated; please use "
|
||||
"oslo_db.sqlalchemy.enginefacade",
|
||||
exception.OsloDBDeprecationWarning,
|
||||
warning.OsloDBDeprecationWarning,
|
||||
stacklevel=2)
|
||||
if _factory:
|
||||
self._factory = _factory
|
||||
|
@ -37,6 +37,7 @@ from oslo_db.sqlalchemy import enginefacade
|
||||
from oslo_db.sqlalchemy import engines as oslo_engines
|
||||
from oslo_db.sqlalchemy import orm
|
||||
from oslo_db.tests.sqlalchemy import base as test_base
|
||||
from oslo_db import warning
|
||||
|
||||
|
||||
enginefacade.transaction_context_provider(oslo_context.RequestContext)
|
||||
@ -2182,7 +2183,7 @@ class ConfigOptionsTest(oslo_test_base.BaseTestCase):
|
||||
|
||||
self.assertEqual(1, len(w))
|
||||
self.assertTrue(
|
||||
issubclass(w[-1].category, exception.NotSupportedWarning))
|
||||
issubclass(w[-1].category, warning.NotSupportedWarning))
|
||||
self.assertEqual(
|
||||
"Configuration option(s) ['fake1', 'wrong2'] not supported",
|
||||
str(w[-1].message)
|
||||
|
41
oslo_db/warning.py
Normal file
41
oslo_db/warning.py
Normal file
@ -0,0 +1,41 @@
|
||||
# Copyright 2018 Red Hat, Inc.
|
||||
#
|
||||
# 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.
|
||||
|
||||
"""Custom warnings."""
|
||||
|
||||
|
||||
class NotSupportedWarning(Warning):
|
||||
"""Warn that an argument or call that was passed is not supported.
|
||||
|
||||
This subclasses Warning so that it can be filtered as a distinct
|
||||
category.
|
||||
|
||||
.. seealso::
|
||||
|
||||
https://docs.python.org/2/library/warnings.html
|
||||
|
||||
"""
|
||||
|
||||
|
||||
class OsloDBDeprecationWarning(DeprecationWarning):
|
||||
"""Issued per usage of a deprecated API.
|
||||
|
||||
This subclasses DeprecationWarning so that it can be filtered as a distinct
|
||||
category.
|
||||
|
||||
.. seealso::
|
||||
|
||||
https://docs.python.org/2/library/warnings.html
|
||||
|
||||
"""
|
Loading…
Reference in New Issue
Block a user