Merge "Warn the user about orphaned extra records during keypair migration" into stable/ocata

This commit is contained in:
Jenkins 2017-06-12 16:19:34 +00:00 committed by Gerrit Code Review
commit 14e7c9300d
2 changed files with 19 additions and 1 deletions

View File

@ -1384,6 +1384,12 @@ def _migrate_instance_keypairs(ctxt, count):
count_all = len(db_extras)
count_hit = 0
for db_extra in db_extras:
if db_extra.instance is None:
LOG.error(
('Instance %(uuid)s has been purged, but an instance_extra '
'record remains for it. Unable to migrate.'),
{'uuid': db_extra.instance_uuid})
continue
key_name = db_extra.instance.key_name
keypairs = objects.KeyPairList(objects=[])
if key_name:

View File

@ -1973,8 +1973,20 @@ class TestInstanceObjectMisc(test.TestCase):
key_name='missingkey')
inst3.create()
inst4 = objects.Instance(context=ctxt,
user_id=ctxt.user_id,
project_id=ctxt.project_id,
key_name='missingkey')
inst4.create()
inst4.destroy()
# NOTE(danms): Add an orphaned instance_extra record for
# a totally invalid instance to make sure we don't explode.
# See bug 1684861 for more information.
db.instance_extra_update_by_uuid(ctxt, 'foo', {})
hit, done = instance.migrate_instance_keypairs(ctxt, 10)
self.assertEqual(2, hit)
self.assertEqual(3, hit)
self.assertEqual(2, done)
db_extra = db.instance_extra_get_by_instance_uuid(
ctxt, inst1.uuid, ['keypairs'])