)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8f93978e72a93bc4eb1322f7bf33f53e350161b6","unresolved":false,"context_lines":[{"line_number":2718,"context_line":"                                \" \u0027%s\u0027\"), str(image_ref))"},{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2724,"context_line":"            context, self.image_api, image_ref)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_f739ddd9","line":2721,"updated":"2016-04-22 14:42:11.000000000","message":"We have a method like:\n\n   objects.ImageMeta.from_instance(instance)","commit_id":"b2873355f096402698313efb63894358ab61d590"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"202eb573a605138cda5efd7280ef14288f0f25d1","unresolved":false,"context_lines":[{"line_number":2718,"context_line":"                                \" \u0027%s\u0027\"), str(image_ref))"},{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2724,"context_line":"            context, self.image_api, image_ref)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_77edcd8d","line":2721,"in_reply_to":"1a122d0e_775dcdeb","updated":"2016-04-22 14:53:10.000000000","message":"Yes I reviewed this too quick","commit_id":"b2873355f096402698313efb63894358ab61d590"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f005e7b59c646ec22f7cc992bf7f275200d0d084","unresolved":false,"context_lines":[{"line_number":2718,"context_line":"                                \" \u0027%s\u0027\"), str(image_ref))"},{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2724,"context_line":"            context, self.image_api, image_ref)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_775dcdeb","line":2721,"in_reply_to":"1a122d0e_f739ddd9","updated":"2016-04-22 14:45:21.000000000","message":"instance.image_meta is a property that calls that method","commit_id":"b2873355f096402698313efb63894358ab61d590"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f918e9d898bdc6f68d59aff7708a47c5c0fde34b","unresolved":false,"context_lines":[{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2724,"context_line":"            context, self.image_api, image_ref)"},{"line_number":2725,"context_line":""},{"line_number":2726,"context_line":"        # This instance.exists message should contain the original"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a122d0e_24e040fa","line":2723,"updated":"2016-04-22 15:55:06.000000000","message":"You missed an else here no ?","commit_id":"b2873355f096402698313efb63894358ab61d590"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"054a13085ce89ee06e5692b0c62859c587bca438","unresolved":false,"context_lines":[{"line_number":2717,"context_line":"                LOG.info(_LI(\"disk not on shared storage, rebuilding from:\""},{"line_number":2718,"context_line":"                                \" \u0027%s\u0027\"), str(image_ref))"},{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_0db2d205","line":2720,"range":{"start_line":2720,"start_character":11,"end_line":2720,"end_character":14},"updated":"2016-04-29 21:16:10.000000000","message":"Why lead with the \"not\" case? I would have gone with:\n\n        if image_ref:\n            image_meta \u003d objects.ImageMeta.from_image_ref(\n                context, self.image_api, image_ref)\n        else:\n            image_meta \u003d instance.image_meta","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"054a13085ce89ee06e5692b0c62859c587bca438","unresolved":false,"context_lines":[{"line_number":2719,"context_line":""},{"line_number":2720,"context_line":"        if not image_ref:"},{"line_number":2721,"context_line":"            image_meta \u003d instance.image_meta"},{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        else:"},{"line_number":2724,"context_line":"            image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2725,"context_line":"                context, self.image_api, image_ref)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_6dea66d9","line":2722,"updated":"2016-04-29 21:16:10.000000000","message":"This newline looks a bit odd to me, I would remove it.","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bd4c2b157eaad0e9724ae6f53c0715a24e5e19d8","unresolved":false,"context_lines":[{"line_number":2721,"context_line":"            image_meta \u003d objects.ImageMeta.from_image_ref("},{"line_number":2722,"context_line":"                context, self.image_api, image_ref)"},{"line_number":2723,"context_line":"        else:"},{"line_number":2724,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":2725,"context_line":""},{"line_number":2726,"context_line":"        # This instance.exists message should contain the original"},{"line_number":2727,"context_line":"        # image_ref, not the new one.  Since the DB has been updated"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a122d0e_38aec698","side":"PARENT","line":2724,"updated":"2016-05-02 14:55:39.000000000","message":"I looked back at the history and it looks like the empty dict for image_meta was introduced with https://review.openstack.org/#/c/16099/ which was for a boot from volume case where an image isn\u0027t supplied. I\u0027m pretty sure we don\u0027t test that in the gate though. We have https://review.openstack.org/#/c/175949/ but that\u0027s with an attached volume, not a boot from volume case.","commit_id":"40196d34db2397e6f839ea2382bc699f66997be3"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"054a13085ce89ee06e5692b0c62859c587bca438","unresolved":false,"context_lines":[{"line_number":10181,"context_line":"        self.assertEqual(\u0027compute.instance.evacuate\u0027,"},{"line_number":10182,"context_line":"                         fake_notifier.NOTIFICATIONS[0].event_type)"},{"line_number":10183,"context_line":""},{"line_number":10184,"context_line":""},{"line_number":10185,"context_line":"    @mock.patch.object(objects.Instance, \"image_meta\")"},{"line_number":10186,"context_line":"    def test_evactute_retain_instance_metadata(self, mock_image_meta):"},{"line_number":10187,"context_line":"        image_meta \u003d objects.ImageMeta()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_3460b300","line":10184,"updated":"2016-04-29 21:16:10.000000000","message":"Perhaps that isn\u0027t the best test to try and exercise this code path with. I wonder if any of the following tests are better candidates for a pattern to follow.\n\nHere\u0027s the original code and some tests that currently exercise it:\n\n        if image_ref:\n            image_meta \u003d objects.ImageMeta.from_image_ref(\n                context, self.image_api, image_ref)\n        else:\n            image_meta \u003d objects.ImageMeta.from_dict({})\n\n1) tests that currently hit the \u0027if image_ref\u0027 case:\n\nComputeTestCase.test_rebuild_instance_notification\nComputeTestCase.test_rebuild_launched_at_time\nComputeTestCase.test_rebuild\nComputeTestCase.test_rebuild_with_injected_files\nComputeTestCase.test_rebuild_driver\nComputeTestCase.test_rebuild_driver_with_volumes\nEvacuateHostTestCase.test_on_shared_storage_not_provided_host_without_shared_storage\nEvacuateHostTestCase.test_rebuild_on_host_without_shared_storage\n\n2) tests that currently hit the \u0027else\u0027 case:\n\nComputeTestCase.test_rebuild_no_image\nEvacuateHostTestCase.test_rebuild_on_host_with_shared_storage\nEvacuateHostTestCase.test_rebuild_with_instance_in_stopped_state\nEvacuateHostTestCase.test_rebuild_numa_migration_context_honoured\nEvacuateHostTestCase.test_rebuild_on_host_updated_target_node_not_found\nEvacuateHostTestCase.test_rebuild_migration_node_passed_in\nEvacuateHostTestCase.test_rebuild_on_host_node_passed\nEvacuateHostTestCase.test_rebuild_on_host_updated_target\nEvacuateHostTestCase.test_on_shared_storage_not_provided_host_with_shared_storage\nEvacuateHostTestCase.test_rebuild_on_host_with_volumes\nEvacuateHostTestCase.test_rebuild_migration_passed_in\n\n\nI\u0027ll see what I can come up with on the unit test front too (as a learning exercise).","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"de2b5ab3a60438274d9fad8db4e57248f196c06e","unresolved":false,"context_lines":[{"line_number":10181,"context_line":"        self.assertEqual(\u0027compute.instance.evacuate\u0027,"},{"line_number":10182,"context_line":"                         fake_notifier.NOTIFICATIONS[0].event_type)"},{"line_number":10183,"context_line":""},{"line_number":10184,"context_line":""},{"line_number":10185,"context_line":"    @mock.patch.object(objects.Instance, \"image_meta\")"},{"line_number":10186,"context_line":"    def test_evactute_retain_instance_metadata(self, mock_image_meta):"},{"line_number":10187,"context_line":"        image_meta \u003d objects.ImageMeta()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_0e2e2cfa","line":10184,"in_reply_to":"1a122d0e_3460b300","updated":"2016-05-02 09:26:13.000000000","message":"Yes seems good idea.","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"91e553193836bc5ef9a12c278bd9bafd422309ed","unresolved":false,"context_lines":[{"line_number":10209,"context_line":"            service_is_up.return_value \u003d False"},{"line_number":10210,"context_line":"            get_by_instance_uuid.return_value \u003d fake_spec"},{"line_number":10211,"context_line":"            rebuild_instance.side_effect \u003d fake_rebuild_instance"},{"line_number":10212,"context_line":"            _get_image_name.return_value \u003d mock_image_meta"},{"line_number":10213,"context_line":""},{"line_number":10214,"context_line":"            self.compute_api.evacuate(ctxt,"},{"line_number":10215,"context_line":"                                      instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_6a4d313d","line":10212,"updated":"2016-04-29 15:16:34.000000000","message":"Are you sure about this return ?","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"0610a5594d1277af674d6f0912a970449bc5327a","unresolved":false,"context_lines":[{"line_number":10209,"context_line":"            service_is_up.return_value \u003d False"},{"line_number":10210,"context_line":"            get_by_instance_uuid.return_value \u003d fake_spec"},{"line_number":10211,"context_line":"            rebuild_instance.side_effect \u003d fake_rebuild_instance"},{"line_number":10212,"context_line":"            _get_image_name.return_value \u003d mock_image_meta"},{"line_number":10213,"context_line":""},{"line_number":10214,"context_line":"            self.compute_api.evacuate(ctxt,"},{"line_number":10215,"context_line":"                                      instance,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_43cc9b69","line":10212,"in_reply_to":"1a122d0e_6a4d313d","updated":"2016-04-29 19:03:26.000000000","message":"Hmm, I think I\u0027m wrong.  This should return image name if I\u0027m understanding correctly?","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"91e553193836bc5ef9a12c278bd9bafd422309ed","unresolved":false,"context_lines":[{"line_number":10217,"context_line":"                                      on_shared_storage\u003dTrue,"},{"line_number":10218,"context_line":"                                      admin_password\u003dNone)"},{"line_number":10219,"context_line":""},{"line_number":10220,"context_line":"            _get_image_name.assert_called_once_with(ctxt, image_meta)"},{"line_number":10221,"context_line":"        do_test()"},{"line_number":10222,"context_line":""},{"line_number":10223,"context_line":"        instance.refresh()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_4a6f9591","line":10220,"updated":"2016-04-29 15:16:34.000000000","message":"So you assert that image_meta is same reference as instance.image_meta, sounds good. It would be great to also reflect why we use this path, I mean image_ref should be null, but it\u0027s not really reflected in the test, right?","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"0610a5594d1277af674d6f0912a970449bc5327a","unresolved":false,"context_lines":[{"line_number":10217,"context_line":"                                      on_shared_storage\u003dTrue,"},{"line_number":10218,"context_line":"                                      admin_password\u003dNone)"},{"line_number":10219,"context_line":""},{"line_number":10220,"context_line":"            _get_image_name.assert_called_once_with(ctxt, image_meta)"},{"line_number":10221,"context_line":"        do_test()"},{"line_number":10222,"context_line":""},{"line_number":10223,"context_line":"        instance.refresh()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a122d0e_c3deeb0f","line":10220,"in_reply_to":"1a122d0e_4a6f9591","updated":"2016-04-29 19:03:26.000000000","message":"Yeah, \u0027image_ref\u0027 is not supplied.\n\nWhile at it, a note to self: in the do_test() method, I\u0027m passing \u0027rebuild_instance\u0027 method as a parameter, but I didn\u0027t call it at all further below.  Also, looking into it.","commit_id":"056b94dd215d6c6375be72e3d726bd45a5a9a0cc"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"c9d32fad29307b252c4e3263488fbed6122d6493","unresolved":false,"context_lines":[{"line_number":10216,"context_line":"                                      on_shared_storage\u003dTrue,"},{"line_number":10217,"context_line":"                                      admin_password\u003dNone)"},{"line_number":10218,"context_line":""},{"line_number":10219,"context_line":"            _get_image_name.assert_called_once_with(ctxt, image_meta)"},{"line_number":10220,"context_line":"        do_test()"},{"line_number":10221,"context_line":""},{"line_number":10222,"context_line":"        instance.refresh()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_6d4266ac","line":10219,"range":{"start_line":10219,"start_character":12,"end_line":10219,"end_character":27},"updated":"2016-04-29 17:27:06.000000000","message":"IIUC the call order is this one:\n\n    rebuild_instance\n        _do_rebuild_instance_with_claim\n            _do_rebuild_instance\n                _get_image_name\n\nFrom a local tracing I didn\u0027t find the call to \"rebuild_instance\" but I don\u0027t really understand why. Is it because of line 10201?","commit_id":"f80e0575a3650d6e9fff7f7f6b06c28ddc18866d"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"6afd4b771acc4333b0ec5ae59ffaa42d3e839d9f","unresolved":false,"context_lines":[{"line_number":10216,"context_line":"                                      on_shared_storage\u003dTrue,"},{"line_number":10217,"context_line":"                                      admin_password\u003dNone)"},{"line_number":10218,"context_line":""},{"line_number":10219,"context_line":"            _get_image_name.assert_called_once_with(ctxt, image_meta)"},{"line_number":10220,"context_line":"        do_test()"},{"line_number":10221,"context_line":""},{"line_number":10222,"context_line":"        instance.refresh()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_634717a3","line":10219,"range":{"start_line":10219,"start_character":12,"end_line":10219,"end_character":27},"in_reply_to":"1a122d0e_6d4266ac","updated":"2016-04-29 19:17:55.000000000","message":"As noted in my response to Sahid in PS-3, I didn\u0027t assert the rebuild_instance() here, probably it\u0027s that?  I quickly tried locally to also assert rebuild_instance(), when I run the test locally, I get an AssertionError (was seeing this previously, too) saying that \u0027_get_image_name()\u0027 is not being called at all.  So I seem to be doing something else wrong in the test code.\n\n\n    .tox/py27/bin/python -m testtools.run nova.tests.unit.compute.test_compute.ComputeAPITestCase.test_evactute_retain_instance_metadata\n    [...]\n      File \"nova/tests/unit/compute/test_compute.py\", line 10220, in do_test\n        _get_image_name.assert_called_once_with(ctxt, image_meta)\n      File \"/home/kashyapc/src/nova/.tox/py27/lib/python2.7/site-packages/mock/mock.py\", line 947, in assert_called_once_with\n        raise AssertionError(msg)\n    AssertionError: Expected \u0027_get_image_name\u0027 to be called once. Called 0 times.","commit_id":"f80e0575a3650d6e9fff7f7f6b06c28ddc18866d"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd373043766fbe44cc9df30770b6b7c2c47c5aa7","unresolved":false,"context_lines":[{"line_number":11687,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11688,"context_line":"                mox.IsA(objects.Instance),"},{"line_number":11689,"context_line":"                mox.IsA(objects.ImageMeta),"},{"line_number":11690,"context_line":"                mox.IgnoreArg(), mox.IsA(\u0027newpass\u0027),"},{"line_number":11691,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11692,"context_line":"                block_device_info\u003dmox.IgnoreArg())"},{"line_number":11693,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_a27589cd","side":"PARENT","line":11690,"updated":"2016-05-02 13:58:30.000000000","message":"This mox.IsA(\u0027newpass\u0027) doesn\u0027t look right to me, but I also don\u0027t know why you changed it. Is it related to the fix? If not, please leave it as it is.","commit_id":"40196d34db2397e6f839ea2382bc699f66997be3"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"0c0e1ef3879ec204ed9d2611285f04e62aeb1d7e","unresolved":false,"context_lines":[{"line_number":11687,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11688,"context_line":"                mox.IsA(objects.Instance),"},{"line_number":11689,"context_line":"                mox.IsA(objects.ImageMeta),"},{"line_number":11690,"context_line":"                mox.IgnoreArg(), mox.IsA(\u0027newpass\u0027),"},{"line_number":11691,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11692,"context_line":"                block_device_info\u003dmox.IgnoreArg())"},{"line_number":11693,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_fdd2805a","side":"PARENT","line":11690,"in_reply_to":"1a122d0e_a27589cd","updated":"2016-05-02 14:16:23.000000000","message":"This is my bad. I noticed it was wrong while I was working on this, and figured it wasn\u0027t likely to be revisited again, so I just fixed it.","commit_id":"40196d34db2397e6f839ea2382bc699f66997be3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd373043766fbe44cc9df30770b6b7c2c47c5aa7","unresolved":false,"context_lines":[{"line_number":11687,"context_line":"            mock_image_meta):"},{"line_number":11688,"context_line":"        # \u0027spawn\u0027 should be called with the image_meta from the image_ref"},{"line_number":11689,"context_line":"        image_meta_from_image_ref \u003d objects.ImageMeta.from_dict({})"},{"line_number":11690,"context_line":"        mock_image_meta.return_value \u003d image_meta_from_image_ref"},{"line_number":11691,"context_line":"        self.mox.StubOutWithMock(self.compute.driver, \u0027spawn\u0027)"},{"line_number":11692,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11693,"context_line":"                mox.IsA(objects.Instance),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_c2a52548","line":11690,"updated":"2016-05-02 13:58:30.000000000","message":"You don\u0027t need either of these two lines.","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"0c0e1ef3879ec204ed9d2611285f04e62aeb1d7e","unresolved":false,"context_lines":[{"line_number":11687,"context_line":"            mock_image_meta):"},{"line_number":11688,"context_line":"        # \u0027spawn\u0027 should be called with the image_meta from the image_ref"},{"line_number":11689,"context_line":"        image_meta_from_image_ref \u003d objects.ImageMeta.from_dict({})"},{"line_number":11690,"context_line":"        mock_image_meta.return_value \u003d image_meta_from_image_ref"},{"line_number":11691,"context_line":"        self.mox.StubOutWithMock(self.compute.driver, \u0027spawn\u0027)"},{"line_number":11692,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11693,"context_line":"                mox.IsA(objects.Instance),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_bdec88f4","line":11690,"in_reply_to":"1a122d0e_c2a52548","updated":"2016-05-02 14:16:23.000000000","message":"You\u0027re right. I was just trying to be explicit. That is, tell a story via code for clarity. But then I added a comment in the end (after the fact), and probably should have just deleted these lines.","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd373043766fbe44cc9df30770b6b7c2c47c5aa7","unresolved":false,"context_lines":[{"line_number":11691,"context_line":"        self.mox.StubOutWithMock(self.compute.driver, \u0027spawn\u0027)"},{"line_number":11692,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11693,"context_line":"                mox.IsA(objects.Instance),"},{"line_number":11694,"context_line":"                image_meta_from_image_ref,"},{"line_number":11695,"context_line":"                mox.IgnoreArg(), \u0027newpass\u0027,"},{"line_number":11696,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11697,"context_line":"                block_device_info\u003dmox.IgnoreArg())"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_22617912","line":11694,"updated":"2016-05-02 13:58:30.000000000","message":"Change this to mock_image_meta.return_value","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd373043766fbe44cc9df30770b6b7c2c47c5aa7","unresolved":false,"context_lines":[{"line_number":11712,"context_line":"        self.mox.StubOutWithMock(self.compute.driver, \u0027spawn\u0027)"},{"line_number":11713,"context_line":"        self.compute.driver.spawn(mox.IsA(self.context),"},{"line_number":11714,"context_line":"                mox.IsA(objects.Instance),"},{"line_number":11715,"context_line":"                image_meta_from_instance,"},{"line_number":11716,"context_line":"                mox.IgnoreArg(), \u0027newpass\u0027,"},{"line_number":11717,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11718,"context_line":"                block_device_info\u003dmox.IgnoreArg())"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_82596d5e","line":11715,"updated":"2016-05-02 13:58:30.000000000","message":"Same deal here.","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"cd373043766fbe44cc9df30770b6b7c2c47c5aa7","unresolved":false,"context_lines":[{"line_number":11717,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11718,"context_line":"                block_device_info\u003dmox.IgnoreArg())"},{"line_number":11719,"context_line":""},{"line_number":11720,"context_line":"        self.stubs.Set(self.compute.driver, \u0027instance_on_disk\u0027,"},{"line_number":11721,"context_line":"                       lambda x: True)"},{"line_number":11722,"context_line":"        self.mox.ReplayAll()"},{"line_number":11723,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_02343df9","line":11720,"updated":"2016-05-02 13:58:30.000000000","message":"We\u0027re trying to avoid using stubs ever again. It\u0027s used above, which is why you did it here, I assume, but we might as well not add another thing we have to clean up.\n\nJust change line 11724 to:\n\n with mock.patch.object(self.compute.driver, \u0027instance_on_disk\u0027):\n     self._rebuild(on_shared_storage\u003dNone)","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"0c0e1ef3879ec204ed9d2611285f04e62aeb1d7e","unresolved":false,"context_lines":[{"line_number":11717,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11718,"context_line":"                block_device_info\u003dmox.IgnoreArg())"},{"line_number":11719,"context_line":""},{"line_number":11720,"context_line":"        self.stubs.Set(self.compute.driver, \u0027instance_on_disk\u0027,"},{"line_number":11721,"context_line":"                       lambda x: True)"},{"line_number":11722,"context_line":"        self.mox.ReplayAll()"},{"line_number":11723,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_dd5344e1","line":11720,"in_reply_to":"1a122d0e_02343df9","updated":"2016-05-02 14:16:23.000000000","message":"This stub wasn\u0027t added by this patch, it was just indented differently to match the test above it which is following the same pattern. The change was made for consistency between related tests.","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"267320d490ad34baddc1bc111e5f297c4e1f40b3","unresolved":false,"context_lines":[{"line_number":11717,"context_line":"                network_info\u003dmox.IgnoreArg(),"},{"line_number":11718,"context_line":"                block_device_info\u003dmox.IgnoreArg())"},{"line_number":11719,"context_line":""},{"line_number":11720,"context_line":"        self.stubs.Set(self.compute.driver, \u0027instance_on_disk\u0027,"},{"line_number":11721,"context_line":"                       lambda x: True)"},{"line_number":11722,"context_line":"        self.mox.ReplayAll()"},{"line_number":11723,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_1db49cd2","line":11720,"in_reply_to":"1a122d0e_dd5344e1","updated":"2016-05-02 14:19:23.000000000","message":"Lol, yeah, monday blindness.\n\nSo please undo the unrelated indent so it\u0027s clear it\u0027s not related.","commit_id":"41b630f1ba91cd791dd7ddf795612db0e84d858a"}]}
