)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"df589e22c9651dd1aeba51290d2b4a4d075a3fd0","unresolved":false,"context_lines":[{"line_number":11,"context_line":"finish_revert_resize() so that the neutron port can be updated with the"},{"line_number":12,"context_line":"right binding profile."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch moves out of the instance.drop_migration_context() call from the"},{"line_number":15,"context_line":"resource tracker so that the migration context can be dropped at the"},{"line_number":16,"context_line":"appropriate time."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_c1212bb6","line":14,"updated":"2016-10-06 18:07:40.000000000","message":"s/moves out of the/moves the/\ns/call from the/call out from the/","commit_id":"fee79a11ca57e9503cc15777574612043a6be04f"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"5a858df45b84e2e4138774875e7ac9d559403775","unresolved":false,"context_lines":[{"line_number":11,"context_line":"finish_revert_resize() so that the neutron port can be updated with the"},{"line_number":12,"context_line":"right binding profile."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch moves out of the instance.drop_migration_context() call from the"},{"line_number":15,"context_line":"resource tracker so that the migration context can be dropped at the"},{"line_number":16,"context_line":"appropriate time."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_dcae6e84","line":14,"in_reply_to":"1a95cdbc_c1212bb6","updated":"2016-10-06 18:14:46.000000000","message":"Done","commit_id":"fee79a11ca57e9503cc15777574612043a6be04f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"df589e22c9651dd1aeba51290d2b4a4d075a3fd0","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch moves out of the instance.drop_migration_context() call from the"},{"line_number":15,"context_line":"resource tracker so that the migration context can be dropped at the"},{"line_number":16,"context_line":"appropriate time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I1b7b2573de4380576dd8b801ed59d8955b0ab72a"},{"line_number":19,"context_line":"Partial-bug: #1512880"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_a10dff3f","line":16,"updated":"2016-10-06 18:07:40.000000000","message":"s/appropriate time./appropriate times: after RT.drop_move_claim() is called in the compute manager\u0027s confirm_resize() call and after the virt driver\u0027s finish_revert_resize() in the compute manager\u0027s finish_revert_resize() call./","commit_id":"fee79a11ca57e9503cc15777574612043a6be04f"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"5a858df45b84e2e4138774875e7ac9d559403775","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch moves out of the instance.drop_migration_context() call from the"},{"line_number":15,"context_line":"resource tracker so that the migration context can be dropped at the"},{"line_number":16,"context_line":"appropriate time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I1b7b2573de4380576dd8b801ed59d8955b0ab72a"},{"line_number":19,"context_line":"Partial-bug: #1512880"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_fca96a7c","line":16,"in_reply_to":"1a95cdbc_a10dff3f","updated":"2016-10-06 18:14:46.000000000","message":"Done","commit_id":"fee79a11ca57e9503cc15777574612043a6be04f"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"df589e22c9651dd1aeba51290d2b4a4d075a3fd0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"appropriate time."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I1b7b2573de4380576dd8b801ed59d8955b0ab72a"},{"line_number":19,"context_line":"Partial-bug: #1512880"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1a95cdbc_a1dc1fe5","line":19,"updated":"2016-10-06 18:07:40.000000000","message":"Note that the above is already marked as Fix Released...","commit_id":"fee79a11ca57e9503cc15777574612043a6be04f"}],"nova/compute/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2f45258312f48fc7c01aaf6d3c2ae0c8c8fdb1bb","unresolved":false,"context_lines":[{"line_number":3515,"context_line":"            instance.save()"},{"line_number":3516,"context_line":""},{"line_number":3517,"context_line":"            rt \u003d self._get_resource_tracker(instance.node)"},{"line_number":3518,"context_line":"            rt.drop_move_claim(context, instance)"},{"line_number":3519,"context_line":""},{"line_number":3520,"context_line":"            self.compute_rpcapi.finish_revert_resize(context, instance,"},{"line_number":3521,"context_line":"                    migration, migration.source_compute,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_8a20eeb1","side":"PARENT","line":3518,"updated":"2016-08-04 12:45:42.000000000","message":"Moving this means the resource tracker has a stale set of tracked_migrations:\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L347\n\nThat is compute node local in memory state.\n\nHaving said that, it auto-heals when this next runs:\nhttps://github.com/openstack/nova/blob/master/nova/compute/resource_tracker.py#L557","commit_id":"f925617bc93bc9f27fbdaac41e493d6240e7d5e4"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f24d60c51c9eb044e2d6b98c861f75535efc3d17","unresolved":false,"context_lines":[{"line_number":3565,"context_line":"                                       block_device_info, power_on)"},{"line_number":3566,"context_line":""},{"line_number":3567,"context_line":"            rt \u003d self._get_resource_tracker(instance.node)"},{"line_number":3568,"context_line":"            rt.drop_move_claim(context, instance)"},{"line_number":3569,"context_line":""},{"line_number":3570,"context_line":"            instance.launched_at \u003d timeutils.utcnow()"},{"line_number":3571,"context_line":"            instance.save(expected_task_state\u003dtask_states.RESIZE_REVERTING)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_ac01af6c","line":3568,"updated":"2016-08-03 23:16:43.000000000","message":"It might be worth adding a code comment about why this is placed here, after driver.finish_revert_migration but before network_api.migrate_instance_finish. I assume it\u0027s because driver.finish_revert_migration is the last thing that makes use of the migration context in this function. But initially I wondered how the order of the calls was selected.","commit_id":"3beebbdf9aaffabf5bd41673dabac7e1d11ed292"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5a98c7b051cee8ab48952422a489b2d7a78c4882","unresolved":false,"context_lines":[{"line_number":3590,"context_line":"                                       network_info,"},{"line_number":3591,"context_line":"                                       block_device_info, power_on)"},{"line_number":3592,"context_line":""},{"line_number":3593,"context_line":"            # Drop the migration context since it was skipped on"},{"line_number":3594,"context_line":"            # revert_resize().  The migration context is needed for"},{"line_number":3595,"context_line":"            # migrate_instance_finish()."},{"line_number":3596,"context_line":"            instance.drop_migration_context()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_8141bbab","line":3593,"updated":"2016-08-23 14:45:02.000000000","message":"What do you mean by \"skipped on revert_resize()\"? Do you mean that the migration context was *needed* in finish_revert_migration() and therefore we can now drop it because it is no longer needed?","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":3590,"context_line":"                                       network_info,"},{"line_number":3591,"context_line":"                                       block_device_info, power_on)"},{"line_number":3592,"context_line":""},{"line_number":3593,"context_line":"            # Drop the migration context since it was skipped on"},{"line_number":3594,"context_line":"            # revert_resize().  The migration context is needed for"},{"line_number":3595,"context_line":"            # migrate_instance_finish()."},{"line_number":3596,"context_line":"            instance.drop_migration_context()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_004925b7","line":3593,"in_reply_to":"1ac06dbe_8141bbab","updated":"2016-08-23 22:39:54.000000000","message":"Meant that the migration context was not dropped on revert_resize so we have to do it here.","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"}],"nova/compute/resource_tracker.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5a98c7b051cee8ab48952422a489b2d7a78c4882","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                self._update(ctxt)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"            if drop_migration_context:"},{"line_number":372,"context_line":"                instance.drop_migration_context()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":375,"context_line":"    def update_usage(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_613e3f29","line":372,"updated":"2016-08-23 14:45:02.000000000","message":"Agree with Dan here, though I am aware that we do stuff to the migration context in other places in the resource tracker...","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82161fe72b52f11f28281a54af631d1c0f537f48","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                self._update(ctxt)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"            if drop_migration_context:"},{"line_number":372,"context_line":"                instance.drop_migration_context()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":375,"context_line":"    def update_usage(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_5224b75e","line":372,"updated":"2016-08-23 13:51:08.000000000","message":"It kinda seems strange for us to be doing this context drop in the resource tracker here. Seems like it should be something we do in compute manager when we\u0027re done moving something, which would eliminate the need for this somewhat hacky behavior.","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                self._update(ctxt)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"            if drop_migration_context:"},{"line_number":372,"context_line":"                instance.drop_migration_context()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":375,"context_line":"    def update_usage(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_20770103","line":372,"in_reply_to":"1ac06dbe_5224b75e","updated":"2016-08-23 22:39:54.000000000","message":"Done","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                self._update(ctxt)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"            if drop_migration_context:"},{"line_number":372,"context_line":"                instance.drop_migration_context()"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)"},{"line_number":375,"context_line":"    def update_usage(self, context, instance):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_0072c510","line":372,"in_reply_to":"1ac06dbe_613e3f29","updated":"2016-08-23 22:39:54.000000000","message":"Done","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"}],"nova/tests/unit/compute/test_claims.py":[{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c5beffbf4140c833e65171e47d2ce3d78105fec7","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        self.assertTrue(claim.tracker.icalled)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    @mock.patch(\u0027nova.objects.Instance.drop_migration_context\u0027)"},{"line_number":373,"context_line":"    def _abort(self, mock_get):"},{"line_number":374,"context_line":"        claim \u003d None"},{"line_number":375,"context_line":"        try:"},{"line_number":376,"context_line":"            with self._claim(memory_mb\u003d4096) as claim:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_0308a1d8","line":373,"range":{"start_line":373,"start_character":21,"end_line":373,"end_character":29},"updated":"2016-08-25 11:15:20.000000000","message":"I think here should be something like \u0027mock_drop\u0027. Also it would be nice if you will check that this method was called","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"69cbbbe4f0cadd5ff1ad770c23e01029f81c33ff","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        self.assertTrue(claim.tracker.icalled)"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    @mock.patch(\u0027nova.objects.Instance.drop_migration_context\u0027)"},{"line_number":373,"context_line":"    def _abort(self, mock_get):"},{"line_number":374,"context_line":"        claim \u003d None"},{"line_number":375,"context_line":"        try:"},{"line_number":376,"context_line":"            with self._claim(memory_mb\u003d4096) as claim:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_a0141e9f","line":373,"range":{"start_line":373,"start_character":21,"end_line":373,"end_character":29},"in_reply_to":"1ac06dbe_0308a1d8","updated":"2016-08-25 13:27:38.000000000","message":"Done","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82161fe72b52f11f28281a54af631d1c0f537f48","unresolved":false,"context_lines":[{"line_number":5347,"context_line":"            method(self.context, instance\u003dinstance,"},{"line_number":5348,"context_line":"                                 migration\u003dmigration, reservations\u003d[])"},{"line_number":5349,"context_line":"            # PCI devices are freed on finish_revert_resize()"},{"line_number":5350,"context_line":"            if method !\u003d self.compute.revert_resize:"},{"line_number":5351,"context_line":"                mock_pci_free_device.assert_called_once_with("},{"line_number":5352,"context_line":"                    expected_pci_device, mock.ANY)"},{"line_number":5353,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_b2a88b78","line":5350,"updated":"2016-08-23 13:51:08.000000000","message":"I don\u0027t see what part of your change requires this change to the test. AFAICT, you could remove this if statement and it should still work, no?","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":5347,"context_line":"            method(self.context, instance\u003dinstance,"},{"line_number":5348,"context_line":"                                 migration\u003dmigration, reservations\u003d[])"},{"line_number":5349,"context_line":"            # PCI devices are freed on finish_revert_resize()"},{"line_number":5350,"context_line":"            if method !\u003d self.compute.revert_resize:"},{"line_number":5351,"context_line":"                mock_pci_free_device.assert_called_once_with("},{"line_number":5352,"context_line":"                    expected_pci_device, mock.ANY)"},{"line_number":5353,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_40cddd2f","line":5350,"in_reply_to":"1ac06dbe_b2a88b78","updated":"2016-08-23 22:39:54.000000000","message":"Done","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82161fe72b52f11f28281a54af631d1c0f537f48","unresolved":false,"context_lines":[{"line_number":5351,"context_line":"                mock_pci_free_device.assert_called_once_with("},{"line_number":5352,"context_line":"                    expected_pci_device, mock.ANY)"},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"        if method \u003d\u003d self.compute.revert_resize:"},{"line_number":5355,"context_line":"            instance.task_state \u003d task_states.RESIZE_REVERTING"},{"line_number":5356,"context_line":"            with test.nested("},{"line_number":5357,"context_line":"                mock.patch.object(self.compute.network_api,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_92dd8fe2","line":5354,"updated":"2016-08-23 13:51:08.000000000","message":"This feels like a bolt-on to an otherwise general test. Can you just remove this and add the finish_revert_resize call and assertion to the test_compute_mgr test you add in the next file?","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":5351,"context_line":"                mock_pci_free_device.assert_called_once_with("},{"line_number":5352,"context_line":"                    expected_pci_device, mock.ANY)"},{"line_number":5353,"context_line":""},{"line_number":5354,"context_line":"        if method \u003d\u003d self.compute.revert_resize:"},{"line_number":5355,"context_line":"            instance.task_state \u003d task_states.RESIZE_REVERTING"},{"line_number":5356,"context_line":"            with test.nested("},{"line_number":5357,"context_line":"                mock.patch.object(self.compute.network_api,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_80d355d4","line":5354,"in_reply_to":"1ac06dbe_92dd8fe2","updated":"2016-08-23 22:39:54.000000000","message":"Done","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"82161fe72b52f11f28281a54af631d1c0f537f48","unresolved":false,"context_lines":[{"line_number":4688,"context_line":"                                       migration\u003dself.migration,"},{"line_number":4689,"context_line":"                                       instance\u003dself.instance,"},{"line_number":4690,"context_line":"                                       reservations\u003dNone)"},{"line_number":4691,"context_line":"            self.assertNotEqual(self.instance.migration_context, None)"},{"line_number":4692,"context_line":""},{"line_number":4693,"context_line":"        do_test()"},{"line_number":4694,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_926f4f2a","line":4691,"updated":"2016-08-23 13:51:08.000000000","message":"Why not just do the finish_revert_resize after this? If so, then I think you could detach this from the previous test file where you\u0027re kindof bolting on the finish_resize check to the bottom of an otherwise generic test.","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"322a32d5d54efc8d9377ddab00ff2ea0c5c30c76","unresolved":false,"context_lines":[{"line_number":4688,"context_line":"                                       migration\u003dself.migration,"},{"line_number":4689,"context_line":"                                       instance\u003dself.instance,"},{"line_number":4690,"context_line":"                                       reservations\u003dNone)"},{"line_number":4691,"context_line":"            self.assertNotEqual(self.instance.migration_context, None)"},{"line_number":4692,"context_line":""},{"line_number":4693,"context_line":"        do_test()"},{"line_number":4694,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ac06dbe_e0de89db","line":4691,"in_reply_to":"1ac06dbe_926f4f2a","updated":"2016-08-23 22:39:54.000000000","message":"Done","commit_id":"469822d10bd078bbc93a81596aa2be3dac675066"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c5beffbf4140c833e65171e47d2ce3d78105fec7","unresolved":false,"context_lines":[{"line_number":4620,"context_line":""},{"line_number":4621,"context_line":"        do_test()"},{"line_number":4622,"context_line":""},{"line_number":4623,"context_line":"    def test_finish_revert_resize_migration_context(self):"},{"line_number":4624,"context_line":"        fake_rt \u003d resource_tracker.ResourceTracker(None, None, None)"},{"line_number":4625,"context_line":"        fake_rt.tracked_migrations[self.instance[\u0027uuid\u0027]] \u003d ("},{"line_number":4626,"context_line":"            self.migration, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_59a56602","line":4623,"range":{"start_line":4623,"start_character":8,"end_line":4623,"end_character":51},"updated":"2016-08-25 11:15:20.000000000","message":"test named \"test_finish_revert_resize_***\" but here you testing revert_resize method. The test is good but I think you should change the name of this test and add another test in which you will check that after calling finish_revert_resize() instance.migration context will be None","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"69cbbbe4f0cadd5ff1ad770c23e01029f81c33ff","unresolved":false,"context_lines":[{"line_number":4620,"context_line":""},{"line_number":4621,"context_line":"        do_test()"},{"line_number":4622,"context_line":""},{"line_number":4623,"context_line":"    def test_finish_revert_resize_migration_context(self):"},{"line_number":4624,"context_line":"        fake_rt \u003d resource_tracker.ResourceTracker(None, None, None)"},{"line_number":4625,"context_line":"        fake_rt.tracked_migrations[self.instance[\u0027uuid\u0027]] \u003d ("},{"line_number":4626,"context_line":"            self.migration, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_06b385ea","line":4623,"range":{"start_line":4623,"start_character":8,"end_line":4623,"end_character":51},"in_reply_to":"1ac06dbe_59a56602","updated":"2016-08-25 13:27:38.000000000","message":"Done","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"c5beffbf4140c833e65171e47d2ce3d78105fec7","unresolved":false,"context_lines":[{"line_number":4661,"context_line":"                                       migration\u003dself.migration,"},{"line_number":4662,"context_line":"                                       instance\u003dself.instance,"},{"line_number":4663,"context_line":"                                       reservations\u003dNone)"},{"line_number":4664,"context_line":"            self.assertNotEqual(self.instance.migration_context, None)"},{"line_number":4665,"context_line":""},{"line_number":4666,"context_line":"        do_test()"},{"line_number":4667,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_7991429a","line":4664,"updated":"2016-08-25 11:15:20.000000000","message":"self.assertIsNotNone will be better","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"69cbbbe4f0cadd5ff1ad770c23e01029f81c33ff","unresolved":false,"context_lines":[{"line_number":4661,"context_line":"                                       migration\u003dself.migration,"},{"line_number":4662,"context_line":"                                       instance\u003dself.instance,"},{"line_number":4663,"context_line":"                                       reservations\u003dNone)"},{"line_number":4664,"context_line":"            self.assertNotEqual(self.instance.migration_context, None)"},{"line_number":4665,"context_line":""},{"line_number":4666,"context_line":"        do_test()"},{"line_number":4667,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1ac06dbe_80aac217","line":4664,"in_reply_to":"1ac06dbe_7991429a","updated":"2016-08-25 13:27:38.000000000","message":"Done","commit_id":"6574e37946cd7db582c0d108cd442d80a5b30a12"}]}
