)]}'
{"nova/tests/unit/db/test_db_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974c1a5f38f2f2d9c68a940e3f0d3fd97745a41b","unresolved":false,"context_lines":[{"line_number":7638,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":7639,"context_line":"        flavor \u003d flavors.get_default_flavor()"},{"line_number":7640,"context_line":"        sysmeta \u003d flavors.save_flavor_info({}, flavor)"},{"line_number":7641,"context_line":"        values1 \u003d {\u0027uuid\u0027: str(stdlib_uuid.uuid4()),"},{"line_number":7642,"context_line":"                  \u0027system_metadata\u0027: sysmeta,"},{"line_number":7643,"context_line":"                  \u0027extra\u0027: {\u0027flavor\u0027: None},"},{"line_number":7644,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_088caad8","line":7641,"updated":"2015-04-22 17:06:53.000000000","message":"nit: personal preference but I\u0027d use uuidutils.generate_uuid().","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f822f8158a8ee85a47cc2dbb964a60252655c24d","unresolved":false,"context_lines":[{"line_number":7638,"context_line":"        ctxt \u003d context.get_admin_context()"},{"line_number":7639,"context_line":"        flavor \u003d flavors.get_default_flavor()"},{"line_number":7640,"context_line":"        sysmeta \u003d flavors.save_flavor_info({}, flavor)"},{"line_number":7641,"context_line":"        values1 \u003d {\u0027uuid\u0027: str(stdlib_uuid.uuid4()),"},{"line_number":7642,"context_line":"                  \u0027system_metadata\u0027: sysmeta,"},{"line_number":7643,"context_line":"                  \u0027extra\u0027: {\u0027flavor\u0027: None},"},{"line_number":7644,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_4842a269","line":7641,"in_reply_to":"dac4157f_088caad8","updated":"2015-04-22 17:09:06.000000000","message":"Just copying the stuff above. Still my fault, but... :)","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974c1a5f38f2f2d9c68a940e3f0d3fd97745a41b","unresolved":false,"context_lines":[{"line_number":7643,"context_line":"                  \u0027extra\u0027: {\u0027flavor\u0027: None},"},{"line_number":7644,"context_line":"        }"},{"line_number":7645,"context_line":"        db.instance_create(ctxt, values1)"},{"line_number":7646,"context_line":"        values2 \u003d {\u0027uuid\u0027: str(stdlib_uuid.uuid4()),"},{"line_number":7647,"context_line":"                  \u0027system_metadata\u0027: sysmeta,"},{"line_number":7648,"context_line":"        }"},{"line_number":7649,"context_line":"        inst2 \u003d db.instance_create(ctxt, values2)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_c89112f3","line":7646,"updated":"2015-04-22 17:06:53.000000000","message":"ditto","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"974c1a5f38f2f2d9c68a940e3f0d3fd97745a41b","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"        self.assertEqual(2, done)"},{"line_number":7658,"context_line":"        extra \u003d db.instance_extra_get_by_instance_uuid(ctxt, inst2.uuid)"},{"line_number":7659,"context_line":"        self.assertIsNotNone(extra)"},{"line_number":7660,"context_line":"        self.assertIsNotNone(extra.flavor)"},{"line_number":7661,"context_line":""},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"class ArchiveTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_08b38a99","line":7660,"updated":"2015-04-22 17:06:53.000000000","message":"What is extra.flavor defaulting to here?","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f822f8158a8ee85a47cc2dbb964a60252655c24d","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"        self.assertEqual(2, done)"},{"line_number":7658,"context_line":"        extra \u003d db.instance_extra_get_by_instance_uuid(ctxt, inst2.uuid)"},{"line_number":7659,"context_line":"        self.assertIsNotNone(extra)"},{"line_number":7660,"context_line":"        self.assertIsNotNone(extra.flavor)"},{"line_number":7661,"context_line":""},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"class ArchiveTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_e85df647","line":7660,"in_reply_to":"dac4157f_08b38a99","updated":"2015-04-22 17:09:06.000000000","message":"It becomes a JSON-encoded string if it\u0027s migrated. I could do the full check, although that\u0027s done above. We need to make sure that the row was created (line above) and that flavor got set to something. All the extra fields default to NULL otherwise.","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4e322cd3754079583fe293cf842b129e7427f839","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"        self.assertEqual(2, done)"},{"line_number":7658,"context_line":"        extra \u003d db.instance_extra_get_by_instance_uuid(ctxt, inst2.uuid)"},{"line_number":7659,"context_line":"        self.assertIsNotNone(extra)"},{"line_number":7660,"context_line":"        self.assertIsNotNone(extra.flavor)"},{"line_number":7661,"context_line":""},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"class ArchiveTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_8b4f946a","line":7660,"in_reply_to":"dac4157f_881afa7b","updated":"2015-04-22 17:12:40.000000000","message":"Ah yes, because the instance is created with system_metadata that has the default flavor info in it above, and the instance.save() call in the object will do that conversion, which happens when running migrate_flavor_data.","commit_id":"92714accc49e85579f406de10ef8b3b510277037"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2ea88566f67f864bc5e8b0b6643f49178d186c68","unresolved":false,"context_lines":[{"line_number":7657,"context_line":"        self.assertEqual(2, done)"},{"line_number":7658,"context_line":"        extra \u003d db.instance_extra_get_by_instance_uuid(ctxt, inst2.uuid)"},{"line_number":7659,"context_line":"        self.assertIsNotNone(extra)"},{"line_number":7660,"context_line":"        self.assertIsNotNone(extra.flavor)"},{"line_number":7661,"context_line":""},{"line_number":7662,"context_line":""},{"line_number":7663,"context_line":"class ArchiveTestCase(test.TestCase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dac4157f_881afa7b","line":7660,"in_reply_to":"dac4157f_e85df647","updated":"2015-04-22 17:10:58.000000000","message":"That happens in instance.save in migrate_flavor_data?  So internal to the instance object (the migration magic)?","commit_id":"92714accc49e85579f406de10ef8b3b510277037"}]}
