summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Finucane <stephenfin@redhat.com>2018-10-17 13:59:36 +0100
committerStephen Finucane <stephenfin@redhat.com>2018-10-17 14:04:42 +0100
commit1f0f5654a71b71aabfda862f477df0e9415080bb (patch)
treea7af28251d32db7728e785b78994f8c7a33c79be
parentbaa0a045b51fd261fdcef6f7dfafe8e823f26e7a (diff)
downloadoslo-db-1f0f5654a71b71aabfda862f477df0e9415080bb.tar.gz
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>
-rw-r--r--oslo_db/exception.py33
-rw-r--r--oslo_db/sqlalchemy/enginefacade.py6
-rw-r--r--oslo_db/tests/sqlalchemy/test_enginefacade.py3
-rw-r--r--oslo_db/warning.py41
4 files changed, 55 insertions, 28 deletions
diff --git a/oslo_db/exception.py b/oslo_db/exception.py
index fcdfd4e..ee79f3e 100644
--- a/oslo_db/exception.py
+++ b/oslo_db/exception.py
@@ -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.
-
- This subclasses Warning so that it can be filtered as a distinct
- category.
-
- .. seealso::
-
- https://docs.python.org/2/library/warnings.html
-
- """
+moves.moved_class(warning.NotSupportedWarning,
+ 'NotSupportedWarning',
+ __name__, version='Stein')
-
-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')
diff --git a/oslo_db/sqlalchemy/enginefacade.py b/oslo_db/sqlalchemy/enginefacade.py
index 481e166..0e2ac70 100644
--- a/oslo_db/sqlalchemy/enginefacade.py
+++ b/oslo_db/sqlalchemy/enginefacade.py
@@ -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
diff --git a/oslo_db/tests/sqlalchemy/test_enginefacade.py b/oslo_db/tests/sqlalchemy/test_enginefacade.py
index cab7547..f8c5368 100644
--- a/oslo_db/tests/sqlalchemy/test_enginefacade.py
+++ b/oslo_db/tests/sqlalchemy/test_enginefacade.py
@@ -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)
diff --git a/oslo_db/warning.py b/oslo_db/warning.py
new file mode 100644
index 0000000..3e7ebb6
--- /dev/null
+++ b/oslo_db/warning.py
@@ -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
+
+ """