]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Fix cross-import bug in cinder.db.sqlalchemy.api
authorDima Shulyak <dshulyak@mirantis.com>
Wed, 15 Jan 2014 12:44:19 +0000 (14:44 +0200)
committerGerrit Code Review <review@openstack.org>
Thu, 16 Jan 2014 07:24:14 +0000 (07:24 +0000)
Cross import in cinder.sqlalchemy.db.api module breaks
if lazy loading of db backend is removed

In oslo.incubator db.api lazy loading was removed
Check this change for details https://review.openstack.org/#/c/55985/

Change-Id: I6a75afd0b9b55097ef76ad24c53e84339b527196

cinder/db/api.py
cinder/db/sqlalchemy/api.py
cinder/exception.py
cinder/tests/test_db_api.py

index 81f2856c334100f31d70513c02bcd80defdda79d..a59d5409cf5626dd58803953d9ed46f22cfc933c 100644 (file)
@@ -43,7 +43,6 @@ these objects be simple dictionaries.
 
 from oslo.config import cfg
 
-from cinder import exception
 from cinder.openstack.common.db import api as db_api
 
 
@@ -77,11 +76,6 @@ _BACKEND_MAPPING = {'sqlalchemy': 'cinder.db.sqlalchemy.api'}
 IMPL = db_api.DBAPI(backend_mapping=_BACKEND_MAPPING)
 
 
-class NoMoreTargets(exception.CinderException):
-    """No more available targets."""
-    pass
-
-
 ###################
 
 
index 792514dbce95672185a0c24da0b2f3ef54d27ab7..382e9a1cab5144b7bb065f78bed431ce12c6835f 100644 (file)
@@ -30,7 +30,6 @@ from sqlalchemy.sql.expression import literal_column
 from sqlalchemy.sql import func
 
 from cinder.common import sqlalchemyutils
-from cinder import db
 from cinder.db.sqlalchemy import models
 from cinder import exception
 from cinder.openstack.common.db import exception as db_exc
@@ -145,7 +144,7 @@ def require_volume_exists(f):
     """
 
     def wrapper(context, volume_id, *args, **kwargs):
-        db.volume_get(context, volume_id)
+        volume_get(context, volume_id)
         return f(context, volume_id, *args, **kwargs)
     wrapper.__name__ = f.__name__
     return wrapper
@@ -159,7 +158,7 @@ def require_snapshot_exists(f):
     """
 
     def wrapper(context, snapshot_id, *args, **kwargs):
-        db.api.snapshot_get(context, snapshot_id)
+        snapshot_get(context, snapshot_id)
         return f(context, snapshot_id, *args, **kwargs)
     wrapper.__name__ = f.__name__
     return wrapper
@@ -964,7 +963,7 @@ def volume_allocate_iscsi_target(context, volume_id, host):
         # NOTE(vish): if with_lockmode isn't supported, as in sqlite,
         #             then this has concurrency issues
         if not iscsi_target_ref:
-            raise db.NoMoreTargets()
+            raise exception.NoMoreTargets()
 
         iscsi_target_ref.volume_id = volume_id
         session.add(iscsi_target_ref)
index 68d5649576981dfbf003fe3f0b97ccc728c19b0e..911531bb7f9c2f921fa43419a65deae9568f27ad 100644 (file)
@@ -393,6 +393,11 @@ class NoValidHost(CinderException):
     message = _("No valid host was found. %(reason)s")
 
 
+class NoMoreTargets(CinderException):
+    """No more available targets."""
+    pass
+
+
 class WillNotSchedule(CinderException):
     message = _("Host %(host)s is not up or doesn't exist.")
 
index 20c59c69d4b08ddc98b7cd02827eddcb16a4e45a..a46e9ecc0ee3e7da8119875b8536293c402bda3c 100644 (file)
@@ -255,7 +255,7 @@ class DBAPIVolumeTestCase(BaseTest):
         self.assertEqual(volume.host, 'host1')
 
     def test_volume_allocate_iscsi_target_no_more_targets(self):
-        self.assertRaises(db.NoMoreTargets,
+        self.assertRaises(exception.NoMoreTargets,
                           db.volume_allocate_iscsi_target,
                           self.ctxt, 42, 'host1')