)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Feodor Tersin \u003cftersin@hotmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-07 19:00:49 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_77002302","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":18},"updated":"2016-10-31 17:48:34.000000000","message":"As far as I can tell, this change is assuming cold migration to a new host, but is there any issue here with resize to the same host with ephemeral/swap devices?","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Feodor Tersin \u003cftersin@hotmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-07 19:00:49 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_77890326","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":18},"in_reply_to":"ba5da102_77002302","updated":"2016-10-31 18:56:19.000000000","message":"It does not work. No one resizes ephemeral/swap bdms, so that this code has no chance to resize the devices.\n\nI tried to do something in https://review.openstack.org/#/c/372721/, but it requires more efforts.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"61d7e8d1f754bc7bf9ba8d99c30fa15c434439ca","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Feodor Tersin \u003cftersin@hotmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-10-07 19:00:49 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_775f43e5","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":18},"in_reply_to":"ba5da102_77002302","updated":"2016-10-31 18:14:14.000000000","message":"With resize to same host the directory gets renamed, so we shouldn\u0027t have a problem.  The issue doesn\u0027t occur with resize to same host, because the backing store is already in use by the instance.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This requires passing in the block_device_info when calling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_dc0d963f","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":16},"updated":"2016-10-31 17:48:34.000000000","message":"Is there anything qcow2-specific in this change? What happens with this change if I\u0027m using rbd or lvm?","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This requires passing in the block_device_info when calling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_d7b48fd2","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":16},"in_reply_to":"ba5da102_dc0d963f","updated":"2016-10-31 18:56:19.000000000","message":"Only qcow2 needs this. rbd will also create a base image, but not use it (because ceph volume already exists and accessible).\n\nAFAIK migration is not available for lvm, is it? Anyway with this change lvm imagebackend will just create swap base image, but do nothing with ephemeral one.\n\nAnd in both case it\u0027s useless, because neither rbd, nor lvm use base image when corresponding device is created.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"61d7e8d1f754bc7bf9ba8d99c30fa15c434439ca","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This requires passing in the block_device_info when calling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_f7a433a7","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":16},"in_reply_to":"ba5da102_dc0d963f","updated":"2016-10-31 18:14:14.000000000","message":"This is qcow2-specific in that thick-provisioned LVM or rbd don\u0027t have a \"backing store\".  Also, we don\u0027t support migration/resize for LVM.  For rbd I\u0027ll have to take a closer look...for what it\u0027s worth we\u0027re running this code with rbd in Mitaka and haven\u0027t seen a problem.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"7e9a109b066de3ee737bd0024ffd2d1025f414bc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix cold migration with qcow2 ephemeral disks"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If we have qcow2 ephemeral disks we need to ensure that the"},{"line_number":10,"context_line":"backing file gets created on a cold migration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This requires passing in the block_device_info when calling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba5da102_d771efe1","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":16},"in_reply_to":"ba5da102_f7a433a7","updated":"2016-10-31 18:22:13.000000000","message":"For rbd I think we\u0027ll call into Image.cache(), which calls Rbd.exists().  Since the instance was using it before, that exists() call should be True, in which case we just skip over the call to self.create_image().","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"096a6b6b0fdb2a9182f4aa772ba51cc87e3543dd","unresolved":false,"context_lines":[{"line_number":10618,"context_line":"                                              receive\u003dTrue)"},{"line_number":10619,"context_line":""},{"line_number":10620,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.get_file_extension_for_os_type\u0027)"},{"line_number":10621,"context_line":"    @mock.patch(\u0027functools.partial\u0027)"},{"line_number":10622,"context_line":"    @mock.patch.object(nova.virt.libvirt.imagebackend.Backend, \u0027image\u0027)"},{"line_number":10623,"context_line":"    def test_create_image_with_ephemerals(self, mock_image, mock_partial,"},{"line_number":10624,"context_line":"                                          mock_get_ext):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_66e3f133","line":10621,"updated":"2016-10-07 09:00:29.000000000","message":"This would make me nervous. Like if you mocked open().","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"1ec0e90edf148e311029822c1d94c0aabb2ded28","unresolved":false,"context_lines":[{"line_number":10618,"context_line":"                                              receive\u003dTrue)"},{"line_number":10619,"context_line":""},{"line_number":10620,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.get_file_extension_for_os_type\u0027)"},{"line_number":10621,"context_line":"    @mock.patch(\u0027functools.partial\u0027)"},{"line_number":10622,"context_line":"    @mock.patch.object(nova.virt.libvirt.imagebackend.Backend, \u0027image\u0027)"},{"line_number":10623,"context_line":"    def test_create_image_with_ephemerals(self, mock_image, mock_partial,"},{"line_number":10624,"context_line":"                                          mock_get_ext):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_0c5dda78","line":10621,"in_reply_to":"1a95cdbc_66e3f133","updated":"2016-10-07 16:25:32.000000000","message":"Probably it was a bad idea indeed.","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"096a6b6b0fdb2a9182f4aa772ba51cc87e3543dd","unresolved":false,"context_lines":[{"line_number":10619,"context_line":""},{"line_number":10620,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.get_file_extension_for_os_type\u0027)"},{"line_number":10621,"context_line":"    @mock.patch(\u0027functools.partial\u0027)"},{"line_number":10622,"context_line":"    @mock.patch.object(nova.virt.libvirt.imagebackend.Backend, \u0027image\u0027)"},{"line_number":10623,"context_line":"    def test_create_image_with_ephemerals(self, mock_image, mock_partial,"},{"line_number":10624,"context_line":"                                          mock_get_ext):"},{"line_number":10625,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_06fcedb6","line":10622,"updated":"2016-10-07 09:00:29.000000000","message":"See fake_imagebackend.ImageBackendFixture()","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"1ec0e90edf148e311029822c1d94c0aabb2ded28","unresolved":false,"context_lines":[{"line_number":10619,"context_line":""},{"line_number":10620,"context_line":"    @mock.patch(\u0027nova.virt.disk.api.get_file_extension_for_os_type\u0027)"},{"line_number":10621,"context_line":"    @mock.patch(\u0027functools.partial\u0027)"},{"line_number":10622,"context_line":"    @mock.patch.object(nova.virt.libvirt.imagebackend.Backend, \u0027image\u0027)"},{"line_number":10623,"context_line":"    def test_create_image_with_ephemerals(self, mock_image, mock_partial,"},{"line_number":10624,"context_line":"                                          mock_get_ext):"},{"line_number":10625,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_4c53626b","line":10622,"in_reply_to":"1a95cdbc_06fcedb6","updated":"2016-10-07 16:25:32.000000000","message":"Done","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"096a6b6b0fdb2a9182f4aa772ba51cc87e3543dd","unresolved":false,"context_lines":[{"line_number":10640,"context_line":"        mock_partial.assert_any_call("},{"line_number":10641,"context_line":"            drvr._create_ephemeral, fs_label\u003d\u0027ephemeral0\u0027,"},{"line_number":10642,"context_line":"            os_type\u003dinstance.os_type, is_block_dev\u003dmock.sentinel.is_block_dev)"},{"line_number":10643,"context_line":"        mock_image.return_value.cache.assert_called_once_with("},{"line_number":10644,"context_line":"            fetch_func\u003dmock.sentinel.fetch_func, context\u003dself.context,"},{"line_number":10645,"context_line":"            filename\u003d(\u0027ephemeral_100_%s\u0027 % mock.sentinel.file_ext),"},{"line_number":10646,"context_line":"            size\u003d100 * units.Gi, ephemeral_size\u003d100, specified_fs\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_c6a92592","line":10643,"updated":"2016-10-07 09:00:29.000000000","message":"With ImageBackendFixture() you could have asserted specifically that this was called for the ephemeral disk.","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"1ec0e90edf148e311029822c1d94c0aabb2ded28","unresolved":false,"context_lines":[{"line_number":10640,"context_line":"        mock_partial.assert_any_call("},{"line_number":10641,"context_line":"            drvr._create_ephemeral, fs_label\u003d\u0027ephemeral0\u0027,"},{"line_number":10642,"context_line":"            os_type\u003dinstance.os_type, is_block_dev\u003dmock.sentinel.is_block_dev)"},{"line_number":10643,"context_line":"        mock_image.return_value.cache.assert_called_once_with("},{"line_number":10644,"context_line":"            fetch_func\u003dmock.sentinel.fetch_func, context\u003dself.context,"},{"line_number":10645,"context_line":"            filename\u003d(\u0027ephemeral_100_%s\u0027 % mock.sentinel.file_ext),"},{"line_number":10646,"context_line":"            size\u003d100 * units.Gi, ephemeral_size\u003d100, specified_fs\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a95cdbc_acc86623","line":10643,"in_reply_to":"1a95cdbc_c6a92592","updated":"2016-10-07 16:25:32.000000000","message":"Done","commit_id":"cd3079fda24384062dc15475f59e5bc60fc90739"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":10623,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10624,"context_line":"        instance_ref \u003d self.test_instance"},{"line_number":10625,"context_line":"        instance_ref[\u0027image_ref\u0027] \u003d \u0027\u0027"},{"line_number":10626,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10627,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":10628,"context_line":"        bdi \u003d {\u0027ephemerals\u0027: [{\u0027size\u0027: 100}],"},{"line_number":10629,"context_line":"               \u0027block_device_mapping\u0027: [{\u0027boot_index\u0027: 0}]}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_f76993bf","line":10626,"range":{"start_line":10626,"start_character":36,"end_line":10626,"end_character":56},"updated":"2016-10-31 17:48:34.000000000","message":"Did you mean to use instance_ref here?","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"9db8fbf78b46cf18f41117e4aae5122eb5080513","unresolved":false,"context_lines":[{"line_number":10623,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10624,"context_line":"        instance_ref \u003d self.test_instance"},{"line_number":10625,"context_line":"        instance_ref[\u0027image_ref\u0027] \u003d \u0027\u0027"},{"line_number":10626,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10627,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":10628,"context_line":"        bdi \u003d {\u0027ephemerals\u0027: [{\u0027size\u0027: 100}],"},{"line_number":10629,"context_line":"               \u0027block_device_mapping\u0027: [{\u0027boot_index\u0027: 0}]}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_55d78d22","line":10626,"range":{"start_line":10626,"start_character":36,"end_line":10626,"end_character":56},"in_reply_to":"ba5da102_f76993bf","updated":"2016-11-01 07:55:48.000000000","message":"Done","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":10623,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":10624,"context_line":"        instance_ref \u003d self.test_instance"},{"line_number":10625,"context_line":"        instance_ref[\u0027image_ref\u0027] \u003d \u0027\u0027"},{"line_number":10626,"context_line":"        instance \u003d objects.Instance(**self.test_instance)"},{"line_number":10627,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict(self.test_image_meta)"},{"line_number":10628,"context_line":"        bdi \u003d {\u0027ephemerals\u0027: [{\u0027size\u0027: 100}],"},{"line_number":10629,"context_line":"               \u0027block_device_mapping\u0027: [{\u0027boot_index\u0027: 0}]}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_f740b3a7","line":10626,"range":{"start_line":10626,"start_character":36,"end_line":10626,"end_character":56},"in_reply_to":"ba5da102_f76993bf","updated":"2016-10-31 18:56:19.000000000","message":"yep, a copy-paste mistake, which does not affect the test flow, though","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":15676,"context_line":"                              block_device_info\u003dNone, inject_files\u003dTrue,"},{"line_number":15677,"context_line":"                              fallback_from_host\u003dNone):"},{"line_number":15678,"context_line":"            self.assertFalse(inject_files)"},{"line_number":15679,"context_line":"            self.assertEqual(block_device_info, bdi)"},{"line_number":15680,"context_line":"            create_image_called[0] \u003d True"},{"line_number":15681,"context_line":""},{"line_number":15682,"context_line":"        def fake_create_domain_and_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_3c4692bf","line":15679,"updated":"2016-10-31 17:48:34.000000000","message":"nit: assertEqual args are (expected, actual) which is only important if the assertion fails, and the MismatchError output could be confusing.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"9db8fbf78b46cf18f41117e4aae5122eb5080513","unresolved":false,"context_lines":[{"line_number":15676,"context_line":"                              block_device_info\u003dNone, inject_files\u003dTrue,"},{"line_number":15677,"context_line":"                              fallback_from_host\u003dNone):"},{"line_number":15678,"context_line":"            self.assertFalse(inject_files)"},{"line_number":15679,"context_line":"            self.assertEqual(block_device_info, bdi)"},{"line_number":15680,"context_line":"            create_image_called[0] \u003d True"},{"line_number":15681,"context_line":""},{"line_number":15682,"context_line":"        def fake_create_domain_and_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_1517d5ed","line":15679,"in_reply_to":"ba5da102_3c4692bf","updated":"2016-11-01 07:55:48.000000000","message":"Done","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":15676,"context_line":"                              block_device_info\u003dNone, inject_files\u003dTrue,"},{"line_number":15677,"context_line":"                              fallback_from_host\u003dNone):"},{"line_number":15678,"context_line":"            self.assertFalse(inject_files)"},{"line_number":15679,"context_line":"            self.assertEqual(block_device_info, bdi)"},{"line_number":15680,"context_line":"            create_image_called[0] \u003d True"},{"line_number":15681,"context_line":""},{"line_number":15682,"context_line":"        def fake_create_domain_and_network("}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_977db7e9","line":15679,"in_reply_to":"ba5da102_3c4692bf","updated":"2016-10-31 18:56:19.000000000","message":"yep, makes sense to fix","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"9a725c9e42b686bb8e5db50acb0da99dfc5c7d90","unresolved":false,"context_lines":[{"line_number":10592,"context_line":"        disk_info \u003d blockinfo.get_disk_info(CONF.libvirt.virt_type,"},{"line_number":10593,"context_line":"                                            instance, image_meta,"},{"line_number":10594,"context_line":"                                            block_device_info\u003dbdi)"},{"line_number":10595,"context_line":"        got_files \u003d []"},{"line_number":10596,"context_line":"        self.useFixture("},{"line_number":10597,"context_line":"            fake_imagebackend.ImageBackendFixture(got_files\u003dgot_files))"},{"line_number":10598,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_7cdfe368","line":10595,"updated":"2016-11-02 14:48:55.000000000","message":"Can you update this to use backend.disks[\u0027disk.swap\u0027] as in the test above? got_files is deprecated.","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"3da7b74844c6465c82d36730809a02bd91d77b01","unresolved":false,"context_lines":[{"line_number":10592,"context_line":"        disk_info \u003d blockinfo.get_disk_info(CONF.libvirt.virt_type,"},{"line_number":10593,"context_line":"                                            instance, image_meta,"},{"line_number":10594,"context_line":"                                            block_device_info\u003dbdi)"},{"line_number":10595,"context_line":"        got_files \u003d []"},{"line_number":10596,"context_line":"        self.useFixture("},{"line_number":10597,"context_line":"            fake_imagebackend.ImageBackendFixture(got_files\u003dgot_files))"},{"line_number":10598,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_16b4fb7f","line":10595,"in_reply_to":"ba5da102_7cdfe368","updated":"2016-11-02 18:00:46.000000000","message":"Done","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"9a725c9e42b686bb8e5db50acb0da99dfc5c7d90","unresolved":false,"context_lines":[{"line_number":10669,"context_line":"            filename\u003d(\u0027ephemeral_100_%s\u0027 % mock.sentinel.file_ext),"},{"line_number":10670,"context_line":"            size\u003d100 * units.Gi, ephemeral_size\u003d100, specified_fs\u003dNone)"},{"line_number":10671,"context_line":"        fetch_func \u003d (backend.disks[\u0027disk.eph0\u0027].cache."},{"line_number":10672,"context_line":"                      mock_calls[0][2][\u0027fetch_func\u0027])"},{"line_number":10673,"context_line":"        self.assertIsInstance(fetch_func, functools.partial)"},{"line_number":10674,"context_line":"        self.assertEqual(drvr._create_ephemeral, fetch_func.func)"},{"line_number":10675,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_7c97e347","line":10672,"updated":"2016-11-02 14:48:55.000000000","message":"Tricky! Elsewhere I\u0027ve added a side-effect to cache() which actually calls the template func, and then mocked the expected template func, but this works too.","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"3da7b74844c6465c82d36730809a02bd91d77b01","unresolved":false,"context_lines":[{"line_number":10669,"context_line":"            filename\u003d(\u0027ephemeral_100_%s\u0027 % mock.sentinel.file_ext),"},{"line_number":10670,"context_line":"            size\u003d100 * units.Gi, ephemeral_size\u003d100, specified_fs\u003dNone)"},{"line_number":10671,"context_line":"        fetch_func \u003d (backend.disks[\u0027disk.eph0\u0027].cache."},{"line_number":10672,"context_line":"                      mock_calls[0][2][\u0027fetch_func\u0027])"},{"line_number":10673,"context_line":"        self.assertIsInstance(fetch_func, functools.partial)"},{"line_number":10674,"context_line":"        self.assertEqual(drvr._create_ephemeral, fetch_func.func)"},{"line_number":10675,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_cc759698","line":10672,"in_reply_to":"ba5da102_7c97e347","updated":"2016-11-02 18:00:46.000000000","message":"Well... both way looks difficult for me. Anyway i hope such things will become easier with your refactoring.","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":17532,"name":"Tina Kevin","email":"song.ruixia@zte.com.cn","username":"SongRuixia"},"change_message_id":"0a21d8cc835b9c89ec20416c4b99670233a1eb78","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_a0f32372","line":7209,"range":{"start_line":7209,"start_character":45,"end_line":7209,"end_character":62},"updated":"2016-08-05 08:57:03.000000000","message":"I","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":17532,"name":"Tina Kevin","email":"song.ruixia@zte.com.cn","username":"SongRuixia"},"change_message_id":"0a21d8cc835b9c89ec20416c4b99670233a1eb78","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_80e25f9e","line":7209,"range":{"start_line":7209,"start_character":62,"end_line":7209,"end_character":63},"updated":"2016-08-05 08:57:03.000000000","message":"I follow your changed to modify and test instance resize, but the result did not achieve the desired results. The ephemeral disk(only one ephemeral disk) does not resized.","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"a6bd5a286a60c2707ab35760b4d587119a598cb2","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_879e3eb6","line":7209,"updated":"2016-07-25 15:52:18.000000000","message":"I\u0027d be nice to see some unit tests to exercise this bug and fix","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"4717260df8f5a7b5d9232151c1f21d30d134c8c3","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_c37a9076","line":7209,"range":{"start_line":7209,"start_character":62,"end_line":7209,"end_character":63},"in_reply_to":"bacf61ea_80e25f9e","updated":"2016-08-05 14:01:36.000000000","message":"Ah, now I understand.  My patch is to cover the case of resizing an instance that happens to have an ephemeral disk, but where the ephemeral disk is not itself changing size.  Without my change a qcow2 ephemeral disk ends up with no backing file.\n\nMatthew Booth is doing a larger patch series to rework this whole area, and that should give a \"proper\" fix that would allow resizing ephemeral disks.","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":17532,"name":"Tina Kevin","email":"song.ruixia@zte.com.cn","username":"SongRuixia"},"change_message_id":"0414d740a439e42c7975ddf3d3e95297fb229647","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_febd8cb1","line":7209,"range":{"start_line":7209,"start_character":62,"end_line":7209,"end_character":63},"in_reply_to":"bacf61ea_c37a9076","updated":"2016-08-06 06:30:45.000000000","message":"OK, do you have the changes link of Matthew Booth? I want to see.","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"9e119897113ba7268fb7161023d58d728876c105","unresolved":false,"context_lines":[{"line_number":7206,"context_line":"        # backing file."},{"line_number":7207,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7208,"context_line":"                           network_info\u003dnetwork_info,"},{"line_number":7209,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7210,"context_line":"                           inject_files\u003dFalse,"},{"line_number":7211,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_07f52eca","line":7209,"in_reply_to":"dada55a8_879e3eb6","updated":"2016-07-25 15:55:53.000000000","message":"For sure...I just wanted to see if anyone knew of a reason why this change would be wrong first.  Seems kind of intentional to be explicitly replacing a passed-in value with None.","commit_id":"10e46e7de1986392be6c3714c00569fef357ed59"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":2933,"context_line":"                              {\u0027img_id\u0027: img_id, \u0027e\u0027: e},"},{"line_number":2934,"context_line":"                              instance\u003dinstance)"},{"line_number":2935,"context_line":""},{"line_number":2936,"context_line":"    # NOTE(sileht): many callers of this method assume that this"},{"line_number":2937,"context_line":"    # method doesn\u0027t fail if an image already exists but instead"},{"line_number":2938,"context_line":"    # think that it will be reused (ie: (live)-migration/resize)"},{"line_number":2939,"context_line":"    def _create_image(self, context, instance,"},{"line_number":2940,"context_line":"                      disk_mapping, suffix\u003d\u0027\u0027,"},{"line_number":2941,"context_line":"                      disk_images\u003dNone, network_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_bcec6290","line":2938,"range":{"start_line":2936,"start_character":4,"end_line":2938,"end_character":64},"updated":"2016-10-31 17:48:34.000000000","message":"nit: unrelated, but this note has always confused me, I\u0027m assuming it might have made sense at the time with the context of the change that added it, but in isolation it no longer makes sense and we should clean it up separately later.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"9db8fbf78b46cf18f41117e4aae5122eb5080513","unresolved":false,"context_lines":[{"line_number":2933,"context_line":"                              {\u0027img_id\u0027: img_id, \u0027e\u0027: e},"},{"line_number":2934,"context_line":"                              instance\u003dinstance)"},{"line_number":2935,"context_line":""},{"line_number":2936,"context_line":"    # NOTE(sileht): many callers of this method assume that this"},{"line_number":2937,"context_line":"    # method doesn\u0027t fail if an image already exists but instead"},{"line_number":2938,"context_line":"    # think that it will be reused (ie: (live)-migration/resize)"},{"line_number":2939,"context_line":"    def _create_image(self, context, instance,"},{"line_number":2940,"context_line":"                      disk_mapping, suffix\u003d\u0027\u0027,"},{"line_number":2941,"context_line":"                      disk_images\u003dNone, network_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_35893927","line":2938,"range":{"start_line":2936,"start_character":4,"end_line":2938,"end_character":64},"in_reply_to":"ba5da102_bcec6290","updated":"2016-11-01 07:55:48.000000000","message":"The note explain how the method works with existing disks. The method name does not explain the behavior in case of disks exist.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":3033,"context_line":"            mapping \u003d disk_mapping[\u0027disk.swap\u0027]"},{"line_number":3034,"context_line":"            swap_mb \u003d 0"},{"line_number":3035,"context_line":""},{"line_number":3036,"context_line":"            swap \u003d driver.block_device_info_get_swap(block_device_info)"},{"line_number":3037,"context_line":"            if driver.swap_is_usable(swap):"},{"line_number":3038,"context_line":"                swap_mb \u003d swap[\u0027swap_size\u0027]"},{"line_number":3039,"context_line":"            elif (inst_type[\u0027swap\u0027] \u003e 0 and"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_5c642621","line":3036,"updated":"2016-10-31 17:48:34.000000000","message":"With this change we could also possibly be migrating swap devices, is that OK or an unintended side-effect?\n\nGiven the change in behavior, I\u0027m wondering if we should have a release note for this change with a note in the \u0027fixes\u0027 section saying that cold migrations/resizes with instances that have swap and/or ephemeral disks will also have those disks migrated to the target host.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":3033,"context_line":"            mapping \u003d disk_mapping[\u0027disk.swap\u0027]"},{"line_number":3034,"context_line":"            swap_mb \u003d 0"},{"line_number":3035,"context_line":""},{"line_number":3036,"context_line":"            swap \u003d driver.block_device_info_get_swap(block_device_info)"},{"line_number":3037,"context_line":"            if driver.swap_is_usable(swap):"},{"line_number":3038,"context_line":"                swap_mb \u003d swap[\u0027swap_size\u0027]"},{"line_number":3039,"context_line":"            elif (inst_type[\u0027swap\u0027] \u003e 0 and"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_f7035340","line":3036,"in_reply_to":"ba5da102_5c642621","updated":"2016-10-31 18:56:19.000000000","message":"I do not see how it is related to device migration. The fix allow this code to consider swap bdm to make cache call. But cache method does not migrate device, it just ensure the device exists, creating missing device. See L7066 where swap device is being copied.\n\nW/o the fix this code considers swap attribute of flavor and calls cache anyway.\n\nSo that i think the fix has another side effect for swaps - even if a new flavor has more swap, the resized instance will have the same old swap size (if it was non-zero).\n\nThis breaks https://review.openstack.org/#/c/82201/ (bug 1244222). So probably the fix should be reworked :(\n\nAlso i found https://review.openstack.org/#/c/138979 which probably broke qcow2\u0027s ephemerals","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"61d7e8d1f754bc7bf9ba8d99c30fa15c434439ca","unresolved":false,"context_lines":[{"line_number":3033,"context_line":"            mapping \u003d disk_mapping[\u0027disk.swap\u0027]"},{"line_number":3034,"context_line":"            swap_mb \u003d 0"},{"line_number":3035,"context_line":""},{"line_number":3036,"context_line":"            swap \u003d driver.block_device_info_get_swap(block_device_info)"},{"line_number":3037,"context_line":"            if driver.swap_is_usable(swap):"},{"line_number":3038,"context_line":"                swap_mb \u003d swap[\u0027swap_size\u0027]"},{"line_number":3039,"context_line":"            elif (inst_type[\u0027swap\u0027] \u003e 0 and"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_176a871a","line":3036,"in_reply_to":"ba5da102_5c642621","updated":"2016-10-31 18:14:14.000000000","message":"I don\u0027t think this will actually do the migration for swap devices.  I think it will maybe create the swap device on the destination, which we might need to do anyways.  (I don\u0027t remember exactly where the dest swap devices get created.)","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":7063,"context_line":"                    active_flavor.get(\u0027swap\u0027, 0) !\u003d flavor.get(\u0027swap\u0027, 0)):"},{"line_number":7064,"context_line":""},{"line_number":7065,"context_line":"                    compression \u003d info[\u0027type\u0027] not in NO_COMPRESSION_TYPES"},{"line_number":7066,"context_line":"                    libvirt_utils.copy_image(from_path, img_path, host\u003ddest,"},{"line_number":7067,"context_line":"                                             on_execute\u003don_execute,"},{"line_number":7068,"context_line":"                                             on_completion\u003don_completion,"},{"line_number":7069,"context_line":"                                             compression\u003dcompression)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_17ad2731","line":7066,"updated":"2016-10-31 18:56:19.000000000","message":"[1]","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2bc5d5449896c02e9bdc5da142667f62c45b0534","unresolved":false,"context_lines":[{"line_number":7177,"context_line":"        # NOTE: This has the intended side-effect of fetching a missing"},{"line_number":7178,"context_line":"        # backing file."},{"line_number":7179,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7180,"context_line":"                           network_info\u003dnetwork_info, inject_files\u003dFalse,"},{"line_number":7181,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7182,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7183,"context_line":""},{"line_number":7184,"context_line":"        # Required by Quobyte CI"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_dc559650","line":7181,"range":{"start_line":7180,"start_character":54,"end_line":7181,"end_character":62},"updated":"2016-10-31 17:48:34.000000000","message":"Not sure why you felt the need to swap the location of the kwargs here, I\u0027m assuming simply to keep things on lines under 80 characters. It doesn\u0027t make a functional difference, it\u0027s just a bit odd to me, especially since block_device_info comes after network_info in the args list of the _create_image method, but the order of those args doesn\u0027t matter if we\u0027re using kwargs here - again, just struck me as weird to change.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":8768,"name":"Chris Friesen","email":"chris.friesen@windriver.com","username":"cbf123"},"change_message_id":"61d7e8d1f754bc7bf9ba8d99c30fa15c434439ca","unresolved":false,"context_lines":[{"line_number":7177,"context_line":"        # NOTE: This has the intended side-effect of fetching a missing"},{"line_number":7178,"context_line":"        # backing file."},{"line_number":7179,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7180,"context_line":"                           network_info\u003dnetwork_info, inject_files\u003dFalse,"},{"line_number":7181,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7182,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7183,"context_line":""},{"line_number":7184,"context_line":"        # Required by Quobyte CI"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_772d8345","line":7181,"range":{"start_line":7180,"start_character":54,"end_line":7181,"end_character":62},"in_reply_to":"ba5da102_dc559650","updated":"2016-10-31 18:14:14.000000000","message":"That was ftersin\u0027s change, I suspect just to keep it compact. I\u0027m happy to put it back to the original order.","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"91648bf0cfc75032c207e67c705eb1a8e10406c1","unresolved":false,"context_lines":[{"line_number":7177,"context_line":"        # NOTE: This has the intended side-effect of fetching a missing"},{"line_number":7178,"context_line":"        # backing file."},{"line_number":7179,"context_line":"        self._create_image(context, instance, block_disk_info[\u0027mapping\u0027],"},{"line_number":7180,"context_line":"                           network_info\u003dnetwork_info, inject_files\u003dFalse,"},{"line_number":7181,"context_line":"                           block_device_info\u003dblock_device_info,"},{"line_number":7182,"context_line":"                           fallback_from_host\u003dmigration.source_compute)"},{"line_number":7183,"context_line":""},{"line_number":7184,"context_line":"        # Required by Quobyte CI"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba5da102_72759196","line":7181,"range":{"start_line":7180,"start_character":54,"end_line":7181,"end_character":62},"in_reply_to":"ba5da102_dc559650","updated":"2016-10-31 18:56:19.000000000","message":"yeah, just formatting to avoid sheets of 10%-filled lines","commit_id":"2ca6e8a7c8b2f09985b9ccec7f268d6c8b554656"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"5d68e76840f4048f2ab580481d96854924542971","unresolved":false,"context_lines":[{"line_number":2942,"context_line":"                      block_device_info\u003dNone, files\u003dNone,"},{"line_number":2943,"context_line":"                      admin_pass\u003dNone, inject_files\u003dTrue,"},{"line_number":2944,"context_line":"                      fallback_from_host\u003dNone,"},{"line_number":2945,"context_line":"                      ignore_bdi_for_swap\u003dFalse):"},{"line_number":2946,"context_line":"        booted_from_volume \u003d self._is_booted_from_volume("},{"line_number":2947,"context_line":"            instance, disk_mapping)"},{"line_number":2948,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5da102_38905043","line":2945,"updated":"2016-11-01 08:07:15.000000000","message":"Looks ugly, but didn\u0027t find a better way","commit_id":"1d10568ad838e220e859b760aa1dcb67fb22dba3"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"5d68e76840f4048f2ab580481d96854924542971","unresolved":false,"context_lines":[{"line_number":3051,"context_line":"                if driver.swap_is_usable(swap):"},{"line_number":3052,"context_line":"                    swap_mb \u003d swap[\u0027swap_size\u0027]"},{"line_number":3053,"context_line":"                elif (inst_type[\u0027swap\u0027] \u003e 0 and"},{"line_number":3054,"context_line":"                      not block_device.volume_in_mapping("},{"line_number":3055,"context_line":"                        mapping[\u0027dev\u0027], block_device_info)):"},{"line_number":3056,"context_line":"                    swap_mb \u003d inst_type[\u0027swap\u0027]"},{"line_number":3057,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ba5da102_b840e0a6","line":3054,"updated":"2016-11-01 08:07:15.000000000","message":"btw, do not sure this check makes sense. I couldn\u0027t find a case when it works, and as the result didn\u0027t add a test for that (when flavor\u0027s swap is ignored here).","commit_id":"1d10568ad838e220e859b760aa1dcb67fb22dba3"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"9a725c9e42b686bb8e5db50acb0da99dfc5c7d90","unresolved":false,"context_lines":[{"line_number":3063,"context_line":"                # implementation of resize operation changing sizes in bdms is"},{"line_number":3064,"context_line":"                # developed. Also at that stage we probably may get rid of"},{"line_number":3065,"context_line":"                # the direct usage of flavor swap size here,"},{"line_number":3066,"context_line":"                # leaving the work with bdm only."},{"line_number":3067,"context_line":"                swap_mb \u003d inst_type[\u0027swap\u0027]"},{"line_number":3068,"context_line":"            else:"},{"line_number":3069,"context_line":"                swap \u003d driver.block_device_info_get_swap(block_device_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5da102_d9f72157","line":3066,"updated":"2016-11-02 14:48:55.000000000","message":"Just leaving my thoughts here, I think this change is good.\n\nAt first glance this change looks out of place, but in fact it\u0027s required to avoid a regression. With this change, block_device_info is now not None during finish_resize(), which means that we now follow the True if block, whereas we previously followed False. The True block gets swap size from the bdm, but this wasn\u0027t updated during resize. The False block, which we used before, ignores this and gets it from the flavor.\n\nNote that this is still broken, because if we rebuild the instance we\u0027ll get the original size, not the resized size. However this was always broken, so it is not a regression (and therefore ok).\n\nWe obviously need to fix this properly by updating the bdms during resize, as noted in the excellent comment above.","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"c7bea6dafff9a1d9b54359d20ec537101cbd1093","unresolved":false,"context_lines":[{"line_number":3063,"context_line":"                # implementation of resize operation changing sizes in bdms is"},{"line_number":3064,"context_line":"                # developed. Also at that stage we probably may get rid of"},{"line_number":3065,"context_line":"                # the direct usage of flavor swap size here,"},{"line_number":3066,"context_line":"                # leaving the work with bdm only."},{"line_number":3067,"context_line":"                swap_mb \u003d inst_type[\u0027swap\u0027]"},{"line_number":3068,"context_line":"            else:"},{"line_number":3069,"context_line":"                swap \u003d driver.block_device_info_get_swap(block_device_info)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_e7bae8e0","line":3066,"in_reply_to":"ba5da102_d9f72157","updated":"2016-11-16 00:35:17.000000000","message":"Thank you for this comment, helpful.","commit_id":"6d2cb01df3a785178015dbbc5cf5704f396b5274"}]}
