Fix service_uuid migration for volumes with no host
For volumes that have no host assigned, this
migration will fail. Skip those volumes, as they
don't need to be updated.
Closes-Bug: #1821207
Change-Id: I08487575e52c5cfd5a268a23d97b6bd931aeaa45
(cherry picked from commit 47d2a98fa6
)
This commit is contained in:
parent
ea67131909
commit
997af3aa6b
|
@ -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()
|
||||
|
||||
|
|
|
@ -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…
Reference in New Issue