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:
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'])