)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"148ec0f79c9a6cf14bf1f1d5dc707d05aa013df7","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"But currently, in _detach_encrypted_volumes, we don\u0027t pass bdi when calling"},{"line_number":14,"context_line":"get_instance_disk_info, so it returns nothing, and nova doesn\u0027t delete the"},{"line_number":15,"context_line":"encryptor volume, and failed to delete the lvm when deleting instance."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Co-Authored-By: LisaLi \u003cxiaoyan.li@intel.com\u003e"},{"line_number":18,"context_line":"Closes-Bug: #1486880"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba15a1d1_53d6daf1","line":15,"updated":"2015-09-17 02:13:32.000000000","message":"fails to delete","commit_id":"891984c8f58fb1e7efd92b8a3f9b4e06f0a9bbff"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"af77e454b57c84946299d9930e81734daa8bc873","unresolved":false,"context_lines":[{"line_number":13624,"context_line":"    @mock.patch.object(lvm, \u0027get_volume_size\u0027, return_value\u003d10)"},{"line_number":13625,"context_line":"    @mock.patch.object(host.Host, \"get_guest\")"},{"line_number":13626,"context_line":"    @mock.patch.object(dmcrypt, \u0027delete_volume\u0027)"},{"line_number":13627,"context_line":"    def test_clean_up_encrypted_lvm(self, mock_delete_volume, mock_get_host,"},{"line_number":13628,"context_line":"                                    mock_get_size):"},{"line_number":13629,"context_line":"        drv \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":13630,"context_line":"        instance \u003d objects.Instance(uuid\u003d\u0027fake-uuid\u0027, id\u003d1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_8929d08b","line":13627,"updated":"2015-08-25 12:20:07.000000000","message":"\"mock_get_host\" should be \"mock_get_guest\", I guess.","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"8a8a174ccb9257a788348e69b94c6ea54f480b32","unresolved":false,"context_lines":[{"line_number":13624,"context_line":"    @mock.patch.object(lvm, \u0027get_volume_size\u0027, return_value\u003d10)"},{"line_number":13625,"context_line":"    @mock.patch.object(host.Host, \"get_guest\")"},{"line_number":13626,"context_line":"    @mock.patch.object(dmcrypt, \u0027delete_volume\u0027)"},{"line_number":13627,"context_line":"    def test_clean_up_encrypted_lvm(self, mock_delete_volume, mock_get_host,"},{"line_number":13628,"context_line":"                                    mock_get_size):"},{"line_number":13629,"context_line":"        drv \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":13630,"context_line":"        instance \u003d objects.Instance(uuid\u003d\u0027fake-uuid\u0027, id\u003d1,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a6d93a58","line":13627,"in_reply_to":"fa1b9901_8929d08b","updated":"2015-08-26 06:10:40.000000000","message":"Done","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"af77e454b57c84946299d9930e81734daa8bc873","unresolved":false,"context_lines":[{"line_number":13647,"context_line":"        bdi \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13648,"context_line":"               \u0027ephemerals\u0027: [],"},{"line_number":13649,"context_line":"               \u0027block_device_mapping\u0027: []}"},{"line_number":13650,"context_line":"        drv._cleanup_lvm(instance, bdi)"},{"line_number":13651,"context_line":"        mock_delete_volume.assert_called_once_with(\u0027/dev/mapper/fake-dmcrypt\u0027)"},{"line_number":13652,"context_line":""},{"line_number":13653,"context_line":"    def test_vcpu_model_to_config(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_29120463","line":13650,"updated":"2015-08-25 12:20:07.000000000","message":"I think it would be good to go through the public method \"cleanup\" which also contains the \"first\" change\n\n    self._cleanup_lvm(instance, block_device_info)\n\nwhich should be tested too.","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"8a8a174ccb9257a788348e69b94c6ea54f480b32","unresolved":false,"context_lines":[{"line_number":13647,"context_line":"        bdi \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13648,"context_line":"               \u0027ephemerals\u0027: [],"},{"line_number":13649,"context_line":"               \u0027block_device_mapping\u0027: []}"},{"line_number":13650,"context_line":"        drv._cleanup_lvm(instance, bdi)"},{"line_number":13651,"context_line":"        mock_delete_volume.assert_called_once_with(\u0027/dev/mapper/fake-dmcrypt\u0027)"},{"line_number":13652,"context_line":""},{"line_number":13653,"context_line":"    def test_vcpu_model_to_config(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_467b7ebe","line":13650,"in_reply_to":"fa1b9901_29120463","updated":"2015-08-26 06:10:40.000000000","message":"done","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"f5dcd1a7e130c2bf53032fa7f03794322122f9a6","unresolved":false,"context_lines":[{"line_number":13643,"context_line":"    @mock.patch.object(host.Host, \"get_guest\")"},{"line_number":13644,"context_line":"    @mock.patch.object(dmcrypt, \u0027delete_volume\u0027)"},{"line_number":13645,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver.unfilter_instance\u0027)"},{"line_number":13646,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver._unplug_vifs\u0027)"},{"line_number":13647,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver._undefine_domain\u0027)"},{"line_number":13648,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":13649,"context_line":"    def test_cleanup_lvm_encrypted(self, mock_save, mock_undefine_domain,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_b421564f","line":13646,"updated":"2015-08-26 09:48:18.000000000","message":"You could remove this mock if you call \"drv.cleanup(..., destroy_vifs\u003dFalse, ...)\" in line 13676","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"99119eff0b959d98cab5a0439f026cdb32e1248e","unresolved":false,"context_lines":[{"line_number":13643,"context_line":"    @mock.patch.object(host.Host, \"get_guest\")"},{"line_number":13644,"context_line":"    @mock.patch.object(dmcrypt, \u0027delete_volume\u0027)"},{"line_number":13645,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver.unfilter_instance\u0027)"},{"line_number":13646,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver._unplug_vifs\u0027)"},{"line_number":13647,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LibvirtDriver._undefine_domain\u0027)"},{"line_number":13648,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027)"},{"line_number":13649,"context_line":"    def test_cleanup_lvm_encrypted(self, mock_save, mock_undefine_domain,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_eeebd076","line":13646,"in_reply_to":"fa1b9901_b421564f","updated":"2015-08-28 02:47:07.000000000","message":"Done","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"f5dcd1a7e130c2bf53032fa7f03794322122f9a6","unresolved":false,"context_lines":[{"line_number":13657,"context_line":"        block_device_info \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13658,"context_line":"                             \u0027ephemerals\u0027: [],"},{"line_number":13659,"context_line":"                             \u0027block_device_mapping\u0027: []}"},{"line_number":13660,"context_line":"        CONF.set_override(\u0027images_type\u0027, \u0027lvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":13661,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":13662,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":13663,"context_line":"                \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_b4d2b6fe","line":13660,"updated":"2015-08-26 09:48:18.000000000","message":"It seems to me that the test code usually uses \"self.flags(...)\" for overriding config options.","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"99119eff0b959d98cab5a0439f026cdb32e1248e","unresolved":false,"context_lines":[{"line_number":13657,"context_line":"        block_device_info \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13658,"context_line":"                             \u0027ephemerals\u0027: [],"},{"line_number":13659,"context_line":"                             \u0027block_device_mapping\u0027: []}"},{"line_number":13660,"context_line":"        CONF.set_override(\u0027images_type\u0027, \u0027lvm\u0027, group\u003d\u0027libvirt\u0027)"},{"line_number":13661,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":13662,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":13663,"context_line":"                \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_cee84c7f","line":13660,"in_reply_to":"fa1b9901_b4d2b6fe","updated":"2015-08-28 02:47:07.000000000","message":"Done","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"f5dcd1a7e130c2bf53032fa7f03794322122f9a6","unresolved":false,"context_lines":[{"line_number":13689,"context_line":"        block_device_info \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13690,"context_line":"                             \u0027ephemerals\u0027: [],"},{"line_number":13691,"context_line":"                             \u0027block_device_mapping\u0027: []}"},{"line_number":13692,"context_line":"        dev_name \u003d \u0027fake-dmcrypt\u0027 if encrypted else \u0027fake\u0027"},{"line_number":13693,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":13694,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":13695,"context_line":"                \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_748dfe7a","line":13692,"updated":"2015-08-26 09:48:18.000000000","message":"I don\u0027t understand why this is necessary. Is there a special meaning in using a device which has \"dmcrypt\" in its name?","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"99119eff0b959d98cab5a0439f026cdb32e1248e","unresolved":false,"context_lines":[{"line_number":13689,"context_line":"        block_device_info \u003d {\u0027root_device_name\u0027: \u0027/dev/vda\u0027,"},{"line_number":13690,"context_line":"                             \u0027ephemerals\u0027: [],"},{"line_number":13691,"context_line":"                             \u0027block_device_mapping\u0027: []}"},{"line_number":13692,"context_line":"        dev_name \u003d \u0027fake-dmcrypt\u0027 if encrypted else \u0027fake\u0027"},{"line_number":13693,"context_line":"        dom_xml \u003d \"\"\""},{"line_number":13694,"context_line":"              \u003cdomain type\u003d\"kvm\"\u003e"},{"line_number":13695,"context_line":"                \u003cdevices\u003e"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_8e8a54be","line":13692,"in_reply_to":"fa1b9901_748dfe7a","updated":"2015-08-28 02:47:07.000000000","message":"hi markus, yes.\ncheck this https://github.com/openstack/nova/blob/master/nova/virt/libvirt/storage/dmcrypt.py#L43","commit_id":"2daa604ce61845c7100732bb835bf1b350c1bff6"},{"author":{"_account_id":8213,"name":"Claudiu Belu","email":"cbelu@cloudbasesolutions.com","username":"claudiub"},"change_message_id":"148ec0f79c9a6cf14bf1f1d5dc707d05aa013df7","unresolved":false,"context_lines":[{"line_number":13673,"context_line":"        guest \u003d libvirt_guest.Guest(dom)"},{"line_number":13674,"context_line":"        mock_get_guest.return_value \u003d guest"},{"line_number":13675,"context_line":"        drv.cleanup(self.context, instance, \u0027fake_network\u0027, destroy_vifs\u003dFalse,"},{"line_number":13676,"context_line":"                        block_device_info\u003dblock_device_info)"},{"line_number":13677,"context_line":"        mock_delete_volume.assert_called_once_with(\u0027/dev/mapper/fake-dmcrypt\u0027)"},{"line_number":13678,"context_line":""},{"line_number":13679,"context_line":"    @mock.patch.object(lvm, \u0027get_volume_size\u0027, return_value\u003d10)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_f3c84e24","line":13676,"updated":"2015-09-17 02:13:32.000000000","message":"the indentation is a bit wrong here, it should match self.context.","commit_id":"891984c8f58fb1e7efd92b8a3f9b4e06f0a9bbff"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"af77e454b57c84946299d9930e81734daa8bc873","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self._undefine_domain(instance)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def _detach_encrypted_volumes(self, instance, bdi):"},{"line_number":970,"context_line":"        \"\"\"Detaches encrypted volumes attached to instance.\"\"\""},{"line_number":971,"context_line":"        disks \u003d jsonutils.loads(self.get_instance_disk_info(instance, bdi))"},{"line_number":972,"context_line":"        encrypted_volumes \u003d filter(dmcrypt.is_encrypted,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_e9540c55","line":969,"updated":"2015-08-25 12:20:07.000000000","message":"nit: The naming would be more readable when  \"block_device_info\" is used like in the other methods. The same below.","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"8a8a174ccb9257a788348e69b94c6ea54f480b32","unresolved":false,"context_lines":[{"line_number":966,"context_line":""},{"line_number":967,"context_line":"        self._undefine_domain(instance)"},{"line_number":968,"context_line":""},{"line_number":969,"context_line":"    def _detach_encrypted_volumes(self, instance, bdi):"},{"line_number":970,"context_line":"        \"\"\"Detaches encrypted volumes attached to instance.\"\"\""},{"line_number":971,"context_line":"        disks \u003d jsonutils.loads(self.get_instance_disk_info(instance, bdi))"},{"line_number":972,"context_line":"        encrypted_volumes \u003d filter(dmcrypt.is_encrypted,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c6454e6f","line":969,"in_reply_to":"fa1b9901_e9540c55","updated":"2015-08-26 06:10:40.000000000","message":"Done","commit_id":"f8abce9cebc8488135b1020922289e692780ad5c"}]}
