)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9600f8e1_0db4112d","updated":"2022-09-21 12:22:27.000000000","message":"Replies to some comments. I\u0027m also updating the spec to address some more.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"556638941ef37a04727a06243483ba0597d9457e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9b659e6e_174e76ff","updated":"2022-11-16 20:00:43.000000000","message":"I\u0027d like to get input from additional reviewers to determine consensus on having the new API be synchronous vs asynchronous.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"b5f374c3d345786aab4cf2fd3a3a1e565902da12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"01db01df_b39b93de","updated":"2022-10-12 09:20:17.000000000","message":"I\u0027m no longer sure if a synchronous API is indeed the best solution, because while basically all plausible file systems support sparse files, we don\u0027t really have a guarantee that a one of those will be in use. \n\nI\u0027ve expanded and restructured the Alternatives section to serve as a better basis for discussing this and possible alternatives.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"654ee0ff_e4cfd8a8","updated":"2022-11-16 04:07:51.000000000","message":"This is a soft -1 that I will remove if we get more feedback from others and consensus favors the synchronous API approach.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"da6e9a33_91865ea4","updated":"2022-10-12 09:38:44.000000000","message":"by the way i realis i had a bunch of draft comments in gerrit that i forgot to push\ni have not done a fully review again i was just responding to your top level comment so not sure they still apply","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f301b46d_c8bca383","updated":"2022-11-15 13:50:58.000000000","message":"im ok with the direction but i have a few comments inline","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f17adf57d0a389d283c350b2bc4effbd9349d347","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8bf602b7_eefc4afb","updated":"2022-11-09 11:43:01.000000000","message":"in terms of updating python-novaclient, you optionally could do that but i woudl prefer if you added support for the new api to the openstacksdk and had cinder use that instead.\n\nideally i think we shoudl prefer to only add new apis to the sdk rather then the service client python bindings.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"caa44331_eb45800c","in_reply_to":"01db01df_b39b93de","updated":"2022-10-12 09:38:44.000000000","message":"i dont see this topic on https://etherpad.opendev.org/p/nova-antelope-ptg\nlooking quickly so if you want to have a disccusion at the ptg feel free to add it.\n\nif we have a cinder corss project session that would also be the best place to have it but if we dont then feel free to put it in the nova doc instead.\n\nit may be better to have nova call back cinder when we are done if we want to be 100% safe but then  we woudl also need a cidner api change to make that happen.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"51e62e70_cf6fcac3","in_reply_to":"3204eb5a_15525e8f","updated":"2022-11-08 18:19:06.000000000","message":"So, the conclusion from cinder ptg was that I should propose a separate cinder-spec for the required changes in Cinder, which I now did: https://review.opendev.org/c/openstack/cinder-specs/+/864020\n\nBesides this, the feedback was that a synchronous API is probably sufficient in this case.\n\nSo I\u0027m going to focus now on addressing the other things that you mentioned, like adding a new notification and a new capablity trait.\nI also realized that I will need to update python-novaclient to support the new API for Cinder to use it, so I will add that to the spec.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"3f203c2b01f4420d4c291495f3888ba7a0e0d75b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3204eb5a_15525e8f","in_reply_to":"caa44331_eb45800c","updated":"2022-10-12 15:44:35.000000000","message":"I have talked about it at the cinder meeting today and have added it now to the cinder ptg topics.\nThey generally seem to be in favor of an asynchronous solution, to be more resilient against things like NFS connection errors.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"001421aae7f79b7ac5a937737af6afdaf4e87366","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"db83665a_6c86ac78","updated":"2022-11-24 09:43:26.000000000","message":"I\u0027m currently considering submitting alternative specs for a callback in the style of os-migrate_volume_completion (Cinder), and an update to os-server-external-events that would allow additional data for events (Nova).\n\nIs this a good idea or would it be confusing to have two competing sets of specs?","commit_id":"55da834b9dd216565c28354172b18a6423a8be3d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e599cca8b22d243346f8f7e1e208ff7eac98f63d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"81d04331_03800d23","in_reply_to":"7f74a77b_c4c1362d","updated":"2022-12-06 15:03:00.000000000","message":"you shoudl use this one to track the nova changes\nif we are not addign a new api then this should describe how nova use the new chagnes in cinder.\n\nwe shoudl also ensure that both core teams have reviewd both and agre on the directoin before we merge the specs.\n\nthe ciner one shoudl merge first and then the nova spec.","commit_id":"55da834b9dd216565c28354172b18a6423a8be3d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"bfffbf2efff3e7cd93c703f89a00583bb7fc2ccc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7f74a77b_c4c1362d","in_reply_to":"db83665a_6c86ac78","updated":"2022-12-06 14:52:49.000000000","message":"I have proposed a cinder-spec for an async solution that does not require API changes in Nova, only changes in how the \"volume-extended\" events are handled:\nhttps://review.opendev.org/c/openstack/cinder-specs/+/866718\n\nThe changes are described in the \"Nova\" subsection of the \"Proposed change\" section of the cinder-spec.\nShould I still create a separate noca-spec?","commit_id":"55da834b9dd216565c28354172b18a6423a8be3d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8836801a_28a3f043","updated":"2022-12-07 16:45:59.000000000","message":"So, I rewrote the spec to reflect the current proposal to Cinder.\nI\u0027m going to close all of the open discussions for the old spec.","commit_id":"329f55d78ca30b085cfbd75a67e6fb9e8147778d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d81871a7a2024dea9d208b95062f7b3ccbde4d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"03ca8f10_c30c64a7","updated":"2022-12-14 17:37:37.000000000","message":"I got my concerns answered. The direction looks good. So I\u0027m +1. It would be nice to have emphasized in the spec text that nova-compute will use the new cinder volume status to decide if the new behavior is requested. If you can do that I will +2 it. If we are sort on time I can be convinced to +2 it as is and handle my request in a follow up. Sylvain would also like to check this anyhow.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7d0700dbfd356b3e0f18443a924103287b5b64a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"8b5b5ec7_c25a0d75","updated":"2022-12-14 14:34:56.000000000","message":"I have couple of concerns inline.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1535ce25_b7e9b72b","updated":"2022-12-13 19:41:19.000000000","message":"i would like to tease out the upgrade part alittle \ni think we can handel it more gracefully then in the current spec.\ndirection wise i think this is workable form a nova point of view.\n\ni have not read the cidner spec but i think its imporant that the new extend complation api in cinder support both succeful and unscussful completion so that nova can simple detect that the comptue does not support the new bahivor and notify cinder of that so cinder can recover.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"0b543e76be073b1eb775fca5ca0c0b1b0c337940","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"d935f171_b3bdf9c8","updated":"2023-01-02 09:29:38.000000000","message":"FYI: the corresponding Cinder spec has been merged: https://review.opendev.org/c/openstack/cinder-specs/+/866718","commit_id":"84e41ae1b53b5fdbafa3224f24e256bd3c6784bf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2b20dbb0_1486c301","updated":"2022-12-15 18:15:22.000000000","message":"just clearing the comment form the previous iterations\n\nill review this again tomorrow but i dont have the concentration left to review it proeprly today.","commit_id":"84e41ae1b53b5fdbafa3224f24e256bd3c6784bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6bc73978c39a7417f01259aae37c5c80892af23b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"6e73fd17_e6c7e1d1","updated":"2023-01-12 09:33:33.000000000","message":"+A this as I think we got diverse enough review on this and it has 2 +2","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"a93e4da0fccdaaa7c9041c4b3fbbad900cd2480a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"62256dc3_e3074b19","updated":"2023-01-05 12:36:11.000000000","message":"I updated some formulations to match the Cinder spec and fixed some typos.","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"448cc2087a977c4834a468be6d3151678b378604","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2dc94a35_7973e504","updated":"2023-01-11 10:08:56.000000000","message":"Looks good to me","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"185cd073974b01174f80c2233fd5270a8101cb34","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"5a139604_18e3e5ef","updated":"2023-01-12 08:01:11.000000000","message":"This version looks good to me, thank you for the updates. I\u0027m going to +1 as this spec already has the necessary +2\u0027s and I skimmed through this really fast. I think any unforeseen tweaks can be addressed in code review.","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"38faec41ba83279fcfc8bd31d6d3198b14a1dbb6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"2177a3af_1a37931a","updated":"2023-01-05 12:45:39.000000000","message":"thanks for the update :)","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"}],"specs/2023.1/approved/assisted-volume-extend.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":24,"context_line":"``qemu-img`` will be unable to resize it."},{"line_number":25,"context_line":"In this case, only the QEMU process holding the lock can resize the volume,"},{"line_number":26,"context_line":"which can be triggered through the monitor."},{"line_number":27,"context_line":"Libvirt supports this with the ``virsh blockresize`` command."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Nova API already has support for this mechanism through the"},{"line_number":30,"context_line":"``volume-extended`` external server event."}],"source_content_type":"text/x-rst","patch_set":4,"id":"13655640_f36a8e91","line":27,"updated":"2022-09-14 11:55:25.000000000","message":"what about other virt driver.\ncinder does not know that we have libvirt in use and we are not ment to\nadd new apis that can only work with one virt driver so this need to at least be implementable by other virt drivers like ironic or vmware.\n\nyou do not need to provide an implemenation for them nessisarly but the design has to allow for that so how will this work with say ironic.\n\nfor ironic or standalone cinder the backend i think would use qemu-img  have to extend the file. are we markign the volume in some way to denote if it need supprot form the hypervior or should be done by the backend.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":24,"context_line":"``qemu-img`` will be unable to resize it."},{"line_number":25,"context_line":"In this case, only the QEMU process holding the lock can resize the volume,"},{"line_number":26,"context_line":"which can be triggered through the monitor."},{"line_number":27,"context_line":"Libvirt supports this with the ``virsh blockresize`` command."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Nova API already has support for this mechanism through the"},{"line_number":30,"context_line":"``volume-extended`` external server event."}],"source_content_type":"text/x-rst","patch_set":4,"id":"3b28fd19_f57f2164","line":27,"in_reply_to":"13655640_f36a8e91","updated":"2022-09-21 12:22:27.000000000","message":"The new API will use the existing extend_volume() method of the virt driver.\nMost drivers (including ironic) just use the default implementation though, which raises a NotImplementedError.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":false,"context_lines":[{"line_number":24,"context_line":"``qemu-img`` will be unable to resize it."},{"line_number":25,"context_line":"In this case, only the QEMU process holding the lock can resize the volume,"},{"line_number":26,"context_line":"which can be triggered through the monitor."},{"line_number":27,"context_line":"Libvirt supports this with the ``virsh blockresize`` command."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The Nova API already has support for this mechanism through the"},{"line_number":30,"context_line":"``volume-extended`` external server event."}],"source_content_type":"text/x-rst","patch_set":4,"id":"0e4b8989_559961f4","line":27,"in_reply_to":"3b28fd19_f57f2164","updated":"2022-10-12 09:38:44.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":38,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":39,"context_line":"volume has already been updated in the database."},{"line_number":40,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":41,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":42,"context_line":"successful."},{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":4,"id":"8a5aecb1_d3bae575","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":38},"updated":"2022-09-14 11:55:25.000000000","message":"the size perhaps but the quota needs to eb reserved before we resize as we cant srink the volume if we would go over quota after the fact and we cannot allow the quota to be violated. -1 for that","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":39,"context_line":"volume has already been updated in the database."},{"line_number":40,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":41,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":42,"context_line":"successful."},{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":4,"id":"6276d2e0_5eb47268","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":38},"in_reply_to":"36a57987_c8b925c1","updated":"2022-11-08 18:19:06.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":38,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":39,"context_line":"volume has already been updated in the database."},{"line_number":40,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":41,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":42,"context_line":"successful."},{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":4,"id":"f850be47_fd425947","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":38},"in_reply_to":"8a5aecb1_d3bae575","updated":"2022-09-21 12:22:27.000000000","message":"Updating the volume quota is a two-step process.\nAt the start of the operation, a preliminary quota reservation is created, which prevents cinder from exceeding the quota through parallel operations.\nDepending on the success of the operation, the reservation will be either committed and made permanent, or rolled back.\n\nThe call to nova should happen after the reservation is created but before it is committed.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":true,"context_lines":[{"line_number":38,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":39,"context_line":"volume has already been updated in the database."},{"line_number":40,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":41,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":42,"context_line":"successful."},{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":4,"id":"36a57987_c8b925c1","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":38},"in_reply_to":"f850be47_fd425947","updated":"2022-10-12 09:38:44.000000000","message":"yep that shoudl result in the correct quota enfrocement\n\ncan you update the spec to say that.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"cf875ecf_267c09d5","line":46,"updated":"2022-09-14 11:55:25.000000000","message":"that would be the prefered way yes.\nassumning there is not an exsitng state for extending i would store the old size in cinder and intoduced a extend_pending state or similar to track that you are in the midel fo an extned and that the db value may not match the stoage size and then we can revert or confirm that extion based on if the virt driver succeeded.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":true,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"f2b4519d_ec3d467e","line":46,"in_reply_to":"08a2078c_e3c84974","updated":"2022-10-12 09:38:44.000000000","message":"if quota is handled correctly that is the main thing i was concerned about.\nso yes you can list this in the alrenitives","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"08a2078c_e3c84974","line":46,"in_reply_to":"cf875ecf_267c09d5","updated":"2022-09-21 12:22:27.000000000","message":"Cinder has the \"extending\" volume-state, which will be set until the extend operation is finished.\n\nIf we set the new size in the database, we still have to keep the the original size around somewhere (e.g. in the metadata) to be able to roll it back.\nI should add this to the Alternatives section.\n\nI do believe that updating the size in the database before the operation has successfully finished is a bad idea, though.\nThe size may not be rolled back if either of the services fail during the operation, and while Cinder has an API for resetting the volume state, there is currently no way of resetting the size, so we would need to introduce a mechanism for that.\nIt would also have an impact on metering, because Ceilometer will poll the size of the volume regardless of it\u0027s state.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":4,"id":"62aefb57_8c89bd33","line":46,"in_reply_to":"f2b4519d_ec3d467e","updated":"2022-11-08 18:19:06.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Introduce a new API microversion that adds the new"},{"line_number":63,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":66,"context_line":"extending attached volumes, and it will require admin access to the Nova."}],"source_content_type":"text/x-rst","patch_set":4,"id":"117391a7_f72c7c5b","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":11},"updated":"2022-09-14 11:55:25.000000000","message":"so if i recall correctly we are not ment to prefix with os- anymore\n\nso this can just be /assisted-volume-extend","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Introduce a new API microversion that adds the new"},{"line_number":63,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":66,"context_line":"extending attached volumes, and it will require admin access to the Nova."}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba42e1ae_d25563a2","line":63,"range":{"start_line":63,"start_character":8,"end_line":63,"end_character":11},"in_reply_to":"117391a7_f72c7c5b","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":63,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":66,"context_line":"extending attached volumes, and it will require admin access to the Nova."},{"line_number":67,"context_line":"Just like the ``volume-extended`` external server event, it will cause"},{"line_number":68,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"669c4573_704079ef","line":66,"updated":"2022-09-14 11:55:25.000000000","message":"+1","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":66,"context_line":"extending attached volumes, and it will require admin access to the Nova."},{"line_number":67,"context_line":"Just like the ``volume-extended`` external server event, it will cause"},{"line_number":68,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"75f489a8_ede8d793","line":66,"in_reply_to":"669c4573_704079ef","updated":"2022-10-12 08:59:15.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"94a3e88c_56f94ada","line":72,"updated":"2022-09-14 11:55:25.000000000","message":"that will put a limit on how long the extention can take\n\nspecificaly it will have to be less the either the default rpc timeout or the long_rpc_timeout.\n\nis resizing the image a constant time operation or is it linear with the space added? i belive its constant time since its not actully allocating the blocks it jsut updating the qcow metadata for the virutal size.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a846c8a_25b46802","line":72,"in_reply_to":"7e623110_24850e4f","updated":"2022-10-12 08:59:15.000000000","message":"So, I had a look at the qemu source.\nIts block_resize command is hard coded to disable preallocation,\nwhich for qcow2 files means that indeed only the metadata is updated.\n\nRaw files are extended as sparse files, though that may still be a problem with NFS if the underlying file system does not support sparse files.\n\nI have updated the spec with this information.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8c90c6ff_e40e0044","line":72,"in_reply_to":"7e623110_24850e4f","updated":"2022-10-12 09:38:44.000000000","message":"so for qcow it should just extend the virtual size in the metadata i dont think it will even extend it as a sparce file\n\nif the format is raw then it will either need to do truncate or simialr with either a full extention or sparse extention so i would depend on the file format on disk and if nfsv4 supports sparce files and i guess the backing filesystem.\n\ni belive nfsv4.2 supports sparce files\nand xfs ext4 and btrfs all support space files so we likely are ok.\n\nim not really sure what netapp actully use but for the generic nfs driver i think it will be fine.\n\nit might be good to add a docs note for thsi at least but if we could test the behavior that would be better or get cinder folks to let us know :)","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c8b3dd5b_5cad9f5d","line":72,"in_reply_to":"8c90c6ff_e40e0044","updated":"2022-11-08 18:19:06.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":69,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7e623110_24850e4f","line":72,"in_reply_to":"94a3e88c_56f94ada","updated":"2022-09-21 12:22:27.000000000","message":"I think it\u0027s actually extending the file, but as a sparse file operation.\nSo for most filesystems (including NFS, Netapp ONTAP, and Quobyte) the operation should be constant time.\n\nI don\u0027t know if we can just assume a filesystem with sparse file support, though.\nIf we can\u0027t, we need to handle the operation asynchronously after all, and the new API may not actually be the best solution.\n\nI need to ask people from Cinder about this.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"54dc3868_7dc9d4c6","line":73,"updated":"2022-09-14 11:55:25.000000000","message":"so cinder will have to do 3 things\nfirst it will need to check the nova micro version maxium to see if the api exits.\nsecond it will either need to check for a new capablity trait in placment on the compute host to see it the virt driver support it or fallback if\nwe return a 400 bad request becasue the api has been upgraded but not the compute.\nthird in the event that you get a 400 form nova either the old extend need to be used or cinder need to mark the extion as failed on its end.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"64afd7b8_b23f23cc","line":73,"in_reply_to":"1c600726_cfa82948","updated":"2022-11-08 18:19:06.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"080a6460_622f9899","line":73,"in_reply_to":"24063d8d_df3292a8","updated":"2022-10-12 08:59:15.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1c600726_cfa82948","line":73,"in_reply_to":"24063d8d_df3292a8","updated":"2022-10-12 09:38:44.000000000","message":"well in openstack you are not meant to probe for support (make a call and see if it work).\n\nso cinder shoudl be able to handle the 400 in anycase because nova willl have to check if the compute node support it.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":70,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":71,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Cinder will be updated to use the new API, if available."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Alternatives"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"24063d8d_df3292a8","line":73,"in_reply_to":"54dc3868_7dc9d4c6","updated":"2022-09-21 12:22:27.000000000","message":"Yeah, I should go into more detail here on what actions Cinder has to perform.\nI\u0027m not sure if Cinder should be checking the capability trait, I think the Nova API should do this and then return an appropriate HTTP response, that Cinder can catch and handle.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"479ccc3a_a0d14c0c","line":85,"updated":"2022-09-14 11:55:25.000000000","message":"that would extend the file on disk but not the virtual file size in the qcow metadata so it wont work.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"94282afede23a372c9755b8d303972aa469f125b","unresolved":false,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"f87fd211_412359bd","line":85,"in_reply_to":"0cdadec4_3b03f20e","updated":"2022-11-08 18:19:06.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"accecb3a_caad2d3f","line":85,"in_reply_to":"479ccc3a_a0d14c0c","updated":"2022-09-21 12:22:27.000000000","message":"Many drivers do this, actually.\nThe rbd driver just calls librbd\u0027s image resize method, the contents of the image are not touched at all.\n\nThis works with typical qcow2 cloud images because they are created with unspecified size in their metadata, meaning qemu will use whatever space is available in the file or device that holds the image.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"f875b7261c917dbc1446952d1c960e34d646a35e","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"e0bf1434_958654b1","line":85,"in_reply_to":"accecb3a_caad2d3f","updated":"2022-09-29 12:36:00.000000000","message":"Okay, I had a bit of a misunderstanding here.\nAll of the remotefs-based drivers actually create qcow2-volume with the \"-o preallocation\u003dmetadata\", so the image size has to be stored in the metadata.\n\nI\u0027m not even sure where I got the information about the size not being specified from. Right now I can\u0027t find any reference for this.\n\nAlso, the rbd driver doesn\u0027t even use qcow2.\n\nSo, yeah, using truncate on qcow2 files wouldn\u0027t work.\nIt might work on raw images, though.\nI will update the spec to clarify this.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"484941c0b0fed55ef5aca3ebb395cfc13821196b","unresolved":true,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"0cdadec4_3b03f20e","line":85,"in_reply_to":"accecb3a_caad2d3f","updated":"2022-10-12 09:38:44.000000000","message":"thats not the same thing\nwhen i say the virtual size im not refering to the virutalsied disk geomertyr partion table or filesystem..\n\nim refering to the metadat in the qcow header.\n\nso its not comarpabel to the RDB case because itwill still update the disk geometry\n\nif your in teh vm and you extend the qcow with truncate im not sure that fdisk will see the block device get larger.\n\n\nim not sure if we can rely on the size being unspecifed in there metadata having said that since that qcwo is create by the volume driver it is there respocniblity to ensure its correct. so they would have to either created without the size specified to make this work or update it later.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":82,"context_line":"Extending an in-use volume file should be safe as long as only the size is"},{"line_number":83,"context_line":"increased, however, it is hard to make any guarantees about this, and the QEMU"},{"line_number":84,"context_line":"documentation explicitely warns against externally modifying in-use disk image"},{"line_number":85,"context_line":"files [3]_."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."}],"source_content_type":"text/x-rst","patch_set":4,"id":"6b4a6b0f_9a79bbf2","line":85,"in_reply_to":"e0bf1434_958654b1","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."},{"line_number":89,"context_line":"In this case, Cinder needs to know whether the operation was successful or not."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One option for this would be the introduction of a new callback in the Cinder"},{"line_number":92,"context_line":"API that could be used by the ``volume-extended`` handler to notify cinder of a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d155220b_e530c142","line":89,"updated":"2022-09-14 11:55:25.000000000","message":"cinder also need to know somehow if the host is using libvir or more genericaly we need to add a comptue capablity trait to placemnt which the virt drier will report if it supports this feature and cinder need to query placement to deterim if the feature is supported.\n\ncinder cannot assume libvirt is in use.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."},{"line_number":89,"context_line":"In this case, Cinder needs to know whether the operation was successful or not."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One option for this would be the introduction of a new callback in the Cinder"},{"line_number":92,"context_line":"API that could be used by the ``volume-extended`` handler to notify cinder of a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bb3ae64f_038c9c59","line":89,"in_reply_to":"b9097f0d_24da843a","updated":"2022-11-15 13:50:58.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"So the safer option is probably to have Nova perform the resize through"},{"line_number":88,"context_line":"Libvirt."},{"line_number":89,"context_line":"In this case, Cinder needs to know whether the operation was successful or not."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"One option for this would be the introduction of a new callback in the Cinder"},{"line_number":92,"context_line":"API that could be used by the ``volume-extended`` handler to notify cinder of a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"b9097f0d_24da843a","line":89,"in_reply_to":"d155220b_e530c142","updated":"2022-09-21 12:22:27.000000000","message":"Cinder will always try first to resize the file with qemu-img, even on attached volumes.\nThis is because volumes are only locked when attached to running instances, when the instance is shelved or shut off, qemu-img will work fine.\n\nIf qemu-img returns an error indicating that the file is locked, then Cinder should call assisted-volume-extend.\nTo my knowledge this will currently only happen when libvirt/qemu is in use.\n\nBut even if some other hypervisor was causing it, as long as the image is locked I see little harm in trying to call assisted-volume-extend regardless of the used virt driver.\nIn the worst case it will fail, but the operation would have failed anyway.\nIn the best case the virt driver actually implements assisted-volume-extend and performs a successful extend.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":94,"context_line":"``os-migrate_volume_completion`` volume action in the Cinder API."},{"line_number":95,"context_line":"However this would still be lacking a mechanism to communicate the new volume"},{"line_number":96,"context_line":"size to Nova, beyond changing it in Cinder\u0027s database, which we should avoid"},{"line_number":97,"context_line":"when the volume has not actually been extended yet."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"We might be able to abuse the volume metadata for this purpose, or even"},{"line_number":100,"context_line":"introduce a new field to the volume object."}],"source_content_type":"text/x-rst","patch_set":4,"id":"33ef2205_90b210e0","line":97,"updated":"2022-09-14 11:55:25.000000000","message":"this only need to be avoided if the state is not change to reflect that the volume is current extending or pending extention","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":94,"context_line":"``os-migrate_volume_completion`` volume action in the Cinder API."},{"line_number":95,"context_line":"However this would still be lacking a mechanism to communicate the new volume"},{"line_number":96,"context_line":"size to Nova, beyond changing it in Cinder\u0027s database, which we should avoid"},{"line_number":97,"context_line":"when the volume has not actually been extended yet."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"We might be able to abuse the volume metadata for this purpose, or even"},{"line_number":100,"context_line":"introduce a new field to the volume object."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fd00b8c8_74806daa","line":97,"in_reply_to":"33ef2205_90b210e0","updated":"2022-09-21 12:22:27.000000000","message":"As mentioned above on #46, the state will be \"extending\", but I still believe we should avoid this.\n\nI should add my reasoning to the spec, though.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"``os-migrate_volume_completion`` volume action in the Cinder API."},{"line_number":95,"context_line":"However this would still be lacking a mechanism to communicate the new volume"},{"line_number":96,"context_line":"size to Nova, beyond changing it in Cinder\u0027s database, which we should avoid"},{"line_number":97,"context_line":"when the volume has not actually been extended yet."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"We might be able to abuse the volume metadata for this purpose, or even"},{"line_number":100,"context_line":"introduce a new field to the volume object."}],"source_content_type":"text/x-rst","patch_set":4,"id":"72ec7515_71a41483","line":97,"in_reply_to":"fd00b8c8_74806daa","updated":"2022-11-15 13:50:58.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A cleaner solution might be to extend the external server event API to"},{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"20245908_e2c83f18","line":106,"updated":"2022-09-14 11:55:25.000000000","message":"thats an option yes.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A cleaner solution might be to extend the external server event API to"},{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3b008f68_edee7cd4","line":106,"in_reply_to":"20245908_e2c83f18","updated":"2022-10-12 08:59:15.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5ccbd6a5_1d7d0a58","line":108,"updated":"2022-09-14 11:55:25.000000000","message":"that is not really an option\nwe dont want it to have diffent behavior btween differnt events\nand not all events are acutlly used/handeled so we cant wait for the backend to ack them in genral.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f17adf57d0a389d283c350b2bc4effbd9349d347","unresolved":true,"context_lines":[{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."}],"source_content_type":"text/x-rst","patch_set":4,"id":"16cf22b0_eef30368","line":108,"in_reply_to":"06aef895_c88d7674","updated":"2022-11-09 11:43:01.000000000","message":"the api cant really wait like that the wsgi server is likely to kill the long running request after 60 seconds\n\nwe also dont have any other apis that are optionally synconos so we shoudl either keep this synchronos uncondtionally with an rpc call or async with an rpc cast.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":false,"context_lines":[{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."}],"source_content_type":"text/x-rst","patch_set":4,"id":"450acef7_fb41748b","line":108,"in_reply_to":"16cf22b0_eef30368","updated":"2022-11-17 15:09:17.000000000","message":"Alright, I removed it from the alternatives.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":105,"context_line":"take additional data per event, because this information is only required"},{"line_number":106,"context_line":"during the extend operation."},{"line_number":107,"context_line":"We could also try to update the external event API to allow synchronous"},{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."}],"source_content_type":"text/x-rst","patch_set":4,"id":"06aef895_c88d7674","line":108,"in_reply_to":"5ccbd6a5_1d7d0a58","updated":"2022-09-21 12:22:27.000000000","message":"What I had in mind was a new optional key in the event body, something like {\"synchronous\": true}, that would tell the API to wait for those specific events to finish.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Previous discussions of different alternatives can be found in [2]_"},{"line_number":114,"context_line":"and the etherpad [4]_, which was created in the context of [1]_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"49b3d05b_bf49b1a6","line":111,"updated":"2022-09-14 11:55:25.000000000","message":"it would likely break neutron","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"handling of events, so Cinder wouldn\u0027t need a separate callback."},{"line_number":109,"context_line":"This would probably go beyond the scope of the external server event API,"},{"line_number":110,"context_line":"however, turning it into something like a second server action API."},{"line_number":111,"context_line":"Modifying this API might also impact other services using it."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Previous discussions of different alternatives can be found in [2]_"},{"line_number":114,"context_line":"and the etherpad [4]_, which was created in the context of [1]_."}],"source_content_type":"text/x-rst","patch_set":4,"id":"0d95970b_99b71e73","line":111,"in_reply_to":"49b3d05b_bf49b1a6","updated":"2022-10-12 08:59:15.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":134,"context_line":"            \"new_size\": 10"},{"line_number":135,"context_line":"        }"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"with ``volume_id`` being the UUID of the attached volume, ``server_id`` being"},{"line_number":139,"context_line":"the UUID of the server it is attached to, and ``new_size`` being the target"},{"line_number":140,"context_line":"size of the extend operation."}],"source_content_type":"text/x-rst","patch_set":4,"id":"29989e46_afedbb08","line":137,"updated":"2022-09-14 11:55:25.000000000","message":"+1 this looks fine.\nnova shoudl check that the new size is larger then the old size.\nand return a 409 bad request if its not. cinder should do that too but we should be extra careful. we also need to check that the volume is currently attached to the server.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            \"new_size\": 10"},{"line_number":135,"context_line":"        }"},{"line_number":136,"context_line":"    }"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"with ``volume_id`` being the UUID of the attached volume, ``server_id`` being"},{"line_number":139,"context_line":"the UUID of the server it is attached to, and ``new_size`` being the target"},{"line_number":140,"context_line":"size of the extend operation."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7fc0e573_3cf54de6","line":137,"in_reply_to":"29989e46_afedbb08","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* If the server or the volume does not exist, or if the volume is not attached"},{"line_number":145,"context_line":"  to the server, or if the new size is smaller than the old size, it will"},{"line_number":146,"context_line":"  return HTTP 400 Bad Request."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"}],"source_content_type":"text/x-rst","patch_set":4,"id":"484d0319_da2a855b","line":146,"updated":"2022-09-14 11:55:25.000000000","message":"+1\nthis shoudl be a 409 conflict  instead fo a 400\n\nto reflect that its not valid in the current state of the systm i.e. the size is smaller then the current one.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* If the server or the volume does not exist, or if the volume is not attached"},{"line_number":145,"context_line":"  to the server, or if the new size is smaller than the old size, it will"},{"line_number":146,"context_line":"  return HTTP 400 Bad Request."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fadf9892_3110270b","line":146,"in_reply_to":"484d0319_da2a855b","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":146,"context_line":"  return HTTP 400 Bad Request."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Security impact"},{"line_number":152,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"244ff1ef_a111be20","line":149,"updated":"2022-09-14 11:55:25.000000000","message":"no this should not be a 500 it shoudl be a 400\n\ncinder needs to check placment or other wise no that hte comptue is upgraded before ti calls this api.\n\nwe should never add new 500 respocne codes those are billed differntly as many customers consier 500 to be a break of sla agreements signalling that the servicve opartor they are pay has broken something.\n\nso this need to be a 400 with a message statign that host is not currently new enought to fulfill the request.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  return HTTP 400 Bad Request."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Security impact"},{"line_number":152,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"2319cafa_9632b8cf","line":149,"in_reply_to":"244ff1ef_a111be20","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Security impact"},{"line_number":152,"context_line":"---------------"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"094eab4a_441afef6","line":150,"updated":"2022-09-14 11:55:25.000000000","message":"A new standard compute capablity trait will need to be added to placment and reported by all virt driver that support this feature.\n\nthe api will need to check for that and reject the request if its not reported by the compute host or alternitivly we can rely on the comput rpc versionin nova but cinder should still check the placment trait before calling nova.\n\nthe trait should be COMPUTE_VOLUME_ASSISTED_EXTEND\n\nand added to the list here\nhttps://github.com/openstack/os-traits/blob/master/os_traits/compute/volume.py","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* A version of nova-compute that does not support this feature yet should"},{"line_number":149,"context_line":"  result in HTTP 500 Internal Server Error"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"Security impact"},{"line_number":152,"context_line":"---------------"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"de34de9f_1b12e345","line":150,"in_reply_to":"094eab4a_441afef6","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":157,"context_line":"--------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Other end user impact"},{"line_number":162,"context_line":"---------------------"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"96bfcb5e_e7669e12","line":160,"updated":"2022-09-14 11:55:25.000000000","message":"we likely will be adding new notifcation for the extension.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":157,"context_line":"--------------------"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Other end user impact"},{"line_number":162,"context_line":"---------------------"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"51837353_3ef06dc0","line":160,"in_reply_to":"96bfcb5e_e7669e12","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":182,"context_line":"--------------"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"If nova-compute does not yet support the new API (like during a rolling"},{"line_number":185,"context_line":"upgrade), the call will fail with ``500 Internal Server Error``."},{"line_number":186,"context_line":"Cinder will catch this and roll back the extend operation."},{"line_number":187,"context_line":"This is unlikely to happen in practice though, because it only affects volumes"},{"line_number":188,"context_line":"for which attached resize was previously unsupported."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5474b879_abe0a6a8","line":185,"range":{"start_line":185,"start_character":34,"end_line":185,"end_character":64},"updated":"2022-09-14 11:55:25.000000000","message":"nope a 400 will be returned\nwe should never add 500 responce code to our api in intentionally\nthey should always be treated as a bug that should be fixed.","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":182,"context_line":"--------------"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"If nova-compute does not yet support the new API (like during a rolling"},{"line_number":185,"context_line":"upgrade), the call will fail with ``500 Internal Server Error``."},{"line_number":186,"context_line":"Cinder will catch this and roll back the extend operation."},{"line_number":187,"context_line":"This is unlikely to happen in practice though, because it only affects volumes"},{"line_number":188,"context_line":"for which attached resize was previously unsupported."}],"source_content_type":"text/x-rst","patch_set":4,"id":"b54b4373_030e16b2","line":185,"range":{"start_line":185,"start_character":34,"end_line":185,"end_character":64},"in_reply_to":"5474b879_abe0a6a8","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"ddcd29c0eefe761b948764bfdeffa1cda8372662"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":5,"id":"b1576fcd_754e4228","line":46,"updated":"2022-11-16 04:07:51.000000000","message":"The first thing that comes to mind here is just using a delimiter in the string to represent multiple args :P but it\u0027s not so clean.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":44,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":45,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":46,"context_line":"appart from updating it in the database."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":49,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":5,"id":"16c2b5f5_611f5217","line":46,"in_reply_to":"b1576fcd_754e4228","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":true,"context_lines":[{"line_number":66,"context_line":"``POST /assisted-volume-extend`` API."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The new API is intended to be used exclusively by Cinder when extending"},{"line_number":69,"context_line":"attached volumes, and it will require admin access to the Nova API."},{"line_number":70,"context_line":"Just like the ``volume-extended`` external server event, it will cause"},{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"139af124_eda93618","line":69,"range":{"start_line":69,"start_character":38,"end_line":69,"end_character":43},"updated":"2022-11-15 13:50:58.000000000","message":"actully we plan to implemnent the service role in this cycle so ideally your spec would depend on that and use the service role not admin role for this new api. https://review.opendev.org/c/openstack/nova-specs/+/864379\n\nthat will enforce that this is a service to service api and prevent admins form calling it which is not intended to be supported.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"``POST /assisted-volume-extend`` API."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"The new API is intended to be used exclusively by Cinder when extending"},{"line_number":69,"context_line":"attached volumes, and it will require admin access to the Nova API."},{"line_number":70,"context_line":"Just like the ``volume-extended`` external server event, it will cause"},{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"713c6383_3d2116c2","line":69,"range":{"start_line":69,"start_character":38,"end_line":69,"end_character":43},"in_reply_to":"139af124_eda93618","updated":"2022-11-17 15:09:17.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":73,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":74,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Cinder"},{"line_number":77,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"99af7729_843b784d","line":74,"updated":"2022-11-16 04:07:51.000000000","message":"\"Synchronously\" here concerns me. How long could a volume extend potentially take? I\u0027m thinking of large volumes, certain disk formats, other? It doesn\u0027t seem like the sort of operation that services handle synchronously in general.\n\nLooking at the cinder API ref, it looks like there isn\u0027t a way for nova to asynchronously let cinder know the result of the extend. Is that the reasoning for not making it asynchronous?\n\nJust trying to think through whether this is going to bite us.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":true,"context_lines":[{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":73,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":74,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Cinder"},{"line_number":77,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dbc73371_512ddb34","line":74,"in_reply_to":"79e9f2dd_85b2afe9","updated":"2022-11-17 15:09:17.000000000","message":"Well, the concern came from Cinder as well, although they agreed that the qemu block-resize operation should in realistic conditions be fast enough for a synchronous API.\n\nAn asynchronous API introduces more complexity and more possible error states, that was my original reason for proposing a synchronous API.\n\nI don\u0027t have strong feelings about this, though.\nIf you say that doing it asynchronously is objectively better, then I will try to rewrite the spec accordingly.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627fd0011e50ab5f26d31eb9e8e41f14eccc1a74","unresolved":true,"context_lines":[{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":73,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":74,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Cinder"},{"line_number":77,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"79e9f2dd_85b2afe9","line":74,"in_reply_to":"99af7729_843b784d","updated":"2022-11-16 10:57:20.000000000","message":"ya so we chatted about this in earlier revisions.\nmy underdstading is provided the backing file system support sparces files\nwe are not precommiting the blocks and just logically extending the file and updating the qcow metadta withthe new size.\n\n\nbut yes this also concurned me intially the feedback as i underdstand it form cinder is this shoudl be ok. ethe extend shoudl be quick.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"nova-compute to call the ``extend_volume`` method of the virt driver."},{"line_number":72,"context_line":"Unlike the external server event, it will work synchronously, providing"},{"line_number":73,"context_line":"information on the success of the operation back to the caller, and the new"},{"line_number":74,"context_line":"volume size will be provided as an argument instead of being read from Cinder."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Cinder"},{"line_number":77,"context_line":"------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"f9e35ade_fbeeb9ee","line":74,"in_reply_to":"dbc73371_512ddb34","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":true,"context_lines":[{"line_number":84,"context_line":"Cinder try to use the new API."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If the required microversion is not available or the call to the new API fails"},{"line_number":87,"context_line":"for any reason, the extend operations should fail and the reason be logged."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9c855522_0fd990fe","line":87,"updated":"2022-11-15 13:50:58.000000000","message":"ok so with old cinder and old nova cinder would have sent the external event\n\nwith new cinder and old nova cinder will fail if the file is locked\nand with new cinder and new nova but say zvm or some other virt driver it will call the api, catch the failure and report an error to the cinder user.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Cinder try to use the new API."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If the required microversion is not available or the call to the new API fails"},{"line_number":87,"context_line":"for any reason, the extend operations should fail and the reason be logged."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"0ba3559f_a118ef18","line":87,"in_reply_to":"48284d0e_7f9ec0ae","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":true,"context_lines":[{"line_number":84,"context_line":"Cinder try to use the new API."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"If the required microversion is not available or the call to the new API fails"},{"line_number":87,"context_line":"for any reason, the extend operations should fail and the reason be logged."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Alternatives"},{"line_number":90,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"48284d0e_7f9ec0ae","line":87,"in_reply_to":"9c855522_0fd990fe","updated":"2022-11-17 15:09:17.000000000","message":"Volume extend itself is asynchronous in Cinder, so the error is not directly reported to the user, but the volume will have statuse \"error_extending\".\n\nOn old Cinder, the affected drivers would always fail to extend attached volumes.\nOn new Cinder and old Nova they will still fail, yes.\n\nIf the virt driver does not support assisted extend, then the API will return an error code, and the volume status will be set to \"error_extending\".","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"One possible alternative for volumes using the raw disk format would be to just"},{"line_number":93,"context_line":"ignore the lock and use a tool such as ``truncate`` to extend the volume file."},{"line_number":94,"context_line":"This should be save for raw images and would allow Cinder to perform the resize"},{"line_number":95,"context_line":"itself, making any API changes unnecessary."},{"line_number":96,"context_line":"It will not work for qcow2-based volumes, however, since changing their size"},{"line_number":97,"context_line":"involves updating metadata in the file."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e8f6f839_b946b81d","line":94,"range":{"start_line":94,"start_character":15,"end_line":94,"end_character":19},"updated":"2022-11-16 04:07:51.000000000","message":"safe","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":"One possible alternative for volumes using the raw disk format would be to just"},{"line_number":93,"context_line":"ignore the lock and use a tool such as ``truncate`` to extend the volume file."},{"line_number":94,"context_line":"This should be save for raw images and would allow Cinder to perform the resize"},{"line_number":95,"context_line":"itself, making any API changes unnecessary."},{"line_number":96,"context_line":"It will not work for qcow2-based volumes, however, since changing their size"},{"line_number":97,"context_line":"involves updating metadata in the file."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ad8899e8_e327f500","line":94,"range":{"start_line":94,"start_character":15,"end_line":94,"end_character":19},"in_reply_to":"e8f6f839_b946b81d","updated":"2022-11-17 15:09:17.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":true,"context_lines":[{"line_number":104,"context_line":"For this, Cinder needs a way to trigger the operation in Nova, to communicate"},{"line_number":105,"context_line":"the new size, and to get feedback on the success of the operation."},{"line_number":106,"context_line":"Feedback can be provided either synchronously or asynchronously."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Triggering the operation in Nova"},{"line_number":109,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"052f9541_611f66b9","line":107,"updated":"2022-11-15 13:50:58.000000000","message":"we could also do this an an instnace action but i think i perfer this as a seperate api endpoint to mirror the os-assisted-volume-snapshot api.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"For this, Cinder needs a way to trigger the operation in Nova, to communicate"},{"line_number":105,"context_line":"the new size, and to get feedback on the success of the operation."},{"line_number":106,"context_line":"Feedback can be provided either synchronously or asynchronously."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"Triggering the operation in Nova"},{"line_number":109,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"b2fbe3de_df528ed4","line":107,"in_reply_to":"052f9541_611f66b9","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":137,"context_line":"  Nova."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* We could also modify the external server event API to allow additional"},{"line_number":140,"context_line":"  arguments for events and use this to inform Nova of the target volume size."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* If a new API is introduced, then the new size can just be included in the"},{"line_number":143,"context_line":"  request body."}],"source_content_type":"text/x-rst","patch_set":5,"id":"33f89de5_3de91d6d","line":140,"updated":"2022-11-16 04:07:51.000000000","message":"TBH this sounds like something that would be beneficial in general.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627fd0011e50ab5f26d31eb9e8e41f14eccc1a74","unresolved":true,"context_lines":[{"line_number":137,"context_line":"  Nova."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* We could also modify the external server event API to allow additional"},{"line_number":140,"context_line":"  arguments for events and use this to inform Nova of the target volume size."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* If a new API is introduced, then the new size can just be included in the"},{"line_number":143,"context_line":"  request body."}],"source_content_type":"text/x-rst","patch_set":5,"id":"b37e6528_f7a1502b","line":140,"in_reply_to":"33f89de5_3de91d6d","updated":"2022-11-16 10:57:20.000000000","message":"that would still not fix it alone\ncinder problem is the external events api si basically asnc so they cant know if it comleted correctly.\n\nso really nova woudl have to callback cinder.\n\npassing an extra parmater is just avoiding the fact that cinder dont want to update teh size and then roll it backin there db if it fails which is how nova expect it to work today.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"556638941ef37a04727a06243483ba0597d9457e","unresolved":true,"context_lines":[{"line_number":137,"context_line":"  Nova."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* We could also modify the external server event API to allow additional"},{"line_number":140,"context_line":"  arguments for events and use this to inform Nova of the target volume size."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* If a new API is introduced, then the new size can just be included in the"},{"line_number":143,"context_line":"  request body."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e9ffdab2_bac28e07","line":140,"in_reply_to":"b37e6528_f7a1502b","updated":"2022-11-16 20:00:43.000000000","message":"I understand. I was just noting that I could see additional arguments in external events likely being useful in general, even outside of this spec.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  Nova."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* We could also modify the external server event API to allow additional"},{"line_number":140,"context_line":"  arguments for events and use this to inform Nova of the target volume size."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* If a new API is introduced, then the new size can just be included in the"},{"line_number":143,"context_line":"  request body."}],"source_content_type":"text/x-rst","patch_set":5,"id":"15bed235_38218318","line":140,"in_reply_to":"e9ffdab2_bac28e07","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Cinder could also add a new callback for this purpose, similar to the"},{"line_number":175,"context_line":"  ``os-migrate_volume_completion`` volume action or the"},{"line_number":176,"context_line":"  ``os-update_snapshot_status`` snapshot action."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* A new synchronous API could just use it\u0027s response to indicate success or"},{"line_number":179,"context_line":"  failure."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e7274b82_ae9d3e0a","line":176,"updated":"2022-11-16 04:07:51.000000000","message":"This seems more along the lines of how similar operations are done. What is the reasoning for departing from this established pattern? This feels like another red flag to me but I could be missing something.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"556638941ef37a04727a06243483ba0597d9457e","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Cinder could also add a new callback for this purpose, similar to the"},{"line_number":175,"context_line":"  ``os-migrate_volume_completion`` volume action or the"},{"line_number":176,"context_line":"  ``os-update_snapshot_status`` snapshot action."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* A new synchronous API could just use it\u0027s response to indicate success or"},{"line_number":179,"context_line":"  failure."}],"source_content_type":"text/x-rst","patch_set":5,"id":"4b732776_e641c8bc","line":176,"in_reply_to":"05a33f19_78110cc6","updated":"2022-11-16 20:00:43.000000000","message":"I agree that polling sounds like the least desirable way.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Cinder could also add a new callback for this purpose, similar to the"},{"line_number":175,"context_line":"  ``os-migrate_volume_completion`` volume action or the"},{"line_number":176,"context_line":"  ``os-update_snapshot_status`` snapshot action."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* A new synchronous API could just use it\u0027s response to indicate success or"},{"line_number":179,"context_line":"  failure."}],"source_content_type":"text/x-rst","patch_set":5,"id":"eacd0086_f37c1125","line":176,"in_reply_to":"4b732776_e641c8bc","updated":"2022-11-17 15:09:17.000000000","message":"A synchronous API looked like the least complex solution.\n\nBut as I said above, I\u0027m not opposed to an async solution.\n\nThe callbacks mentioned are pretty different from each other, so they didn\u0027t really feel like an established pattern:\n\nos-update_snapshot_status just updates the status of the new snapshot, while the handler of the original create snapshot request keeps polling internally for this status change, so that it can continue and finalize the request or deal with errors.\n\nos-migrate_volume_completion in contrast does all the cleanup itself, but has to infer information about the previous state from the volume object.\n\nThe second option is probably cleaner, but for assisted extend would require some temporary data to be stored in the volume object (such as the handle of the preleminary quota reservation), to do a proper rollback on error.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627fd0011e50ab5f26d31eb9e8e41f14eccc1a74","unresolved":true,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Cinder could also add a new callback for this purpose, similar to the"},{"line_number":175,"context_line":"  ``os-migrate_volume_completion`` volume action or the"},{"line_number":176,"context_line":"  ``os-update_snapshot_status`` snapshot action."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* A new synchronous API could just use it\u0027s response to indicate success or"},{"line_number":179,"context_line":"  failure."}],"source_content_type":"text/x-rst","patch_set":5,"id":"05a33f19_78110cc6","line":176,"in_reply_to":"e7274b82_ae9d3e0a","updated":"2022-11-16 10:57:20.000000000","message":"ya a callback would work or cinder could poll for a completeion on our api.\n\na callback woudl be the least overhad on the api but would require a new feature in the cinder api.\n\nthat woudl be better if we make this async then polling.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":"* Cinder could also add a new callback for this purpose, similar to the"},{"line_number":175,"context_line":"  ``os-migrate_volume_completion`` volume action or the"},{"line_number":176,"context_line":"  ``os-update_snapshot_status`` snapshot action."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"* A new synchronous API could just use it\u0027s response to indicate success or"},{"line_number":179,"context_line":"  failure."}],"source_content_type":"text/x-rst","patch_set":5,"id":"6ce312e5_3da1faec","line":176,"in_reply_to":"eacd0086_f37c1125","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"9cf3f4d00500c1d9b0cb5997300867800cfd3a71","unresolved":true,"context_lines":[{"line_number":204,"context_line":"If it isn\u0027t, then there is little benefit to a new API, and we might as well"},{"line_number":205,"context_line":"keep using the external server event API."},{"line_number":206,"context_line":"A new callback in Cinder would then probably be the cleanest way to get"},{"line_number":207,"context_line":"feedback."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Although, polling ``qemu-img info`` for the volume file is quite alluring too,"},{"line_number":210,"context_line":"because it wouldn\u0027t require any API changes."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5db9211c_7284c2ad","line":207,"updated":"2022-11-16 04:07:51.000000000","message":"This honestly feels like the most correct way to do this, IMHO. A synchronous API sets off danger zone flags for me, but maybe I might be alone in that feeling.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627fd0011e50ab5f26d31eb9e8e41f14eccc1a74","unresolved":true,"context_lines":[{"line_number":204,"context_line":"If it isn\u0027t, then there is little benefit to a new API, and we might as well"},{"line_number":205,"context_line":"keep using the external server event API."},{"line_number":206,"context_line":"A new callback in Cinder would then probably be the cleanest way to get"},{"line_number":207,"context_line":"feedback."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Although, polling ``qemu-img info`` for the volume file is quite alluring too,"},{"line_number":210,"context_line":"because it wouldn\u0027t require any API changes."}],"source_content_type":"text/x-rst","patch_set":5,"id":"d0bb6702_4f386dfe","line":207,"in_reply_to":"5db9211c_7284c2ad","updated":"2022-11-16 10:57:20.000000000","message":"no that was my reaction to synchronous too.\nhttps://review.opendev.org/c/openstack/nova-specs/+/855490/4..5/specs/2023.1/approved/assisted-volume-extend.rst#b72","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"556638941ef37a04727a06243483ba0597d9457e","unresolved":true,"context_lines":[{"line_number":204,"context_line":"If it isn\u0027t, then there is little benefit to a new API, and we might as well"},{"line_number":205,"context_line":"keep using the external server event API."},{"line_number":206,"context_line":"A new callback in Cinder would then probably be the cleanest way to get"},{"line_number":207,"context_line":"feedback."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Although, polling ``qemu-img info`` for the volume file is quite alluring too,"},{"line_number":210,"context_line":"because it wouldn\u0027t require any API changes."}],"source_content_type":"text/x-rst","patch_set":5,"id":"f1cc8929_4c2287d4","line":207,"in_reply_to":"d0bb6702_4f386dfe","updated":"2022-11-16 20:00:43.000000000","message":"Yeah ... I just really don\u0027t want to see a future issue where the synchronous API is blocking other actions from being handled or preventing them from progressing and resulting in a high severity customer fire ...\n\nIIUC from the current spec text, the extend will be quick as long as the file is sparse. In cinder configuration, I see several config options \u003cbackend\u003e_sparsed_volumes [1] which can be set to False, though they appear to all default to True. Are we confident that no one sets these to False? I don\u0027t know enough about storage config to know when not using sparsed files would be desired. The option help texts say \"creation may take a significantly longer time\" but creation is async. Excerpt from [1]:\n\n # Create volumes as sparsed files which take no space. If set to False volume\n # is created as regular file. In such case volume creation takes a lot of time.\n # (boolean value)\n #nfs_sparsed_volumes \u003d true\n\n [...]\n\n # Create volumes as sparse files which take no space. If set to False, volume\n # is created as regular file. (boolean value)\n #quobyte_sparsed_volumes \u003d true\n\nAnother thing I\u0027m not 100% clear on, the spec says that cinder will only call the /os-assisted-volume-extend API if it hits the error from the QEMU lock and we only expect that to happen with NFS or Quobyte. There is a Long list of volume backends [2] and we know that there aren\u0027t any others that would end up needing to call the /os-assisted-volume-extend API that we should consider whether they are sparse? Should we think about the possibility of a future volume backend that may not be fast in extending an attached volume?\n\n[1] https://docs.openstack.org/cinder/latest/configuration/block-storage/samples/cinder.conf.html\n[2] https://docs.openstack.org/cinder/latest/configuration/block-storage/volume-drivers.html","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":true,"context_lines":[{"line_number":204,"context_line":"If it isn\u0027t, then there is little benefit to a new API, and we might as well"},{"line_number":205,"context_line":"keep using the external server event API."},{"line_number":206,"context_line":"A new callback in Cinder would then probably be the cleanest way to get"},{"line_number":207,"context_line":"feedback."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Although, polling ``qemu-img info`` for the volume file is quite alluring too,"},{"line_number":210,"context_line":"because it wouldn\u0027t require any API changes."}],"source_content_type":"text/x-rst","patch_set":5,"id":"f8462b18_8af75784","line":207,"in_reply_to":"f1cc8929_4c2287d4","updated":"2022-11-17 15:09:17.000000000","message":"The qemu block-resize command is hardcoded to extend sparsely, so this is independent of these options.\nThe main concerns with qemu are file systems without sparse support (which are rarely used), and fs errors that slow down the operation (someone mentioned NFS errors in the Cinder meeting).\n\nOther virt/volume driver combinations using the API for slow operations is a potential concern, but right now I\u0027m not aware of any that might want to.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":204,"context_line":"If it isn\u0027t, then there is little benefit to a new API, and we might as well"},{"line_number":205,"context_line":"keep using the external server event API."},{"line_number":206,"context_line":"A new callback in Cinder would then probably be the cleanest way to get"},{"line_number":207,"context_line":"feedback."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Although, polling ``qemu-img info`` for the volume file is quite alluring too,"},{"line_number":210,"context_line":"because it wouldn\u0027t require any API changes."}],"source_content_type":"text/x-rst","patch_set":5,"id":"2c2f10f1_5df01ef3","line":207,"in_reply_to":"f8462b18_8af75784","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"627fd0011e50ab5f26d31eb9e8e41f14eccc1a74","unresolved":true,"context_lines":[{"line_number":212,"context_line":"with the current handling of the ``volume-extended`` event, making any changes"},{"line_number":213,"context_line":"to Nova unnecessary and keeping compatibility with older Nova versions."},{"line_number":214,"context_line":"However, it is unclear how reliable it is, and whether this kind of"},{"line_number":215,"context_line":"out-of-band communication is acceptable for Openstack."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Previous discussions of different alternatives can be found in [2]_"},{"line_number":218,"context_line":"and the etherpad at [4]_, which was created in the context of [1]_."}],"source_content_type":"text/x-rst","patch_set":5,"id":"42e9617f_f12d66ee","line":215,"updated":"2022-11-16 10:57:20.000000000","message":"you mean just watch it on the cinder side to see when volume is extened.\n\ni guess that possible im not sure it alluring as its kind of a hack since its looking at the backedn to see if the sideffect of the api call is compelte but it would potentally work.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"with the current handling of the ``volume-extended`` event, making any changes"},{"line_number":213,"context_line":"to Nova unnecessary and keeping compatibility with older Nova versions."},{"line_number":214,"context_line":"However, it is unclear how reliable it is, and whether this kind of"},{"line_number":215,"context_line":"out-of-band communication is acceptable for Openstack."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Previous discussions of different alternatives can be found in [2]_"},{"line_number":218,"context_line":"and the etherpad at [4]_, which was created in the context of [1]_."}],"source_content_type":"text/x-rst","patch_set":5,"id":"a21773aa_135e7f77","line":215,"in_reply_to":"01843efe_5fa4b9eb","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":true,"context_lines":[{"line_number":212,"context_line":"with the current handling of the ``volume-extended`` event, making any changes"},{"line_number":213,"context_line":"to Nova unnecessary and keeping compatibility with older Nova versions."},{"line_number":214,"context_line":"However, it is unclear how reliable it is, and whether this kind of"},{"line_number":215,"context_line":"out-of-band communication is acceptable for Openstack."},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"Previous discussions of different alternatives can be found in [2]_"},{"line_number":218,"context_line":"and the etherpad at [4]_, which was created in the context of [1]_."}],"source_content_type":"text/x-rst","patch_set":5,"id":"01843efe_5fa4b9eb","line":215,"in_reply_to":"42e9617f_f12d66ee","updated":"2022-11-17 15:09:17.000000000","message":"Yeah it\u0027s very hacky.\nThe benefit would be that no change to the API is required, but it has the drawback that ther is no real feedback on errors, only on success.\n\nI\u0027m not calling it alluring anymore.","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ec733d26f8433c663bcd3c632918b63c5638b0a8","unresolved":true,"context_lines":[{"line_number":286,"context_line":"--------------"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"If nova-compute does not yet support the new API (like during a rolling"},{"line_number":289,"context_line":"upgrade), the call will fail with ``400 Bad Request``."},{"line_number":290,"context_line":"Cinder will catch this and roll back the extend operation."},{"line_number":291,"context_line":"This is unlikely to happen in practice though, because it only affects volumes"},{"line_number":292,"context_line":"for which attached resize was previously unsupported."}],"source_content_type":"text/x-rst","patch_set":5,"id":"8855eed9_ac592522","line":289,"range":{"start_line":289,"start_character":36,"end_line":289,"end_character":39},"updated":"2022-11-15 13:50:58.000000000","message":"proably 409 is better\ni think we standardsied on that a few cycles ago.\n\nhttps://github.com/openstack/nova-specs/commit/43380e19d72c6d8198124f5b61c07c0b35544a3d\n\nwe used to use a mix of 400 403 and 409\nbut we aligned on 409","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8b52f2d4b253b29316dd3389b681c767dcaba21a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"--------------"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"If nova-compute does not yet support the new API (like during a rolling"},{"line_number":289,"context_line":"upgrade), the call will fail with ``400 Bad Request``."},{"line_number":290,"context_line":"Cinder will catch this and roll back the extend operation."},{"line_number":291,"context_line":"This is unlikely to happen in practice though, because it only affects volumes"},{"line_number":292,"context_line":"for which attached resize was previously unsupported."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e623c0c4_adc67231","line":289,"range":{"start_line":289,"start_character":36,"end_line":289,"end_character":39},"in_reply_to":"8855eed9_ac592522","updated":"2022-11-17 15:09:17.000000000","message":"Done","commit_id":"f282b403fd3149232cfdd45f3d0ac721c8751108"}],"specs/2023.1/approved/use-extend-volume-completion-action.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"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":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"4cbe7abe_3d8b6039","line":51,"updated":"2022-12-13 19:41:19.000000000","message":"so based on what is propsed we likely do not need a new microverion\n-----\nlater\n-----\n\nlooking at the upgrade impact there proably is a reason to have the microverion so that we can have the api call the cinder api to mark the extend as a failure so that cinder can revert the extention when teh compute is too old.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","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":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"851a4ee6_fcb89818","line":51,"in_reply_to":"4cbe7abe_3d8b6039","updated":"2022-12-15 18:15:22.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7d0700dbfd356b3e0f18443a924103287b5b64a","unresolved":true,"context_lines":[{"line_number":51,"context_line":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"When handling the ``volume-extended`` external server event, Nova will check"},{"line_number":57,"context_line":"the volume status."}],"source_content_type":"text/x-rst","patch_set":10,"id":"6a5bf4ec_fc9ddb15","line":54,"updated":"2022-12-14 14:34:56.000000000","message":"Do I understand correctly that we need the new Nova API microversion as old Cinder will still call Nova with the old microversion and therefore Nova will know not to try to call extend_volume_completion on the old Cinder where this not exists yet?\n\nIf so then please note that the nova microversion used in the actual API call is accessible to the nova-api service but the volume-extended event handed by the nova-compute service where such information is not available. It seems to be if we want to transfer this information from the api to the compute then we need to extend the compute RPC API.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d81871a7a2024dea9d208b95062f7b3ccbde4d4","unresolved":false,"context_lines":[{"line_number":51,"context_line":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"When handling the ``volume-extended`` external server event, Nova will check"},{"line_number":57,"context_line":"the volume status."}],"source_content_type":"text/x-rst","patch_set":10,"id":"5c6d2f27_5e4b918c","line":54,"in_reply_to":"05745237_dd10dcf1","updated":"2022-12-14 17:37:37.000000000","message":"Thank you for the explanation. The missing piece for me was the new volume status that the nova-compute can use to decided on which behavior to do.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"985d2f55ae299f88c810f664c2e332fb61cfec77","unresolved":true,"context_lines":[{"line_number":51,"context_line":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"When handling the ``volume-extended`` external server event, Nova will check"},{"line_number":57,"context_line":"the volume status."}],"source_content_type":"text/x-rst","patch_set":10,"id":"05745237_dd10dcf1","line":54,"in_reply_to":"1b56aaa3_7d55eeab","updated":"2022-12-14 15:17:21.000000000","message":"yes so that is the only reason for the microverion in nova.\n\nwe have discused this in the past that since nova does not have an exetention or feature api that other service can use, the only way they can detech supprot is if there is a microverion for the new behavior.\n\n\ni kind of dont like abusing micorversion as feature gates like this but\nthat is the usecase for it.\n\nwithout it cinder cannot know if nova is going to call it back or not and therefor cannot know if it needs to revert form the extending state.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"38cd2c0b816186f8805025f8e698b5437a5b2b86","unresolved":true,"context_lines":[{"line_number":51,"context_line":"A new API microversion is introduced."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"With the new microversion, the behavior of the external server event API will"},{"line_number":54,"context_line":"change as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"When handling the ``volume-extended`` external server event, Nova will check"},{"line_number":57,"context_line":"the volume status."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1b56aaa3_7d55eeab","line":54,"in_reply_to":"6a5bf4ec_fc9ddb15","updated":"2022-12-14 14:59:18.000000000","message":"No, whether or not to call extend_volume_completion is decided by the volume status.\n\nThe microversion is necessary for Cinder to know that it can leave the volume status as \"extending\" and expect a call back to extend_volume_completion.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7d0700dbfd356b3e0f18443a924103287b5b64a","unresolved":true,"context_lines":[{"line_number":67,"context_line":"  metadata, or being smaller than the current size of the volume, Nova will"},{"line_number":68,"context_line":"  log the error and call the extend volume completion action with"},{"line_number":69,"context_line":"  ``\"error\": true``."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"* For any other volume status the event will be handled as before."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"These changes will be integrated into the ``CompVirtAPI.extend_image`` method."}],"source_content_type":"text/x-rst","patch_set":10,"id":"c40c6c98_7e58fe6d","line":70,"updated":"2022-12-14 14:34:56.000000000","message":"Do I understand correctly that we need the new Nova API microversion as old Cinder will still call Nova with the old microversion and therefore Nova will know not to try to call extend_volume_completion on the old Cinder where this not exists yet?\n\nIf so then please note that the nova microversion used in the actual API call is accessible to the nova-api service but the volume-extended event handed by the nova-compute service where such information is not available. It seems to me if we want to transfer this information from the api to the compute then we need to extend the compute RPC API.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d81871a7a2024dea9d208b95062f7b3ccbde4d4","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  metadata, or being smaller than the current size of the volume, Nova will"},{"line_number":68,"context_line":"  log the error and call the extend volume completion action with"},{"line_number":69,"context_line":"  ``\"error\": true``."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"* For any other volume status the event will be handled as before."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"These changes will be integrated into the ``CompVirtAPI.extend_image`` method."}],"source_content_type":"text/x-rst","patch_set":10,"id":"edaee990_09ae430c","line":70,"in_reply_to":"c40c6c98_7e58fe6d","updated":"2022-12-14 17:37:37.000000000","message":"I guess while this is technically possible that a new Cinder uses the old Nova microversion that would be bug in Cinder. So I\u0027m OK not to handle this on the Nova side.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":110,"context_line":"  The function of the new Nova API would then just be to trigger the operation"},{"line_number":111,"context_line":"  and to communicate the new size."},{"line_number":112,"context_line":"  The question is then, whether that warrants adding a new API to Nova, since"},{"line_number":113,"context_line":"  there are existing mechanisms that could be used for either."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* The existing mechanism for triggering the extend operation in Nova is of"},{"line_number":116,"context_line":"  course the ``volume-extended`` external server event."}],"source_content_type":"text/x-rst","patch_set":10,"id":"724fd563_8d50ac54","line":113,"updated":"2022-12-13 19:41:19.000000000","message":"this is a valid approch if we dont have concenous on the current propsal that would like be my prefernce","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  The function of the new Nova API would then just be to trigger the operation"},{"line_number":111,"context_line":"  and to communicate the new size."},{"line_number":112,"context_line":"  The question is then, whether that warrants adding a new API to Nova, since"},{"line_number":113,"context_line":"  there are existing mechanisms that could be used for either."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"* The existing mechanism for triggering the extend operation in Nova is of"},{"line_number":116,"context_line":"  course the ``volume-extended`` external server event."}],"source_content_type":"text/x-rst","patch_set":10,"id":"b8887600_45072feb","line":113,"in_reply_to":"724fd563_8d50ac54","updated":"2022-12-15 18:15:22.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"  However, if additional data fields become available in a future version of"},{"line_number":141,"context_line":"  the external server event API, it would be a relatively minor change to use"},{"line_number":142,"context_line":"  this instead of volume metadata."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Data model impact"},{"line_number":145,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dfa0b48d_3a044723","line":142,"updated":"2022-12-13 19:41:19.000000000","message":"this has briefly come up in a different context.\nin general we may want to add a generic data filed which would depend on the type of event at some point but for now its proably not required.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[{"line_number":139,"context_line":""},{"line_number":140,"context_line":"  However, if additional data fields become available in a future version of"},{"line_number":141,"context_line":"  the external server event API, it would be a relatively minor change to use"},{"line_number":142,"context_line":"  this instead of volume metadata."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Data model impact"},{"line_number":145,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"d325212d_56a13293","line":142,"in_reply_to":"dfa0b48d_3a044723","updated":"2022-12-15 18:15:22.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3b55bbc3_a46d7583","line":158,"updated":"2022-12-13 19:41:19.000000000","message":"are you expecting this check to happen in the nova api or in the compute agent.\n\ni think we could keep this local to the compute manager/driver code in the comptue agent, so im not sure there will need to be any api/rpc changes in this case.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d81871a7a2024dea9d208b95062f7b3ccbde4d4","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"64f604c7_f7c7efbf","line":158,"in_reply_to":"004dbd8e_4cb8d650","updated":"2022-12-14 17:37:37.000000000","message":"thanks I got it now.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"e605b0a51367cf44434e913e0b3cb65e49bad301","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"58e9885b_41bb0c1d","line":158,"in_reply_to":"3b55bbc3_a46d7583","updated":"2022-12-14 13:28:48.000000000","message":"This was planned to all happen in the compute agent, I will reword it to make that clear.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7d0700dbfd356b3e0f18443a924103287b5b64a","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5ed41b29_f99a79e0","line":158,"in_reply_to":"58e9885b_41bb0c1d","updated":"2022-12-14 14:34:56.000000000","message":"note that the compute agent does not know if the nova API was called with the old or the new microversions so it won\u0027t know when to apply the new behavior","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"38cd2c0b816186f8805025f8e698b5437a5b2b86","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9c53eae1_6d1cec8a","line":158,"in_reply_to":"5ed41b29_f99a79e0","updated":"2022-12-14 14:59:18.000000000","message":"yeah, but it already requests the volume object from cinder and can read the volume status and metadata.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5dee57f8d7ce35f998137661e560e752610eb204","unresolved":true,"context_lines":[{"line_number":155,"context_line":"  status of ``extending``, Nova will look for the ``extend_new_size`` key in"},{"line_number":156,"context_line":"  the volume metadata, and use this instead of the volume size field as the"},{"line_number":157,"context_line":"  target size to update the block device mapping and to pass to the virt"},{"line_number":158,"context_line":"  driver\u0027s ``extend_volume`` method."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"}],"source_content_type":"text/x-rst","patch_set":10,"id":"004dbd8e_4cb8d650","line":158,"in_reply_to":"9c53eae1_6d1cec8a","updated":"2022-12-14 15:20:51.000000000","message":"so how i tought this woudl work is as follows\n\ncindre check if nova supprot new microverion at the api level and only used the new feature if it doesn\nnova-api checks if the the compute host meet the min comptue service verion for this feature if not it call back the completion api to set the extend to error and cinder cleans up.\n\nif the compute agent is upgraded the compute agent will look at the volume status and if its extendign it will use the new filed that contains the desired size\n\nif its not in extending that measns the old micorversion was used or it woudl have been recjected at the api and what ever it does today shoudl be done.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"},{"line_number":162,"context_line":"  successful or not."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Otherwise, the API will behave as before."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"174ca10a_f16ff374","line":162,"updated":"2022-12-13 19:41:19.000000000","message":"we have other apis that check if a feature is aviabel in neutron like livemigration and the multiple port bidnigns api.\nwe do not require a new microverion to take differnt behavior in that case so as long as we fall back to the old behavior if the cinder api si not present i think we can avoid the microversion bump.\n\n\nif we added a data field to the external events api or the new api endpoint the micorversion bump would be required. as written however i think we can avoid that.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c7d0700dbfd356b3e0f18443a924103287b5b64a","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"},{"line_number":162,"context_line":"  successful or not."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Otherwise, the API will behave as before."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"67bc2d80_a099c88f","line":162,"in_reply_to":"174ca10a_f16ff374","updated":"2022-12-14 14:34:56.000000000","message":"Right know I don\u0027t fully get the reason why the nova API microversion is proposed (see my comments above). But if we need to allow the old nova-compute behavior to be triggered even if a new Cinder is deployed then simply checking the cinder max microversion from the nova-compute service is not enough to decide what behavior (old / new) the nova-compute service apply.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d81871a7a2024dea9d208b95062f7b3ccbde4d4","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"},{"line_number":162,"context_line":"  successful or not."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Otherwise, the API will behave as before."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"cd1b60d4_4903ef9b","line":162,"in_reply_to":"61ce07c4_5d21294e","updated":"2022-12-14 17:37:37.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75b643048d25f1b9d8123ccae4cb11f14ddc75fd","unresolved":true,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  Nova will also attempt to call Cinders new ``os-extend_volume_completion``"},{"line_number":161,"context_line":"  volume action proposed in [3]_ to let Cinder know if the operation was"},{"line_number":162,"context_line":"  successful or not."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"* Otherwise, the API will behave as before."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"61ce07c4_5d21294e","line":162,"in_reply_to":"67bc2d80_a099c88f","updated":"2022-12-14 15:22:01.000000000","message":"correct more on that above","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":199,"context_line":"To allow for rolling updates, Nova always supports the previous version of"},{"line_number":200,"context_line":"nova-compute."},{"line_number":201,"context_line":"This can lead to a situation, in which the Nova API already supports the"},{"line_number":202,"context_line":"required microversion, but nova-compute does not yet support the feature."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"If one of the affected drivers extends an attached volume in this situation,"},{"line_number":205,"context_line":"the volume will be left in ``extending`` status, because nova-compute will not"}],"source_content_type":"text/x-rst","patch_set":10,"id":"449bbf63_1829c24b","line":202,"updated":"2022-12-13 19:41:19.000000000","message":"as noted above if we are ok with silently falling back to the old behaivor\nwe do not need to make any api change and we can just start usign the new cinder api from the compute agent instead.\n\nthat would simplfy the upgrades in one asepect","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"e605b0a51367cf44434e913e0b3cb65e49bad301","unresolved":true,"context_lines":[{"line_number":199,"context_line":"To allow for rolling updates, Nova always supports the previous version of"},{"line_number":200,"context_line":"nova-compute."},{"line_number":201,"context_line":"This can lead to a situation, in which the Nova API already supports the"},{"line_number":202,"context_line":"required microversion, but nova-compute does not yet support the feature."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"If one of the affected drivers extends an attached volume in this situation,"},{"line_number":205,"context_line":"the volume will be left in ``extending`` status, because nova-compute will not"}],"source_content_type":"text/x-rst","patch_set":10,"id":"88a0108e_ba2daf96","line":202,"in_reply_to":"449bbf63_1829c24b","updated":"2022-12-14 13:28:48.000000000","message":"For the drivers that need the feature, there isn\u0027t really any old behavior to fall back to, online extend was just not supported.\nFor the other drivers nothing will change, so there will be not upgrade impact.\nI will try to state this more explicitly.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[{"line_number":199,"context_line":"To allow for rolling updates, Nova always supports the previous version of"},{"line_number":200,"context_line":"nova-compute."},{"line_number":201,"context_line":"This can lead to a situation, in which the Nova API already supports the"},{"line_number":202,"context_line":"required microversion, but nova-compute does not yet support the feature."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"If one of the affected drivers extends an attached volume in this situation,"},{"line_number":205,"context_line":"the volume will be left in ``extending`` status, because nova-compute will not"}],"source_content_type":"text/x-rst","patch_set":10,"id":"259735f1_6a4df0dd","line":202,"in_reply_to":"5545b2aa_f896cb35","updated":"2022-12-15 18:15:22.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f6546f094976584fe645c3d3c491d11eac3abe2","unresolved":true,"context_lines":[{"line_number":199,"context_line":"To allow for rolling updates, Nova always supports the previous version of"},{"line_number":200,"context_line":"nova-compute."},{"line_number":201,"context_line":"This can lead to a situation, in which the Nova API already supports the"},{"line_number":202,"context_line":"required microversion, but nova-compute does not yet support the feature."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"If one of the affected drivers extends an attached volume in this situation,"},{"line_number":205,"context_line":"the volume will be left in ``extending`` status, because nova-compute will not"}],"source_content_type":"text/x-rst","patch_set":10,"id":"5545b2aa_f896cb35","line":202,"in_reply_to":"88a0108e_ba2daf96","updated":"2022-12-14 14:00:29.000000000","message":"ok so the issue si that it was racy\n\nwe do have the bug that stated this was not supproted but we did not have docs and it was accpeted in the api.\n\nso ok lets state this expicltly","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":207,"context_line":"event."},{"line_number":208,"context_line":"The volume will also not actually be extended, because nova-compute will"},{"line_number":209,"context_line":"ignore the ``extend_new_size`` key in the metadata, and use the volume size"},{"line_number":210,"context_line":"field as target size, which will still be the old size of the volume."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"It should be safe for an admin to reset the volume status back to ``in-use``,"},{"line_number":213,"context_line":"using the ``os-reset_status`` volume action."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dca120ed_98a5dcb8","line":210,"updated":"2022-12-13 19:41:19.000000000","message":"if on the other hand we want to prevent this what we need to do in the api is as follows\n\n1 add the microversion the spec currently sugests\n2 add a new comptue service version for this feature\n3 check if the comptue node is older then the requried compute service version\nfor the new microveriosn fail/cleanup the extend.\n\ni assume 3 either inovle calling the os-reset-status api to set the volume back to inuse or proably better call the new os-extend_volume_completion and make the extend as failed with a reason \"comptue too old\"\n\nassumign we keep the microversion then i would prefer to do the procedure above and call the os-extend_volume_completion api with the failure message.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[{"line_number":207,"context_line":"event."},{"line_number":208,"context_line":"The volume will also not actually be extended, because nova-compute will"},{"line_number":209,"context_line":"ignore the ``extend_new_size`` key in the metadata, and use the volume size"},{"line_number":210,"context_line":"field as target size, which will still be the old size of the volume."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"It should be safe for an admin to reset the volume status back to ``in-use``,"},{"line_number":213,"context_line":"using the ``os-reset_status`` volume action."}],"source_content_type":"text/x-rst","patch_set":10,"id":"11e34818_4cec4557","line":210,"in_reply_to":"81c7a655_156124a7","updated":"2022-12-15 18:15:22.000000000","message":"Ack","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4f6546f094976584fe645c3d3c491d11eac3abe2","unresolved":true,"context_lines":[{"line_number":207,"context_line":"event."},{"line_number":208,"context_line":"The volume will also not actually be extended, because nova-compute will"},{"line_number":209,"context_line":"ignore the ``extend_new_size`` key in the metadata, and use the volume size"},{"line_number":210,"context_line":"field as target size, which will still be the old size of the volume."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"It should be safe for an admin to reset the volume status back to ``in-use``,"},{"line_number":213,"context_line":"using the ``os-reset_status`` volume action."}],"source_content_type":"text/x-rst","patch_set":10,"id":"81c7a655_156124a7","line":210,"in_reply_to":"d17d1366_b8f4eb7b","updated":"2022-12-14 14:00:29.000000000","message":"the issues with the error code on the external events is that api support batching events\n\nim not sure if we can report this seprealy for each event in that case\n\nignoring that then yes for a single event the status code could be used but in general i dont think that will work.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"4e9508ed351bd79b4442541f49fc11dc854f245e","unresolved":true,"context_lines":[{"line_number":207,"context_line":"event."},{"line_number":208,"context_line":"The volume will also not actually be extended, because nova-compute will"},{"line_number":209,"context_line":"ignore the ``extend_new_size`` key in the metadata, and use the volume size"},{"line_number":210,"context_line":"field as target size, which will still be the old size of the volume."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"It should be safe for an admin to reset the volume status back to ``in-use``,"},{"line_number":213,"context_line":"using the ``os-reset_status`` volume action."}],"source_content_type":"text/x-rst","patch_set":10,"id":"d17d1366_b8f4eb7b","line":210,"in_reply_to":"dca120ed_98a5dcb8","updated":"2022-12-14 09:01:02.000000000","message":"This is a good suggestion!\n\nWould it also be an option to use the response of the external event API to report a failure on 3?","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"f43bc7ceeedb64d06b31efee23e2106b9fc26cf5","unresolved":true,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"* Update the ``CompVirtAPI.extend_volume`` method to follow the behavior"},{"line_number":242,"context_line":"  outlined in `Proposed change`_."},{"line_number":243,"context_line":"* Add unit tests."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Dependencies"},{"line_number":246,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7994f87f_749f4b21","line":243,"updated":"2022-12-13 19:41:19.000000000","message":"we have an nfs job in the nova gate so we can likely leverage that to validate this to some degree as well.","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3fd2585d8b795d94f9d8f91c300a593e69f859e7","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"* Update the ``CompVirtAPI.extend_volume`` method to follow the behavior"},{"line_number":242,"context_line":"  outlined in `Proposed change`_."},{"line_number":243,"context_line":"* Add unit tests."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Dependencies"},{"line_number":246,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dd4511bd_8a04b39b","line":243,"in_reply_to":"7994f87f_749f4b21","updated":"2022-12-15 18:15:22.000000000","message":"Done","commit_id":"e510f1df3c633d8e30d424a8764569089126e08d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"448cc2087a977c4834a468be6d3151678b378604","unresolved":true,"context_lines":[{"line_number":53,"context_line":"operation and leave the volume status as ``extending``, until after it has"},{"line_number":54,"context_line":"send the ``volume-extended`` event and received feedback from Nova in form of"},{"line_number":55,"context_line":"the ``os-extend_volume_completion`` volume action, with an ``error`` argument"},{"line_number":56,"context_line":"indicating whether to finalize or to roll back the operation."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"This will currently affect only the volume drivers mentioned above, all of"},{"line_number":59,"context_line":"which did not previously support online extend."}],"source_content_type":"text/x-rst","patch_set":13,"id":"e2d1cbb6_d2ef51db","line":56,"updated":"2023-01-11 10:08:56.000000000","message":"Thanks!","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"448cc2087a977c4834a468be6d3151678b378604","unresolved":true,"context_lines":[{"line_number":65,"context_line":"-------------"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Nova\u0027s compute agent will use the volume status to differentiate between the"},{"line_number":68,"context_line":"two behaviors when handling ``volume-extended`` events:"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If the volume status is ``extending``, then it will attempt to read"},{"line_number":71,"context_line":"  ``extend_new_size`` from the volume\u0027s metadata and use this value as the"}],"source_content_type":"text/x-rst","patch_set":13,"id":"c46f1305_6fccc068","line":68,"updated":"2023-01-11 10:08:56.000000000","message":"+1","commit_id":"7f97f9be672b01ef98d49c1c91f07a98c5e4792c"}],"specs/antelope/approved/assisted-volume-extend.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":29,"context_line":"``volume-extended`` external server event."},{"line_number":30,"context_line":"Unfortunately, this is not suitable for resizing attached volumes because the"},{"line_number":31,"context_line":"external server event API does not provide any feedback on whether an event was"},{"line_number":32,"context_line":"handled successfully."},{"line_number":33,"context_line":"The instance action API does provide some feedback with ``extend_volume``"},{"line_number":34,"context_line":"action entries, but does not provide any information on which volume a specific"},{"line_number":35,"context_line":"entry refers to."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5be546f7_65d57cde","line":32,"updated":"2022-09-14 11:55:25.000000000","message":"actully it kind fo does \n\nhttps://docs.openstack.org/api-ref/compute/?expanded\u003drun-events-detail#run-events\n\n\nCreates one or more external events, which the API dispatches to the host a server is assigned to. If the server is not currently assigned to a host the event will not be delivered.\n\nYou will receive back the list of events that you submitted, with an updated code and status indicating their level of success.\n\nNormal response codes: 200, 207\n\nA 200 will be returned if all events succeeded, 207 will be returned if any events could not be processed. The code attribute for the event will explain further what went wrong.\n\n\nso it should return a 207 today id any event was not processed correctly.\n\nthe status filed also provides addtional info\n\nThe event status. A valid value is failed, completed, or in-progress. Default is completed.\n\nthe problem is that events do not have any kind of identifyier an dyou can not query there status, since this is an async operation all the 200 code is really telling you is that we were able to send it to the comptue node to be handeled and for ironcics case that is not enough to know if the volume extention actully proceeded in this case.\n\nwhich is why you would like an api with stonger guarentes so you can actully make decisions on it.","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":29,"context_line":"``volume-extended`` external server event."},{"line_number":30,"context_line":"Unfortunately, this is not suitable for resizing attached volumes because the"},{"line_number":31,"context_line":"external server event API does not provide any feedback on whether an event was"},{"line_number":32,"context_line":"handled successfully."},{"line_number":33,"context_line":"The instance action API does provide some feedback with ``extend_volume``"},{"line_number":34,"context_line":"action entries, but does not provide any information on which volume a specific"},{"line_number":35,"context_line":"entry refers to."}],"source_content_type":"text/x-rst","patch_set":1,"id":"d6f149b5_e349a990","line":32,"in_reply_to":"5be546f7_65d57cde","updated":"2022-09-21 12:22:27.000000000","message":"Yeah, that\u0027s kinda what meant here.\nI will try to describe it better.","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"``volume-extended`` external server event."},{"line_number":30,"context_line":"Unfortunately, this is not suitable for resizing attached volumes because the"},{"line_number":31,"context_line":"external server event API does not provide any feedback on whether an event was"},{"line_number":32,"context_line":"handled successfully."},{"line_number":33,"context_line":"The instance action API does provide some feedback with ``extend_volume``"},{"line_number":34,"context_line":"action entries, but does not provide any information on which volume a specific"},{"line_number":35,"context_line":"entry refers to."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ddcac000_e44dcd37","line":32,"in_reply_to":"d6f149b5_e349a990","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":38,"context_line":"volume has already been updated in the database."},{"line_number":39,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":40,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":41,"context_line":"successful."},{"line_number":42,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":43,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":1,"id":"bcbf9842_9e9b430f","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":38},"updated":"2022-09-14 11:55:25.000000000","message":"actully the quota part needs to happen first otherwise two resize events could exceed the quota.","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":38,"context_line":"volume has already been updated in the database."},{"line_number":39,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":40,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":41,"context_line":"successful."},{"line_number":42,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":43,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":1,"id":"67074353_a9b9165a","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":38},"in_reply_to":"6cbad322_f770a75b","updated":"2022-12-07 16:45:59.000000000","message":"Done","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"9380e60b233a0c10ad7db5c71f4ffd35d1131180","unresolved":true,"context_lines":[{"line_number":37,"context_line":"Also, the handler of the ``volume-extended`` event assumes that the size of the"},{"line_number":38,"context_line":"volume has already been updated in the database."},{"line_number":39,"context_line":"If we rely on Nova to perform the actual resize, Cinder should not update the"},{"line_number":40,"context_line":"size (or commit the quota reservation) until it knows that the operation was"},{"line_number":41,"context_line":"successful."},{"line_number":42,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":43,"context_line":"which, in this case, is already used for the ID of the extended volume."}],"source_content_type":"text/x-rst","patch_set":1,"id":"6cbad322_f770a75b","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":38},"in_reply_to":"bcbf9842_9e9b430f","updated":"2022-09-21 12:22:27.000000000","message":"See my reply on Patchset 4 #41","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":42,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":43,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":44,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":45,"context_line":"appart from updating it in the database."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":48,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":1,"id":"302e4bd8_55cecdb3","line":45,"updated":"2022-09-14 11:55:25.000000000","message":"right the events api is intended to notify nova of a change not as a generic api to pass arbitry data.\n\nthat is why the volume id is passed today as nova should be able to discover all the info form cinder if we stick to the normal mecanics of how this should be used.","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"1824cdf7bd126605c0eb94ed689a36a0d19bff4e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"External server events, however, have only a single text field for arguments,"},{"line_number":43,"context_line":"which, in this case, is already used for the ID of the extended volume."},{"line_number":44,"context_line":"So there is currently no clean way to communicate the new volume size to Nova,"},{"line_number":45,"context_line":"appart from updating it in the database."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Extending attached volumes is currently disabled for the file-based NFS,"},{"line_number":48,"context_line":"NetApp ONTAP NFS, and Quobyte drivers."}],"source_content_type":"text/x-rst","patch_set":1,"id":"03343b36_1d87622d","line":45,"in_reply_to":"302e4bd8_55cecdb3","updated":"2022-12-07 16:45:59.000000000","message":"Ack","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a401e817ce8e41e8a971abc8791f7f35c0f32cf3","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Introduce a new API microversion that adds the new"},{"line_number":62,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":65,"context_line":"extending attached volumes, and it will require admin access to the Nova."},{"line_number":66,"context_line":"Just like the ``volume-extended`` external server event, it will cause "}],"source_content_type":"text/x-rst","patch_set":1,"id":"f407c9e2_e3ce03d9","line":63,"updated":"2022-09-14 11:55:25.000000000","message":"+1 to mirrioring the existing /os-assisted-snapshot api naming\nthat said we can drop the \"os-\" prefix i belvie.\n\nill need to get someone else to confirm or find that in our docs but i belive we are nolonger adding the os- prefix to things for new apis so this should be\n``POST /assisted-volume-extend`` API.","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"538f811a8c3e49b919eaecee75f378e43a44099a","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Introduce a new API microversion that adds the new"},{"line_number":62,"context_line":"``POST /os-assisted-volume-extend`` API."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"The new API is intended to be used exclusively by Cinder when"},{"line_number":65,"context_line":"extending attached volumes, and it will require admin access to the Nova."},{"line_number":66,"context_line":"Just like the ``volume-extended`` external server event, it will cause "}],"source_content_type":"text/x-rst","patch_set":1,"id":"97064d78_5a7078f5","line":63,"in_reply_to":"f407c9e2_e3ce03d9","updated":"2022-10-12 08:59:15.000000000","message":"Done","commit_id":"12d9564511f59136f0098542ddb78a5aaee7a0fb"}]}
