)]}'
{"specs/rocky/approved/nova-image-download-via-rbd.rst":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Allow Nova to download Glance images directly via RBD"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/nova-image-download-via-rbd"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_7f7cda71","line":8,"updated":"2018-06-06 16:22:34.000000000","message":"If I wasn\u0027t already familiar with this per the mailing list thread, I would say, \"but we already have this via https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html so what\u0027s the difference?\" - so you probably want to mention that spec/feature in the problem description and explain how this is different.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Allow Nova to download Glance images directly via RBD"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/nova-image-download-via-rbd"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_5a26cc18","line":8,"in_reply_to":"5f7c97a3_7f7cda71","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Use Cases"},{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"When using compute-local storage with qcow2 based VM root disks, Glance images"},{"line_number":26,"context_line":"are downloaded into the libvirt image store by way of the Glance HTTP API."},{"line_number":27,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":28,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"},{"line_number":29,"context_line":"on the Glance image, bypassing the Glance API entirely and directly download"},{"line_number":30,"context_line":"the image from Ceph.  This direct download can result in a drastic reduction"},{"line_number":31,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"This specific use case optimizes disk I/O on the VM root disks being run from"},{"line_number":34,"context_line":"local storage as running them from Ceph introduces additional network overhead"},{"line_number":35,"context_line":"and latency.  This is essentially the \"Do designate some non-Ceph compute hosts"},{"line_number":36,"context_line":"with low-latency local storage\" use case outlined here:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"https://ceph.com/planet/the-dos-and-donts-for-ceph-for-openstack/"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Proposed change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_bf9912d1","line":38,"range":{"start_line":25,"start_character":0,"end_line":38,"end_character":65},"updated":"2018-06-06 16:22:34.000000000","message":"This isn\u0027t really a use case, it should go in the problem description section.\n\nThe use case is something like, \"As a user with ceph-backed image storage, I want to configure some compute hosts for qcow2 images local to the compute host but quickly get the images from ceph rather than slow downloads from the glance API.\"","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"Use Cases"},{"line_number":23,"context_line":"---------"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"When using compute-local storage with qcow2 based VM root disks, Glance images"},{"line_number":26,"context_line":"are downloaded into the libvirt image store by way of the Glance HTTP API."},{"line_number":27,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":28,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"},{"line_number":29,"context_line":"on the Glance image, bypassing the Glance API entirely and directly download"},{"line_number":30,"context_line":"the image from Ceph.  This direct download can result in a drastic reduction"},{"line_number":31,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"This specific use case optimizes disk I/O on the VM root disks being run from"},{"line_number":34,"context_line":"local storage as running them from Ceph introduces additional network overhead"},{"line_number":35,"context_line":"and latency.  This is essentially the \"Do designate some non-Ceph compute hosts"},{"line_number":36,"context_line":"with low-latency local storage\" use case outlined here:"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"https://ceph.com/planet/the-dos-and-donts-for-ceph-for-openstack/"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Proposed change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1fa5a647","line":38,"range":{"start_line":25,"start_character":0,"end_line":38,"end_character":65},"in_reply_to":"5f7c97a3_bf9912d1","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Proposed change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Creation of an extension via the nova.image.download.modules extension point"},{"line_number":44,"context_line":"will allow a direct download handler to be registered for Glance images with"},{"line_number":45,"context_line":"the \u0027rbd\u0027 URL scheme."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9f7f7665","line":43,"range":{"start_line":43,"start_character":33,"end_line":43,"end_character":60},"updated":"2018-06-06 16:22:34.000000000","message":"nit: ``nova.image.download.modules``","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":40,"context_line":"Proposed change"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Creation of an extension via the nova.image.download.modules extension point"},{"line_number":44,"context_line":"will allow a direct download handler to be registered for Glance images with"},{"line_number":45,"context_line":"the \u0027rbd\u0027 URL scheme."},{"line_number":46,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_dff16e6c","line":43,"range":{"start_line":43,"start_character":33,"end_line":43,"end_character":60},"in_reply_to":"5f7c97a3_9f7f7665","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Alternatives"},{"line_number":48,"context_line":"------------"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"VM root disks can be run directly within Ceph as creation of these VM root"},{"line_number":51,"context_line":"disks are fast as they are COW clones for the Glance image, also in Ceph."},{"line_number":52,"context_line":"However, running the VM root disks from Ceph introduces additional latency to"},{"line_number":53,"context_line":"the running VM and needlessly wastes network bandwidth and Ceph IOPS."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Data model impact"},{"line_number":56,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_7ff13a01","line":53,"range":{"start_line":50,"start_character":0,"end_line":53,"end_character":69},"updated":"2018-06-06 16:22:34.000000000","message":"Yup, this is the https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html thing so please link to that for reference.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Alternatives"},{"line_number":48,"context_line":"------------"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"VM root disks can be run directly within Ceph as creation of these VM root"},{"line_number":51,"context_line":"disks are fast as they are COW clones for the Glance image, also in Ceph."},{"line_number":52,"context_line":"However, running the VM root disks from Ceph introduces additional latency to"},{"line_number":53,"context_line":"the running VM and needlessly wastes network bandwidth and Ceph IOPS."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Data model impact"},{"line_number":56,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_5af7acd5","line":53,"range":{"start_line":50,"start_character":0,"end_line":53,"end_character":69},"in_reply_to":"5f7c97a3_7ff13a01","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Performance Impact"},{"line_number":81,"context_line":"------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_ffe46a3e","line":83,"updated":"2018-06-06 16:22:34.000000000","message":"This should probably go in the proposed change section, since it\u0027s more about implementation details (which that section is lacking a bit).","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Performance Impact"},{"line_number":81,"context_line":"------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_fa38f89f","line":83,"in_reply_to":"5f7c97a3_ffe46a3e","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1fe04626","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":59},"updated":"2018-06-06 16:22:34.000000000","message":"There isn\u0027t something in the librados python API binding to do this? We don\u0027t really want to shell out for this kind of stuff; if we do, it needs to run through privsep.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_baf4c0f2","line":85,"range":{"start_line":85,"start_character":28,"end_line":85,"end_character":59},"in_reply_to":"5f7c97a3_1fe04626","updated":"2018-06-06 17:45:19.000000000","message":"I took a naive approach and created a new export_image() function in nova/virt/libvirt/storage/rbd_utils.py, patterned after the existing import_image() function.  The import_image() function is already shelling out to the rbd command in order to perform its operation.  There may be a way to do this using librados but I haven\u0027t investigated that approach.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Other deployer impact"},{"line_number":89,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9ff456f3","line":86,"range":{"start_line":86,"start_character":31,"end_line":86,"end_character":36},"updated":"2018-06-06 16:22:34.000000000","message":"of using","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":83,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":84,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":85,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":86,"context_line":"the download operation instead using the Glance HTTP API."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Other deployer impact"},{"line_number":89,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1f704608","line":86,"range":{"start_line":86,"start_character":31,"end_line":86,"end_character":36},"in_reply_to":"5f7c97a3_9ff456f3","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Developer impact"},{"line_number":100,"context_line":"----------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The nova.image.download.modules extension point is currently deprecated in"},{"line_number":103,"context_line":"Queens and slated for removal in Rocky as there was no evidence of it being"},{"line_number":104,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":105,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_5fbf9efb","line":102,"range":{"start_line":102,"start_character":4,"end_line":102,"end_character":31},"updated":"2018-06-06 16:22:34.000000000","message":"``nova.image.download.modules``","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Developer impact"},{"line_number":100,"context_line":"----------------"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"The nova.image.download.modules extension point is currently deprecated in"},{"line_number":103,"context_line":"Queens and slated for removal in Rocky as there was no evidence of it being"},{"line_number":104,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":105,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_7f5a9a83","line":102,"range":{"start_line":102,"start_character":4,"end_line":102,"end_character":31},"in_reply_to":"5f7c97a3_5fbf9efb","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Testing"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* Unit tests"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Documentation Impact"},{"line_number":141,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9f42160f","line":138,"updated":"2018-06-06 16:22:34.000000000","message":"We do run a ceph CI job upstream which already sets show_image_direct_url \u003d true however it uses the images_type\u003drbd setting, not qcow2, so we wouldn\u0027t get test coverage for this there.\n\nWe could introduce an experimental queue job (runs on demand) which uses ceph but runs with local qcow2 image backend. I wouldn\u0027t block on that, but it would be nice to at least have a test patch that shows that works while doing the implementation of this. I could help with the CI job setup there.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":135,"context_line":"Testing"},{"line_number":136,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* Unit tests"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Documentation Impact"},{"line_number":141,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1a9134f2","line":138,"in_reply_to":"5f7c97a3_9f42160f","updated":"2018-06-06 17:45:19.000000000","message":"I added some verbiage to this effect in the testing section, please let me know if it correctly captures your intent.","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"Documentation Impact"},{"line_number":141,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The operators guide should be updated to call out this use case and the"},{"line_number":144,"context_line":"specific configuration options required."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9f29b638","line":143,"range":{"start_line":143,"start_character":4,"end_line":143,"end_character":19},"updated":"2018-06-06 16:22:34.000000000","message":"I don\u0027t think there is an operators guide anymore, so this would likely need to live somewhere else. If there are no new config options, then I\u0027m not sure where we\u0027d put this in nova docs, probably somewhere in the admin guide:\n\nhttps://docs.openstack.org/nova/latest/admin/\n\nI think this would probably be a good place to mention this:\n\nhttps://docs.openstack.org/nova/latest/admin/configuration/hypervisor-kvm.html#configure-compute-backing-storage","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":140,"context_line":"Documentation Impact"},{"line_number":141,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"The operators guide should be updated to call out this use case and the"},{"line_number":144,"context_line":"specific configuration options required."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_1ac4d43f","line":143,"range":{"start_line":143,"start_character":4,"end_line":143,"end_character":19},"in_reply_to":"5f7c97a3_9f29b638","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"96c58a549be9c10be0775de91338b8ccf0c481c8","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"   * - Release Name"},{"line_number":159,"context_line":"     - Description"},{"line_number":160,"context_line":"   * - Queens"},{"line_number":161,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_bffd9209","line":160,"range":{"start_line":160,"start_character":7,"end_line":160,"end_character":13},"updated":"2018-06-06 16:22:34.000000000","message":"Rocky","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"1b6b1e5e93b1cea9b0413e336c4b201225b6dca2","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"   * - Release Name"},{"line_number":159,"context_line":"     - Description"},{"line_number":160,"context_line":"   * - Queens"},{"line_number":161,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f7c97a3_9fd216d1","line":160,"range":{"start_line":160,"start_character":7,"end_line":160,"end_character":13},"in_reply_to":"5f7c97a3_bffd9209","updated":"2018-06-06 17:45:19.000000000","message":"Done","commit_id":"ddf34f4a97989683f2d331578f718e34ac60b105"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21517ccea2c0171d8ffc5fa471a8a6c1955141ff","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Allow Nova to download Glance images directly via RBD"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_2305cd7a","line":7,"updated":"2018-06-07 17:47:25.000000000","message":"This line and the one below need to be \u003e\u003d the length of the title:\n\nhttp://logs.openstack.org/05/572805/5/check/build-openstack-sphinx-docs/31fdf00/job-output.txt.gz#_2018-06-07_15_55_12_104348","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b07eb02e7dd4872729c73802b2c443dc6c8f6169","unresolved":false,"context_lines":[{"line_number":4,"context_line":""},{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Allow Nova to download Glance images directly via RBD"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_c3665956","line":7,"in_reply_to":"5f7c97a3_2305cd7a","updated":"2018-06-07 17:52:26.000000000","message":"Done","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21517ccea2c0171d8ffc5fa471a8a6c1955141ff","unresolved":false,"context_lines":[{"line_number":31,"context_line":"network overhead and latency."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"There is a distinct difference in the use case of this spec as it aims to"},{"line_number":34,"context_line":"optimize disk I/O on the VM root disks by running them from node-local storage."},{"line_number":35,"context_line":"This is essentially the \"Do designate some non-Ceph compute hosts with"},{"line_number":36,"context_line":"low-latency local storage\" use case outlined here:"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_c3f3b99e","line":34,"range":{"start_line":34,"start_character":60,"end_line":34,"end_character":78},"updated":"2018-06-07 17:47:25.000000000","message":"nit: I\u0027d qualify this even further by saying, \"from nova-local storage without using the ``[libvirt]/images_type\u003drbd`` image backend. Maybe using the rbd image backend for ephemeral disk implies shared storage which implies node local, so maybe you don\u0027t need to say anything. Or could instead say, \"from nova-local storage, e.g. with the libvirt driver\u0027s qcow2 image backend.\"","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b07eb02e7dd4872729c73802b2c443dc6c8f6169","unresolved":false,"context_lines":[{"line_number":31,"context_line":"network overhead and latency."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"There is a distinct difference in the use case of this spec as it aims to"},{"line_number":34,"context_line":"optimize disk I/O on the VM root disks by running them from node-local storage."},{"line_number":35,"context_line":"This is essentially the \"Do designate some non-Ceph compute hosts with"},{"line_number":36,"context_line":"low-latency local storage\" use case outlined here:"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_23614d3a","line":34,"range":{"start_line":34,"start_character":60,"end_line":34,"end_character":78},"in_reply_to":"5f7c97a3_c3f3b99e","updated":"2018-06-07 17:52:26.000000000","message":"Done","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21517ccea2c0171d8ffc5fa471a8a6c1955141ff","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":57,"context_line":"the download operation instead of using the Glance HTTP API."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_a33d5d2d","line":57,"range":{"start_line":56,"start_character":8,"end_line":57,"end_character":60},"updated":"2018-06-07 17:47:25.000000000","message":"nit: this is probably an implementation detail which we can just handle in code review, but we\u0027ll require that you use privsep for this call, even if the existing rbd image import is using exec.","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b07eb02e7dd4872729c73802b2c443dc6c8f6169","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command in order to perform"},{"line_number":57,"context_line":"the download operation instead of using the Glance HTTP API."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Alternatives"},{"line_number":60,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_834941b8","line":57,"range":{"start_line":56,"start_character":8,"end_line":57,"end_character":60},"in_reply_to":"5f7c97a3_a33d5d2d","updated":"2018-06-07 17:52:26.000000000","message":"Done","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"21517ccea2c0171d8ffc5fa471a8a6c1955141ff","unresolved":false,"context_lines":[{"line_number":161,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* Unit tests"},{"line_number":164,"context_line":"* Update the upstream CI job to also test with ``images_type\u003dqcow2`` when"},{"line_number":165,"context_line":"  testing with ``show_image_direct_url`` in order to obtain code coverage."},{"line_number":166,"context_line":"* Consider adding an experimental on-demand queue job which uses Ceph with"},{"line_number":167,"context_line":"  local qcow2 images"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_a326bd15","line":167,"range":{"start_line":164,"start_character":0,"end_line":167,"end_character":20},"updated":"2018-06-07 17:47:25.000000000","message":"nit: these two points are a bit redundant, and the existing upstream ceph CI job would continue to use the rbd images type for ephemeral disks and rbd volumes, so we won\u0027t change that. The last bullet about an experimental job is probably good enough.","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b07eb02e7dd4872729c73802b2c443dc6c8f6169","unresolved":false,"context_lines":[{"line_number":161,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"* Unit tests"},{"line_number":164,"context_line":"* Update the upstream CI job to also test with ``images_type\u003dqcow2`` when"},{"line_number":165,"context_line":"  testing with ``show_image_direct_url`` in order to obtain code coverage."},{"line_number":166,"context_line":"* Consider adding an experimental on-demand queue job which uses Ceph with"},{"line_number":167,"context_line":"  local qcow2 images"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Documentation Impact"},{"line_number":170,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_c3d419be","line":167,"range":{"start_line":164,"start_character":0,"end_line":167,"end_character":20},"in_reply_to":"5f7c97a3_a326bd15","updated":"2018-06-07 17:52:26.000000000","message":"Done","commit_id":"d2e6902b1e6bf1836f1b1472de1662f25d7f8d43"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":14,"context_line":"Problem description"},{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When using compute-local storage with qcow2 based VM root disks, Glance images"},{"line_number":18,"context_line":"are downloaded into the libvirt image store by way of the Glance HTTP API."},{"line_number":19,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":20,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_deffd5ff","line":17,"range":{"start_line":17,"start_character":38,"end_line":17,"end_character":43},"updated":"2018-06-11 15:24:47.000000000","message":"Not only qcow2, \"raw\" counts too","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":23,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"A change was made to Nova during the Mitaka cycle which added the ability to"},{"line_number":26,"context_line":"perform Ceph-native VM root disk snapshots:"},{"line_number":27,"context_line":"https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Ceph-native approach works well when the end goal is to run the VM root"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_5275f996","line":26,"range":{"start_line":26,"start_character":8,"end_line":26,"end_character":42},"updated":"2018-06-11 15:24:47.000000000","message":"It would be clearer to add that this applies only in case of \"boot from volume\"","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"There is a distinct difference in the use case of this spec as it aims to"},{"line_number":34,"context_line":"optimize disk I/O on the VM root disks by running them from node-local storage,"},{"line_number":35,"context_line":"for example with the libvirt driver\u0027s qcow2 image backend."},{"line_number":36,"context_line":"This is essentially the \"Do designate some non-Ceph compute hosts with"},{"line_number":37,"context_line":"low-latency local storage\" use case outlined here:"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_f26525e2","line":35,"range":{"start_line":35,"start_character":38,"end_line":35,"end_character":43},"updated":"2018-06-11 15:24:47.000000000","message":"any local image format qualifies","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"93aae01db123d1d04e7ba0e5b55139d41f7128ce","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Creation of an extension via the ``nova.image.download.modules`` extension"},{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_147249ae","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":26},"updated":"2018-06-07 19:19:29.000000000","message":"I think that the cleaner and more long term way is to somehow extend the ImageCacheManager a little bit more to make it take care of downloading images.\n\nThat way, it can start a \u0027process of elimination\u0027 similar to the following:\n\n- If `direct_location` exists and it\u0027s url scheme is `rbd`, try to download it directly.\n- If we can\u0027t download it with that way, fallback to downloading from Glance API.\n\nHowever, the thing I\u0027d like to update to this would be to control where the cache is, so perhaps `image_cache_store\u003dfile` for the current behaviour that would reflects yours, but in our case, `image_cache_store\u003drbd` when we have different sites and want things cached there.\n\nThe behaviour of the cache will be different depending on things in that case.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d30b08b8e406eaad8989513b5d71a3a833f76f58","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Creation of an extension via the ``nova.image.download.modules`` extension"},{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_1e6fad61","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":26},"in_reply_to":"5f7c97a3_02643948","updated":"2018-10-23 19:38:46.000000000","message":"I\u0027m in favor of the first part of Mohammed\u0027s idea, where we build the direct download functionality into the image backend for rbd, try direct download if direct_location, else fall back on a fetch from glance. And only store the file on local disk. Adding logic to use rbd as the cache store would be complex, and Matt Booth pointed out it won\u0027t solve the use case described in this spec. So I think an rbd cache store would be a separate spec and effort.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"824b769572dce298f4abedc6ec6701d527b4a844","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Creation of an extension via the ``nova.image.download.modules`` extension"},{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_02643948","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":26},"in_reply_to":"5f7c97a3_147249ae","updated":"2018-06-08 12:47:35.000000000","message":"Mohammed, not a fan of that proposal, and in any case it wouldn\u0027t address this use case. ImageCacheManager really needs to be taken out back and quietly put down, not extended.\n\nI think what you\u0027re talking about is having an image cache appropriate to the image backend in use. i.e. If you\u0027re using ceph, your image cache should be in ceph; if you\u0027re using LVM it should be in LVM. That would allow us to efficiently use backend-specific thin copies. I\u0027m in favour of this, I\u0027ve proposed it in the past, and actually started implementing it, but unfortunately I don\u0027t think it will ever land. It\u0027s not a well-loved corner of Nova, and I believe the smart money these days is on improving boot from volume instead of maintaining a parallel implementation of cinder in nova. Apart from anything else, they support more backends than we ever will. They also have their own image cache.\n\nThe reason it wouldn\u0027t address this use case is that with a qcow2 backend we explicitly need an image cache which stores files on local disk, which an rbd image cache wouldn\u0027t achieve.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":1004,"name":"Mohammed Naser","email":"mnaser@vexxhost.com","username":"mnaser"},"change_message_id":"93aae01db123d1d04e7ba0e5b55139d41f7128ce","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_b46835ba","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"updated":"2018-06-07 19:19:29.000000000","message":"No need for us to use privsep and fork out a process, python-{rbd,rados} and co can help us get this done.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"858841cf2827ebb47d61605d2421fc5eef301c4b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_f5aaefcf","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"in_reply_to":"5f7c97a3_125541c2","updated":"2018-06-11 15:39:46.000000000","message":"I also like to be Pythonic when possible but the primary purpose of this change is increasing download speed and I\u0027m not sure we\u0027re going to get that level of performance from the Python bindings.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"824b769572dce298f4abedc6ec6701d527b4a844","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_427a31ba","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"in_reply_to":"5f7c97a3_2fbe0bd4","updated":"2018-06-08 12:47:35.000000000","message":"Executing an external binary is also likely to be vastly quicker. Python suffers severely from poor scheduling behaviour in operations like this. If you write a naive loop like:\n\nwhile !finished:\n  chunk \u003d source.read()\n  sink.write(chunk)\n\nyou fail to keep both your pipes busy simultaneously, and if you try to get clever by having separate reader and writer threads with a big buffer, you quickly hit limitations due to Python\u0027s inability to actually run the threads concurrently, or to service them quickly enough after an IO operation completes.\n\nTL;DR Calling an external tool is much less code, and can easily be an order of magnitude faster when the speeds get high.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_125541c2","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"in_reply_to":"5f7c97a3_427a31ba","updated":"2018-06-11 15:24:47.000000000","message":"Indeed, running `rbd export` on a 2.2 GB image took 2.4s, while the same operation using Python bindings and the loop mentioned above took 7.2 seconds. I still like the \"pythonic\" way because it allows for code reuse, but potential performance benefits when using rbd export seem to be significant.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"31c5f5b948609cc5f71b1dc5aeb847f48937b09f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_2fbe0bd4","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"in_reply_to":"5f7c97a3_b46835ba","updated":"2018-06-07 21:06:50.000000000","message":"Yup, I pointed out librados in an earlier patch set, but the author wasn\u0027t familiar with using it for this, and the existing rbd image import call execs out.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d30b08b8e406eaad8989513b5d71a3a833f76f58","unresolved":false,"context_lines":[{"line_number":52,"context_line":"point will allow a direct download handler to be registered for Glance images"},{"line_number":53,"context_line":"with the \u0027rbd\u0027 URL scheme."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_ded85525","line":59,"range":{"start_line":55,"start_character":0,"end_line":59,"end_character":4},"in_reply_to":"5f7c97a3_f5aaefcf","updated":"2018-10-23 19:38:46.000000000","message":"Based on this thread, I think we should use privsep to execute \u0027rbd export\u0027 directly for performance reasons.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Alternatives"},{"line_number":62,"context_line":"------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"VM root disks can be run directly within Ceph as creation of these VM root"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_720915db","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":12},"updated":"2018-06-11 15:24:47.000000000","message":"The only \"alternative\" to this proposed new behavior that I see is really just the \"old\" behavior of pushing image through API. Boot from volume is entirely different use case, not alternative.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``DEFAULT.force_raw_images\u003dfalse``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_d2f7c9d3","line":120,"range":{"start_line":120,"start_character":2,"end_line":120,"end_character":27},"updated":"2018-06-11 15:24:47.000000000","message":"This isn\u0027t needed, the behavior works for any image type that can be in Ceph.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"858841cf2827ebb47d61605d2421fc5eef301c4b","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``DEFAULT.force_raw_images\u003dfalse``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_d53fb3b2","line":120,"range":{"start_line":120,"start_character":2,"end_line":120,"end_character":27},"in_reply_to":"5f7c97a3_d2f7c9d3","updated":"2018-06-11 15:39:46.000000000","message":"I agree it can work for any image type.  It really just needs to be something other than rbd so that the image download code is invoked and doesn\u0027t try to run the VM\u0027s root disk from within Ceph.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"824b769572dce298f4abedc6ec6701d527b4a844","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_1db7bc3c","line":122,"updated":"2018-06-08 12:47:35.000000000","message":"Presumably this isn\u0027t required. I\u0027d have assumed just the two below.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_522df943","line":122,"in_reply_to":"5f7c97a3_1db7bc3c","updated":"2018-06-11 15:24:47.000000000","message":"That\u0027s not needed, the image\u0027s \"location\" includes pool name.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":28397,"name":"Curt Moore","email":"curt.moore@gmail.com","username":"jcmoore"},"change_message_id":"858841cf2827ebb47d61605d2421fc5eef301c4b","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_f5466f21","line":122,"in_reply_to":"5f7c97a3_522df943","updated":"2018-06-11 15:39:46.000000000","message":"Agreed, there is an implementation detail here we can hash out in the code review.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":10338,"name":"Daniel Speichert","email":"daniel@speichert.pl","username":"daniel"},"change_message_id":"81882439377f26b9d1e4f3cc4e9cb2e09a2a9fde","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"Looking ahead, it may be desired to create additional entries in the libvirt"},{"line_number":129,"context_line":"section of ``nova.conf`` for this feature as the current implementation assumes"},{"line_number":130,"context_line":"that the ``rbd_user`` will have access to the Glance images.  This may not be"},{"line_number":131,"context_line":"the case depending upon how the Ceph pool permissions are configured."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Developer impact"},{"line_number":134,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_32dddd40","line":131,"range":{"start_line":130,"start_character":62,"end_line":131,"end_character":69},"updated":"2018-06-11 15:24:47.000000000","message":"This is true, however the name of the option doesn\u0027t suggest it\u0027s \"cinder-bound\". Some environments reuse the same pool for Glance and Cinder and for those that don\u0027t, setting up access for one use to both pools is not an issue - Ceph supports that well.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"04726236e4e1b094b7f2e9f7d8331c829680455f","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_39041ec6","line":140,"updated":"2018-06-07 18:55:59.000000000","message":"I would rather we plumb this more formally somehow instead of using this extension point. We should keep it deprecated and move on to remove it after we get this functionality in-tree.\n\nDoes it make sense to always try to do this if the above things are configured? Seems like it would, maybe falling back to normal glance download if that fails or something? I\u0027d rather do that than make operators opt-in to obviously sane behavior.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e6a9907cc81b302cbf1f931ff1dcbd949880a697","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_d6fca740","line":140,"in_reply_to":"3f79a3b5_1e19edd0","updated":"2018-10-24 15:28:04.000000000","message":"I might be wrong, I didn\u0027t fully audit the code, but I think the glance API code where the extension point is used today for downloads and where the rbd image backend exists for the libvirt driver might be quite a bit decoupled, unless it\u0027s the rbd image backend itself that is calling the download via some fetch_image() method or something. Note that also means you wouldn\u0027t get this optimization for non-libvirt drivers, but that\u0027s probably a much more minor concern.\n\nLooks like the call path is:\n\nlibvirt driver _create_images_and_backing -\u003e\n  imagebackend.cache -\u003e libvirt.utils.fetch_image -\u003e\n    images.fetch_to_raw -\u003e images.fetch -\u003e\n      image.API.download -\u003e glance (+download extension)\n\nSo I think the only place in there for the rbd imagebackend to side-step that is via the Rbd.cache method. Maybe that could work, or the Rbd imagebackend could provider a wrapper around the fetch_func or something?","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d30b08b8e406eaad8989513b5d71a3a833f76f58","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3f79a3b5_1e19edd0","line":140,"in_reply_to":"5f7c97a3_39041ec6","updated":"2018-10-23 19:38:46.000000000","message":"+1 Dan. As I mentioned in a previous comment, I think we should just directly add the ability to direct download from ceph into the rbd imagebackend if the direct url is available and fall back to a fetch from glance if not. And go ahead and get rid of the extension point.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"824b769572dce298f4abedc6ec6701d527b4a844","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_7dd6f055","line":140,"in_reply_to":"5f7c97a3_39041ec6","updated":"2018-06-08 12:47:35.000000000","message":"I\u0027m ambivalent personally, but as this download is really an implementation detail of glance, not nova, some kind of extension would make sense. os-glance? Probably not worth it with just one extension, though.","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"04726236e4e1b094b7f2e9f7d8331c829680455f","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"* Get existing in-house out-of-tree implementation ready for submission"},{"line_number":160,"context_line":"  upstream."},{"line_number":161,"context_line":"* Write tests for implementation"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Dependencies"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_59079aca","line":161,"updated":"2018-06-07 18:55:59.000000000","message":"Is this something we can test in the ceph job or only in unit tests?","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4441534e07b1f9eac863b6d89cfdd781b908db71","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"* Get existing in-house out-of-tree implementation ready for submission"},{"line_number":160,"context_line":"  upstream."},{"line_number":161,"context_line":"* Write tests for implementation"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Dependencies"},{"line_number":164,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5f7c97a3_0f2d4f45","line":161,"in_reply_to":"5f7c97a3_59079aca","updated":"2018-06-07 21:02:49.000000000","message":"See below, we would have to write an experimental queue job for the images_type\u003dqcow2 thing since the ceph job runs with rbd everywhere (ephemeral and persistent).","commit_id":"3b1de56c1faefd279745b45e5d6c47df61b14531"}],"specs/ussuri/approved/nova-image-download-via-rbd.rst":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"990558a47516d6cc2625de91135735825c081f63","unresolved":false,"context_lines":[{"line_number":19,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":20,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"},{"line_number":21,"context_line":"on the Glance image, bypassing the Glance API entirely and directly download"},{"line_number":22,"context_line":"the image from Ceph.  This direct download can result in a drastic reduction"},{"line_number":23,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"A change was made to Nova during the Mitaka cycle which added the ability to"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_e3d237cf","line":22,"range":{"start_line":22,"start_character":21,"end_line":22,"end_character":22},"updated":"2020-02-10 13:31:41.000000000","message":"nit: redundant space","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"990558a47516d6cc2625de91135735825c081f63","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"This download handler will be called only when a VM is scheduled on a node and"},{"line_number":56,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":57,"context_line":"cache.  It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":58,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":59,"context_line":"API."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_43478b7b","line":57,"range":{"start_line":57,"start_character":7,"end_line":57,"end_character":8},"updated":"2020-02-10 13:31:41.000000000","message":"r","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"990558a47516d6cc2625de91135735825c081f63","unresolved":false,"context_lines":[{"line_number":135,"context_line":""},{"line_number":136,"context_line":"The ``nova.image.download.modules`` extension point is currently deprecated in"},{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_033d13e5","line":138,"range":{"start_line":138,"start_character":28,"end_line":138,"end_character":29},"updated":"2020-02-10 13:31:41.000000000","message":"redundant space","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e44d46eefe15aa19441865c79782617a57cf4ff7","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_27fc573f","line":140,"updated":"2020-01-31 17:28:58.000000000","message":"I\u0027m not sure we need to un-deprecate this. You are proposing this be added to the tree, not be something that is implemented externally right? If so, we don\u0027t need to implement it as something that implements this entry point. Further, if this is the only thing we\u0027re expecting to have that provides a download alternative, we can just add it in more directly and not retain all the legacy plumbing for the plugin that we don\u0027t want to otherwise support.\n\nI assume this code was implemented as an out-of-body download extension and the proposal here is just to bring that into tree without further integration because it\u0027s easy, right?","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"990558a47516d6cc2625de91135735825c081f63","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Queens and is slated for removal in Rocky as there was no evidence of it being"},{"line_number":138,"context_line":"used in a production cloud.  This would introduce an in-tree implementation of"},{"line_number":139,"context_line":"this extension point, thus requiring the \"un-deprecation\" of this"},{"line_number":140,"context_line":"functionality."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Upgrade impact"},{"line_number":143,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_6331670a","line":140,"in_reply_to":"3fa7e38b_27fc573f","updated":"2020-02-10 13:31:41.000000000","message":"Yes, it has been deprecated in queen https://review.opendev.org/#/c/510195/, and the nova.image.download.modules extension point is not maintained.\n\nDeprecated decription in releasenote: https://docs.openstack.org/releasenotes/nova/queens.html#deprecation-notes","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"13d8d84014c008e247d1a26d928cdf2fbc4f2064","unresolved":false,"context_lines":[{"line_number":151,"context_line":"-----------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Primary assignee:"},{"line_number":154,"context_line":"  Curt Moore \u003ccurt.moore@garmin.com\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Feature Liaison"},{"line_number":157,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_7cee888b","line":154,"updated":"2019-12-13 14:30:51.000000000","message":"Probably want to update this line :)","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"b14d211b334e96974ef587f9d62e7b5692e5841f","unresolved":false,"context_lines":[{"line_number":151,"context_line":"-----------"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Primary assignee:"},{"line_number":154,"context_line":"  Curt Moore \u003ccurt.moore@garmin.com\u003e"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Feature Liaison"},{"line_number":157,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_cf110052","line":154,"in_reply_to":"3fa7e38b_7cee888b","updated":"2019-12-13 14:42:53.000000000","message":"oops, yes makes sense","commit_id":"a8786283964f4250f085a41a1c71a2f36f0a13f4"}],"specs/victoria/approved/nova-image-download-via-rbd.rst":[{"author":{"_account_id":27336,"name":"XiaojueGuan","email":"xiaojueguan@gmail.com","username":"XiaojueGuan"},"change_message_id":"aaad01cbf6278240e27112ccba0751bdf2d8fa0f","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When using compute-local storage with qcow2 based VM root disks, Glance images"},{"line_number":18,"context_line":"are downloaded into the libvirt image store by way of the Glance HTTP API."},{"line_number":19,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":20,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"},{"line_number":21,"context_line":"on the Glance image, bypassing the Glance API entirely and directly download"},{"line_number":22,"context_line":"the image from Ceph. This direct download can result in a drastic reduction"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_985f8340","line":19,"range":{"start_line":19,"start_character":33,"end_line":19,"end_character":56},"updated":"2020-05-12 14:49:27.000000000","message":"?","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"1ba7d78ea49404f38dc1fd9b5b299470cf8fa3d8","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"When using compute-local storage with qcow2 based VM root disks, Glance images"},{"line_number":18,"context_line":"are downloaded into the libvirt image store by way of the Glance HTTP API."},{"line_number":19,"context_line":"For images in the 10s-100s of GB, this download can can be _very_ slow."},{"line_number":20,"context_line":"If the compute node has access to Ceph, it can instead perform an \u0027rbd export\u0027"},{"line_number":21,"context_line":"on the Glance image, bypassing the Glance API entirely and directly download"},{"line_number":22,"context_line":"the image from Ceph. This direct download can result in a drastic reduction"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_73c8d054","line":19,"range":{"start_line":19,"start_character":33,"end_line":19,"end_character":56},"in_reply_to":"ff570b3c_985f8340","updated":"2020-05-12 15:12:53.000000000","message":"Ah, right. I\u0027ll fix it in a few minutes","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":22,"context_line":"the image from Ceph. This direct download can result in a drastic reduction"},{"line_number":23,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"A change was made to Nova during the Mitaka cycle which added the ability to"},{"line_number":26,"context_line":"perform Ceph-native VM root disk snapshots:"},{"line_number":27,"context_line":"https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Ceph-native approach works well when the end goal is to run the VM root"},{"line_number":30,"context_line":"disks within Ceph but running the VM root disks from Ceph introduces additional"},{"line_number":31,"context_line":"network overhead and latency."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"There is a distinct difference in the use case of this spec as it aims to"},{"line_number":34,"context_line":"optimize disk I/O on the VM root disks by running them from node-local storage,"},{"line_number":35,"context_line":"for example with the libvirt driver\u0027s qcow2 image backend."},{"line_number":36,"context_line":"This is essentially the \"Do designate some non-Ceph compute hosts with"},{"line_number":37,"context_line":"low-latency local storage\" use case outlined here:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"https://ceph.com/planet/the-dos-and-donts-for-ceph-for-openstack/"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Use Cases"},{"line_number":42,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_af9a18c2","line":39,"range":{"start_line":25,"start_character":0,"end_line":39,"end_character":65},"updated":"2020-05-11 14:06:08.000000000","message":"I think this is unrelated enough to what you\u0027re doing that you could just leave it out. It really has nothing to do with it and you first paragraph is self-evident enough: plenty of people want and use local disk images.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":22,"context_line":"the image from Ceph. This direct download can result in a drastic reduction"},{"line_number":23,"context_line":"in download time, from tens of minutes to tens of seconds."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"A change was made to Nova during the Mitaka cycle which added the ability to"},{"line_number":26,"context_line":"perform Ceph-native VM root disk snapshots:"},{"line_number":27,"context_line":"https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Ceph-native approach works well when the end goal is to run the VM root"},{"line_number":30,"context_line":"disks within Ceph but running the VM root disks from Ceph introduces additional"},{"line_number":31,"context_line":"network overhead and latency."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"There is a distinct difference in the use case of this spec as it aims to"},{"line_number":34,"context_line":"optimize disk I/O on the VM root disks by running them from node-local storage,"},{"line_number":35,"context_line":"for example with the libvirt driver\u0027s qcow2 image backend."},{"line_number":36,"context_line":"This is essentially the \"Do designate some non-Ceph compute hosts with"},{"line_number":37,"context_line":"low-latency local storage\" use case outlined here:"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"https://ceph.com/planet/the-dos-and-donts-for-ceph-for-openstack/"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Use Cases"},{"line_number":42,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_7607291e","line":39,"range":{"start_line":25,"start_character":0,"end_line":39,"end_character":65},"in_reply_to":"ff570b3c_af9a18c2","updated":"2020-05-12 14:03:43.000000000","message":"OK","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Special download handler will be registered for Glance images when \u0027rbd\u0027 value"},{"line_number":52,"context_line":"is present in ``allowed_direct_url_schemes`` option."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"This download handler will be called only when a VM is scheduled on a node and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_cfa94ce0","line":51,"range":{"start_line":51,"start_character":0,"end_line":51,"end_character":7},"updated":"2020-05-11 14:06:08.000000000","message":"A Special","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"01545b56dc9101e973207b0e651eeeda1a88d0de","unresolved":false,"context_lines":[{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_8f1e346e","line":58,"updated":"2020-05-11 14:28:58.000000000","message":"There\u0027s a non-trivial amount of change in the glance module you\u0027re adding too, related to accounting for download size or something. I tink that needs to be in here as well.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_0d1973d6","line":58,"in_reply_to":"ff570b3c_0d04d314","updated":"2020-05-12 14:03:43.000000000","message":"If I understand you correctly, you mean the code that actually reads the downloaded image right after downloading it instead of returning from the method right away.\n\nFirst I also did not understand its purpose, and now I think its only reason is so it could be passed to the (existing) block that does image signature validation.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"036c915346394b18409e54f7a6653a4ad873287c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_0d04d314","line":58,"in_reply_to":"ff570b3c_8f1e346e","updated":"2020-05-12 13:47:35.000000000","message":"Er, wait, you missed this in the latest version. Can you please explain what those core changes are?","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":55,"context_line":"the required Glance image is not already present in the local libvirt image"},{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_160a2d25","line":58,"in_reply_to":"ff570b3c_8f1e346e","updated":"2020-05-12 14:03:43.000000000","message":"Hm, I\u0027m not sure if it deserves special mention. \n\nThe part where we check for download size is there only so that image_chunks iterator can be created and that is only to use existing code for signature verification.\n\nIn other words, the image is downloaded differently, but we still want to use some existing feature of the glance.download method.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_cff78cf5","line":59,"updated":"2020-05-11 14:06:08.000000000","message":"Also this:\n\n The mechanism for per-scheme download handlers was previously available as a plugin point, which\n is now deprecated, along with the allowed_direct_url_schemes config. This effort will close out on that \n deprecation by moving the per-scheme support into the glance module itself, undeprecating the\n allowed_direct_url_schemes config, and removing the old nova.images.download plug point.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":56,"context_line":"cache. It will execute the OS native \u0027rbd export\u0027 command, using ``privsep``,"},{"line_number":57,"context_line":"in order to perform the download operation instead of using the Glance HTTP"},{"line_number":58,"context_line":"API."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Alternatives"},{"line_number":61,"context_line":"------------"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_911c876b","line":59,"in_reply_to":"ff570b3c_cff78cf5","updated":"2020-05-12 14:03:43.000000000","message":"That\u0027s good.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"where the VM root disks remain in Ceph and are not run as qcow2 local disks."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"https://specs.openstack.org/openstack/nova-specs/specs/mitaka/implemented/rbd-instance-snapshots.html"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Data model impact"},{"line_number":73,"context_line":"-----------------"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_cfd02c54","line":71,"updated":"2020-05-11 14:06:08.000000000","message":"The other alternative is continue doing what we\u0027re doing which is leave the http-based fetch.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":150,"context_line":"-----------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Primary assignee:"},{"line_number":153,"context_line":"  Curt Moore \u003ccurt.moore@garmin.com\u003e"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Feature Liaison"},{"line_number":156,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_cf45cc19","line":153,"updated":"2020-05-11 14:06:08.000000000","message":"Sounds like this is not correct anymore right?","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":150,"context_line":"-----------"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Primary assignee:"},{"line_number":153,"context_line":"  Curt Moore \u003ccurt.moore@garmin.com\u003e"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Feature Liaison"},{"line_number":156,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_31665bef","line":153,"in_reply_to":"ff570b3c_cf45cc19","updated":"2020-05-12 14:03:43.000000000","message":"Right.... well I can change it to me, though it does not seem fair take a credit for that...","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":156,"context_line":"---------------"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Feature liaison:"},{"line_number":159,"context_line":"  Liaison Needed"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Work Items"},{"line_number":162,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_0f47c41f","line":159,"updated":"2020-05-11 14:06:08.000000000","message":"You can put me (danms) here.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"Work Items"},{"line_number":162,"context_line":"----------"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Get existing in-house out-of-tree implementation ready for submission"},{"line_number":165,"context_line":"  upstream."},{"line_number":166,"context_line":"* Write tests for implementation"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_6f6da097","line":164,"updated":"2020-05-11 14:06:08.000000000","message":"First, the refactor, second the conversion of the out-of-tree module to the new format.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"* Get existing in-house out-of-tree implementation ready for submission"},{"line_number":165,"context_line":"  upstream."},{"line_number":166,"context_line":"* Write tests for implementation"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Dependencies"},{"line_number":169,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":170,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_8f0914df","line":167,"updated":"2020-05-11 14:06:08.000000000","message":"Update the admin documentation for how/why","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"abb22f146eccb925c2cf6c730a2e431ac9bedb3a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"* Unit tests"},{"line_number":177,"context_line":"* Consider adding an experimental on-demand queue job which uses Ceph with"},{"line_number":178,"context_line":"  local qcow2 images"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Documentation Impact"},{"line_number":181,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"ff570b3c_ef27f063","line":178,"updated":"2020-05-11 14:06:08.000000000","message":"I think we need to see this work at least a little. I imagine you can just write a job in-tree that will run the regular ceph job, but not configure the rbd image backend on the compute so we can see it doing the alternate download. I think that needs to be a requirement here.","commit_id":"7977fb270e463cc791b428c8a13517f2cfc50759"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d81c8d344b62ca3408fbfacd136aca7c8ed4c6d9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"Proposed change"},{"line_number":33,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"A special download handler will be registered for Glance images when \u0027rbd\u0027"},{"line_number":36,"context_line":"value is present in ``allowed_direct_url_schemes`` option."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"This download handler will be called only when a VM is scheduled on a node and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ff570b3c_6a83b5cd","line":35,"range":{"start_line":35,"start_character":64,"end_line":35,"end_character":68},"updated":"2020-05-12 13:46:22.000000000","message":"nit: \"when then\"","commit_id":"c4e509edc1a30f64eb5a72b30feb66d8c8ccead4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d81c8d344b62ca3408fbfacd136aca7c8ed4c6d9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"* Consider adding an experimental on-demand queue job which uses Ceph with"},{"line_number":173,"context_line":"  local qcow2 images"},{"line_number":174,"context_line":"* There should also be a job that uses Ceph as backend without direct-rbd"},{"line_number":175,"context_line":"  download feature enabled, so we can see this is still working as it used to."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Documentation Impact"},{"line_number":178,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ff570b3c_4a7231e7","line":175,"updated":"2020-05-12 13:46:22.000000000","message":"This is the regular ceph job we have, right? The point of my previous comment was that we need to have a new job (run at least once, not necessarily in perpetuity) that re-uses the setup part of the ceph job, but does not configure the compute for rbd backend. Instead, it configures it to do this rbd export for download from ceph so we can see that working. That\u0027s what you describe on L172 and my comment was about changing tat from \"Consider\" to \"do it\".","commit_id":"c4e509edc1a30f64eb5a72b30feb66d8c8ccead4"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"78bf50cd9b936dd646c7bd40064566ec698ae254","unresolved":false,"context_lines":[{"line_number":172,"context_line":"* Consider adding an experimental on-demand queue job which uses Ceph with"},{"line_number":173,"context_line":"  local qcow2 images"},{"line_number":174,"context_line":"* There should also be a job that uses Ceph as backend without direct-rbd"},{"line_number":175,"context_line":"  download feature enabled, so we can see this is still working as it used to."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Documentation Impact"},{"line_number":178,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"ff570b3c_6d83cfcd","line":175,"in_reply_to":"ff570b3c_4a7231e7","updated":"2020-05-12 14:03:43.000000000","message":"Ah, right, my change really did not make sense","commit_id":"c4e509edc1a30f64eb5a72b30feb66d8c8ccead4"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"ac9c0ae9274eee5248e86132f36119c9d57fe809","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"   * - Release Name"},{"line_number":201,"context_line":"     - Description"},{"line_number":202,"context_line":"   * - Ussuri"},{"line_number":203,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":13,"id":"ff570b3c_8b8a7d18","line":202,"range":{"start_line":202,"start_character":7,"end_line":202,"end_character":13},"updated":"2020-05-13 01:05:59.000000000","message":"s/Ussuri/Victoria/","commit_id":"17829ac290c3ad0f4abbf62adf519dbcf2a1ccc9"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"The mechanism for per-scheme download handlers was previously available"},{"line_number":45,"context_line":"as a plugin point, which is now deprecated, along with the"},{"line_number":46,"context_line":"allowed_direct_url_schemes config option. This effort will close out on that"},{"line_number":47,"context_line":"deprecation by moving the per-scheme support into the glance module itself,"},{"line_number":48,"context_line":"undeprecating the allowed_direct_url_schemes config, and removing the old"},{"line_number":49,"context_line":"nova.images.download plug point."},{"line_number":50,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_8957c9ca","line":47,"range":{"start_line":47,"start_character":54,"end_line":47,"end_character":60},"updated":"2020-05-18 13:10:32.000000000","message":"supernit ``nova.images.glance`` just to make it clear this isn\u0027t landing in Glance itself.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"undeprecating the allowed_direct_url_schemes config, and removing the old"},{"line_number":49,"context_line":"nova.images.download plug point."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The glance module also never used to perform image signature verification when"},{"line_number":52,"context_line":"the per-scheme module was used. Since we are moving this into core code,"},{"line_number":53,"context_line":"we will also fix this so that per-scheme images are verified like all the rest."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Alternatives"},{"line_number":56,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_e9fc85b6","line":53,"range":{"start_line":51,"start_character":0,"end_line":53,"end_character":79},"updated":"2020-05-18 13:10:32.000000000","message":"ACK we should also setup a job with Barbican to verify this.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_0919f920","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":44},"updated":"2020-05-18 13:10:32.000000000","message":"I don\u0027t think this is required?\n\nThis is the ephemeral disk pool that isn\u0027t being used in your usecase.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"c1b61727e77a640bafdab4d8f1e419ccd96bd429","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_fbc3a755","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":44},"in_reply_to":"ff570b3c_0919f920","updated":"2020-05-18 14:27:37.000000000","message":"It isn\u0027t specific to this feature, true. \n\nThis is the same for rbd_ceph_conf and rbd_user though, do you want this removed and others to stay?","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"09b84ec4ed56bf128cb50b8ddced23153459717d","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"``libvirt.images_type\u003dqcow2``"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_6d819afb","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":44},"in_reply_to":"ff570b3c_fbc3a755","updated":"2020-05-18 15:03:27.000000000","message":"OK, this one really is confusing. And it\u0027s not required at all, as the pool is known from the direct path to the image.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.rbd_user\u003d\u003cceph_user_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_898189fe","line":120,"range":{"start_line":120,"start_character":10,"end_line":120,"end_character":30},"updated":"2020-05-18 13:10:32.000000000","message":"Somewhat related, I think we need to move this to the more generic [libvirt]/rbd_ceph_conf as it\u0027s used by image, ephemeral and block storage through rbd_utils.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"629ed80ae1af7d3eab1aade4edd6370563cfaf13","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.rbd_user\u003d\u003cceph_user_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_6d06ba1e","line":120,"range":{"start_line":120,"start_character":10,"end_line":120,"end_character":30},"in_reply_to":"ff570b3c_1b33fbf7","updated":"2020-05-18 14:44:17.000000000","message":"Apologies, yes the latter, we should make it more generic at some point in the future.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"c1b61727e77a640bafdab4d8f1e419ccd96bd429","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.rbd_user\u003d\u003cceph_user_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_bb92cf55","line":120,"range":{"start_line":120,"start_character":10,"end_line":120,"end_character":30},"in_reply_to":"ff570b3c_898189fe","updated":"2020-05-18 14:27:37.000000000","message":"I could remove it from spec, as it is just general setting for ceph setup, nothing specific to the new feature. But it might be a good think to show the full setup, including these generic ceph related options...","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d96b2e46b817277c4124e9a98188f4107214f6e6","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.rbd_user\u003d\u003cceph_user_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_1b33fbf7","line":120,"range":{"start_line":120,"start_character":10,"end_line":120,"end_character":30},"in_reply_to":"ff570b3c_898189fe","updated":"2020-05-18 14:08:23.000000000","message":"We\u0027re just adding one more case with this work, but not pushing it from specific to general, right? Or are you just commenting that \"we should do that sometime\" but not suggesting it be a work item for this effort specifically?","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"629ed80ae1af7d3eab1aade4edd6370563cfaf13","unresolved":false,"context_lines":[{"line_number":117,"context_line":""},{"line_number":118,"context_line":"``libvirt.images_rbd_pool\u003d\u003cceph_pool_name\u003e``"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"``libvirt.images_rbd_ceph_conf\u003d\u003cceph_config_file\u003e``"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"``libvirt.rbd_user\u003d\u003cceph_user_name\u003e``"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_0d2e1e91","line":120,"range":{"start_line":120,"start_character":10,"end_line":120,"end_character":30},"in_reply_to":"ff570b3c_bb92cf55","updated":"2020-05-18 14:44:17.000000000","message":"It\u0027s specifically required for this feature to work so I\u0027d include it, I was just riffing that it needs to be renamed in the future.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``glance.allowed_direct_url_schemes \u003d rbd``"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Looking ahead, it may be desired to create additional entries in the libvirt"},{"line_number":127,"context_line":"section of ``nova.conf`` for this feature as the current implementation assumes"},{"line_number":128,"context_line":"that the ``rbd_user`` will have access to the Glance images. This may not be"},{"line_number":129,"context_line":"the case depending upon how the Ceph pool permissions are configured."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Developer impact"},{"line_number":132,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_2995dd33","line":129,"range":{"start_line":126,"start_character":0,"end_line":129,"end_character":69},"updated":"2020-05-18 13:10:32.000000000","message":"We could explode things into ``[libvirt]/images_rbd_user|pool|conf``, ``ephemeral_rbd_user|pool|conf`` and ``block_rbd_user|conf`` storage rbd configurables but lets leave that for another spec.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":132,"context_line":"----------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The ``allowed_direct_url_schemes`` option was deprecated in Queens. Proposed"},{"line_number":135,"context_line":"implementation of this feature would reintroduce this option and we would need"},{"line_number":136,"context_line":"to \"un-deprecate\" it."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Upgrade impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_d595d241","line":135,"range":{"start_line":135,"start_character":37,"end_line":135,"end_character":48},"updated":"2020-05-18 13:10:32.000000000","message":"Halt the deprecation? It wasn\u0027t removed.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":9963,"name":"Jiri Suchomel","email":"jiri.suchomel@suse.com","username":"jsuchome"},"change_message_id":"c1b61727e77a640bafdab4d8f1e419ccd96bd429","unresolved":false,"context_lines":[{"line_number":132,"context_line":"----------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The ``allowed_direct_url_schemes`` option was deprecated in Queens. Proposed"},{"line_number":135,"context_line":"implementation of this feature would reintroduce this option and we would need"},{"line_number":136,"context_line":"to \"un-deprecate\" it."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Upgrade impact"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_5b90d343","line":135,"range":{"start_line":135,"start_character":37,"end_line":135,"end_character":48},"in_reply_to":"ff570b3c_d595d241","updated":"2020-05-18 14:27:37.000000000","message":"OK, I\u0027ll try to reword","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"91cc9888f70b8dd0aea19b9b73510fca194baec5","unresolved":false,"context_lines":[{"line_number":132,"context_line":"----------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The ``allowed_direct_url_schemes`` option was deprecated in Queens. Proposed"},{"line_number":135,"context_line":"implementation of this feature would reintroduce this option and we would need"},{"line_number":136,"context_line":"to \"un-deprecate\" it."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"Upgrade impact"},{"line_number":139,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ff570b3c_35908e4a","line":136,"range":{"start_line":135,"start_character":61,"end_line":136,"end_character":21},"updated":"2020-05-18 13:10:32.000000000","message":"Right I wouldn\u0027t suggest that we are reintroducing it.","commit_id":"7d8ddd5177f34bcca03d67c1b2f7c63218b090e1"}]}
