)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7fb8a3896b77a74a4bdeee79a63af4930a31facc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"In that case backing file should be copied to"},{"line_number":11,"context_line":"destination host as disk image."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ib62f4529638a04633b5f101bac481ff9cfee1056"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bae84128_7848572e","line":13,"updated":"2016-02-19 14:53:24.000000000","message":"Please add:\n\n    Closes-bug: 1546778","commit_id":"b2c543baa1eb380111e73562b67f7725439b38f9"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7fb8a3896b77a74a4bdeee79a63af4930a31facc","unresolved":false,"context_lines":[{"line_number":13922,"context_line":""},{"line_number":13923,"context_line":"        mock_copy.assert_any_call(from_path,"},{"line_number":13924,"context_line":"                                  u\u0027/test/abcd/disk\u0027,"},{"line_number":13925,"context_line":"                                  host\u003dmock.ANY,"},{"line_number":13926,"context_line":"                                  on_execute\u003dmock.ANY,"},{"line_number":13927,"context_line":"                                  on_completion\u003dmock.ANY,"},{"line_number":13928,"context_line":"                                  compression\u003dmock.ANY)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_616a621c","line":13925,"updated":"2016-02-19 14:53:24.000000000","message":"host should be dest -- it\u0027s easy to predict, so you don\u0027t need to use mock.ANY here.","commit_id":"b2c543baa1eb380111e73562b67f7725439b38f9"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"eb1e574c180558f4ef38eb99ecd60d1953b07a44","unresolved":false,"context_lines":[{"line_number":13887,"context_line":"                \u0027.get_instance_disk_info\u0027)"},{"line_number":13888,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":13889,"context_line":"                \u0027._is_storage_shared_with\u0027)"},{"line_number":13890,"context_line":"    def _test_migrate_disk_and_power_off_raises(self,"},{"line_number":13891,"context_line":"                                                mock_is_shared_storage,"},{"line_number":13892,"context_line":"                                                mock_get_disk_info,"},{"line_number":13893,"context_line":"                                                mock_destroy,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aed3d3a_22731a82","line":13890,"updated":"2016-02-26 12:24:52.000000000","message":"_test_migrate_disk_and_power_off_backing_file is a separate, private function because it\u0027s used by two tests. As this code is only used by test_migrate_disk_and_power_off_non_shared_storage_raises, you should just rename this function to test_migrate_disk_and_power_off_non_shared_storage_raises. There\u0027s no need for a separate _test_migrate_disk_and_power_off_raises.","commit_id":"574f09fe90841c325d45c116bf83e245112bf944"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"7df641cac4fa0eb5274d3e539472522dacedb0ab","unresolved":false,"context_lines":[{"line_number":13887,"context_line":"                \u0027.get_instance_disk_info\u0027)"},{"line_number":13888,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver\u0027"},{"line_number":13889,"context_line":"                \u0027._is_storage_shared_with\u0027)"},{"line_number":13890,"context_line":"    def _test_migrate_disk_and_power_off_raises(self,"},{"line_number":13891,"context_line":"                                                mock_is_shared_storage,"},{"line_number":13892,"context_line":"                                                mock_get_disk_info,"},{"line_number":13893,"context_line":"                                                mock_destroy,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aed3d3a_56041fbf","line":13890,"in_reply_to":"9aed3d3a_22731a82","updated":"2016-02-26 12:38:54.000000000","message":"Yes, that makes sense.","commit_id":"574f09fe90841c325d45c116bf83e245112bf944"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"eb1e574c180558f4ef38eb99ecd60d1953b07a44","unresolved":false,"context_lines":[{"line_number":13923,"context_line":"        inst_base_resize \u003d inst_base + \"_resize\""},{"line_number":13924,"context_line":"        from_path \u003d os.path.join(inst_base_resize, disk_name)"},{"line_number":13925,"context_line":"        backing_file \u003d u\u0027backing_file\u0027"},{"line_number":13926,"context_line":"        mock_log.assert_any_call(\"Failed to copy backing \""},{"line_number":13927,"context_line":"                                 \"file %(backing_file)s to \""},{"line_number":13928,"context_line":"                                 \"%(host)s %(hosterror)s\","},{"line_number":13929,"context_line":"                                 hosterror\u003dexc,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aed3d3a_075c284a","line":13926,"updated":"2016-02-26 12:24:52.000000000","message":"This seems excessive, but it does prove that it\u0027s being called. I still don\u0027t understand why the unit tests weren\u0027t failing before, though.\n\nWe shouldn\u0027t be asserting specific log calls, though, so you can remove this assertion; I\u0027m satisfied.","commit_id":"574f09fe90841c325d45c116bf83e245112bf944"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"7df641cac4fa0eb5274d3e539472522dacedb0ab","unresolved":false,"context_lines":[{"line_number":13923,"context_line":"        inst_base_resize \u003d inst_base + \"_resize\""},{"line_number":13924,"context_line":"        from_path \u003d os.path.join(inst_base_resize, disk_name)"},{"line_number":13925,"context_line":"        backing_file \u003d u\u0027backing_file\u0027"},{"line_number":13926,"context_line":"        mock_log.assert_any_call(\"Failed to copy backing \""},{"line_number":13927,"context_line":"                                 \"file %(backing_file)s to \""},{"line_number":13928,"context_line":"                                 \"%(host)s %(hosterror)s\","},{"line_number":13929,"context_line":"                                 hosterror\u003dexc,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9aed3d3a_16fa97bd","line":13926,"in_reply_to":"9aed3d3a_075c284a","updated":"2016-02-26 12:38:54.000000000","message":"Okay, i\u0027ll leave only assertion that log was called,\nwithout specifying arguments.","commit_id":"574f09fe90841c325d45c116bf83e245112bf944"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"7fb8a3896b77a74a4bdeee79a63af4930a31facc","unresolved":false,"context_lines":[{"line_number":7134,"context_line":"                parent_dir \u003d os.path.dirname(os.path.dirname(img_path))"},{"line_number":7135,"context_line":"                backing_file_dir \u003d os.path.join(parent_dir, backing_file_dir)"},{"line_number":7136,"context_line":"                backing_file_path \u003d os.path.join(backing_file_dir,"},{"line_number":7137,"context_line":"                                                 backing_file)"},{"line_number":7138,"context_line":"                # To properly resize the swap partition, it must be"},{"line_number":7139,"context_line":"                # re-created with the proper size.  This is acceptable"},{"line_number":7140,"context_line":"                # because when an OS is shut down, the contents of the"}],"source_content_type":"text/x-python","patch_set":1,"id":"bae84128_21033a75","line":7137,"updated":"2016-02-19 14:53:24.000000000","message":"Move this inside the if block below.","commit_id":"b2c543baa1eb380111e73562b67f7725439b38f9"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"ad6e77ba476d23dc96edccfd05e1606d0068292b","unresolved":false,"context_lines":[{"line_number":7160,"context_line":"                                                 on_completion\u003don_completion,"},{"line_number":7161,"context_line":"                                                 compression\u003dcompression)"},{"line_number":7162,"context_line":"                    except processutils.ProcessExecutionError:"},{"line_number":7163,"context_line":"                        LOG.warning(_LW(\"Failed to backing file %s to host %s,\""},{"line_number":7164,"context_line":"                                        \" backing file already exists\"),"},{"line_number":7165,"context_line":"                                        backing_file, dest)"},{"line_number":7166,"context_line":"                    # Copy image to destination host."}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_5cec60c7","line":7163,"updated":"2016-02-19 15:46:03.000000000","message":"Missing word: Failed to *copy backing file","commit_id":"c5f3cd02ebca6a517f7ae9fd2e2a1061f4cced23"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"ad6e77ba476d23dc96edccfd05e1606d0068292b","unresolved":false,"context_lines":[{"line_number":7161,"context_line":"                                                 compression\u003dcompression)"},{"line_number":7162,"context_line":"                    except processutils.ProcessExecutionError:"},{"line_number":7163,"context_line":"                        LOG.warning(_LW(\"Failed to backing file %s to host %s,\""},{"line_number":7164,"context_line":"                                        \" backing file already exists\"),"},{"line_number":7165,"context_line":"                                        backing_file, dest)"},{"line_number":7166,"context_line":"                    # Copy image to destination host."},{"line_number":7167,"context_line":"                    libvirt_utils.copy_image(from_path, img_path, host\u003ddest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_1c093896","line":7164,"updated":"2016-02-19 15:46:03.000000000","message":"Is this the only reason this can fail? Seems like a big assumption.","commit_id":"c5f3cd02ebca6a517f7ae9fd2e2a1061f4cced23"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"beab8a181e39e0397496df78a71c44f428b45e71","unresolved":false,"context_lines":[{"line_number":7161,"context_line":"                                                 compression\u003dcompression)"},{"line_number":7162,"context_line":"                    except processutils.ProcessExecutionError:"},{"line_number":7163,"context_line":"                        LOG.warning(_LW(\"Failed to backing file %s to host %s,\""},{"line_number":7164,"context_line":"                                        \" backing file already exists\"),"},{"line_number":7165,"context_line":"                                        backing_file, dest)"},{"line_number":7166,"context_line":"                    # Copy image to destination host."},{"line_number":7167,"context_line":"                    libvirt_utils.copy_image(from_path, img_path, host\u003ddest,"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_43e9111a","line":7164,"in_reply_to":"bae84128_1c093896","updated":"2016-02-19 20:30:18.000000000","message":"Done","commit_id":"c5f3cd02ebca6a517f7ae9fd2e2a1061f4cced23"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"465b220fec9f08e86d14c24e505f8873aca5bb4d","unresolved":false,"context_lines":[{"line_number":7153,"context_line":"                    compression \u003d info[\u0027type\u0027] not in NO_COMPRESSION_TYPES"},{"line_number":7154,"context_line":"                    try:"},{"line_number":7155,"context_line":"                        # Copy backing file to destination host."},{"line_number":7156,"context_line":"                        libvirt_utils.copy_image(backing_file_path,"},{"line_number":7157,"context_line":"                                                 backing_file_path,"},{"line_number":7158,"context_line":"                                                 host\u003ddest,"},{"line_number":7159,"context_line":"                                                 on_execute\u003don_execute,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_6dd1b0cd","line":7156,"updated":"2016-02-19 16:35:30.000000000","message":"Should we check if the backing file exists first? Otherwise the warning below could produce a lot of noise for things that aren\u0027t warnings at all.","commit_id":"7d738238edee1aaa3153d970c1a94e3cabc35d59"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"223f35d8661bb759321c023b1cea7ae515aff329","unresolved":false,"context_lines":[{"line_number":7153,"context_line":"                    compression \u003d info[\u0027type\u0027] not in NO_COMPRESSION_TYPES"},{"line_number":7154,"context_line":"                    try:"},{"line_number":7155,"context_line":"                        # Copy backing file to destination host."},{"line_number":7156,"context_line":"                        libvirt_utils.copy_image(backing_file_path,"},{"line_number":7157,"context_line":"                                                 backing_file_path,"},{"line_number":7158,"context_line":"                                                 host\u003ddest,"},{"line_number":7159,"context_line":"                                                 on_execute\u003don_execute,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_56a0b0f4","line":7156,"in_reply_to":"bae84128_6dd1b0cd","updated":"2016-02-19 19:42:10.000000000","message":"Log level could be changed for info or even debug if you want.\nBut in case if we check backing file existence and try to copy after we can trap into raise condition.\n\nT1                                             T2\n\n1) check                                     1) check\n.....                                        2) copy                 \n3) copy (Error)\n\nSo try- except semantics gives both graceful error\nhandling and \"atomicity\". And your way could abort all \nmigration entirely even if it could be done.","commit_id":"7d738238edee1aaa3153d970c1a94e3cabc35d59"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"465b220fec9f08e86d14c24e505f8873aca5bb4d","unresolved":false,"context_lines":[{"line_number":7160,"context_line":"                                                 on_completion\u003don_completion,"},{"line_number":7161,"context_line":"                                                 compression\u003dcompression)"},{"line_number":7162,"context_line":"                    except processutils.ProcessExecutionError:"},{"line_number":7163,"context_line":"                        LOG.warning(_LW(\"Failed to copy backing file %s to host %s\"),"},{"line_number":7164,"context_line":"                                        backing_file, dest)"},{"line_number":7165,"context_line":"                    # Copy image to destination host."},{"line_number":7166,"context_line":"                    libvirt_utils.copy_image(from_path, img_path, host\u003ddest,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_ad545854","line":7163,"updated":"2016-02-19 16:35:30.000000000","message":"Include the stringified exception in here, too.","commit_id":"7d738238edee1aaa3153d970c1a94e3cabc35d59"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"34433de896d8ac2c49b011de330834522e2d9d67","unresolved":false,"context_lines":[{"line_number":7160,"context_line":"                                                 on_completion\u003don_completion,"},{"line_number":7161,"context_line":"                                                 compression\u003dcompression)"},{"line_number":7162,"context_line":"                    except processutils.ProcessExecutionError:"},{"line_number":7163,"context_line":"                        LOG.warning(_LW(\"Failed to copy backing file %s to host %s\"),"},{"line_number":7164,"context_line":"                                        backing_file, dest)"},{"line_number":7165,"context_line":"                    # Copy image to destination host."},{"line_number":7166,"context_line":"                    libvirt_utils.copy_image(from_path, img_path, host\u003ddest,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bae84128_2387ad62","line":7163,"in_reply_to":"bae84128_ad545854","updated":"2016-02-19 20:29:37.000000000","message":"Makes sense, i will add it in next patch set.","commit_id":"7d738238edee1aaa3153d970c1a94e3cabc35d59"},{"author":{"_account_id":19156,"name":"Leehom Li","email":"feli5_li@163.com","username":"leehom"},"change_message_id":"829d76e5bec0c8fa7b7f720c1bfe609590fbf5a4","unresolved":false,"context_lines":[{"line_number":7129,"context_line":""},{"line_number":7130,"context_line":"                # To migrate instance with image that has"},{"line_number":7131,"context_line":"                # backing file it should be copied too."},{"line_number":7132,"context_line":"                backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7133,"context_line":"                backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7134,"context_line":"                parent_dir \u003d os.path.dirname(os.path.dirname(img_path))"},{"line_number":7135,"context_line":"                backing_file_dir \u003d os.path.join(parent_dir, backing_file_dir)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_42d56bb7","line":7132,"updated":"2016-02-21 05:48:48.000000000","message":"If backing_file is \"\", we do not need to copy it at all.","commit_id":"414f05132cf0ec30ad7c11759d81f7857ae38c5b"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"4a776334d97a2de30e73c881dc0625104b5ec2e8","unresolved":false,"context_lines":[{"line_number":7129,"context_line":""},{"line_number":7130,"context_line":"                # To migrate instance with image that has"},{"line_number":7131,"context_line":"                # backing file it should be copied too."},{"line_number":7132,"context_line":"                backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7133,"context_line":"                backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7134,"context_line":"                parent_dir \u003d os.path.dirname(os.path.dirname(img_path))"},{"line_number":7135,"context_line":"                backing_file_dir \u003d os.path.join(parent_dir, backing_file_dir)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_9dbdfb6a","line":7132,"in_reply_to":"bae84128_42d56bb7","updated":"2016-02-22 09:41:24.000000000","message":"Makes sense, i will check this out .","commit_id":"414f05132cf0ec30ad7c11759d81f7857ae38c5b"},{"author":{"_account_id":19156,"name":"Leehom Li","email":"feli5_li@163.com","username":"leehom"},"change_message_id":"829d76e5bec0c8fa7b7f720c1bfe609590fbf5a4","unresolved":false,"context_lines":[{"line_number":7153,"context_line":"                    compression \u003d info[\u0027type\u0027] not in NO_COMPRESSION_TYPES"},{"line_number":7154,"context_line":"                    try:"},{"line_number":7155,"context_line":"                        # Copy backing file to destination host."},{"line_number":7156,"context_line":"                        libvirt_utils.copy_image(backing_file_path,"},{"line_number":7157,"context_line":"                                                 backing_file_path,"},{"line_number":7158,"context_line":"                                                 host\u003ddest,"},{"line_number":7159,"context_line":"                                                 on_execute\u003don_execute,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_82d773be","line":7156,"updated":"2016-02-21 05:48:48.000000000","message":"And if backing file not exists, copy_image will fail.","commit_id":"414f05132cf0ec30ad7c11759d81f7857ae38c5b"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"4a776334d97a2de30e73c881dc0625104b5ec2e8","unresolved":false,"context_lines":[{"line_number":7153,"context_line":"                    compression \u003d info[\u0027type\u0027] not in NO_COMPRESSION_TYPES"},{"line_number":7154,"context_line":"                    try:"},{"line_number":7155,"context_line":"                        # Copy backing file to destination host."},{"line_number":7156,"context_line":"                        libvirt_utils.copy_image(backing_file_path,"},{"line_number":7157,"context_line":"                                                 backing_file_path,"},{"line_number":7158,"context_line":"                                                 host\u003ddest,"},{"line_number":7159,"context_line":"                                                 on_execute\u003don_execute,"}],"source_content_type":"text/x-python","patch_set":5,"id":"bae84128_fdac0737","line":7156,"in_reply_to":"bae84128_82d773be","updated":"2016-02-22 09:41:24.000000000","message":"You are right, i\u0027ll add check for backing file emptyness","commit_id":"414f05132cf0ec30ad7c11759d81f7857ae38c5b"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cedcbdd4eca01492baf8afd867d10524851ded0f","unresolved":false,"context_lines":[{"line_number":7168,"context_line":"                        except processutils.ProcessExecutionError as e:"},{"line_number":7169,"context_line":"                            LOG.warning(_LW(\"Failed to copy backing \""},{"line_number":7170,"context_line":"                                            \"file %(backing_file) to \""},{"line_number":7171,"context_line":"                                            \"%(host) %(hosterror)\u003d%e\"),"},{"line_number":7172,"context_line":"                                        {\"hosterror\": e,"},{"line_number":7173,"context_line":"                                         \"backing_file\": backing_file,"},{"line_number":7174,"context_line":"                                         \"host\": dest})"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_40641848","line":7171,"updated":"2016-02-22 16:15:55.000000000","message":"This syntax is wrong. It should be:\n\n    LOG.warning(_LW(\"Failed to copy backing \"\n                    \"file %(backing_file)s to \"\n                    \"%(host)s %(hosterror)s\"),\n\nIf the unit tests didn\u0027t catch that, then the coverage is probably insufficient -- i.e., this code path is not exercised. So you should add a unit test where copy_image() fails as well.","commit_id":"7340e164697b1e30d7829fcb5a5c3d797aaede40"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"989442289f23e6b2868ee3abcb072330bbbbd61e","unresolved":false,"context_lines":[{"line_number":7168,"context_line":"                        except processutils.ProcessExecutionError as e:"},{"line_number":7169,"context_line":"                            LOG.warning(_LW(\"Failed to copy backing \""},{"line_number":7170,"context_line":"                                            \"file %(backing_file) to \""},{"line_number":7171,"context_line":"                                            \"%(host) %(hosterror)\u003d%e\"),"},{"line_number":7172,"context_line":"                                        {\"hosterror\": e,"},{"line_number":7173,"context_line":"                                         \"backing_file\": backing_file,"},{"line_number":7174,"context_line":"                                         \"host\": dest})"}],"source_content_type":"text/x-python","patch_set":6,"id":"bae84128_38e912e7","line":7171,"in_reply_to":"bae84128_40641848","updated":"2016-02-23 15:20:11.000000000","message":"Thanks for comment, i will do that in next patch set.","commit_id":"7340e164697b1e30d7829fcb5a5c3d797aaede40"},{"author":{"_account_id":19156,"name":"Leehom Li","email":"feli5_li@163.com","username":"leehom"},"change_message_id":"a2a6aa95b47fc971168e4fb7c2d465258cc59431","unresolved":false,"context_lines":[{"line_number":7146,"context_line":""},{"line_number":7147,"context_line":"                    # To migrate instance with image that has"},{"line_number":7148,"context_line":"                    # backing file it should be copied too."},{"line_number":7149,"context_line":"                    if \u0027backing_file\u0027 in info:"},{"line_number":7150,"context_line":"                        backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7151,"context_line":"                        backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7152,"context_line":"                        parent_dir \u003d os.path.dirname(os.path."}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_d98c0282","line":7149,"updated":"2016-02-25 01:22:11.000000000","message":"Hi, I found info is get from function _get_instance_disk_info\n..\n            disk_info.append({\u0027type\u0027: disk_type,\n                              \u0027path\u0027: path,\n                              \u0027virt_disk_size\u0027: virt_size,\n                              \u0027backing_file\u0027: backing_file,\n                              \u0027disk_size\u0027: dk_size,\n                              \u0027over_committed_disk_size\u0027: over_commit_size})\n...\n\u0027backing_file\u0027 is always exist in info, but if \u0027backing_file\u0027 not exists, it is \"\", so I think if statement shoud be\n    if info[\u0027backing_file\u0027]:","commit_id":"e9476878016a0743831cdda9e9fceedd55829aaa"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"f2809b9d04ab5b7027621a293b2eedaad6e2d35f","unresolved":false,"context_lines":[{"line_number":7146,"context_line":""},{"line_number":7147,"context_line":"                    # To migrate instance with image that has"},{"line_number":7148,"context_line":"                    # backing file it should be copied too."},{"line_number":7149,"context_line":"                    if \u0027backing_file\u0027 in info:"},{"line_number":7150,"context_line":"                        backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7151,"context_line":"                        backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7152,"context_line":"                        parent_dir \u003d os.path.dirname(os.path."}],"source_content_type":"text/x-python","patch_set":7,"id":"bae84128_f808c02f","line":7149,"in_reply_to":"bae84128_d98c0282","updated":"2016-02-25 14:11:57.000000000","message":"Thanks, i will fix that.","commit_id":"e9476878016a0743831cdda9e9fceedd55829aaa"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"239f58fe60e445eb03fc6064988339ce38b2de06","unresolved":false,"context_lines":[{"line_number":7168,"context_line":"                        except processutils.ProcessExecutionError as e:"},{"line_number":7169,"context_line":"                            LOG.exception(_LE(\"Failed to copy backing \""},{"line_number":7170,"context_line":"                                              \"file %(backing_file) to \""},{"line_number":7171,"context_line":"                                              \"%(host) %(hosterror)\"),"},{"line_number":7172,"context_line":"                                          hosterror\u003de,"},{"line_number":7173,"context_line":"                                          backing_file\u003dbacking_file,"},{"line_number":7174,"context_line":"                                          host\u003ddest)"}],"source_content_type":"text/x-python","patch_set":8,"id":"9aed3d3a_cebbab74","line":7171,"updated":"2016-02-25 18:13:48.000000000","message":"This formatting is still invalid, which means this block still isn\u0027t getting exercised by the tests.","commit_id":"cde569494288728c8ba0b5f5740895f88b1382ae"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"ab97c6c73bc6b8607134a34c311011a168c9c80e","unresolved":false,"context_lines":[{"line_number":7146,"context_line":""},{"line_number":7147,"context_line":"                    # To migrate instance with image that has"},{"line_number":7148,"context_line":"                    # backing file it should be copied too."},{"line_number":7149,"context_line":"                    if info[\u0027backing_file\u0027]:"},{"line_number":7150,"context_line":"                        backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7151,"context_line":"                        backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7152,"context_line":"                        parent_dir \u003d os.path.dirname(os.path."}],"source_content_type":"text/x-python","patch_set":10,"id":"7af24918_cd5c55f3","line":7149,"updated":"2016-03-04 18:52:16.000000000","message":"This isn\u0027t right. This replicates the behaviour of _try_fetch_image_cache, which is called by finish_migration() on the destination host, except in reverse. This is undesirable, as we\u0027re essentially doing the same thing twice.\n\nThe problem is actually that finish_migration is attempting to do the resize before it checks the backing file. I\u0027ve posted a fix here:\n\nhttps://review.openstack.org/288640","commit_id":"2b1526632aea0b40b6f3c65f539308b0c79aeb35"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"f3265d9092a68ba22db226ef0aa73edb4bad792c","unresolved":false,"context_lines":[{"line_number":7146,"context_line":""},{"line_number":7147,"context_line":"                    # To migrate instance with image that has"},{"line_number":7148,"context_line":"                    # backing file it should be copied too."},{"line_number":7149,"context_line":"                    if info[\u0027backing_file\u0027]:"},{"line_number":7150,"context_line":"                        backing_file \u003d info[\u0027backing_file\u0027]"},{"line_number":7151,"context_line":"                        backing_file_dir \u003d \u0027_base\u0027"},{"line_number":7152,"context_line":"                        parent_dir \u003d os.path.dirname(os.path."}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_c890acef","line":7149,"in_reply_to":"7af24918_cd5c55f3","updated":"2016-03-07 16:09:11.000000000","message":"Ok, thanks, i will look at that.","commit_id":"2b1526632aea0b40b6f3c65f539308b0c79aeb35"}]}
