)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":11,"context_line":"remotely export VHD from XenServer(image upload) or import"},{"line_number":12,"context_line":"VHD from Xenerver(image download)."},{"line_number":13,"context_line":"The existing GlanceStore handles VHD files directly in"},{"line_number":14,"context_line":"XenServer\u0027s DomZero, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"},{"line_number":16,"context_line":"image handler invokes APIs formally supported by XenServer"},{"line_number":17,"context_line":"to export/import VHD remotel, it can support other SR"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_202f27f7","line":14,"range":{"start_line":14,"start_character":12,"end_line":14,"end_character":19},"updated":"2017-08-25 11:32:47.000000000","message":"Dom0","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":10,"context_line":"will use the vdi streaming function from os-xenapi to"},{"line_number":11,"context_line":"remotely export VHD from XenServer(image upload) or import"},{"line_number":12,"context_line":"VHD from Xenerver(image download)."},{"line_number":13,"context_line":"The existing GlanceStore handles VHD files directly in"},{"line_number":14,"context_line":"XenServer\u0027s DomZero, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"},{"line_number":16,"context_line":"image handler invokes APIs formally supported by XenServer"},{"line_number":17,"context_line":"to export/import VHD remotel, it can support other SR"},{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_20660753","line":15,"range":{"start_line":13,"start_character":25,"end_line":15,"end_character":47},"updated":"2017-08-25 11:32:47.000000000","message":"uses custom functionality to directly manipulate files on-disk.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":10,"context_line":"will use the vdi streaming function from os-xenapi to"},{"line_number":11,"context_line":"remotely export VHD from XenServer(image upload) or import"},{"line_number":12,"context_line":"VHD from Xenerver(image download)."},{"line_number":13,"context_line":"The existing GlanceStore handles VHD files directly in"},{"line_number":14,"context_line":"XenServer\u0027s DomZero, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"},{"line_number":16,"context_line":"image handler invokes APIs formally supported by XenServer"},{"line_number":17,"context_line":"to export/import VHD remotel, it can support other SR"},{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_17754932","line":15,"range":{"start_line":13,"start_character":25,"end_line":15,"end_character":47},"in_reply_to":"7f287b81_20660753","updated":"2017-08-29 11:44:19.000000000","message":"Done","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":14,"context_line":"XenServer\u0027s DomZero, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"},{"line_number":16,"context_line":"image handler invokes APIs formally supported by XenServer"},{"line_number":17,"context_line":"to export/import VHD remotel, it can support other SR"},{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_e0111fae","line":17,"range":{"start_line":17,"start_character":21,"end_line":17,"end_character":28},"updated":"2017-08-25 11:32:47.000000000","message":"remotely","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":14,"context_line":"XenServer\u0027s DomZero, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"},{"line_number":16,"context_line":"image handler invokes APIs formally supported by XenServer"},{"line_number":17,"context_line":"to export/import VHD remotel, it can support other SR"},{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_7786cd15","line":17,"range":{"start_line":17,"start_character":21,"end_line":17,"end_character":28},"in_reply_to":"7f287b81_e0111fae","updated":"2017-08-29 11:44:19.000000000","message":"Done","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"},{"line_number":21,"context_line":"Depends-On: I2cfe7340d48071bf96bc7ba0ad19f5a0b12b5378"},{"line_number":22,"context_line":"Depends-On: I37860e63de32d988525cdc32440fe711777263e6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_80adbb89","line":21,"range":{"start_line":21,"start_character":12,"end_line":21,"end_character":53},"updated":"2017-08-25 11:32:47.000000000","message":"We can\u0027t depends-on an os-xenapi change.\nPerhaps put up a change to global requirements to use os-xenapi v3 (which will absolutely fail until it is released) and depends-on that.\nPutting this here without a reference to global-requirements makes me think we might be able to merge it, but we can\u0027t.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":18,"context_line":"types also e.g. lvm, iscsi, etc."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"},{"line_number":21,"context_line":"Depends-On: I2cfe7340d48071bf96bc7ba0ad19f5a0b12b5378"},{"line_number":22,"context_line":"Depends-On: I37860e63de32d988525cdc32440fe711777263e6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_6a7f0515","line":21,"range":{"start_line":21,"start_character":12,"end_line":21,"end_character":53},"in_reply_to":"7f287b81_80adbb89","updated":"2017-08-29 11:44:19.000000000","message":"With this depends, it at least can pass the dsvm test as it will include the change from os-xenapi. With a dependence on global requires appling os-xeanpi v3 is good to avoid miss-merged but it can\u0027t help to verify this commit with CI jobs.\n\nActually this commit won\u0027t be merged as the UT will surely keep failed until os-xenapi v3 released and applied in nova project.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"},{"line_number":21,"context_line":"Depends-On: I2cfe7340d48071bf96bc7ba0ad19f5a0b12b5378"},{"line_number":22,"context_line":"Depends-On: I37860e63de32d988525cdc32440fe711777263e6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_e0035f72","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":53},"updated":"2017-08-25 11:32:47.000000000","message":"Is this a real depends-on?  I\u0027d assumed this was part of the same branch?","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"},{"line_number":21,"context_line":"Depends-On: I2cfe7340d48071bf96bc7ba0ad19f5a0b12b5378"},{"line_number":22,"context_line":"Depends-On: I37860e63de32d988525cdc32440fe711777263e6"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f287b81_2a757d32","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":53},"in_reply_to":"7f287b81_e0035f72","updated":"2017-08-29 11:44:19.000000000","message":"Will remove this depends-on.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"76c92f4fd428778223369efb3199b7d4ea7ecbaf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"With the new image handler, it creates an image proxy which"},{"line_number":10,"context_line":"will use the vdi streaming function from os-xenapi to"},{"line_number":11,"context_line":"remotely export VHD from XenServer(image upload) or import"},{"line_number":12,"context_line":"VHD from Xenerver(image download)."},{"line_number":13,"context_line":"The existing GlanceStore uses custom functionality to directly"},{"line_number":14,"context_line":"manipulate files on-disk, so it has the restriction that SR\u0027s"},{"line_number":15,"context_line":"type must be file system based: e.g. ext or nfs. The new"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"7f287b81_e31b8dc7","line":12,"range":{"start_line":12,"start_character":4,"end_line":12,"end_character":8},"updated":"2017-09-05 02:41:38.000000000","message":"to","commit_id":"8df284a70de4d3c1bac354ddf0b9772c2255fc1d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c03c6ad28af97d6c683b86e31841499f07fb94f0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Note:"},{"line_number":21,"context_line":"The function of image handler depends on os-xenapi 0.3.3."},{"line_number":22,"context_line":"So bump os-xenapi\u0027s version to 0.3.3 and also decalre depends"},{"line_number":23,"context_line":"on the patch which bump version in openstack/requirements."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Blueprint: xenapi-image-handler-option-improvement"},{"line_number":26,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_c175bfcc","line":23,"updated":"2018-05-11 14:10:08.000000000","message":"Do we not need to check for a minimum version of XenServer, is that already covered?","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b47c9811110e30f7f32333f9e86d10efacf920af","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Note:"},{"line_number":21,"context_line":"The function of image handler depends on os-xenapi 0.3.3."},{"line_number":22,"context_line":"So bump os-xenapi\u0027s version to 0.3.3 and also decalre depends"},{"line_number":23,"context_line":"on the patch which bump version in openstack/requirements."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Blueprint: xenapi-image-handler-option-improvement"},{"line_number":26,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_a00665cd","line":23,"in_reply_to":"5f7c97a3_3a260bd0","updated":"2018-05-14 04:16:44.000000000","message":"Naichuan, could you help to check when the remote VDI import or export API was introduced? I think VDI streaming only depends on that remote import/export API. iirc, that\u0027s introduced in a very early release of XenServer.","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"64d5bb24e1a83cbd3bc38d814412dea9d51ff6a2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Note:"},{"line_number":21,"context_line":"The function of image handler depends on os-xenapi 0.3.3."},{"line_number":22,"context_line":"So bump os-xenapi\u0027s version to 0.3.3 and also decalre depends"},{"line_number":23,"context_line":"on the patch which bump version in openstack/requirements."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Blueprint: xenapi-image-handler-option-improvement"},{"line_number":26,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_00df19d6","line":23,"in_reply_to":"5f7c97a3_a00665cd","updated":"2018-05-14 05:18:24.000000000","message":"Will check it.","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"1d29528e4161451bc8b3f8e256464a88af6d4db0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Note:"},{"line_number":21,"context_line":"The function of image handler depends on os-xenapi 0.3.3."},{"line_number":22,"context_line":"So bump os-xenapi\u0027s version to 0.3.3 and also decalre depends"},{"line_number":23,"context_line":"on the patch which bump version in openstack/requirements."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Blueprint: xenapi-image-handler-option-improvement"},{"line_number":26,"context_line":"Change-Id: I0ad8e34808401ace9b85e1b937a542f4c4e61690"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"5f7c97a3_3a260bd0","line":23,"in_reply_to":"5f7c97a3_c175bfcc","updated":"2018-05-13 02:51:32.000000000","message":"Currently oepnstack on xenserver we only support version xenserver 7.1 LTSR and above, VDI streaming will obey this rule.","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b043bc8edcfe6f85dff4eb68bc564024320f5736","unresolved":false,"context_lines":[{"line_number":20,"context_line":"Note:"},{"line_number":21,"context_line":"vdi streaming would be supported by XenServer 6.5 or above."},{"line_number":22,"context_line":"The function of image handler depends on os-xenapi 0.3.3 or"},{"line_number":23,"context_line":"above, so bump os-xenapi\u0027s version to 0.3.3 and also decalre"},{"line_number":24,"context_line":"depends on the patch which bump version in openstack/requirements."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Blueprint: xenapi-image-handler-option-improvement"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":36,"id":"5f7c97a3_32e71de6","line":23,"range":{"start_line":23,"start_character":53,"end_line":23,"end_character":60},"updated":"2018-06-11 15:17:08.000000000","message":"declare","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}],"doc/source/admin/configuration/hypervisor-xen-api.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c03c6ad28af97d6c683b86e31841499f07fb94f0","unresolved":false,"context_lines":[{"line_number":457,"context_line":"* ``vdi_remote_stream``:  With this image handler, the image data streams"},{"line_number":458,"context_line":"  between XenServer and the glance image service. As it uses the remote"},{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5f7c97a3_81a6e752","line":460,"updated":"2018-05-11 14:10:08.000000000","message":"Nit: I would put this one first as it is the default one.","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"727385ddcc2941b29340f2d4314aebae2c7df830","unresolved":false,"context_lines":[{"line_number":457,"context_line":"* ``vdi_remote_stream``:  With this image handler, the image data streams"},{"line_number":458,"context_line":"  between XenServer and the glance image service. As it uses the remote"},{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5f7c97a3_8abfc05f","line":460,"in_reply_to":"5f7c97a3_81a6e752","updated":"2018-05-14 10:50:51.000000000","message":"Sorry, John, we will use direct_vhd as the default handler. Will change conf file(nova/conf/xenserver.py) to keep consistent.","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"1d29528e4161451bc8b3f8e256464a88af6d4db0","unresolved":false,"context_lines":[{"line_number":457,"context_line":"* ``vdi_remote_stream``:  With this image handler, the image data streams"},{"line_number":458,"context_line":"  between XenServer and the glance image service. As it uses the remote"},{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"}],"source_content_type":"text/x-rst","patch_set":33,"id":"5f7c97a3_ba1bfb7e","line":460,"in_reply_to":"5f7c97a3_81a6e752","updated":"2018-05-13 02:51:32.000000000","message":"Thank you very much, Join. will move it","commit_id":"cb203071572aa7d4490b0b28e31e7a22af1d76e3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"},{"line_number":464,"context_line":"within the ``[xenserver]`` section. For example, the following config setting"},{"line_number":465,"context_line":"is to use ``direct_vhd`` as the image handler:"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5f7c97a3_55fe4305","line":462,"range":{"start_line":462,"start_character":0,"end_line":462,"end_character":51},"updated":"2018-06-11 15:39:38.000000000","message":"Not according to this:\n\nhttps://review.openstack.org/#/c/486475/36/nova/conf/xenserver.py@474","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8daed71a6a02559813fad981a387a35896fdfbd","unresolved":false,"context_lines":[{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"},{"line_number":464,"context_line":"within the ``[xenserver]`` section. For example, the following config setting"},{"line_number":465,"context_line":"is to use ``direct_vhd`` as the image handler:"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5f7c97a3_d5d9f3f3","line":462,"range":{"start_line":462,"start_character":0,"end_line":462,"end_character":51},"in_reply_to":"5f7c97a3_55fe4305","updated":"2018-06-11 15:58:34.000000000","message":"Done","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0e6a1d6327c76dda307be24c7d2d56da28f0731d","unresolved":false,"context_lines":[{"line_number":459,"context_line":"  APIs supported by XAPI, this plugin works for all SR types supported by"},{"line_number":460,"context_line":"  XenServer."},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"``vdi_remote_stream`` is the default image handler. If want to use"},{"line_number":463,"context_line":"a different image handler, you can change the config setting of ``image_handler``"},{"line_number":464,"context_line":"within the ``[xenserver]`` section. For example, the following config setting"},{"line_number":465,"context_line":"is to use ``direct_vhd`` as the image handler:"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5f7c97a3_55c64318","line":462,"range":{"start_line":462,"start_character":0,"end_line":462,"end_character":51},"in_reply_to":"5f7c97a3_55fe4305","updated":"2018-06-11 15:53:17.000000000","message":"Whoops, yes, you\u0027re right.  Earlier on, they were going to switch the default to this.  I complained and they reverted it, but missed this one (and so did I).","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":465,"context_line":"is to use ``direct_vhd`` as the image handler:"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":".. code-block:: ini"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"   image_handler\u003ddirect_vhd"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5f7c97a3_3214fd4c","line":468,"updated":"2018-06-11 15:39:38.000000000","message":"nit: would be good to have [xenserver] in here to reinforce the group.","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8daed71a6a02559813fad981a387a35896fdfbd","unresolved":false,"context_lines":[{"line_number":465,"context_line":"is to use ``direct_vhd`` as the image handler:"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":".. code-block:: ini"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"   image_handler\u003ddirect_vhd"}],"source_content_type":"text/x-rst","patch_set":36,"id":"5f7c97a3_f5d66fc3","line":468,"in_reply_to":"5f7c97a3_3214fd4c","updated":"2018-06-11 15:58:34.000000000","message":"Done","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}],"nova/conf/xenserver.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":495,"context_line":"GlanceStore."},{"line_number":496,"context_line":"\"\"\"),"},{"line_number":497,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":498,"context_line":"        default\u003d\u0027direct_vhd\u0027,"},{"line_number":499,"context_line":"        help\u003d\"\"\""},{"line_number":500,"context_line":"The plugin driver used to handle image uploads and downloads."},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_a0d677c2","line":498,"range":{"start_line":498,"start_character":17,"end_line":498,"end_character":27},"updated":"2017-08-25 11:32:47.000000000","message":"We should think about what the default for this new option should be.\nIdeally I\u0027d like the default to be vdi_remote_stream - I\u0027m not sure if it\u0027s easier to set this now (and update the relno to say the default for image_handler is the new approach) rather than have another cycle to change the default.\n\nCan this patch modify the default and relno to make it clear what we\u0027re doing?","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":495,"context_line":"GlanceStore."},{"line_number":496,"context_line":"\"\"\"),"},{"line_number":497,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":498,"context_line":"        default\u003d\u0027direct_vhd\u0027,"},{"line_number":499,"context_line":"        help\u003d\"\"\""},{"line_number":500,"context_line":"The plugin driver used to handle image uploads and downloads."},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_b7343594","line":498,"range":{"start_line":498,"start_character":17,"end_line":498,"end_character":27},"in_reply_to":"7f287b81_a0d677c2","updated":"2017-08-29 11:44:19.000000000","message":"sure. Let\u0027s make this vdi steaming as default.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":471,"context_line":"GlanceStore."},{"line_number":472,"context_line":"\"\"\"),"},{"line_number":473,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":474,"context_line":"        default\u003d\u0027vdi_remote_stream\u0027,"},{"line_number":475,"context_line":"        choices\u003d(\u0027direct_vhd\u0027, \u0027vdi_local_dev\u0027, \u0027vdi_remote_stream\u0027),"},{"line_number":476,"context_line":"        help\u003d\"\"\""},{"line_number":477,"context_line":"The plugin used to handle image uploads and downloads."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_152b55eb","line":474,"range":{"start_line":474,"start_character":17,"end_line":474,"end_character":34},"updated":"2018-05-07 17:07:32.000000000","message":"Oh, see, now you\u0027re changing default behavior.  Is vdi_remote_stream totally backward compatible with direct_vhd?","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"2a68c01de32721683c8f680a45a772213153b7fc","unresolved":false,"context_lines":[{"line_number":471,"context_line":"GlanceStore."},{"line_number":472,"context_line":"\"\"\"),"},{"line_number":473,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":474,"context_line":"        default\u003d\u0027vdi_remote_stream\u0027,"},{"line_number":475,"context_line":"        choices\u003d(\u0027direct_vhd\u0027, \u0027vdi_local_dev\u0027, \u0027vdi_remote_stream\u0027),"},{"line_number":476,"context_line":"        help\u003d\"\"\""},{"line_number":477,"context_line":"The plugin used to handle image uploads and downloads."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_39bac709","line":474,"range":{"start_line":474,"start_character":17,"end_line":474,"end_character":34},"in_reply_to":"5f7c97a3_152b55eb","updated":"2018-05-10 09:09:32.000000000","message":"Will change all the default image handler setting to `vdi_remote_stream`","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":489,"context_line":"When booting an instance from a glance image, it downloads the image and"},{"line_number":490,"context_line":"streams it into the disk which is attached to the compute VM."},{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_f51259b1","line":492,"range":{"start_line":492,"start_character":49,"end_line":492,"end_character":61},"updated":"2018-05-07 17:07:32.000000000","message":"use present tense (\"streams\") rather than progressive (\"is streaming\")","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":489,"context_line":"When booting an instance from a glance image, it downloads the image and"},{"line_number":490,"context_line":"streams it into the disk which is attached to the compute VM."},{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_74f7e6d4","line":492,"range":{"start_line":492,"start_character":49,"end_line":492,"end_character":61},"in_reply_to":"5f7c97a3_f51259b1","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":490,"context_line":"streams it into the disk which is attached to the compute VM."},{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."},{"line_number":496,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_5521cdfa","line":493,"range":{"start_line":493,"start_character":0,"end_line":493,"end_character":21},"updated":"2018-05-07 17:07:32.000000000","message":"via a/the remote import API","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":490,"context_line":"streams it into the disk which is attached to the compute VM."},{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."},{"line_number":496,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_1400f2aa","line":493,"range":{"start_line":493,"start_character":0,"end_line":493,"end_character":21},"in_reply_to":"5f7c97a3_5521cdfa","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."},{"line_number":496,"context_line":"\"\"\"),"},{"line_number":497,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_357e91e4","line":494,"range":{"start_line":494,"start_character":44,"end_line":494,"end_character":54},"updated":"2018-05-07 17:07:32.000000000","message":"a/the","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."},{"line_number":496,"context_line":"\"\"\"),"},{"line_number":497,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_751e49bb","line":494,"range":{"start_line":494,"start_character":16,"end_line":494,"end_character":28},"updated":"2018-05-07 17:07:32.000000000","message":"streams","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":491,"context_line":"* ``vdi_remote_stream``: This plugin implements an image handler which works"},{"line_number":492,"context_line":"as a proxy between glance and XenServer. The VHD is streaming to XenServer"},{"line_number":493,"context_line":"via remote import API supplied by XAPI for image download; and for image"},{"line_number":494,"context_line":"upload, the VHD is streaming from XenServer via remote export API supplied"},{"line_number":495,"context_line":"by XAPI. This plugin works for all SR types supported by XenServer."},{"line_number":496,"context_line":"\"\"\"),"},{"line_number":497,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_d42fda3c","line":494,"range":{"start_line":494,"start_character":16,"end_line":494,"end_character":28},"in_reply_to":"5f7c97a3_751e49bb","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":471,"context_line":"GlanceStore."},{"line_number":472,"context_line":"\"\"\"),"},{"line_number":473,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":474,"context_line":"        default\u003d\u0027direct_vhd\u0027,"},{"line_number":475,"context_line":"        choices\u003d(\u0027direct_vhd\u0027, \u0027vdi_local_dev\u0027, \u0027vdi_remote_stream\u0027),"},{"line_number":476,"context_line":"        help\u003d\"\"\""},{"line_number":477,"context_line":"The plugin used to handle image uploads and downloads."}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_75d6df51","line":474,"updated":"2018-06-11 15:39:38.000000000","message":"Looking at CI results, we don\u0027t change the default so we\u0027re still testing with direct_vhd, just FYI to other reviewers:\n\nhttp://dd6b71949550285df7dc-dda4e480e005aaa13ec303551d2d8155.r49.cf1.rackcdn.com/75/486475/36/check/dsvm-tempest-neutron-network/83c69a8/logs/etc/nova/nova-cpu.conf.txt.gz\n\nWould it be possible to add a DNM patch for the xenserver CI so we can get a run with vdi_remote_stream to make sure it works?","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8daed71a6a02559813fad981a387a35896fdfbd","unresolved":false,"context_lines":[{"line_number":471,"context_line":"GlanceStore."},{"line_number":472,"context_line":"\"\"\"),"},{"line_number":473,"context_line":"    cfg.StrOpt(\u0027image_handler\u0027,"},{"line_number":474,"context_line":"        default\u003d\u0027direct_vhd\u0027,"},{"line_number":475,"context_line":"        choices\u003d(\u0027direct_vhd\u0027, \u0027vdi_local_dev\u0027, \u0027vdi_remote_stream\u0027),"},{"line_number":476,"context_line":"        help\u003d\"\"\""},{"line_number":477,"context_line":"The plugin used to handle image uploads and downloads."}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_55ef2386","line":474,"in_reply_to":"5f7c97a3_75d6df51","updated":"2018-06-11 15:58:34.000000000","message":"I\u0027ll push a patch on top of this series to change the default.","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}],"nova/tests/unit/virt/xenapi/image/test_vdi_stream.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                         \u0027os_type\u0027: \u0027default\u0027,"},{"line_number":46,"context_line":"                         \u0027xenapi_use_agent\u0027: \u0027true\u0027}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @mock.patch.object(image_api, \u0027download\u0027,"},{"line_number":49,"context_line":"                       return_value\u003d\u0027fake_data\u0027)"},{"line_number":50,"context_line":"    @mock.patch.object(utils, \u0027IterableToFileAdapter\u0027,"},{"line_number":51,"context_line":"                       return_value\u003d\u0027fake_stream\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027,"},{"line_number":53,"context_line":"                       return_value\u003d\u0027fake_sr_ref\u0027)"},{"line_number":54,"context_line":"    @mock.patch.object(image, \u0027stream_to_vdis\u0027)"},{"line_number":55,"context_line":"    def test_download_image(self, stream_to, find_sr, to_file, download):"},{"line_number":56,"context_line":"        self.store.download_image(self.context, self.session,"},{"line_number":57,"context_line":"                                  self.instance, \u0027fake_image_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_5576ad08","line":54,"range":{"start_line":48,"start_character":0,"end_line":54,"end_character":47},"updated":"2018-05-07 17:07:32.000000000","message":"A lot of these mocks are repeated; is it possible to factor them out into the setUp?","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"2a68c01de32721683c8f680a45a772213153b7fc","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                         \u0027os_type\u0027: \u0027default\u0027,"},{"line_number":46,"context_line":"                         \u0027xenapi_use_agent\u0027: \u0027true\u0027}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    @mock.patch.object(image_api, \u0027download\u0027,"},{"line_number":49,"context_line":"                       return_value\u003d\u0027fake_data\u0027)"},{"line_number":50,"context_line":"    @mock.patch.object(utils, \u0027IterableToFileAdapter\u0027,"},{"line_number":51,"context_line":"                       return_value\u003d\u0027fake_stream\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(vm_utils, \u0027safe_find_sr\u0027,"},{"line_number":53,"context_line":"                       return_value\u003d\u0027fake_sr_ref\u0027)"},{"line_number":54,"context_line":"    @mock.patch.object(image, \u0027stream_to_vdis\u0027)"},{"line_number":55,"context_line":"    def test_download_image(self, stream_to, find_sr, to_file, download):"},{"line_number":56,"context_line":"        self.store.download_image(self.context, self.session,"},{"line_number":57,"context_line":"                                  self.instance, \u0027fake_image_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_19e4ab3b","line":54,"range":{"start_line":48,"start_character":0,"end_line":54,"end_character":47},"in_reply_to":"5f7c97a3_5576ad08","updated":"2018-05-10 09:09:32.000000000","message":"Hi, Eric, all the functions are mocked no more than two times. In truth, I prefer current structure. Mock it in a local area is more readable and flexible.","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"}],"nova/tests/unit/virt/xenapi/test_vm_utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.session \u003d FakeSession()"},{"line_number":225,"context_line":"        self.instance \u003d {\"uuid\": \"uuid\"}"},{"line_number":226,"context_line":"        self.image_handler \u003d image_utils.get_image_handler("},{"line_number":227,"context_line":"            CONF.xenserver.image_handler)"},{"line_number":228,"context_line":"        self.flags(group\u003d\u0027glance\u0027, api_servers\u003d[\u0027http://localhost:9292\u0027])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        make_uuid_stack_patcher \u003d mock.patch.object("}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_f5c18f81","side":"PARENT","line":227,"range":{"start_line":227,"start_character":12,"end_line":227,"end_character":40},"updated":"2018-06-11 15:39:38.000000000","message":"The default is still direct_vhd so I\u0027m not sure why this needs to change.","commit_id":"eec0fe59ff08285181ac6c74ffcc36348b692b69"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8daed71a6a02559813fad981a387a35896fdfbd","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.session \u003d FakeSession()"},{"line_number":225,"context_line":"        self.instance \u003d {\"uuid\": \"uuid\"}"},{"line_number":226,"context_line":"        self.image_handler \u003d image_utils.get_image_handler("},{"line_number":227,"context_line":"            CONF.xenserver.image_handler)"},{"line_number":228,"context_line":"        self.flags(group\u003d\u0027glance\u0027, api_servers\u003d[\u0027http://localhost:9292\u0027])"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        make_uuid_stack_patcher \u003d mock.patch.object("}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_95a61b54","side":"PARENT","line":227,"range":{"start_line":227,"start_character":12,"end_line":227,"end_character":40},"in_reply_to":"5f7c97a3_f5c18f81","updated":"2018-06-11 15:58:34.000000000","message":"Done","commit_id":"eec0fe59ff08285181ac6c74ffcc36348b692b69"}],"nova/virt/xenapi/image/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":28,"context_line":"IMAGE_HANDLERS \u003d {\u0027direct_vhd\u0027: \u0027glance.GlanceStore\u0027,"},{"line_number":29,"context_line":"                  \u0027vdi_local_dev\u0027: \u0027vdi_through_dev.VdiThroughDevStore\u0027,"},{"line_number":30,"context_line":"                  \u0027vdi_remote_stream\u0027: \u0027vdi_stream.VdiStreamStore\u0027}"},{"line_number":31,"context_line":"DEFAULT_IMAGE_HANDLER \u003d \u0027direct_vhd\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_default_image_handler():"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_554f8dbc","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":36},"updated":"2018-05-07 17:07:32.000000000","message":"See, now this no longer matches the conf default.  See previous patch.","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"IMAGE_HANDLERS \u003d {\u0027direct_vhd\u0027: \u0027glance.GlanceStore\u0027,"},{"line_number":29,"context_line":"                  \u0027vdi_local_dev\u0027: \u0027vdi_through_dev.VdiThroughDevStore\u0027,"},{"line_number":30,"context_line":"                  \u0027vdi_remote_stream\u0027: \u0027vdi_stream.VdiStreamStore\u0027}"},{"line_number":31,"context_line":"DEFAULT_IMAGE_HANDLER \u003d \u0027direct_vhd\u0027"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def get_default_image_handler():"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_b42a5e29","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":36},"in_reply_to":"5f7c97a3_554f8dbc","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4755423a08539c032f75b013ca076db59178d035","unresolved":false,"context_lines":[{"line_number":24,"context_line":"_VDI_FORMAT_RAW \u003d 1"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"IMAGE_API \u003d image.API()"},{"line_number":27,"context_line":"IMAGE_HANDLERS \u003d {\u0027direct_vhd\u0027: \u0027glance.GlanceStore\u0027,"},{"line_number":28,"context_line":"                  \u0027vdi_local_dev\u0027: \u0027vdi_through_dev.VdiThroughDevStore\u0027}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def get_image_handler(handler_name):"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_58df74d5","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":72},"updated":"2018-05-10 16:55:51.000000000","message":"Looks like you forgot to add the new handler here.","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"5e2521e11bf689175089c408b32b0a2e2ef8581c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"_VDI_FORMAT_RAW \u003d 1"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"IMAGE_API \u003d image.API()"},{"line_number":27,"context_line":"IMAGE_HANDLERS \u003d {\u0027direct_vhd\u0027: \u0027glance.GlanceStore\u0027,"},{"line_number":28,"context_line":"                  \u0027vdi_local_dev\u0027: \u0027vdi_through_dev.VdiThroughDevStore\u0027}"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def get_image_handler(handler_name):"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f7c97a3_c83e498a","line":28,"range":{"start_line":27,"start_character":0,"end_line":28,"end_character":72},"in_reply_to":"5f7c97a3_58df74d5","updated":"2018-05-11 01:39:30.000000000","message":"Ah, sorry, a bad merge experience:[","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"}],"nova/virt/xenapi/image/vdi_stream.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"\"\"\" This class will handle image data in a streaming way."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from os_xenapi.client import exception as xenapi_exception"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_20c287ea","line":16,"range":{"start_line":16,"start_character":20,"end_line":16,"end_character":56},"updated":"2017-08-25 11:32:47.000000000","message":"stream image data direct to a VDI","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                                               instance, host_url,"},{"line_number":42,"context_line":"                                               data\u003dimage_stream)"},{"line_number":43,"context_line":"        except xenapi_exception.OsXenApiException:"},{"line_number":44,"context_line":"            raise exception.CouldNotFetchImage(image_id\u003dimage_id)"},{"line_number":45,"context_line":"        return vdis"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def upload_image(self, context, session, instance, image_id, vdi_uuids):"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_5b46a851","line":44,"updated":"2017-08-25 11:32:47.000000000","message":"We should log the os-xenapi exception rather than just squash it, otherwise it\u0027ll be impossible to debug","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            metadata \u003d IMAGE_API.get(context, image_id)"},{"line_number":51,"context_line":"            metadata[\u0027disk_format\u0027] \u003d \u0027vhd\u0027"},{"line_number":52,"context_line":"            metadata[\u0027container_format\u0027] \u003d \"ovf\""},{"line_number":53,"context_line":"            # set size as zero, so that it will update the size in end basing"},{"line_number":54,"context_line":"            # on the uploaded data."},{"line_number":55,"context_line":"            metadata[\u0027size\u0027] \u003d 0"},{"line_number":56,"context_line":"            image_trunks \u003d xenapi_image.stream_from_vdis(context, session,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_db25f8ac","line":53,"range":{"start_line":53,"start_character":14,"end_line":53,"end_character":30},"updated":"2017-08-25 11:32:47.000000000","message":"I think the real reason we need to do this is Glance knows the physical size of the VHD, but we need to detect the virtual size.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            metadata \u003d IMAGE_API.get(context, image_id)"},{"line_number":51,"context_line":"            metadata[\u0027disk_format\u0027] \u003d \u0027vhd\u0027"},{"line_number":52,"context_line":"            metadata[\u0027container_format\u0027] \u003d \"ovf\""},{"line_number":53,"context_line":"            # set size as zero, so that it will update the size in end basing"},{"line_number":54,"context_line":"            # on the uploaded data."},{"line_number":55,"context_line":"            metadata[\u0027size\u0027] \u003d 0"},{"line_number":56,"context_line":"            image_trunks \u003d xenapi_image.stream_from_vdis(context, session,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_a5dabe47","line":53,"range":{"start_line":53,"start_character":14,"end_line":53,"end_character":30},"in_reply_to":"7f287b81_db25f8ac","updated":"2017-08-29 11:44:19.000000000","message":"I think this size is the uploaded image data\u0027s size. At here it\u0027s the tgz file\u0027s size. With setting it as 0 at here, glance will update the value in the end once the image data got uploaded.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            # set size as zero, so that it will update the size in end basing"},{"line_number":54,"context_line":"            # on the uploaded data."},{"line_number":55,"context_line":"            metadata[\u0027size\u0027] \u003d 0"},{"line_number":56,"context_line":"            image_trunks \u003d xenapi_image.stream_from_vdis(context, session,"},{"line_number":57,"context_line":"                                                         instance, host_url,"},{"line_number":58,"context_line":"                                                         vdi_uuids)"},{"line_number":59,"context_line":"            image_stream \u003d utils.IterableToFileAdapter(image_trunks)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_3b4e3c6f","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":24},"updated":"2017-08-25 11:32:47.000000000","message":"What does this mean?  I don\u0027t understand image_trunks?","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            # set size as zero, so that it will update the size in end basing"},{"line_number":54,"context_line":"            # on the uploaded data."},{"line_number":55,"context_line":"            metadata[\u0027size\u0027] \u003d 0"},{"line_number":56,"context_line":"            image_trunks \u003d xenapi_image.stream_from_vdis(context, session,"},{"line_number":57,"context_line":"                                                         instance, host_url,"},{"line_number":58,"context_line":"                                                         vdi_uuids)"},{"line_number":59,"context_line":"            image_stream \u003d utils.IterableToFileAdapter(image_trunks)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_a56abee9","line":56,"range":{"start_line":56,"start_character":12,"end_line":56,"end_character":24},"in_reply_to":"7f287b81_3b4e3c6f","updated":"2017-08-29 11:44:19.000000000","message":"oops:-) it should be image_chunks.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            IMAGE_API.update(context, image_id, metadata,"},{"line_number":61,"context_line":"                             data\u003dimage_stream)"},{"line_number":62,"context_line":"        except xenapi_exception.OsXenApiException:"},{"line_number":63,"context_line":"            raise exception.CouldNotUploadImage(image_id\u003dimage_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7f287b81_1b7a6087","line":63,"updated":"2017-08-25 11:32:47.000000000","message":"We should log the os-xenapi exception rather than just squash it, otherwise it\u0027ll be impossible to debug","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        metadata[\u0027disk_format\u0027] \u003d \u0027vhd\u0027"},{"line_number":54,"context_line":"        metadata[\u0027container_format\u0027] \u003d \u0027ovf\u0027"},{"line_number":55,"context_line":"        metadata[\u0027auto_disk_config\u0027] \u003d str(instance[\u0027auto_disk_config\u0027])"},{"line_number":56,"context_line":"        metadata[\u0027os_type\u0027] \u003d instance.get(\u0027os_type\u0027, None) or ("},{"line_number":57,"context_line":"            CONF.xenserver.default_os_type)"},{"line_number":58,"context_line":"        # Set size as zero, so that it will update the size in the end"},{"line_number":59,"context_line":"        # basing on the uploaded image data."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_f5d579ba","line":56,"range":{"start_line":56,"start_character":52,"end_line":56,"end_character":58},"updated":"2018-05-07 17:07:32.000000000","message":"redundant","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        metadata[\u0027disk_format\u0027] \u003d \u0027vhd\u0027"},{"line_number":54,"context_line":"        metadata[\u0027container_format\u0027] \u003d \u0027ovf\u0027"},{"line_number":55,"context_line":"        metadata[\u0027auto_disk_config\u0027] \u003d str(instance[\u0027auto_disk_config\u0027])"},{"line_number":56,"context_line":"        metadata[\u0027os_type\u0027] \u003d instance.get(\u0027os_type\u0027, None) or ("},{"line_number":57,"context_line":"            CONF.xenserver.default_os_type)"},{"line_number":58,"context_line":"        # Set size as zero, so that it will update the size in the end"},{"line_number":59,"context_line":"        # basing on the uploaded image data."}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_5423ca56","line":56,"range":{"start_line":56,"start_character":52,"end_line":56,"end_character":58},"in_reply_to":"5f7c97a3_f5d579ba","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        metadata[\u0027os_type\u0027] \u003d instance.get(\u0027os_type\u0027, None) or ("},{"line_number":57,"context_line":"            CONF.xenserver.default_os_type)"},{"line_number":58,"context_line":"        # Set size as zero, so that it will update the size in the end"},{"line_number":59,"context_line":"        # basing on the uploaded image data."},{"line_number":60,"context_line":"        metadata[\u0027size\u0027] \u003d 0"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Adjust the auto_disk_config value basing on instance\u0027s"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_95da05e7","line":59,"range":{"start_line":59,"start_character":10,"end_line":59,"end_character":16},"updated":"2018-05-07 17:07:32.000000000","message":"based","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        metadata[\u0027os_type\u0027] \u003d instance.get(\u0027os_type\u0027, None) or ("},{"line_number":57,"context_line":"            CONF.xenserver.default_os_type)"},{"line_number":58,"context_line":"        # Set size as zero, so that it will update the size in the end"},{"line_number":59,"context_line":"        # basing on the uploaded image data."},{"line_number":60,"context_line":"        metadata[\u0027size\u0027] \u003d 0"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Adjust the auto_disk_config value basing on instance\u0027s"}],"source_content_type":"text/x-python","patch_set":29,"id":"5f7c97a3_74204649","line":59,"range":{"start_line":59,"start_character":10,"end_line":59,"end_character":16},"in_reply_to":"5f7c97a3_95da05e7","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        # based on the uploaded image data."},{"line_number":60,"context_line":"        metadata[\u0027size\u0027] \u003d 0"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Adjust the auto_disk_config value basing on instance\u0027s"},{"line_number":63,"context_line":"        # system metadata."},{"line_number":64,"context_line":"        auto_disk \u003d nova_utils.get_auto_disk_config_from_instance(instance)"},{"line_number":65,"context_line":"        if nova_utils.is_auto_disk_config_disabled(auto_disk):"},{"line_number":66,"context_line":"            metadata[\u0027auto_disk_config\u0027] \u003d \"disabled\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return metadata"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_d5ad73ea","line":66,"range":{"start_line":62,"start_character":8,"end_line":66,"end_character":53},"updated":"2018-06-11 15:39:38.000000000","message":"nit: this is copied from GlanceStore, seems we could have an abstract base class for the various image backends to have common code like this.","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c8daed71a6a02559813fad981a387a35896fdfbd","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        # based on the uploaded image data."},{"line_number":60,"context_line":"        metadata[\u0027size\u0027] \u003d 0"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        # Adjust the auto_disk_config value basing on instance\u0027s"},{"line_number":63,"context_line":"        # system metadata."},{"line_number":64,"context_line":"        auto_disk \u003d nova_utils.get_auto_disk_config_from_instance(instance)"},{"line_number":65,"context_line":"        if nova_utils.is_auto_disk_config_disabled(auto_disk):"},{"line_number":66,"context_line":"            metadata[\u0027auto_disk_config\u0027] \u003d \"disabled\""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return metadata"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"5f7c97a3_1541ab63","line":66,"range":{"start_line":62,"start_character":8,"end_line":66,"end_character":53},"in_reply_to":"5f7c97a3_d5ad73ea","updated":"2018-06-11 15:58:34.000000000","message":"Added a TODO comment.","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"c4aa13fb20956d24c5877755db44086abe381dc3","unresolved":false,"context_lines":[{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"    if new_sectors \u003e old_sectors:"},{"line_number":2309,"context_line":"        # Resizing up, resize filesystem after partition resize"},{"line_number":2310,"context_line":"        nova.privsep.fs.resize2fs(partition_path, None)"},{"line_number":2311,"context_line":""},{"line_number":2312,"context_line":"    # Add back journal"},{"line_number":2313,"context_line":"    nova.privsep.fs.ext_journal_enable(partition_path)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_302e1e92","side":"PARENT","line":2310,"range":{"start_line":2310,"start_character":50,"end_line":2310,"end_character":54},"updated":"2018-05-14 12:22:12.000000000","message":"For those playing spot-the-difference, we discovered through manual testing this patch that I6c695c04ae586fec6adc354257638116277dda88 broke snapshotting because processutils doesn\u0027t support None as an error code - it strictly requires a list - in this case [0].","commit_id":"238b89b36ea73856aa54afeb9e1ea63ea90a9df7"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"af9edd18ba48062c2bd7fff4f18f1ed993691663","unresolved":false,"context_lines":[{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"    if new_sectors \u003e old_sectors:"},{"line_number":2309,"context_line":"        # Resizing up, resize filesystem after partition resize"},{"line_number":2310,"context_line":"        nova.privsep.fs.resize2fs(partition_path, None)"},{"line_number":2311,"context_line":""},{"line_number":2312,"context_line":"    # Add back journal"},{"line_number":2313,"context_line":"    nova.privsep.fs.ext_journal_enable(partition_path)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_70b9f612","side":"PARENT","line":2310,"range":{"start_line":2310,"start_character":50,"end_line":2310,"end_character":54},"in_reply_to":"5f7c97a3_302e1e92","updated":"2018-05-14 12:28:45.000000000","message":"Thank you for the comments, Bob","commit_id":"238b89b36ea73856aa54afeb9e1ea63ea90a9df7"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"318c35e7dd7f755615cfd4eef574e026567c8015","unresolved":false,"context_lines":[{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"    if new_sectors \u003e old_sectors:"},{"line_number":2309,"context_line":"        # Resizing up, resize filesystem after partition resize"},{"line_number":2310,"context_line":"        nova.privsep.fs.resize2fs(partition_path, None)"},{"line_number":2311,"context_line":""},{"line_number":2312,"context_line":"    # Add back journal"},{"line_number":2313,"context_line":"    nova.privsep.fs.ext_journal_enable(partition_path)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_2166ce2b","side":"PARENT","line":2310,"range":{"start_line":2310,"start_character":50,"end_line":2310,"end_character":54},"in_reply_to":"5f7c97a3_61e366a5","updated":"2018-05-14 14:47:32.000000000","message":"The UTs were expecting None, and the functional tests don\u0027t appear to resize the image.  We found that the resize of image was broken in a manual test, and fixed it by setting this to [0] - but the UTs failed.\nPatch 34 just fixes the UTs to expect [0] rather than None in the calls","commit_id":"238b89b36ea73856aa54afeb9e1ea63ea90a9df7"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"059afaf80578db1cf57fb0192c43cccd9f24ecbc","unresolved":false,"context_lines":[{"line_number":2307,"context_line":""},{"line_number":2308,"context_line":"    if new_sectors \u003e old_sectors:"},{"line_number":2309,"context_line":"        # Resizing up, resize filesystem after partition resize"},{"line_number":2310,"context_line":"        nova.privsep.fs.resize2fs(partition_path, None)"},{"line_number":2311,"context_line":""},{"line_number":2312,"context_line":"    # Add back journal"},{"line_number":2313,"context_line":"    nova.privsep.fs.ext_journal_enable(partition_path)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5f7c97a3_61e366a5","side":"PARENT","line":2310,"range":{"start_line":2310,"start_character":50,"end_line":2310,"end_character":54},"in_reply_to":"5f7c97a3_70b9f612","updated":"2018-05-14 14:40:03.000000000","message":"I don\u0027t understand how this test passed on that patch, then.","commit_id":"238b89b36ea73856aa54afeb9e1ea63ea90a9df7"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"9c7826fc87a6d52612c97095c225cd7e87a5a892","unresolved":false,"context_lines":[{"line_number":56,"context_line":"from nova.virt import driver as virt_driver"},{"line_number":57,"context_line":"from nova.virt import firewall"},{"line_number":58,"context_line":"from nova.virt.xenapi import agent as xapi_agent"},{"line_number":59,"context_line":"from nova.virt.xenapi.image.glance import GlanceStore as domzero_glance_plugin"},{"line_number":60,"context_line":"from nova.virt.xenapi.image.vdi_stream import GlanceStore as vdi_stream_plugin"},{"line_number":61,"context_line":"from nova.virt.xenapi import pool_states"},{"line_number":62,"context_line":"from nova.virt.xenapi import vm_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_9c9d6e5b","line":59,"range":{"start_line":59,"start_character":57,"end_line":59,"end_character":78},"updated":"2017-08-23 12:50:28.000000000","message":"Should all the plugins be imported here, or in the switch statement?","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"3ddd25d0b66811cffe4c82446eccc075c9a68763","unresolved":false,"context_lines":[{"line_number":56,"context_line":"from nova.virt import driver as virt_driver"},{"line_number":57,"context_line":"from nova.virt import firewall"},{"line_number":58,"context_line":"from nova.virt.xenapi import agent as xapi_agent"},{"line_number":59,"context_line":"from nova.virt.xenapi.image.glance import GlanceStore as domzero_glance_plugin"},{"line_number":60,"context_line":"from nova.virt.xenapi.image.vdi_stream import GlanceStore as vdi_stream_plugin"},{"line_number":61,"context_line":"from nova.virt.xenapi import pool_states"},{"line_number":62,"context_line":"from nova.virt.xenapi import vm_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_566a2f80","line":59,"range":{"start_line":59,"start_character":57,"end_line":59,"end_character":78},"in_reply_to":"7f287b81_9c9d6e5b","updated":"2017-08-24 02:23:11.000000000","message":"Ok. Let\u0027s import specific store in the switch branch.","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"9c7826fc87a6d52612c97095c225cd7e87a5a892","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# and we must have the ISO visible before the PV drivers start"},{"line_number":92,"context_line":"DEVICE_CD \u003d \u00271\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"IMAGE_HANDLERS \u003d {\u0027domzero_glance_plugin\u0027: domzero_glance_plugin,"},{"line_number":95,"context_line":"                  \u0027vdi_stream_plugin\u0027: vdi_stream_plugin,"},{"line_number":96,"context_line":"                 }"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_dcbc16bd","line":94,"range":{"start_line":94,"start_character":19,"end_line":94,"end_character":40},"updated":"2017-08-23 12:50:28.000000000","message":"No need for \"_plugin\".  Suggest \"direct_vhd\" and \"stream_vdi\" as the options","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"3ddd25d0b66811cffe4c82446eccc075c9a68763","unresolved":false,"context_lines":[{"line_number":91,"context_line":"# and we must have the ISO visible before the PV drivers start"},{"line_number":92,"context_line":"DEVICE_CD \u003d \u00271\u0027"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"IMAGE_HANDLERS \u003d {\u0027domzero_glance_plugin\u0027: domzero_glance_plugin,"},{"line_number":95,"context_line":"                  \u0027vdi_stream_plugin\u0027: vdi_stream_plugin,"},{"line_number":96,"context_line":"                 }"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_96709774","line":94,"range":{"start_line":94,"start_character":19,"end_line":94,"end_character":40},"in_reply_to":"7f287b81_dcbc16bd","updated":"2017-08-24 02:23:11.000000000","message":"agreed.","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"9c7826fc87a6d52612c97095c225cd7e87a5a892","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        image_handler_cfg \u003d CONF.xenserver.image_handler"},{"line_number":160,"context_line":"        LOG.debug(\"Choosing image handler: %s\", image_handler_cfg)"},{"line_number":161,"context_line":"        assert(image_handler_cfg in IMAGE_HANDLERS.keys())"},{"line_number":162,"context_line":"        self.image_handler \u003d IMAGE_HANDLERS[image_handler_cfg]"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def agent_enabled(self, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_fcdc7219","line":161,"updated":"2017-08-23 12:50:28.000000000","message":"With two options I don\u0027t think we need a dict here","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"3ddd25d0b66811cffe4c82446eccc075c9a68763","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        image_handler_cfg \u003d CONF.xenserver.image_handler"},{"line_number":160,"context_line":"        LOG.debug(\"Choosing image handler: %s\", image_handler_cfg)"},{"line_number":161,"context_line":"        assert(image_handler_cfg in IMAGE_HANDLERS.keys())"},{"line_number":162,"context_line":"        self.image_handler \u003d IMAGE_HANDLERS[image_handler_cfg]"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def agent_enabled(self, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f287b81_16d82751","line":161,"in_reply_to":"7f287b81_fcdc7219","updated":"2017-08-24 02:23:11.000000000","message":"Yeah, let\u0027s use switch statements.","commit_id":"f9e41b9da503da0d771e83cae0be4e36fae7c453"}],"releasenotes/notes/xenapi-image-handler-7628a7221b7323e2.yaml":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"      This plugin directly processes the VHD files in XenServer SR(Storage"},{"line_number":14,"context_line":"      Repository). So this plugins only works when the host\u0027s SR type is"},{"line_number":15,"context_line":"      file system based e.g. ext, nfs.  This is the default plugin."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    * ``vdi_local_dev``"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7f287b81_a009d731","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":38},"updated":"2017-08-25 11:32:47.000000000","message":"\"e.g. a local ext SR.  It does, however, support images with a chain of VHDs, which are produced by some tools\"","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"a9860b85269daa17ea0ab2c4900133da70207e63","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"      This plugin directly processes the VHD files in XenServer SR(Storage"},{"line_number":14,"context_line":"      Repository). So this plugins only works when the host\u0027s SR type is"},{"line_number":15,"context_line":"      file system based e.g. ext, nfs.  This is the default plugin."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    * ``vdi_local_dev``"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7f287b81_d7bd81d8","line":15,"range":{"start_line":15,"start_character":24,"end_line":15,"end_character":38},"in_reply_to":"7f287b81_a009d731","updated":"2017-08-29 11:44:19.000000000","message":"yeah, should mention that.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"72d40511e91596a56adb8cf71fd1bd31f3a82e33","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"      For image download, the proxy download image stream from glance; extract"},{"line_number":33,"context_line":"      VHD data stream from the image stream; and then remotely import the VHD"},{"line_number":34,"context_line":"      data stream to XenServer via the remote API supplied by XAPI."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"deprecations:"},{"line_number":37,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7f287b81_3b007c01","line":34,"updated":"2017-08-25 11:32:47.000000000","message":"The streaming methods are based on the VDI objects, not VHDs, so export and import just a single VDI (using the VHD format) rather than understanding a chain of VHDs on the filesystem.","commit_id":"9c6caad03df24c691390d79d3539897250b8b7a6"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8d3b77486838ff8faf9a7bcbea300c87a1649d13","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":39,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":40,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"deprecations:"},{"line_number":43,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f6a8fd7_9c9ec552","line":40,"updated":"2018-04-27 16:55:43.000000000","message":"Is it worth mentioning in the release note that the feature requires at least os-xenapi 0.3.3? Or maybe it doesn\u0027t matter because of the requirements bump.","commit_id":"b08bd4a38c136d12250f7b43329726ae29caf887"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"b69661de441a059848ddf480928f37359efdd590","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":39,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":40,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"deprecations:"},{"line_number":43,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9f6a8fd7_e69967d0","line":40,"in_reply_to":"9f6a8fd7_9c9ec552","updated":"2018-04-28 09:11:02.000000000","message":"I think we can trust the requirements so that the users needn\u0027t care about it at all.","commit_id":"b08bd4a38c136d12250f7b43329726ae29caf887"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a new option of ``image_handler`` for configuring the image handler"},{"line_number":5,"context_line":"    plugin which will be used to download or upload images. The value for"},{"line_number":6,"context_line":"    this option should be a short name representing a supported handler."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    The following are the short names and description of the plugins which"},{"line_number":9,"context_line":"    they represent:"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_f5eed986","line":6,"range":{"start_line":6,"start_character":64,"end_line":6,"end_character":71},"updated":"2018-05-07 17:07:32.000000000","message":"Is it a plugin or a handler?  This should be settled in the previous patch; no sense changing it here.","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a new option of ``image_handler`` for configuring the image handler"},{"line_number":5,"context_line":"    plugin which will be used to download or upload images. The value for"},{"line_number":6,"context_line":"    this option should be a short name representing a supported handler."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    The following are the short names and description of the plugins which"},{"line_number":9,"context_line":"    they represent:"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_d4d4ba22","line":6,"range":{"start_line":6,"start_character":64,"end_line":6,"end_character":71},"in_reply_to":"5f7c97a3_f5eed986","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"2a68c01de32721683c8f680a45a772213153b7fc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a new option of ``image_handler`` for configuring the image handler"},{"line_number":5,"context_line":"    plugin which will be used to download or upload images. The value for"},{"line_number":6,"context_line":"    this option should be a short name representing a supported handler."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    The following are the short names and description of the plugins which"},{"line_number":9,"context_line":"    they represent:"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_39df27d7","line":6,"range":{"start_line":6,"start_character":64,"end_line":6,"end_character":71},"in_reply_to":"5f7c97a3_f5eed986","updated":"2018-05-10 09:09:32.000000000","message":"Will move to the first patch","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"      This plugin implements an image proxy in nova compute service."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"      For image upload, the proxy will export data stream for a VDI from"},{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_9503e542","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":57},"updated":"2018-05-07 17:07:32.000000000","message":"export a/the data stream","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"      This plugin implements an image proxy in nova compute service."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"      For image upload, the proxy will export data stream for a VDI from"},{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_94dac248","line":29,"range":{"start_line":29,"start_character":39,"end_line":29,"end_character":57},"in_reply_to":"5f7c97a3_9503e542","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_b5006136","line":33,"range":{"start_line":33,"start_character":36,"end_line":33,"end_character":58},"updated":"2018-05-07 17:07:32.000000000","message":"a/the","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_75fac942","line":33,"range":{"start_line":33,"start_character":72,"end_line":33,"end_character":79},"updated":"2018-05-07 17:07:32.000000000","message":"extracts the","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_b4dfbe38","line":33,"range":{"start_line":33,"start_character":72,"end_line":33,"end_character":79},"in_reply_to":"5f7c97a3_75fac942","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_54e8aae0","line":33,"range":{"start_line":33,"start_character":36,"end_line":33,"end_character":58},"in_reply_to":"5f7c97a3_b5006136","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_f5a3394e","line":34,"range":{"start_line":34,"start_character":59,"end_line":34,"end_character":65},"updated":"2018-05-07 17:07:32.000000000","message":"imports","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"      For image download, the proxy downloads image stream from glance; extract"},{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_14eeb2ec","line":34,"range":{"start_line":34,"start_character":59,"end_line":34,"end_character":65},"in_reply_to":"5f7c97a3_f5a3394e","updated":"2018-05-10 10:22:14.000000000","message":"Done","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"98df7482da368290e5b3bb2de3cfbac87ed328cf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":38,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":39,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"deprecations:"},{"line_number":42,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_b5ae212c","line":39,"range":{"start_line":37,"start_character":71,"end_line":39,"end_character":54},"updated":"2018-05-07 17:07:32.000000000","message":"This doesn\u0027t parse.  Does the implementation export and import?  Who\u0027s (not) understanding what?","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4755423a08539c032f75b013ca076db59178d035","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":38,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":39,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"deprecations:"},{"line_number":42,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_b83ec888","line":39,"range":{"start_line":37,"start_character":71,"end_line":39,"end_character":54},"in_reply_to":"5f7c97a3_34ebaedc","updated":"2018-05-10 16:55:51.000000000","message":"Hm, okay, I think we\u0027re going to need to have someone who understands this idea help you wordsmith this, because it still doesn\u0027t feel quite right to me.","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"d893cff0e826c7250c652d5367f134126bb68ac9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":38,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":39,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"deprecations:"},{"line_number":42,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_34ebaedc","line":39,"range":{"start_line":37,"start_character":71,"end_line":39,"end_character":54},"in_reply_to":"5f7c97a3_b5ae212c","updated":"2018-05-10 10:22:14.000000000","message":"Hi, Eric. vdi streaming is aimed to support no file system storage like LVM, we manage VDI objects instead of VHD files. We don\u0027t need to care about files structure on a file system. \nI reorganized the words and upload a new commit, please check if it is OK.\nThanks","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"5e2521e11bf689175089c408b32b0a2e2ef8581c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      data stream from the image stream; and then remotely import the data"},{"line_number":35,"context_line":"      stream to XenServer\u0027s VDI via the remote API supplied by XAPI."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"      Note: This implementation is based on the VDI objects, not VHDs, so"},{"line_number":38,"context_line":"      export and import just a single VDI (using the VHD format) rather than"},{"line_number":39,"context_line":"      understanding a chain of VHDs on the filesystem."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"deprecations:"},{"line_number":42,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"5f7c97a3_c85729ca","line":39,"range":{"start_line":37,"start_character":71,"end_line":39,"end_character":54},"in_reply_to":"5f7c97a3_b83ec888","updated":"2018-05-11 01:39:30.000000000","message":"Haha, I\u0027m not an elegant English speaker :(. My boss may help, will ask Bob.","commit_id":"1bf0ee0114a5ef80a4ead526614c101efbc83f9e"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"4755423a08539c032f75b013ca076db59178d035","unresolved":false,"context_lines":[{"line_number":31,"context_line":"      XenServer via the remote API supplied by XAPI; convert the stream"},{"line_number":32,"context_line":"      to the image format supported by glance; and upload the image to glance."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"      For image download, the proxy downloads a image stream from glance;"},{"line_number":35,"context_line":"      extracts the data stream from the image stream; and then remotely"},{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_58e1b429","line":34,"range":{"start_line":34,"start_character":46,"end_line":34,"end_character":47},"updated":"2018-05-10 16:55:51.000000000","message":"an","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"11ed374595117a3c2301f4b084560bb36a61246b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_70527be0","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"updated":"2018-05-11 08:40:11.000000000","message":"Regarding Eric\u0027s comment on patchset 29:\nPreviously we uploaded a TGZ containing multiple VHDs to glance, and downloaded the same.  This required direct access to the local disk to create as there is no API for XenServer to provide this.\nWith the VDI Streaming approach, we access the VMs disk through the VDI XAPI object - which is an abstraction of the VM disk.  The VDI could be backed by one or multiple VHDs, or RAW files, or (in future) other formats potentially such as qcow2.  To explain a little more, XenServer uses a VHD chain so we can have two snapshots referencing the same base image, saving a large amount of disk space.  A VDI represents the leaves of the VHD tree which can be attached to a VM.\n\nIn the current approach we chose to export through the VDI object and generate a VHD.  For example, if we have a VDI that is backed by a chain of 3 VHDs, in the old approach we would have a TGZ including one VHD.  In the streaming approach we will have a single VHD which is the coalesced version of the on-disk VHDs.\nThis also means that we don\u0027t have to worry about accessing the local disk directly, so can support LVM SRs, and it also means that we don\u0027t have to worry about *how* XenServer is chosing to store its disks.  It might be a RAW disk that we are exporting as a VHD, and the API can automatically create a sparse VHD for us.\n\nI think simply removing the \"(using the VHD format)\" would make things less confusing?","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"caf1a11d7c00cf5c6841521bcd434e87457c13d2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_ac043719","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"in_reply_to":"5f7c97a3_5035ff8d","updated":"2018-05-11 14:24:31.000000000","message":"Thanks for the explanation, Bob.  The part that I wasn\u0027t grokking was \"without understanding the chain structure\".  What I now gather this to mean is that this implementation *doesn\u0027t need to be aware* of what\u0027s underneath this VDI gizmo.  If I\u0027ve got that right, here\u0027s my suggested reword:\n\n.. note:: Under this implementation, the image data may reside in one or more pieces of storage of various formats on the host[?], but the import and export operations interact with a single, proxied VDI object which makes the underlying structure opaque.\n\nThoughts?","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"1d29528e4161451bc8b3f8e256464a88af6d4db0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_7a11e35c","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"in_reply_to":"5f7c97a3_58df5d39","updated":"2018-05-13 02:51:32.000000000","message":"Will modify the description, thanks, Bob and Eric.","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"e970d3102b2ff303c570c41da8b8c9c4133717d4","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_5035ff8d","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"in_reply_to":"5f7c97a3_70527be0","updated":"2018-05-11 08:44:16.000000000","message":"Thank you very much for the suggestion, Bob. Any thoughts, @Eric.","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2b27ce9e136752ff5fdbc235eb367c8260950249","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_58df5d39","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"in_reply_to":"5f7c97a3_7877b9a1","updated":"2018-05-11 16:30:05.000000000","message":"\"independent of\"\n\nI dig it.  Thanks Bob.","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"9e8a2b913243b2062bc9b9d3d5b5d981f672694d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      imports the data stream to XenServer\u0027s VDI via the remote API supplied"},{"line_number":37,"context_line":"      by XAPI."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"      Note: This implementation is based on the VDI objects, not VHD files,"},{"line_number":40,"context_line":"      so the export and import operations mentioned above are based on single"},{"line_number":41,"context_line":"      VDI objects (using the VHD format), without understanding the chain"},{"line_number":42,"context_line":"      structure of VHD files on the filesystem."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"deprecations:"},{"line_number":45,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":31,"id":"5f7c97a3_7877b9a1","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":47},"in_reply_to":"5f7c97a3_ac043719","updated":"2018-05-11 16:15:02.000000000","message":"I would suggest tweaking the end to give:\nUnder this implementation, the image data may reside in one or more pieces of storage of various formats on the host, but the import and export operations interact with a single, proxied VDI object independent from the underlying structure","commit_id":"0b262efbd3cae9ad4f64afe16418ec01cd85391a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add a new option of ``image_handler`` in the ``xenapi`` section for"}],"source_content_type":"text/x-yaml","patch_set":36,"id":"5f7c97a3_b56557b1","line":1,"updated":"2018-06-11 15:39:38.000000000","message":"I guess this release note went out in the rocky-2 milestone:\n\nhttps://review.openstack.org/#/c/497201/\n\nNormally I\u0027d say we shouldn\u0027t add to an already tagged/released release note, but given it\u0027s within major version boundaries it\u0027s probably not a big deal.","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}],"requirements.txt":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e9f75b831e549d474472ac0a160d50193cb646d0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"os-win\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":59,"context_line":"castellan\u003e\u003d0.16.0 # Apache-2.0"},{"line_number":60,"context_line":"microversion-parse\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":61,"context_line":"os-xenapi\u003e\u003d0.3.3 # Apache-2.0"},{"line_number":62,"context_line":"tooz\u003e\u003d1.58.0 # Apache-2.0"},{"line_number":63,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"},{"line_number":64,"context_line":"pypowervm\u003e\u003d1.1.15 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":36,"id":"5f7c97a3_32839dcd","line":61,"updated":"2018-06-11 15:39:38.000000000","message":"You also need to update this in lower-constraints:\n\nhttps://github.com/openstack/nova/blob/master/lower-constraints.txt#L75","commit_id":"259ad223c559d74d15bde62a3276be35b7d6bd3d"}]}
