)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a227605659c7871fc2b8582c143dd558a542359b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"removed to eliminate the extra steps and optimize the creation of"},{"line_number":20,"context_line":"snapshots a bit."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Closes-Bug: #1242819"},{"line_number":23,"context_line":"Change-Id: I429fa2e1e26aea321eecbf14edd11263fff525ae"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAATn%2F%2FazU%3D","line":22,"updated":"2013-11-06 17:24:42.000000000","message":"I think this also fixes bug 1247185.","commit_id":"be4d8c767f556fbdf6874c17f5dffa3e3c202897"}],"nova/tests/virt/libvirt/fake_libvirt_utils.py":[{"author":{"_account_id":7808,"name":"Xavier Queralt","email":"xqueralt@gmail.com","username":"xqueralt"},"change_message_id":"7e1453af10e0fce0783a0160914d390a14eff8f6","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def delete_snapshot(disk_path, snapshot_name):"},{"line_number":146,"context_line":"    pass"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"def extract_snapshot(disk_path, source_fmt, out_path, dest_fmt):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FT0I%3D","line":146,"updated":"2013-11-11 10:54:19.000000000","message":"You might want to remove the create and delete snapshot methods from here too.","commit_id":"f9e8f28567ce7a371fb08688e17d52754596413c"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"b921fc414fd75d79fcf03c24aed18a899079c7a9","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"                    snapshot_backend.snapshot_extract(out_path, image_format)"},{"line_number":1407,"context_line":"            finally:"},{"line_number":1408,"context_line":"                if not live_snapshot:"},{"line_number":1409,"context_line":"                    snapshot_backend.snapshot_delete()"},{"line_number":1410,"context_line":"                new_dom \u003d None"},{"line_number":1411,"context_line":"                # NOTE(dkang): because previous managedSave is not called"},{"line_number":1412,"context_line":"                #              for LXC, _create_domain must not be called."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATX%2F%2F%2BW4%3D","side":"PARENT","line":1409,"updated":"2013-10-23 13:09:56.000000000","message":"What happen if the snapshot_backend isn\u0027t Qcow2, what if it is Lvm for instance? Couldn\u0027t we keep both calls and just change their implementation as you did in the imagebackend.py?","commit_id":"6affe670672f4e2f9f55a750732c620693acd1ef"},{"author":{"_account_id":8910,"name":"Vladan Popovic","email":"vpopovic@redhat.com","username":"vladan"},"change_message_id":"edc47a0d800e2ac0ca5e3c903af07813681c9304","unresolved":false,"context_lines":[{"line_number":1406,"context_line":"                    snapshot_backend.snapshot_extract(out_path, image_format)"},{"line_number":1407,"context_line":"            finally:"},{"line_number":1408,"context_line":"                if not live_snapshot:"},{"line_number":1409,"context_line":"                    snapshot_backend.snapshot_delete()"},{"line_number":1410,"context_line":"                new_dom \u003d None"},{"line_number":1411,"context_line":"                # NOTE(dkang): because previous managedSave is not called"},{"line_number":1412,"context_line":"                #              for LXC, _create_domain must not be called."}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATX%2F%2F%2BT4%3D","side":"PARENT","line":1409,"in_reply_to":"AAAATX%2F%2F%2BW4%3D","updated":"2013-10-23 13:22:11.000000000","message":"You\u0027re right, I thought I checked all of the image backends and didn\u0027t see the Lvm implementation, my bad.\nNew patch coming right away.","commit_id":"6affe670672f4e2f9f55a750732c620693acd1ef"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d4f2215113b2861ab8163fb15b2e0074994bc4aa","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                copy_qcow2_image(base, self.path, size)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    def snapshot_create(self):"},{"line_number":321,"context_line":"        pass"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"    def snapshot_extract(self, target, out_format):"},{"line_number":324,"context_line":"        libvirt_utils.extract_snapshot(self.path, \u0027qcow2\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F%2FZ9E%3D","line":321,"updated":"2013-11-07 03:49:12.000000000","message":"The old code would have created an internal snapshot here and then copied data out of it in the next step. This is required if the VM is running, in order to ensure consistent view of the data.\n\nThe reason this is safe to remove is that the driver.snapshot() method will call \u0027dom.managedSave\u0027 before calling \u0027snapshot_create\u0027 to ensure the VM is shutoff.\n\nAFAICT, there is no other place which ever calls \u0027snapshot_create\u0027. Several of the other classes in this imagebackend.py file also have no-op \u0027snapshot_create\u0027 implementations. The only exception of the \u0027Lvm\u0027 class which uses an LVM snapshot.\n\nIn the change for encrypted LVM ( https://review.openstack.org/40467 ) even the Lvm class is changed to avoid snapshots.\n\nSo, I\u0027m thinking this change of yours is not ambitious enough.\n\nIt seems to me that you can just delete the \u0027snapshot_create\u0027 method entirely from all classes and stop its use in driver.snapshot too.","commit_id":"be4d8c767f556fbdf6874c17f5dffa3e3c202897"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"69999a6fff19bd146bf5aeaf5662dfcab0265bc3","unresolved":false,"context_lines":[{"line_number":528,"context_line":""},{"line_number":529,"context_line":""},{"line_number":530,"context_line":"def extract_snapshot(disk_path, source_fmt, snapshot_name, out_path, dest_fmt):"},{"line_number":531,"context_line":"    \"\"\"Extract a named snapshot from a disk image"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"    :param disk_path: Path to disk image"},{"line_number":534,"context_line":"    :param snapshot_name: Name of snapshot in disk image"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FThY%3D","side":"PARENT","line":531,"updated":"2013-11-11 10:49:19.000000000","message":"We should fix the docstring now since it\u0027s not true anymore.","commit_id":"4d18864700b7621bf5e19c31a6f6d9eafa38362d"}]}
