Browse Source

Merge "Fix service_uuid migration for volumes with no host" into stable/rocky

changes/48/704148/1
Zuul 1 month ago
parent
commit
9ccd04b907
2 changed files with 8 additions and 3 deletions
  1. +2
    -1
      cinder/db/sqlalchemy/api.py
  2. +6
    -2
      cinder/tests/unit/test_db_api.py

+ 2
- 1
cinder/db/sqlalchemy/api.py View File

@@ -622,7 +622,8 @@ def volume_service_uuids_online_data_migration(context, max_count):

updated = 0
query = model_query(context,
models.Volume).filter_by(service_uuid=None)
models.Volume).filter_by(service_uuid=None).\
filter(models.Volume.host.isnot(None))
total = query.count()
vol_refs = query.limit(max_count).all()


+ 6
- 2
cinder/tests/unit/test_db_api.py View File

@@ -494,6 +494,8 @@ class DBAPIServiceTestCase(BaseTest):
self.ctxt, {'host': 'host1@lvm-driver1#lvm-driver1'})
db.volume_create(
self.ctxt, {'host': 'host1@lvm-driver1#lvm-driver1'})
# Entries with no host should be skipped
db.volume_create(self.ctxt, {'host': None})

values = {
'host': 'host1@lvm-driver1',
@@ -506,12 +508,14 @@ class DBAPIServiceTestCase(BaseTest):
total, updated = db.volume_service_uuids_online_data_migration(
self.ctxt, 2)

# total = number of volumes that have hosts and don't have a
# service_uuid
self.assertEqual(3, total)
self.assertEqual(2, updated)

# Now get the ,last one (intentionally setting max > expected)
# Now get the last one (intentionally setting max > expected)
total, updated = db.volume_service_uuids_online_data_migration(
self.ctxt, 2)
self.ctxt, 99)

self.assertEqual(1, total)
self.assertEqual(1, updated)

Loading…
Cancel
Save