)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Co-Authored-By: Dmitry Guryanov \u003cdguryanov@parallels.com\u003e"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"DocImpact: parallels now supports instance resize"},{"line_number":30,"context_line":"Change-Id: I38dbf73beb01fe1939ddca63fbfedbec1dc3c826"},{"line_number":31,"context_line":"Implements: blueprint virtuozzo-instance-resize-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":38,"id":"7aa08908_a3992cc6","line":29,"range":{"start_line":29,"start_character":0,"end_line":29,"end_character":9},"updated":"2016-06-08 20:36:41.000000000","message":"This tag will create a bug in nova so let\u0027s remove it. The documentation you need is:\n\n1. The hypervisor support matrix update, which is in this change.\n\n2. A release note for the feature add, see this for release notes:\n\nhttp://docs.openstack.org/developer/nova/code-review.html?highlight\u003dreno#release-notes","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3464c455d14962d336997075b9b166845ae1d4c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"for virtual machines.  So it\u0027s better to use this tool instead of ploop."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Co-Authored-By: Dmitry Guryanov \u003cdguryanov@parallels.com\u003e"},{"line_number":28,"context_line":"Depends-on: I04c4379459c2fc1fd4801ec2aad53d0f6053b6d6"},{"line_number":29,"context_line":"Change-Id: I38dbf73beb01fe1939ddca63fbfedbec1dc3c826"},{"line_number":30,"context_line":"Implements: blueprint virtuozzo-instance-resize-support"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":57,"id":"3aaa91ec_73f7e08c","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":10},"updated":"2016-06-27 18:06:14.000000000","message":"This should be \u0027Depends-On\u0027 with a capital O, it\u0027s case-sensitive.","commit_id":"c1c4f0240ebf153a32d53cf9f69a72b39be73749"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f36b889617e5106b1c6409eef9bf7c783dc2e7b3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"for virtual machines.  So it\u0027s better to use this tool instead of ploop."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Also we make compute.filters more strict"},{"line_number":28,"context_line":"We call \"ploop\" only with \"grow\" argument"},{"line_number":29,"context_line":"And we set disk size in megabytes for prl_disk_tool"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Co-Authored-By: Dmitry Guryanov \u003cdguryanov@parallels.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":58,"id":"3aaa91ec_db334af5","line":28,"range":{"start_line":28,"start_character":27,"end_line":28,"end_character":31},"updated":"2016-06-27 18:39:40.000000000","message":"Actually ploop is only called with \u0027restore-descriptor\u0027 now.","commit_id":"016a782a60dc6b48f2e06278f2177ffe74feb5f8"},{"author":{"_account_id":15847,"name":"Mikhail Feoktistov","email":"mfeoktistov@virtuozzo.com","username":"mfeoktistov"},"change_message_id":"bf277066f4ad7507a0b46b8e5c2b32288573869c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"for virtual machines.  So it\u0027s better to use this tool instead of ploop."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Also we make compute.filters more strict"},{"line_number":28,"context_line":"We call \"ploop\" only with \"grow\" argument"},{"line_number":29,"context_line":"And we set disk size in megabytes for prl_disk_tool"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Co-Authored-By: Dmitry Guryanov \u003cdguryanov@parallels.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":58,"id":"3aaa91ec_5b0e3ae6","line":28,"range":{"start_line":28,"start_character":27,"end_line":28,"end_character":31},"in_reply_to":"3aaa91ec_db334af5","updated":"2016-06-27 18:45:01.000000000","message":"Of course, sorry.","commit_id":"016a782a60dc6b48f2e06278f2177ffe74feb5f8"}],"doc/source/support-matrix.ini":[{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"6bc68436993d0784424e006631ea68cad6b38e90","unresolved":false,"context_lines":[{"line_number":364,"context_line":"driver-impl-ironic\u003dpartial"},{"line_number":365,"context_line":"driver-notes-ironic\u003dOnly certain ironic drivers support this"},{"line_number":366,"context_line":"driver-impl-libvirt-vz-vm\u003dcomplete"},{"line_number":367,"context_line":"driver-impl-libvirt-vz-ct\u003dcomplete"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"[operation.resume]"},{"line_number":370,"context_line":"title\u003dRestore instance"}],"source_content_type":"text/x-properties","patch_set":32,"id":"1a26ad4f_dc1a6617","line":367,"updated":"2015-10-29 00:27:52.000000000","message":"I think we should have a note here that states that a resize has an implied extend of the filesystem for these drivers, as that is different than other implementations.","commit_id":"757e14cd4a3cf31163f7cf0cb3d853fac58868d9"}],"etc/nova/rootwrap.d/compute.filters":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"34efa9d788a648c3006b36a94725f289f24944ad","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":240,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":241,"context_line":"prl_disk_tool: CommandFilter, prl_disk_tool, root"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":244,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":20,"id":"fa32b979_b3c55d0b","line":241,"updated":"2015-06-26 20:17:56.000000000","message":"This should probably actually happen in https://review.openstack.org/#/c/182390/ and then rebase this change on top of that as a dependency.","commit_id":"31e526703ff85e45f02b73b34eefc7e6ad319a75"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"e6b5a95d02dcce445aec7a5767fef67c83f42dd8","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":240,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":241,"context_line":"prl_disk_tool: CommandFilter, prl_disk_tool, root"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":244,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":20,"id":"fa32b979_36393bd9","line":241,"in_reply_to":"fa32b979_b3c55d0b","updated":"2015-06-26 20:24:47.000000000","message":"Yes. In fact review 182390 should depend on this one.","commit_id":"31e526703ff85e45f02b73b34eefc7e6ad319a75"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"1bf97556e3a3c7052b58bb469ef686ebc898062d","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":240,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":241,"context_line":"prl_disk_tool: CommandFilter, prl_disk_tool, root"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":244,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"ba3cc151_d8caa36e","line":241,"updated":"2015-07-05 17:08:16.000000000","message":"Please use the RegExpFilter as CommandFilter is the weakest of checks.\n\nPlease see https://security.openstack.org/guidelines/dg_use-oslo-rootwrap-securely.html","commit_id":"6f3e8a0475397ec766fe7bd140ddd9ffd8baaf08"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":246,"context_line":"sync: CommandFilter, sync, root"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"}],"source_content_type":"application/octet-stream","patch_set":38,"id":"7aa08908_2eb9a3cc","line":249,"updated":"2016-06-08 20:36:41.000000000","message":"nit: since we\u0027re not using \u0027ploop grow\u0027 now, we could at some point be more specific about the things we call with ploop, but it could be a later cleanup.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":253,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":38,"id":"7aa08908_a070020c","line":250,"updated":"2016-06-08 20:36:41.000000000","message":"I think we really want to start using oslo.privsep for new rootwrap filters, at least that\u0027s what I came away from the Austin summit with during this session:\n\nhttps://etherpad.openstack.org/p/newton-privsep\n\nBut we don\u0027t have any examples of this in Nova yet today, so I feel back requiring that here.\n\nI think I\u0027ll ask in the dev ML about this to see if anyone is working on something in nova that uses privsep or can help out here, otherwise I don\u0027t want to block on it really.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5aff8535d995be5e77d8790cae9568f6c1eba177","unresolved":false,"context_lines":[{"line_number":246,"context_line":"sync: CommandFilter, sync, root"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"}],"source_content_type":"application/octet-stream","patch_set":55,"id":"3aaa91ec_8180488d","line":249,"updated":"2016-06-27 13:57:33.000000000","message":"Seems we could make this more strict now. From what I can see today before this change, the only options to ploop were \"restore-descriptor\" and \"grow\" and \"grow\" is replaced in this change with prl_disk_tool resize.\n\nSo I\u0027m thinking we should also make the rootwrap filter for ploop more strict since it\u0027s only used for ploop restore-descriptor now.","commit_id":"4dc2af12902a97c90b5bd3440b58e37291298731"},{"author":{"_account_id":15847,"name":"Mikhail Feoktistov","email":"mfeoktistov@virtuozzo.com","username":"mfeoktistov"},"change_message_id":"241330f062d5bbbabaf03c8c8349b54851184368","unresolved":false,"context_lines":[{"line_number":246,"context_line":"sync: CommandFilter, sync, root"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"}],"source_content_type":"application/octet-stream","patch_set":55,"id":"3aaa91ec_044c5c75","line":249,"in_reply_to":"3aaa91ec_8180488d","updated":"2016-06-27 16:23:46.000000000","message":"I agree. Thank you.\nI\u0027ll send a new version","commit_id":"4dc2af12902a97c90b5bd3440b58e37291298731"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5aff8535d995be5e77d8790cae9568f6c1eba177","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":253,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":55,"id":"3aaa91ec_06810efc","line":250,"range":{"start_line":250,"start_character":81,"end_line":250,"end_character":83},"updated":"2016-06-27 13:57:33.000000000","message":"Couldn\u0027t this be \".*M$\" to be more specific?","commit_id":"4dc2af12902a97c90b5bd3440b58e37291298731"},{"author":{"_account_id":15847,"name":"Mikhail Feoktistov","email":"mfeoktistov@virtuozzo.com","username":"mfeoktistov"},"change_message_id":"241330f062d5bbbabaf03c8c8349b54851184368","unresolved":false,"context_lines":[{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: CommandFilter, ploop, root"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"},{"line_number":253,"context_line":"xend: CommandFilter, xend, root"}],"source_content_type":"application/octet-stream","patch_set":55,"id":"3aaa91ec_a447484a","line":250,"range":{"start_line":250,"start_character":81,"end_line":250,"end_character":83},"in_reply_to":"3aaa91ec_06810efc","updated":"2016-06-27 16:23:46.000000000","message":"Yes. Now we use only \"M\" for disk size.","commit_id":"4dc2af12902a97c90b5bd3440b58e37291298731"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e3464c455d14962d336997075b9b166845ae1d4c","unresolved":false,"context_lines":[{"line_number":246,"context_line":"sync: CommandFilter, sync, root"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"# nova/virt/libvirt/imagebackend.py:"},{"line_number":249,"context_line":"ploop: RegExpFilter, ploop, root, ploop, restore-descriptor, .*"},{"line_number":250,"context_line":"prl_disk_tool: RegExpFilter, prl_disk_tool, root, prl_disk_tool, resize, --size, .*M$, --resize_partition, --hdd, .*"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"# nova/virt/libvirt/utils.py: \u0027xend\u0027, \u0027status\u0027"}],"source_content_type":"application/octet-stream","patch_set":57,"id":"3aaa91ec_93452cb5","line":249,"updated":"2016-06-27 18:06:14.000000000","message":"nit: it might be helpful to other reviewers if you point out why you made this change in the commit message, just a suggestion.","commit_id":"c1c4f0240ebf153a32d53cf9f69a72b39be73749"}],"nova/tests/unit/virt/disk/test_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1e8cf412d9d958744175eec2030596ffc5903df9","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        image \u003d imgmodel.LocalFileImage(imgfile, imgmodel.FORMAT_PLOOP)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        api.extend(image, imgsize)"},{"line_number":190,"context_line":"        mock_can_resize_image.assert_called_once_with(str(image.path) + \u0027/root.hds\u0027,"},{"line_number":191,"context_line":"                                                      imgsize)"},{"line_number":192,"context_line":"        mock_execute.assert_called_once_with(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":193,"context_line":"                                             \u0027--size\u0027, imgsize_gb,"}],"source_content_type":"text/x-python","patch_set":39,"id":"7aa08908_66cf12b4","line":190,"updated":"2016-06-09 19:26:04.000000000","message":"pep8, line is too long.","commit_id":"7e8476875050ea87734b7a7a23e425e5ff2381d1"},{"author":{"_account_id":15847,"name":"Mikhail Feoktistov","email":"mfeoktistov@virtuozzo.com","username":"mfeoktistov"},"change_message_id":"e6740e04b99a2a6b568beb6c38652174d8090a72","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        image \u003d imgmodel.LocalFileImage(imgfile, imgmodel.FORMAT_PLOOP)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        api.extend(image, imgsize)"},{"line_number":190,"context_line":"        mock_can_resize_image.assert_called_once_with(str(image.path) + \u0027/root.hds\u0027,"},{"line_number":191,"context_line":"                                                      imgsize)"},{"line_number":192,"context_line":"        mock_execute.assert_called_once_with(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":193,"context_line":"                                             \u0027--size\u0027, imgsize_gb,"}],"source_content_type":"text/x-python","patch_set":39,"id":"7aa08908_69f173cd","line":190,"in_reply_to":"7aa08908_66cf12b4","updated":"2016-06-15 16:16:40.000000000","message":"done in the next version","commit_id":"7e8476875050ea87734b7a7a23e425e5ff2381d1"}],"nova/virt/disk/api.py":[{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"c651a0d2fd899d3a1b417a1bd27fa9e6049a8542","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"def extend(image, size, use_cow\u003dFalse, is_ploop\u003dFalse):"},{"line_number":176,"context_line":"    \"\"\"Increase image to size.\"\"\""},{"line_number":177,"context_line":"    if is_ploop:"},{"line_number":178,"context_line":"        gbytes_size \u003d str(size / 1073741824) + \u0027G\u0027"},{"line_number":179,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":180,"context_line":"                      \u0027--size\u0027, gbytes_size, \u0027--resize_partition\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a0c5dc1_a31d3ebf","line":177,"updated":"2015-05-12 15:56:45.000000000","message":"I think we should keep can_resize_image check before actual resizing because we can\u0027t gurantee that shrink will succeed.","commit_id":"a6637227c1792510ce10c32eaffe1e03a9fd0365"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"11468cd943e3ac4cc6d80fa033790396cc38ae80","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"def extend(image, size, use_cow\u003dFalse, is_ploop\u003dFalse):"},{"line_number":176,"context_line":"    \"\"\"Increase image to size.\"\"\""},{"line_number":177,"context_line":"    if is_ploop:"},{"line_number":178,"context_line":"        if not can_resize_image(image + \u0027/root.hds\u0027, size):"},{"line_number":179,"context_line":"            return"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a0c5dc1_e0dd3143","line":177,"updated":"2015-05-13 18:45:32.000000000","message":"You still omit can_resize_image","commit_id":"35392479e980375d74ca6baf397484db89d503e1"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7d30a9dd08c76e4adc1236a12f1aee9e37c809ec","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        if not can_resize_image(image + \u0027/root.hds\u0027, size):"},{"line_number":179,"context_line":"            return"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        gbytes_size \u003d str(size / 1073741824) + \u0027G\u0027"},{"line_number":182,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":183,"context_line":"                      \u0027--size\u0027, gbytes_size, \u0027--resize_partition\u0027,"},{"line_number":184,"context_line":"                      \u0027--hdd\u0027, image, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a016987_8f9384fa","line":181,"range":{"start_line":181,"start_character":33,"end_line":181,"end_character":43},"updated":"2015-05-14 15:31:55.000000000","message":"you should use units.Gi (https://github.com/openstack/oslo.utils/blob/master/oslo_utils/units.py#L23)","commit_id":"61dd3f49b0e45a14ac160cf8460592b2ddeb43a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    if not isinstance(image, imgmodel.LocalImage):"},{"line_number":160,"context_line":"        return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    if (image.format \u003d\u003d imgmodel.FORMAT_PLOOP):"},{"line_number":163,"context_line":"        if not can_resize_image(image.path + \u0027/root.hds\u0027, size):"},{"line_number":164,"context_line":"            return"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"7aa08908_a3fc8cb8","line":162,"range":{"start_line":162,"start_character":4,"end_line":162,"end_character":47},"updated":"2016-06-08 20:36:41.000000000","message":"It\u0027s unfortunate that we have to do type checking in this method, I wish we have classes/types that abstracted this kind of detail. I\u0027m not sure if that\u0027s part of what mdbooth is working on with the libvirt imagebackend refactor or not (for this module I mean).","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":164,"context_line":"            return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        gbytes_size \u003d str(size / units.Gi) + \u0027G\u0027"},{"line_number":167,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":168,"context_line":"                      \u0027--size\u0027, gbytes_size, \u0027--resize_partition\u0027,"},{"line_number":169,"context_line":"                      \u0027--hdd\u0027, image.path, run_as_root\u003dTrue)"},{"line_number":170,"context_line":"        return"}],"source_content_type":"text/x-python","patch_set":38,"id":"7aa08908_29851d59","line":167,"updated":"2016-06-08 20:36:41.000000000","message":"I don\u0027t see this tested at all in unit tests, and I don\u0027t actually see any calls to this from the n-cpu logs in the CI run:\n\nhttp://openstack-3rd-party-virtuozzo-ci-logs.virtuozzo.com/57/182257/38/check/check-dsvm-tempest-vz7-exe-minimal/39c6cd7/logs/screen-n-cpu.txt.gz\n\nI see calls to prl_disk_tool but not with a \u0027G\u0027 size.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":210,"context_line":"    :param image: path to local image file"},{"line_number":211,"context_line":"    :param size: the image size in bytes"},{"line_number":212,"context_line":"    \"\"\""},{"line_number":213,"context_line":"    LOG.debug(\u0027Checking if we can resize image %(image)s. \u0027"},{"line_number":214,"context_line":"              \u0027size\u003d%(size)s\u0027, {\u0027image\u0027: image, \u0027size\u0027: size})"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    # Check that we\u0027re increasing the size"}],"source_content_type":"text/x-python","patch_set":38,"id":"7aa08908_89709173","line":213,"updated":"2016-06-08 20:36:41.000000000","message":"I also don\u0027t see this in the n-cpu logs from the job run.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"690d7bc015e2fd28a38ea69ba50c083c7df372b8","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        return"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    if (image.format \u003d\u003d imgmodel.FORMAT_PLOOP):"},{"line_number":163,"context_line":"        if not can_resize_image(str(image.path) + \u0027/root.hds\u0027, size):"},{"line_number":164,"context_line":"            return"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"}],"source_content_type":"text/x-python","patch_set":49,"id":"3aaa91ec_e2ed52b8","line":163,"updated":"2016-06-23 15:11:47.000000000","message":"Why this str() cast is used for ?","commit_id":"e472922446fdb80f9065762b36d0a6334629d778"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"690d7bc015e2fd28a38ea69ba50c083c7df372b8","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":167,"context_line":"                      \u0027--size\u0027, \u0027%dM\u0027 % (size // units.Mi),"},{"line_number":168,"context_line":"                      \u0027--resize_partition\u0027,"},{"line_number":169,"context_line":"                      \u0027--hdd\u0027, image.path, run_as_root\u003dTrue)"},{"line_number":170,"context_line":"        return"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    if not can_resize_image(image.path, size):"}],"source_content_type":"text/x-python","patch_set":49,"id":"3aaa91ec_a2afca28","line":169,"updated":"2016-06-23 15:11:47.000000000","message":"Don\u0027t you have to pass image.path + \u0027/root.hds\u0027 to this command ?","commit_id":"e472922446fdb80f9065762b36d0a6334629d778"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"11468cd943e3ac4cc6d80fa033790396cc38ae80","unresolved":false,"context_lines":[{"line_number":6343,"context_line":"        fmt, org \u003d [info[\u0027type\u0027]] * 2"},{"line_number":6344,"context_line":"        pth \u003d info[\u0027path\u0027]"},{"line_number":6345,"context_line":""},{"line_number":6346,"context_line":"        if (fmt \u003d\u003d \u0027ploop\u0027):"},{"line_number":6347,"context_line":"            disk.extend(pth, size, use_cow\u003dFalse, is_ploop\u003dTrue)"},{"line_number":6348,"context_line":"            return"},{"line_number":6349,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"9a0c5dc1_40687d87","line":6346,"updated":"2015-05-13 18:45:32.000000000","message":"size can be 0 here","commit_id":"35392479e980375d74ca6baf397484db89d503e1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":7103,"context_line":"            LOG.debug(\"Skipping resize of non-local image\")"},{"line_number":7104,"context_line":"            return"},{"line_number":7105,"context_line":""},{"line_number":7106,"context_line":"        if (image.format \u003d\u003d imgmodel.FORMAT_PLOOP):"},{"line_number":7107,"context_line":"            if (size):"},{"line_number":7108,"context_line":"                disk.extend(image, size)"},{"line_number":7109,"context_line":"            return"},{"line_number":7110,"context_line":""},{"line_number":7111,"context_line":"        # If we have a non partitioned image that we can extend"},{"line_number":7112,"context_line":"        # then ensure we\u0027re in \u0027raw\u0027 format so we can extend file system."}],"source_content_type":"text/x-python","patch_set":38,"id":"7aa08908_ee6b1b83","line":7109,"range":{"start_line":7106,"start_character":8,"end_line":7109,"end_character":18},"updated":"2016-06-08 20:36:41.000000000","message":"I don\u0027t think we need this? The condition on line 7115 will be False and then we hit 7123 which is the same as what\u0027s in here. The converted variable will be False so _disk_raw_to_qcow2 won\u0027t be called.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b7862a05da613d21c3538070e95f347b20358cad","unresolved":false,"context_lines":[{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def resize_image(self, size):"},{"line_number":1055,"context_line":"        utils.execute(\u0027prl_disk_tool\u0027, \u0027resize\u0027,"},{"line_number":1056,"context_line":"                              \u0027--size\u0027, \u0027%dM\u0027 % (size \u003e\u003e 20),"},{"line_number":1057,"context_line":"                              \u0027--resize_partition\u0027,"},{"line_number":1058,"context_line":"                              \u0027--hdd\u0027, self.path, run_as_root\u003dTrue)"},{"line_number":1059,"context_line":""},{"line_number":1060,"context_line":"    def snapshot_extract(self, target, out_format):"},{"line_number":1061,"context_line":"        img_path \u003d os.path.join(self.path, \"root.hds\")"}],"source_content_type":"text/x-python","patch_set":38,"id":"7aa08908_4e006f66","line":1058,"range":{"start_line":1056,"start_character":30,"end_line":1058,"end_character":67},"updated":"2016-06-08 20:36:41.000000000","message":"nit: the alignment is messed up here, please align with the args above.","commit_id":"efea57b0395abd138f835499185fae0e3b6660ae"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"690d7bc015e2fd28a38ea69ba50c083c7df372b8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        # We shell out to cp because that will intelligently copy"},{"line_number":199,"context_line":"        # sparse files.  I.E. holes will not be written to DEST,"},{"line_number":200,"context_line":"        # rather recreated efficiently.  In addition, since"},{"line_number":201,"context_line":"        # coreutils 8.11, holes can be read efficiently too."},{"line_number":202,"context_line":"        execute(\u0027cp\u0027, src, dest)"},{"line_number":203,"context_line":"    else:"},{"line_number":204,"context_line":"        if receive:"}],"source_content_type":"text/x-python","patch_set":49,"id":"3aaa91ec_05e6a843","side":"PARENT","line":201,"updated":"2016-06-23 15:11:47.000000000","message":"Can you complete the comment and indicate why we use \u0027-r\u0027 option here.","commit_id":"98f1882da1427267dc1b1980e170c8272ca42894"}],"nova/virt/libvirt/volume/remotefs.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"690d7bc015e2fd28a38ea69ba50c083c7df372b8","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                          on_execute\u003don_execute, on_completion\u003don_completion)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def copy_file(self, src, dst, on_execute, on_completion, compression):"},{"line_number":199,"context_line":"        utils.execute(\u0027scp\u0027, \u0027-r\u0027, src, dst,"},{"line_number":200,"context_line":"                      on_execute\u003don_execute, on_completion\u003don_completion)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":49,"id":"3aaa91ec_45bc30dc","line":199,"updated":"2016-06-23 15:11:47.000000000","message":"A comment here to explain why we use -r would be interesting too here. To avoid any questions in future.","commit_id":"e472922446fdb80f9065762b36d0a6334629d778"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"690d7bc015e2fd28a38ea69ba50c083c7df372b8","unresolved":false,"context_lines":[{"line_number":324,"context_line":"                      on_execute\u003don_execute, on_completion\u003don_completion)"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"    def copy_file(self, src, dst, on_execute, on_completion, compression):"},{"line_number":327,"context_line":"        args \u003d [\u0027rsync\u0027, \u0027-r\u0027, \u0027--sparse\u0027, src, dst]"},{"line_number":328,"context_line":"        if compression:"},{"line_number":329,"context_line":"            args.append(\u0027--compress\u0027)"},{"line_number":330,"context_line":"        utils.execute(*args,"}],"source_content_type":"text/x-python","patch_set":49,"id":"3aaa91ec_a5cd1487","line":327,"updated":"2016-06-23 15:11:47.000000000","message":"Likewise here.","commit_id":"e472922446fdb80f9065762b36d0a6334629d778"}],"releasenotes/notes/bp-virtuozzo-instance-resize-support-b523e6e8a0de0fbc.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"669dff9383ec75b0b1ca789b749ca53ae85f5856","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"3aaa91ec_e5e62ae7","line":4,"updated":"2016-06-28 17:11:00.000000000","message":"We should probably also have an upgrade section in the release note:\n\nhttp://docs.openstack.org/developer/reno/usage.html\n\nBecause of the rootwrap change to use prl_disk_tool which is a new dependency to make this work. And I believe that will also affect snapshot since this changes create_image to use prl_disk_tool instead of \"ploop grow\".","commit_id":"6097340176bbb130ac8bfc8f012239c3cfc53301"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e32695b81bebecba770b299ab0aabf495e0cf27f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":59,"id":"3aaa91ec_9d497ad3","line":4,"in_reply_to":"3aaa91ec_e5e62ae7","updated":"2016-06-28 17:59:47.000000000","message":"Ignore the snapshot comment, I was confused about what imagebackend.create_image was used for. I\u0027m fine with just calling out the new dependency on prl_disk_tool for using virtuozzo/ploop images in the upgrade section of the release note.","commit_id":"6097340176bbb130ac8bfc8f012239c3cfc53301"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ac63189b1b69f76e404fbf19bdf6be1a663042ad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Virtuozzo ploop disks can be resized now with \"nova resize\"."},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"    - Upgrade the rootwrap configuration for the compute service if"},{"line_number":6,"context_line":"      you use ploop images, so that \"ploop grow\" filter is changed"}],"source_content_type":"text/x-yaml","patch_set":60,"id":"3aaa91ec_f65c1b7f","line":3,"range":{"start_line":3,"start_character":47,"end_line":3,"end_character":51},"updated":"2016-06-28 19:04:27.000000000","message":"I would s/with/during/ but this is fine too.","commit_id":"6c029e1f4e6317b4a82fe490588987a0e70c0693"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"4c2321a78cf4b267e6ffeaa90a5f80483589603f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Virtuozzo ploop disks can be resized now with \"nova resize\"."},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"    - Upgrade the rootwrap configuration for the compute service if"},{"line_number":6,"context_line":"      you use ploop images, so that \"ploop grow\" filter is changed"}],"source_content_type":"text/x-yaml","patch_set":60,"id":"3aaa91ec_11dd7142","line":3,"range":{"start_line":3,"start_character":47,"end_line":3,"end_character":51},"in_reply_to":"3aaa91ec_f65c1b7f","updated":"2016-06-28 19:14:33.000000000","message":"Done","commit_id":"6c029e1f4e6317b4a82fe490588987a0e70c0693"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ac63189b1b69f76e404fbf19bdf6be1a663042ad","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Virtuozzo ploop disks can be resized now with \"nova resize\"."},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"    - Upgrade the rootwrap configuration for the compute service if"},{"line_number":6,"context_line":"      you use ploop images, so that \"ploop grow\" filter is changed"},{"line_number":7,"context_line":"      to \"prl_disk_tool resize\"."}],"source_content_type":"text/x-yaml","patch_set":60,"id":"3aaa91ec_f6b89b77","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":40},"updated":"2016-06-28 19:04:27.000000000","message":"This is probably something like \"You must update the rootwrap configuration before installing this code ..\" right?","commit_id":"6c029e1f4e6317b4a82fe490588987a0e70c0693"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"4c2321a78cf4b267e6ffeaa90a5f80483589603f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"    - Virtuozzo ploop disks can be resized now with \"nova resize\"."},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"    - Upgrade the rootwrap configuration for the compute service if"},{"line_number":6,"context_line":"      you use ploop images, so that \"ploop grow\" filter is changed"},{"line_number":7,"context_line":"      to \"prl_disk_tool resize\"."}],"source_content_type":"text/x-yaml","patch_set":60,"id":"3aaa91ec_f1df0538","line":5,"range":{"start_line":5,"start_character":6,"end_line":5,"end_character":40},"in_reply_to":"3aaa91ec_f6b89b77","updated":"2016-06-28 19:14:33.000000000","message":"Done","commit_id":"6c029e1f4e6317b4a82fe490588987a0e70c0693"}]}
