diff options
author | Stephen Finucane <stephenfin@redhat.com> | 2018-10-17 13:59:36 +0100 |
---|---|---|
committer | Stephen Finucane <stephenfin@redhat.com> | 2018-10-17 14:04:42 +0100 |
commit | 1f0f5654a71b71aabfda862f477df0e9415080bb (patch) | |
tree | a7af28251d32db7728e785b78994f8c7a33c79be | |
parent | baa0a045b51fd261fdcef6f7dfafe8e823f26e7a (diff) | |
download | oslo-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.py | 33 | ||||
-rw-r--r-- | oslo_db/sqlalchemy/enginefacade.py | 6 | ||||
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_enginefacade.py | 3 | ||||
-rw-r--r-- | oslo_db/warning.py | 41 |
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 + + """ |