summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po18
-rw-r--r--oslo_db/api.py15
-rw-r--r--oslo_db/sqlalchemy/exc_filters.py2
-rw-r--r--oslo_db/tests/test_api.py8
-rw-r--r--requirements.txt2
5 files changed, 27 insertions, 18 deletions
diff --git a/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po b/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po
index 61050f5..a227bb4 100644
--- a/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po
+++ b/oslo.db/locale/fr/LC_MESSAGES/oslo.db-log-error.po
@@ -3,14 +3,14 @@
# This file is distributed under the same license as the oslo.db project.
#
# Translators:
-# Maxime COQUEREL <max.coquerel@gmail.com>, 2014
+# Maxime COQUEREL <max.coquerel@gmail.com>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: oslo.db\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2015-01-30 06:20+0000\n"
-"PO-Revision-Date: 2015-01-27 15:33+0000\n"
-"Last-Translator: openstackjenkins <jenkins@openstack.org>\n"
+"POT-Creation-Date: 2015-02-18 06:01+0000\n"
+"PO-Revision-Date: 2015-02-18 02:50+0000\n"
+"Last-Translator: Maxime COQUEREL <max.coquerel@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/projects/p/oslodb/language/"
"fr/)\n"
"Language: fr\n"
@@ -20,13 +20,13 @@ msgstr ""
"Generated-By: Babel 1.3\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: oslo_db/api.py:120
+#: oslo_db/api.py:134
msgid "DB exceeded retry limit."
msgstr "DB limite de tentatives dépassé."
-#: oslo_db/api.py:124
+#: oslo_db/api.py:142
msgid "DB error."
-msgstr ""
+msgstr "Erreur DB."
#: oslo_db/concurrency.py:64
msgid "'eventlet' is required for TpoolDbapiWrapper."
@@ -41,12 +41,12 @@ msgstr "Exception DBAPIError enveloppé depuis %s"
msgid "DB exception wrapped."
msgstr "DB exception enveloppé."
-#: oslo_db/sqlalchemy/test_migrations.py:272
+#: oslo_db/sqlalchemy/test_migrations.py:271
#, python-format
msgid "Failed to migrate to version %(ver)s on engine %(eng)s"
msgstr "Échec de migration de la version %(ver)s sur le moteur %(eng)s"
-#: oslo_db/sqlalchemy/migration_cli/ext_migrate.py:61
+#: oslo_db/sqlalchemy/migration_cli/ext_migrate.py:59
msgid ""
"Migration number for migrate plugin must be valid integer or empty, if you "
"want to downgrade to initial state"
diff --git a/oslo_db/api.py b/oslo_db/api.py
index 98e4d75..616cac5 100644
--- a/oslo_db/api.py
+++ b/oslo_db/api.py
@@ -56,7 +56,7 @@ def safe_for_db_retry(f):
:param f: database api method.
:type f: function.
"""
- f.enable_retry_on_disconnect = True
+ f.__dict__['enable_retry_on_disconnect'] = True
return f
@@ -66,7 +66,7 @@ def retry_on_deadlock(f):
wrap_db_entry will be applied to all db.api functions marked with this
decorator.
"""
- f.enable_retry_on_deadlock = True
+ f.__dict__['enable_retry_on_deadlock'] = True
return f
@@ -76,7 +76,7 @@ def retry_on_request(f):
wrap_db_entry will be applied to all db.api functions marked with this
decorator.
"""
- f.enable_retry_on_request = True
+ f.__dict__['enable_retry_on_request'] = True
return f
@@ -225,10 +225,11 @@ class DBAPI(object):
# NOTE(vsergeyev): If `use_db_reconnect` option is set to True, retry
# DB API methods, decorated with @safe_for_db_retry
# on disconnect.
- retry_on_disconnect = self.use_db_reconnect and getattr(
- attr, 'enable_retry_on_disconnect', False)
- retry_on_deadlock = getattr(attr, 'enable_retry_on_deadlock', False)
- retry_on_request = getattr(attr, 'enable_retry_on_request', False)
+ retry_on_disconnect = self.use_db_reconnect and attr.__dict__.get(
+ 'enable_retry_on_disconnect', False)
+ retry_on_deadlock = attr.__dict__.get('enable_retry_on_deadlock',
+ False)
+ retry_on_request = attr.__dict__.get('enable_retry_on_request', False)
if retry_on_disconnect or retry_on_deadlock or retry_on_request:
attr = wrap_db_retry(
diff --git a/oslo_db/sqlalchemy/exc_filters.py b/oslo_db/sqlalchemy/exc_filters.py
index 5df1eb7..777fda6 100644
--- a/oslo_db/sqlalchemy/exc_filters.py
+++ b/oslo_db/sqlalchemy/exc_filters.py
@@ -192,7 +192,7 @@ def _sqlite_dupe_key_error(integrity_error, match, engine_name, is_disconnect):
"is not present in table "
"\"(?P<key_table>[^\"]+)\".")
@filters("mysql", sqla_exc.IntegrityError,
- r".* 'Cannot add or update a child row: "
+ r".* u?'Cannot add or update a child row: "
'a foreign key constraint fails \([`"].+[`"]\.[`"](?P<table>.+)[`"], '
'CONSTRAINT [`"](?P<constraint>.+)[`"] FOREIGN KEY '
'\([`"](?P<key>.+)[`"]\) REFERENCES [`"](?P<key_table>.+)[`"] ')
diff --git a/oslo_db/tests/test_api.py b/oslo_db/tests/test_api.py
index 18dc586..c784afe 100644
--- a/oslo_db/tests/test_api.py
+++ b/oslo_db/tests/test_api.py
@@ -196,3 +196,11 @@ class DBRetryRequestCase(DBAPITestCase):
res = {'result': 0}
self.assertRaises(ValueError, some_method, res)
self.assertEqual(max_retries + 1, res['result'])
+
+ @mock.patch.object(DBAPI, 'api_class_call1')
+ @mock.patch.object(api, 'wrap_db_retry')
+ def test_mocked_methods_are_not_wrapped(self, mocked_wrap, mocked_method):
+ dbapi = api.DBAPI('oslo_db.tests.test_api')
+ dbapi.api_class_call1()
+
+ self.assertFalse(mocked_wrap.called)
diff --git a/requirements.txt b/requirements.txt
index 545d892..3e7a757 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -12,6 +12,6 @@ oslo.utils>=1.2.0 # Apache-2.0
SQLAlchemy>=0.9.7,<=0.9.99
sqlalchemy-migrate>=0.9.1,!=0.9.2
stevedore>=1.1.0 # Apache-2.0
-six>=1.7.0
+six>=1.9.0
testresources>=0.2.4
testscenarios>=0.4