)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"89cd9c22677e53a031e8e2d96ca136fcaa30e5cd","unresolved":false,"context_lines":[{"line_number":16,"context_line":"work with parallels virt_type."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"DocImpact: parallels now supports snapshot"},{"line_number":19,"context_line":"Closes-bug: 1484074"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Id3b5bfc946a858f7e6ed710f2b44c7ca63a10723"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_c73b6a37","line":19,"updated":"2015-08-27 16:34:09.000000000","message":"This is not a bug, this should really be a blueprint.  Lack of support for a thing does not a bug make - adding support for a feature is a feature add, not a bug fix.","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"}],"nova/tests/unit/virt/libvirt/test_utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                                  dest_format\u003d\u0027raw\u0027, out_format\u003d\u0027raw\u0027):"},{"line_number":522,"context_line":"        libvirt_utils.extract_snapshot(\u0027/path/to/disk/image\u0027, \u0027qcow2\u0027,"},{"line_number":523,"context_line":"                                       \u0027/extracted/snap\u0027, dest_format)"},{"line_number":524,"context_line":"        mock_execute.assert_called_once_with("},{"line_number":525,"context_line":"            \u0027qemu-img\u0027, \u0027convert\u0027, \u0027-f\u0027, \u0027qcow2\u0027, \u0027-O\u0027, out_format,"},{"line_number":526,"context_line":"            \u0027/path/to/disk/image\u0027, \u0027/extracted/snap\u0027)"},{"line_number":527,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_c478482e","line":524,"updated":"2015-08-27 16:22:22.000000000","message":"This is wrong in the parallels case - this should be calling qemu-img with -f parallels.  This only passes this test because the extract_snapshot method above is being called with \u0027qcow2\u0027 is the source_fmt.\n\nSo you either need to make that an argument to this test, or just duplicate this test code in test_extract_snapshot_parallels and make it specific to ploop/parallels.","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":384,"context_line":"    if dest_fmt \u003d\u003d \u0027iso\u0027:"},{"line_number":385,"context_line":"        dest_fmt \u003d \u0027raw\u0027"},{"line_number":386,"context_line":"    if dest_fmt \u003d\u003d \u0027ploop\u0027:"},{"line_number":387,"context_line":"        dest_fmt \u003d \u0027parallels\u0027"},{"line_number":388,"context_line":""},{"line_number":389,"context_line":"    qemu_img_cmd \u003d (\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-f\u0027, source_fmt, \u0027-O\u0027, dest_fmt)"},{"line_number":390,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_a1cbc652","line":387,"updated":"2015-08-27 16:22:22.000000000","message":"ack: https://docs.fedoraproject.org/en-US/Fedora/18/html/Virtualization_Administration_Guide/sect-Virtualization-Tips_and_tricks-Using_qemu_img.html","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":450,"context_line":"        disk_path \u003d source.get(\u0027dir\u0027)"},{"line_number":451,"context_line":"        disk_path \u003d disk_path[0:disk_path.rfind(\u0027rootfs\u0027)]"},{"line_number":452,"context_line":"        disk_path \u003d os.path.join(disk_path, \u0027disk\u0027)"},{"line_number":453,"context_line":"    elif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027 and os_type \u003d\u003d \u0027exe\u0027:"},{"line_number":454,"context_line":"        source \u003d domain.find(\u0027devices/filesystem/source\u0027)"},{"line_number":455,"context_line":"        disk_path \u003d source.get(\u0027file\u0027)"},{"line_number":456,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_a103c641","line":453,"updated":"2015-08-27 16:22:22.000000000","message":"nit: I\u0027d prefer to see the nova.compute.vm_mode.EXE constant used here since I think you\u0027ve used it elsewhere in the libvirt driver for checking this type.\n\n--\n\nOn a side note, where is this unit tested?","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":469,"context_line":""},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"def get_disk_type(path):"},{"line_number":472,"context_line":"    \"\"\"Retrieve disk type (raw, qcow2, lvm) for given file.\"\"\""},{"line_number":473,"context_line":"    if path.startswith(\u0027/dev\u0027):"},{"line_number":474,"context_line":"        return \u0027lvm\u0027"},{"line_number":475,"context_line":"    elif path.startswith(\u0027rbd:\u0027):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_818fa2cb","line":472,"updated":"2015-08-27 16:22:22.000000000","message":"nit: this docstring could be updated to include \u0027ploop\u0027 now.","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        return \u0027lvm\u0027"},{"line_number":475,"context_line":"    elif path.startswith(\u0027rbd:\u0027):"},{"line_number":476,"context_line":"        return \u0027rbd\u0027"},{"line_number":477,"context_line":"    elif (os.path.isdir(path) and"},{"line_number":478,"context_line":"          os.path.exists(os.path.join(path, \"DiskDescriptor.xml\"))):"},{"line_number":479,"context_line":"        return \u0027ploop\u0027"},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_24c82422","line":477,"updated":"2015-08-27 16:22:22.000000000","message":"Where is any of this unit tested?","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":475,"context_line":"    elif path.startswith(\u0027rbd:\u0027):"},{"line_number":476,"context_line":"        return \u0027rbd\u0027"},{"line_number":477,"context_line":"    elif (os.path.isdir(path) and"},{"line_number":478,"context_line":"          os.path.exists(os.path.join(path, \"DiskDescriptor.xml\"))):"},{"line_number":479,"context_line":"        return \u0027ploop\u0027"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    return images.qemu_img_info(path).file_format"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_01487286","line":478,"updated":"2015-08-27 16:22:22.000000000","message":"I was wondering where this came from, ack here:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/libvirt/imagebackend.py#n856","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e85ff39b0224f75c7081ecb88fb977d91fe7954","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        return \u0027rbd\u0027"},{"line_number":477,"context_line":"    elif (os.path.isdir(path) and"},{"line_number":478,"context_line":"          os.path.exists(os.path.join(path, \"DiskDescriptor.xml\"))):"},{"line_number":479,"context_line":"        return \u0027ploop\u0027"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    return images.qemu_img_info(path).file_format"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_a43bd4d0","line":479,"updated":"2015-08-27 16:22:22.000000000","message":"This is just talking out loud, but seems at some point we should define a DiskFormatEnum in nova.objects.fields where we can define the enumerated list of known / supported disk formats from image metadata.\n\nI opened a wishlist bug for that:\n\nhttps://bugs.launchpad.net/nova/+bug/1489531","commit_id":"ce2681fd45d74adb7d0568fc08c3d795d419d924"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"73ba014570e63f136adcb83789d07dd3668ad9c2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from oslo_config import cfg"},{"line_number":28,"context_line":"from oslo_log import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from nova.compute import arch, vm_mode"},{"line_number":31,"context_line":"from nova.i18n import _"},{"line_number":32,"context_line":"from nova.i18n import _LI"},{"line_number":33,"context_line":"from nova import utils"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a26ad4f_7f2c8dab","line":30,"updated":"2015-10-27 20:46:50.000000000","message":"one import per line is allowed according to PEP8","commit_id":"0282ea3103cd666d66e2dee6819ab313e272b9b5"}]}
