)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":11,"context_line":"on Nova calling the new os-extend_volume_completion after handling"},{"line_number":12,"context_line":"the volume-extended external server event."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: bp/extend-volume-completion-action"},{"line_number":15,"context_line":"Change-Id: I4aaa5da1ad67a948102c498483de318bd245d86b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"532e77a8_854a898c","line":14,"updated":"2023-02-15 04:23:09.000000000","message":"Please change the bp reference to the format below so Gerrit can generate the link to launchpad. You should be able to use just \"bp\" by replacing the slash with a space instead.\n\nImplements: blueprint extend-volume-completion-action\nor \nImplements: bp extend-volume-completion-action","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":11,"context_line":"on Nova calling the new os-extend_volume_completion after handling"},{"line_number":12,"context_line":"the volume-extended external server event."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: bp/extend-volume-completion-action"},{"line_number":15,"context_line":"Change-Id: I4aaa5da1ad67a948102c498483de318bd245d86b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"cd85979f_15338110","line":14,"in_reply_to":"532e77a8_854a898c","updated":"2023-02-15 09:53:03.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"742b9748b3b8fa52ee3e8eab90de75092a2dcf30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8e6d0555_c1eb4ae6","updated":"2023-02-14 14:23:05.000000000","message":"Ok, there may be still be a chance to make FF so I\u0027m opening it back for review","commit_id":"019ed4e3daf0f318eb10ba8267f3253c974ba4e6"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"3b34439ccb71c28a5a4be90b9eb3719a2d18cade","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"da4660ee_6c4072e5","updated":"2023-02-14 11:33:18.000000000","message":"This is not going to make FF so I set it to WIP.","commit_id":"019ed4e3daf0f318eb10ba8267f3253c974ba4e6"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0a09aa45_638c66cb","updated":"2023-02-15 04:23:09.000000000","message":"Hi Konrad, please check my comments inline.\n","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e91315bdfb7479b05f5a03e7e881f8e73fd3d60d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"eae564c4_a357ab69","updated":"2023-08-09 14:48:51.000000000","message":"Raising priority as a 2023.2 targeted feature.","commit_id":"f1a1d9a019ed36992762317d8ce3e00ebacdf08a"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"57e625e4de26672671d86906940f90f95a296240","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"11aaa2ec_e3ad5a72","updated":"2023-08-16 07:21:21.000000000","message":"There is currently a cross-dependency with the related Nova change.\nThis change relies on a specific Nova API micro-version, but the change that introduces it into Nova relies on the the os-extend_volume_completion action.\n\nI am going to split this change to resolve this issue.","commit_id":"f1a1d9a019ed36992762317d8ce3e00ebacdf08a"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"fb276b5b033578a84a055ce976d51a7ec2906ffe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3342960a_cd5c38ab","in_reply_to":"11aaa2ec_e3ad5a72","updated":"2023-08-16 15:27:14.000000000","message":"The second part has now been split off into  https://review.opendev.org/c/openstack/cinder/+/891602, which has a dependency to the Nova change, so the cross-dependency is resolved.\n\nThis should hopefully also make the changes slightly easier to review.","commit_id":"f1a1d9a019ed36992762317d8ce3e00ebacdf08a"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"09566927269ac31afd2ed172e10b1ed30faab53f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ee96a20b_2f3b09d0","updated":"2023-08-21 10:24:18.000000000","message":"Code changes look good. Zuul also passed.\nMinor query inline.","commit_id":"75d40f0660423d79489b5086ec41d37fb1104c73"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"4cad296d943881f0e8a59f1fa5172f92af6dea6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6ad4c146_31c7b81b","updated":"2023-08-21 14:06:45.000000000","message":"My comment has been addressed. Thanks.","commit_id":"e54626da673857d5fc7f956f762fa73d301a1327"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"8bf525cbb3cb1f6407c380ac07276ce6313c3c61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f206ac8e_54794562","updated":"2023-08-23 07:23:55.000000000","message":"recheck again, tempest-integrated-storage seems to fail with unrelated errors","commit_id":"e54626da673857d5fc7f956f762fa73d301a1327"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"6970d583db3ade225cdacb21fe738fadd08d49e1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e1674033_be3d4a58","updated":"2023-08-21 14:09:56.000000000","message":"recheck tempest-integrated-storage failure seems unrelated to change","commit_id":"e54626da673857d5fc7f956f762fa73d301a1327"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"266afbca94c148f4239d9dc93a6db3f79f4ef1b2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"df6dca1d_ea86d94a","updated":"2023-12-15 12:46:23.000000000","message":"Fine. My query has been answered. Zuul has passed.","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"90412b6a6907168b20aad57aa7cecd62203960a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"aa9657b6_9d334fd0","updated":"2023-11-29 14:52:25.000000000","message":"I think this code makes sense to me.","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d65b043b35a23e4b8f9204bf976ec7e4d67a61d5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"3f34f37e_da6b96eb","updated":"2023-12-05 07:43:58.000000000","message":"Minor query inline","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"dfebae175adc516d79d87d51061895e3774ae05f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"15e801d4_40453dc5","updated":"2024-02-16 15:53:32.000000000","message":"Sorry for the late reply, I had some other urgent tasks come in between.\nI will push the new patchset later today.","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"7e50ee8c_65cb9455","updated":"2024-02-14 13:00:30.000000000","message":"thanks for working on this, few comments inline","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"132b33bfb07a942581a80dd48a7dd5b2fcbf701d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"26ea7447_ae0053a3","updated":"2024-02-23 18:02:31.000000000","message":"I don\u0027t have concerns with this.  It looks like the responses to Rajat\u0027s questions make sense.","commit_id":"2a1a0bc3e2d8b75aabcb0402239369b14c4e1093"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02adf29d2aa7fdd55c2ff436d08dfe96441edf6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"1afe9209_fb9fc173","updated":"2024-02-23 18:33:39.000000000","message":"Thanks for working on this.\n\none improvement inline but that can be done in a followup.\n\ncode and tests looks good, the nfs job is passing so we are not breaking existing functionality, LGTM.\n\ndevstack-plugin-nfs-tempest-full https://zuul.opendev.org/t/openstack/build/6c4ff4854d5a42d3a99d9b97886c3b1c : SUCCESS in 1h 32m 52s","commit_id":"2a1a0bc3e2d8b75aabcb0402239369b14c4e1093"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"c946c81e5d7e33ee5fdff97cb266b2f0c18fa28b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"2303be9f_63d229c1","updated":"2024-02-19 08:38:15.000000000","message":"recheck tempest-integrated-storage failure seems unrelated to change","commit_id":"2a1a0bc3e2d8b75aabcb0402239369b14c4e1093"}],"api-ref/source/v3/parameters.yaml":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"d65b043b35a23e4b8f9204bf976ec7e4d67a61d5","unresolved":true,"context_lines":[{"line_number":1381,"context_line":"    Used to indicate that the extend operation has failed outside of cinder."},{"line_number":1382,"context_line":"  in: body"},{"line_number":1383,"context_line":"  required: false"},{"line_number":1384,"context_line":"  type: boolean"},{"line_number":1385,"context_line":"extra_info:"},{"line_number":1386,"context_line":"  description: |"},{"line_number":1387,"context_line":"    More information about the resource."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"2b7c7d44_81c9d6e8","line":1384,"updated":"2023-12-05 07:43:58.000000000","message":"Query - If required, can we add a line:\nmin_version: 3.71","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"2e139385e811ba39e3fb605a7d1385295761213b","unresolved":true,"context_lines":[{"line_number":1381,"context_line":"    Used to indicate that the extend operation has failed outside of cinder."},{"line_number":1382,"context_line":"  in: body"},{"line_number":1383,"context_line":"  required: false"},{"line_number":1384,"context_line":"  type: boolean"},{"line_number":1385,"context_line":"extra_info:"},{"line_number":1386,"context_line":"  description: |"},{"line_number":1387,"context_line":"    More information about the resource."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"c629e961_110100ae","line":1384,"in_reply_to":"2b7c7d44_81c9d6e8","updated":"2023-12-15 12:17:07.000000000","message":"Hi, sorry for the late reply.\nSo, from my understanding, the min_version/max_version annotations are only used if a parameter of an existing API changes, like the `cluster` parameter that was added to the `os-migrate_volume` action in 3.16:\nhttps://docs.openstack.org/api-ref/block-storage/v3/#migrate-a-volume\n\nSince I\u0027m adding a completely new volume action, I don\u0027t think the new parameters have to be marked separately.","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"266afbca94c148f4239d9dc93a6db3f79f4ef1b2","unresolved":false,"context_lines":[{"line_number":1381,"context_line":"    Used to indicate that the extend operation has failed outside of cinder."},{"line_number":1382,"context_line":"  in: body"},{"line_number":1383,"context_line":"  required: false"},{"line_number":1384,"context_line":"  type: boolean"},{"line_number":1385,"context_line":"extra_info:"},{"line_number":1386,"context_line":"  description: |"},{"line_number":1387,"context_line":"    More information about the resource."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"2402c5d2_db4acbf3","line":1384,"in_reply_to":"c629e961_110100ae","updated":"2023-12-15 12:46:23.000000000","message":"Done","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"}],"api-ref/source/v3/samples/versions/version-show-response.json":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"09566927269ac31afd2ed172e10b1ed30faab53f","unresolved":true,"context_lines":[{"line_number":21,"context_line":"            ],"},{"line_number":22,"context_line":"            \"min_version\": \"3.0\","},{"line_number":23,"context_line":"            \"status\": \"CURRENT\","},{"line_number":24,"context_line":"            \"updated\": \"2023-03-31T00:00:00Z\","},{"line_number":25,"context_line":"            \"version\": \"3.71\""},{"line_number":26,"context_line":"        }"},{"line_number":27,"context_line":"    ]"}],"source_content_type":"application/json","patch_set":7,"id":"b1c68be4_55c07c58","line":24,"updated":"2023-08-21 10:24:18.000000000","message":"since this feature is proposed to Bobcat, should date be 31st August ?","commit_id":"75d40f0660423d79489b5086ec41d37fb1104c73"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"646cc5ed2672d8a37aac3eefa6e8cf476e8749dd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"            ],"},{"line_number":22,"context_line":"            \"min_version\": \"3.0\","},{"line_number":23,"context_line":"            \"status\": \"CURRENT\","},{"line_number":24,"context_line":"            \"updated\": \"2023-03-31T00:00:00Z\","},{"line_number":25,"context_line":"            \"version\": \"3.71\""},{"line_number":26,"context_line":"        }"},{"line_number":27,"context_line":"    ]"}],"source_content_type":"application/json","patch_set":7,"id":"f553746f_df7cbf45","line":24,"in_reply_to":"b1c68be4_55c07c58","updated":"2023-08-21 11:18:29.000000000","message":"Done","commit_id":"75d40f0660423d79489b5086ec41d37fb1104c73"}],"api-ref/source/v3/samples/versions/versions-response.json":[{"author":{"_account_id":29122,"name":"Raghavendra Tilay","email":"raghavendra-uddhav.tilay@hpe.com","username":"raghavendrat"},"change_message_id":"09566927269ac31afd2ed172e10b1ed30faab53f","unresolved":true,"context_lines":[{"line_number":21,"context_line":"            ],"},{"line_number":22,"context_line":"            \"min_version\": \"3.0\","},{"line_number":23,"context_line":"            \"status\": \"CURRENT\","},{"line_number":24,"context_line":"            \"updated\": \"2022-03-31T00:00:00Z\","},{"line_number":25,"context_line":"            \"version\": \"3.71\""},{"line_number":26,"context_line":"        }"},{"line_number":27,"context_line":"    ]"}],"source_content_type":"application/json","patch_set":7,"id":"dd660c18_e31303f3","line":24,"updated":"2023-08-21 10:24:18.000000000","message":"same query as mentioned in version-show-response.json","commit_id":"75d40f0660423d79489b5086ec41d37fb1104c73"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"646cc5ed2672d8a37aac3eefa6e8cf476e8749dd","unresolved":false,"context_lines":[{"line_number":21,"context_line":"            ],"},{"line_number":22,"context_line":"            \"min_version\": \"3.0\","},{"line_number":23,"context_line":"            \"status\": \"CURRENT\","},{"line_number":24,"context_line":"            \"updated\": \"2022-03-31T00:00:00Z\","},{"line_number":25,"context_line":"            \"version\": \"3.71\""},{"line_number":26,"context_line":"        }"},{"line_number":27,"context_line":"    ]"}],"source_content_type":"application/json","patch_set":7,"id":"cf6fcf7e_e1f162b6","line":24,"in_reply_to":"dd660c18_e31303f3","updated":"2023-08-21 11:18:29.000000000","message":"Done","commit_id":"75d40f0660423d79489b5086ec41d37fb1104c73"}],"api-ref/source/v3/volumes-v3-volumes-actions.inc":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":77,"context_line":"   :language: javascript"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Complete extendinga a volume"},{"line_number":81,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. rest_method::  POST /v3/{project_id}/volumes/{volume_id}/action"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"2e9b69a8_efa8e04f","line":80,"updated":"2023-02-15 04:23:09.000000000","message":"Typo: Complete extending a volume","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":77,"context_line":"   :language: javascript"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Complete extendinga a volume"},{"line_number":81,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. rest_method::  POST /v3/{project_id}/volumes/{volume_id}/action"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"05d56ef4_9c2c2afc","line":80,"in_reply_to":"2e9b69a8_efa8e04f","updated":"2023-02-15 09:53:03.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Complete extending an attached volume that has been left in status"},{"line_number":88,"context_line":"``extending`` after notifying the compute agent."},{"line_number":89,"context_line":"Depending on the value of the the ``error`` parameter, the extend operation"},{"line_number":90,"context_line":"will be either rolled back or finalized."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"**Preconditions**"}],"source_content_type":"text/x-c++src","patch_set":10,"id":"32c3cc1e_9e19c9fd","line":89,"range":{"start_line":89,"start_character":26,"end_line":89,"end_character":29},"updated":"2024-02-14 13:00:30.000000000","message":"nit: extra \u0027the\u0027","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7ee3cbd37b53d4359e098edd3e7a395bd15676a1","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Complete extending an attached volume that has been left in status"},{"line_number":88,"context_line":"``extending`` after notifying the compute agent."},{"line_number":89,"context_line":"Depending on the value of the the ``error`` parameter, the extend operation"},{"line_number":90,"context_line":"will be either rolled back or finalized."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"**Preconditions**"}],"source_content_type":"text/x-c++src","patch_set":10,"id":"52e8aa5d_2f1922e9","line":89,"range":{"start_line":89,"start_character":26,"end_line":89,"end_character":29},"in_reply_to":"32c3cc1e_9e19c9fd","updated":"2024-02-16 17:22:17.000000000","message":"Done","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"}],"cinder/exception.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"class NovaExtendCompletionRequired(CinderException):"},{"line_number":1098,"context_line":"    # TODO: change name?"},{"line_number":1099,"context_line":"    message \u003d _(\"Extending the volume requires assistance from Nova.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"1e60c79f_184e857f","line":1098,"updated":"2023-02-15 04:23:09.000000000","message":"I think you can drop this TODO as no one will be willing to do so after the feature is released.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":""},{"line_number":1097,"context_line":"class NovaExtendCompletionRequired(CinderException):"},{"line_number":1098,"context_line":"    # TODO: change name?"},{"line_number":1099,"context_line":"    message \u003d _(\"Extending the volume requires assistance from Nova.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"937d9372_95590253","line":1098,"in_reply_to":"1e60c79f_184e857f","updated":"2023-02-15 09:53:03.000000000","message":"Yeah, that was a note for myself that I forgot to take out. I removed it.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"}],"cinder/volume/api.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":1673,"context_line":"        try:"},{"line_number":1674,"context_line":"            with volume.obj_as_admin():"},{"line_number":1675,"context_line":"                new_size \u003d int(volume.admin_metadata[\u0027extend_new_size\u0027])"},{"line_number":1676,"context_line":"                reservations \u003d jsonutils.loads("},{"line_number":1677,"context_line":"                    volume.admin_metadata[\u0027extend_reservations\u0027])"},{"line_number":1678,"context_line":""},{"line_number":1679,"context_line":"            assert new_size \u003e volume.size, ("}],"source_content_type":"text/x-python","patch_set":3,"id":"dace9185_d3cc224d","line":1676,"updated":"2023-02-15 04:23:09.000000000","message":"Please correct me if I\u0027m wrong. Won\u0027t new_size and reservations variables only exist  in the context of the \u0027with\u0027 statement? I\u0027m wondering if you are not going to get assert errors in lines #1679 and #1682 due to that.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":true,"context_lines":[{"line_number":1673,"context_line":"        try:"},{"line_number":1674,"context_line":"            with volume.obj_as_admin():"},{"line_number":1675,"context_line":"                new_size \u003d int(volume.admin_metadata[\u0027extend_new_size\u0027])"},{"line_number":1676,"context_line":"                reservations \u003d jsonutils.loads("},{"line_number":1677,"context_line":"                    volume.admin_metadata[\u0027extend_reservations\u0027])"},{"line_number":1678,"context_line":""},{"line_number":1679,"context_line":"            assert new_size \u003e volume.size, ("}],"source_content_type":"text/x-python","patch_set":3,"id":"e43c70e2_4c8bf6fd","line":1676,"in_reply_to":"dace9185_d3cc224d","updated":"2023-02-15 09:53:03.000000000","message":"The `with` statement does not have a separate scope.\nI couldn\u0027t find the official documentation, but here is a stackoverflow answer:\nhttps://stackoverflow.com/questions/45100271/scope-of-variable-within-with-statement/45100308#45100308","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"efb0bcd48630b7b2c8af85cc171ceee08e59d192","unresolved":false,"context_lines":[{"line_number":1673,"context_line":"        try:"},{"line_number":1674,"context_line":"            with volume.obj_as_admin():"},{"line_number":1675,"context_line":"                new_size \u003d int(volume.admin_metadata[\u0027extend_new_size\u0027])"},{"line_number":1676,"context_line":"                reservations \u003d jsonutils.loads("},{"line_number":1677,"context_line":"                    volume.admin_metadata[\u0027extend_reservations\u0027])"},{"line_number":1678,"context_line":""},{"line_number":1679,"context_line":"            assert new_size \u003e volume.size, ("}],"source_content_type":"text/x-python","patch_set":3,"id":"9dba9d61_dd1185a5","line":1676,"in_reply_to":"e43c70e2_4c8bf6fd","updated":"2023-08-02 13:45:08.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":1697,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1698,"context_line":""},{"line_number":1699,"context_line":"        if new_size \u003c\u003d volume.size:"},{"line_number":1700,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_new_size\"] is smaller or equal \u0027"},{"line_number":1701,"context_line":"                    \u0027to current volume size.\u0027)"},{"line_number":1702,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        if type(reservations) is not list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ccb1842_5f0cf4d0","line":1701,"range":{"start_line":1700,"start_character":21,"end_line":1701,"end_character":44},"updated":"2024-02-14 13:00:30.000000000","message":"This might be confusing for the operator while debugging,\n\nmaybe along the lines of,\n\n    \"The new size provided in volume admin metadata %(extend_new_size)s is smaller or equal to current volume size.\" % \n     admin_metadata[\"extend_new_size\"]","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7ee3cbd37b53d4359e098edd3e7a395bd15676a1","unresolved":false,"context_lines":[{"line_number":1697,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1698,"context_line":""},{"line_number":1699,"context_line":"        if new_size \u003c\u003d volume.size:"},{"line_number":1700,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_new_size\"] is smaller or equal \u0027"},{"line_number":1701,"context_line":"                    \u0027to current volume size.\u0027)"},{"line_number":1702,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        if type(reservations) is not list:"}],"source_content_type":"text/x-python","patch_set":10,"id":"80a83baa_c92369a9","line":1701,"range":{"start_line":1700,"start_character":21,"end_line":1701,"end_character":44},"in_reply_to":"7ccb1842_5f0cf4d0","updated":"2024-02-16 17:22:17.000000000","message":"Done","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":1702,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        if type(reservations) is not list:"},{"line_number":1705,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_reservations\"] is not a list.\u0027)"},{"line_number":1706,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        with volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"1056e064_1ebdcd74","line":1705,"range":{"start_line":1705,"start_character":21,"end_line":1705,"end_character":73},"updated":"2024-02-14 13:00:30.000000000","message":"\"The reservations for extending the volume should be in a list format\"","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7ee3cbd37b53d4359e098edd3e7a395bd15676a1","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        if type(reservations) is not list:"},{"line_number":1705,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_reservations\"] is not a list.\u0027)"},{"line_number":1706,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        with volume.obj_as_admin():"}],"source_content_type":"text/x-python","patch_set":10,"id":"adc7fe10_834122e7","line":1705,"range":{"start_line":1705,"start_character":21,"end_line":1705,"end_character":73},"in_reply_to":"1056e064_1ebdcd74","updated":"2024-02-16 17:22:17.000000000","message":"Done","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":1705,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_reservations\"] is not a list.\u0027)"},{"line_number":1706,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        with volume.obj_as_admin():"},{"line_number":1709,"context_line":"            del volume.admin_metadata[\u0027extend_new_size\u0027]"},{"line_number":1710,"context_line":"            del volume.admin_metadata[\u0027extend_reservations\u0027]"},{"line_number":1711,"context_line":"            volume.save()"},{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"        self.volume_rpcapi.extend_volume_completion(context, volume, new_size,"},{"line_number":1714,"context_line":"                                                    reservations, error)"}],"source_content_type":"text/x-python","patch_set":10,"id":"cf56bb52_29c661cb","line":1711,"range":{"start_line":1708,"start_character":8,"end_line":1711,"end_character":25},"updated":"2024-02-14 13:00:30.000000000","message":"not sure if this is the right way to remove it but i don\u0027t see any precedent in the code for it","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"dfebae175adc516d79d87d51061895e3774ae05f","unresolved":true,"context_lines":[{"line_number":1705,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_reservations\"] is not a list.\u0027)"},{"line_number":1706,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        with volume.obj_as_admin():"},{"line_number":1709,"context_line":"            del volume.admin_metadata[\u0027extend_new_size\u0027]"},{"line_number":1710,"context_line":"            del volume.admin_metadata[\u0027extend_reservations\u0027]"},{"line_number":1711,"context_line":"            volume.save()"},{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"        self.volume_rpcapi.extend_volume_completion(context, volume, new_size,"},{"line_number":1714,"context_line":"                                                    reservations, error)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dba8fbeb_8de6fd29","line":1711,"range":{"start_line":1708,"start_character":8,"end_line":1711,"end_character":25},"in_reply_to":"cf56bb52_29c661cb","updated":"2024-02-16 15:53:32.000000000","message":"So, del removes the keys from the dictionary (I could also use .pop() if that is a better fit), and volume.save will notice the change and remove them from the database.\n\nWithin the volume object I found a few cases where admin_metadata keys are removed directly from the database with `db.volume_admin_metadata_delete`, but this probably shouldn\u0027t be used outside the object.\n\nThere is also a method `delete_metadata_key` that removes keys from regular metadata and also deletes them directly from the db, without the need for volume.save():\nhttps://github.com/openstack/cinder/blob/master/cinder/objects/volume.py#L513\n\nDoes it make sense to introduce a similar method for admin_metadata?","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02adf29d2aa7fdd55c2ff436d08dfe96441edf6f","unresolved":true,"context_lines":[{"line_number":1705,"context_line":"            msg \u003d _(\u0027admin_metadata[\"extend_reservations\"] is not a list.\u0027)"},{"line_number":1706,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":1707,"context_line":""},{"line_number":1708,"context_line":"        with volume.obj_as_admin():"},{"line_number":1709,"context_line":"            del volume.admin_metadata[\u0027extend_new_size\u0027]"},{"line_number":1710,"context_line":"            del volume.admin_metadata[\u0027extend_reservations\u0027]"},{"line_number":1711,"context_line":"            volume.save()"},{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"        self.volume_rpcapi.extend_volume_completion(context, volume, new_size,"},{"line_number":1714,"context_line":"                                                    reservations, error)"}],"source_content_type":"text/x-python","patch_set":10,"id":"45297568_15a5eec8","line":1711,"range":{"start_line":1708,"start_character":8,"end_line":1711,"end_character":25},"in_reply_to":"dba8fbeb_8de6fd29","updated":"2024-02-23 18:33:39.000000000","message":"deleting from DB doesn\u0027t benefit us since we also need the object to be updated for the rest of the operation so the approach in delete_metadata_key looks good and abstracts the work for us\n\nmaybe a new method, delete_admin_metadata_key (or keys) in the volume OVO to remove single or multiple keys which we can call here","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"}],"cinder/volume/manager.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2967,"context_line":""},{"line_number":2968,"context_line":"        attachments \u003d volume.volume_attachment or []"},{"line_number":2969,"context_line":"        # If instance_uuid field is None on attachment, it means the"},{"line_number":2970,"context_line":"        # request is coming from glance and not nova"},{"line_number":2971,"context_line":"        instance_uuids \u003d [attachment.instance_uuid"},{"line_number":2972,"context_line":"                          for attachment in attachments"},{"line_number":2973,"context_line":"                          if attachment.instance_uuid]"}],"source_content_type":"text/x-python","patch_set":3,"id":"68022d16_a36abd93","line":2970,"updated":"2023-02-15 04:23:09.000000000","message":"nit: start Glance and Nova names with capital letters.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":2967,"context_line":""},{"line_number":2968,"context_line":"        attachments \u003d volume.volume_attachment or []"},{"line_number":2969,"context_line":"        # If instance_uuid field is None on attachment, it means the"},{"line_number":2970,"context_line":"        # request is coming from glance and not nova"},{"line_number":2971,"context_line":"        instance_uuids \u003d [attachment.instance_uuid"},{"line_number":2972,"context_line":"                          for attachment in attachments"},{"line_number":2973,"context_line":"                          if attachment.instance_uuid]"}],"source_content_type":"text/x-python","patch_set":3,"id":"6487f4a0_5ca52f2e","line":2970,"in_reply_to":"68022d16_a36abd93","updated":"2023-02-15 09:53:03.000000000","message":"This comment was just copied from the the code it replaced, but I updated it now.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2968,"context_line":"        attachments \u003d volume.volume_attachment or []"},{"line_number":2969,"context_line":"        # If instance_uuid field is None on attachment, it means the"},{"line_number":2970,"context_line":"        # request is coming from glance and not nova"},{"line_number":2971,"context_line":"        instance_uuids \u003d [attachment.instance_uuid"},{"line_number":2972,"context_line":"                          for attachment in attachments"},{"line_number":2973,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2974,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"229f0cd9_20512469","line":2971,"updated":"2023-02-15 04:23:09.000000000","message":"nit: instance_uuids is only used in #2999. To improve readiness you could move this  list comprehension closer to its usage. Also you don\u0027t need to get the instances_uuids if you fail in line #2989.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":true,"context_lines":[{"line_number":2968,"context_line":"        attachments \u003d volume.volume_attachment or []"},{"line_number":2969,"context_line":"        # If instance_uuid field is None on attachment, it means the"},{"line_number":2970,"context_line":"        # request is coming from glance and not nova"},{"line_number":2971,"context_line":"        instance_uuids \u003d [attachment.instance_uuid"},{"line_number":2972,"context_line":"                          for attachment in attachments"},{"line_number":2973,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2974,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ea41322e_374059c3","line":2971,"in_reply_to":"229f0cd9_20512469","updated":"2023-02-15 09:53:03.000000000","message":"Oh, I actually meant to also use `instance_uuids` instead of `attachments` in line #2983.\nGood that you saw this! I changed it now.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"efb0bcd48630b7b2c8af85cc171ceee08e59d192","unresolved":false,"context_lines":[{"line_number":2968,"context_line":"        attachments \u003d volume.volume_attachment or []"},{"line_number":2969,"context_line":"        # If instance_uuid field is None on attachment, it means the"},{"line_number":2970,"context_line":"        # request is coming from glance and not nova"},{"line_number":2971,"context_line":"        instance_uuids \u003d [attachment.instance_uuid"},{"line_number":2972,"context_line":"                          for attachment in attachments"},{"line_number":2973,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2974,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"84ac7c4b_a4d5eb43","line":2971,"in_reply_to":"ea41322e_374059c3","updated":"2023-08-02 13:45:08.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2978,"context_line":"            self.extend_volume_completion(context, volume, new_size,"},{"line_number":2979,"context_line":"                                          reservations, error\u003dFalse)"},{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"65449fc3_a404b797","line":2981,"updated":"2023-02-15 04:23:09.000000000","message":"** preconditions","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":2978,"context_line":"            self.extend_volume_completion(context, volume, new_size,"},{"line_number":2979,"context_line":"                                          reservations, error\u003dFalse)"},{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"754f150c_029e141d","line":2981,"in_reply_to":"65449fc3_a404b797","updated":"2023-02-15 09:53:03.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"c949f332_3a71ac9d","line":2983,"updated":"2023-02-15 04:23:09.000000000","message":"Should manager report a error in case volumes isn\u0027t attached to any Nova instance?","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"efb0bcd48630b7b2c8af85cc171ceee08e59d192","unresolved":true,"context_lines":[{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"df102e77_3da2d2c0","line":2983,"in_reply_to":"2c4d20d3_45fed996","updated":"2023-08-02 13:45:08.000000000","message":"So, do you agree, or do you think","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"fb276b5b033578a84a055ce976d51a7ec2906ffe","unresolved":false,"context_lines":[{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"f3db886f_f6ec4e3d","line":2983,"in_reply_to":"99f2ea36_b154d01e","updated":"2023-08-16 15:27:14.000000000","message":"The line in question has been moved to https://review.opendev.org/c/openstack/cinder/+/891602, so I\u0027m marking this comment as resolved here.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":true,"context_lines":[{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"2c4d20d3_45fed996","line":2983,"in_reply_to":"c949f332_3a71ac9d","updated":"2023-02-15 09:53:03.000000000","message":"If the volume driver tells Cinder to wait for feedback from Nova about an attached volume, but the volume is not actually attached to an instance, then I believe it should be an error.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"ea9bf1b0e7783cc510d45c32b62550c20743b4be","unresolved":true,"context_lines":[{"line_number":2980,"context_line":"        else:"},{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"}],"source_content_type":"text/x-python","patch_set":3,"id":"99f2ea36_b154d01e","line":2983,"in_reply_to":"df102e77_3da2d2c0","updated":"2023-08-02 13:47:05.000000000","message":"Sorry, I missed this draft.\nI was going to ask: do you think I should change it?","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"},{"line_number":2987,"context_line":"                self.extend_volume_completion(context, volume, new_size,"}],"source_content_type":"text/x-python","patch_set":3,"id":"0509ffff_bd2f756a","line":2984,"updated":"2023-02-15 04:23:09.000000000","message":"** to a single instance","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":2981,"context_line":"            # If feedback is required, we check precondicions and set the"},{"line_number":2982,"context_line":"            # required admin metadata before notifying Nova."},{"line_number":2983,"context_line":"            if len(attachments) !\u003d 1:"},{"line_number":2984,"context_line":"                LOG.error(\u0027Volume must be attached to single instance. Volume\u0027"},{"line_number":2985,"context_line":"                          \u0027%(vol)s is attached to %(n)i.\u0027,"},{"line_number":2986,"context_line":"                          {\u0027vol\u0027: volume.id, \u0027n\u0027: len(attachments)})"},{"line_number":2987,"context_line":"                self.extend_volume_completion(context, volume, new_size,"}],"source_content_type":"text/x-python","patch_set":3,"id":"0fe2a627_dd2bb96b","line":2984,"in_reply_to":"0509ffff_bd2f756a","updated":"2023-02-15 09:53:03.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2994,"context_line":"                })"},{"line_number":2995,"context_line":"                volume.save()"},{"line_number":2996,"context_line":""},{"line_number":2997,"context_line":"        # If we are using glance cinder store, we should not send any"},{"line_number":2998,"context_line":"        # external events to nova"},{"line_number":2999,"context_line":"        if instance_uuids:"},{"line_number":3000,"context_line":"            nova_api \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":3,"id":"89de718b_dbe4f590","line":2997,"updated":"2023-02-15 04:23:09.000000000","message":"** Glance\n** Cinder","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":2994,"context_line":"                })"},{"line_number":2995,"context_line":"                volume.save()"},{"line_number":2996,"context_line":""},{"line_number":2997,"context_line":"        # If we are using glance cinder store, we should not send any"},{"line_number":2998,"context_line":"        # external events to nova"},{"line_number":2999,"context_line":"        if instance_uuids:"},{"line_number":3000,"context_line":"            nova_api \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":3,"id":"df5fee00_c918a88a","line":2997,"in_reply_to":"89de718b_dbe4f590","updated":"2023-02-15 09:53:03.000000000","message":"Again, this comment was already there, but I fixed it now anyway.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":2995,"context_line":"                volume.save()"},{"line_number":2996,"context_line":""},{"line_number":2997,"context_line":"        # If we are using glance cinder store, we should not send any"},{"line_number":2998,"context_line":"        # external events to nova"},{"line_number":2999,"context_line":"        if instance_uuids:"},{"line_number":3000,"context_line":"            nova_api \u003d compute.API()"},{"line_number":3001,"context_line":"            success \u003d nova_api.extend_volume(context, instance_uuids,"}],"source_content_type":"text/x-python","patch_set":3,"id":"04b98911_b92b5d32","line":2998,"updated":"2023-02-15 04:23:09.000000000","message":"Nova","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":false,"context_lines":[{"line_number":2995,"context_line":"                volume.save()"},{"line_number":2996,"context_line":""},{"line_number":2997,"context_line":"        # If we are using glance cinder store, we should not send any"},{"line_number":2998,"context_line":"        # external events to nova"},{"line_number":2999,"context_line":"        if instance_uuids:"},{"line_number":3000,"context_line":"            nova_api \u003d compute.API()"},{"line_number":3001,"context_line":"            success \u003d nova_api.extend_volume(context, instance_uuids,"}],"source_content_type":"text/x-python","patch_set":3,"id":"a4511dc8_cf6f6176","line":2998,"in_reply_to":"04b98911_b92b5d32","updated":"2023-02-15 09:53:03.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"98a4dd23469573e87c0090c462d3aa2e4ef67e7d","unresolved":true,"context_lines":[{"line_number":3040,"context_line":""},{"line_number":3041,"context_line":"        QUOTAS.commit(context, reservations, project_id\u003dproject_id)"},{"line_number":3042,"context_line":""},{"line_number":3043,"context_line":"        if not volume.volume_attachment:"},{"line_number":3044,"context_line":"            orig_volume_status \u003d \u0027available\u0027"},{"line_number":3045,"context_line":"        else:"},{"line_number":3046,"context_line":"            orig_volume_status \u003d \u0027in-use\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9219165e_caf49c3c","line":3043,"updated":"2023-02-15 04:23:09.000000000","message":"Why not use variable \"attachments\" here too?","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"efb0bcd48630b7b2c8af85cc171ceee08e59d192","unresolved":false,"context_lines":[{"line_number":3040,"context_line":""},{"line_number":3041,"context_line":"        QUOTAS.commit(context, reservations, project_id\u003dproject_id)"},{"line_number":3042,"context_line":""},{"line_number":3043,"context_line":"        if not volume.volume_attachment:"},{"line_number":3044,"context_line":"            orig_volume_status \u003d \u0027available\u0027"},{"line_number":3045,"context_line":"        else:"},{"line_number":3046,"context_line":"            orig_volume_status \u003d \u0027in-use\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ea13971_716411a6","line":3043,"in_reply_to":"6c2cc246_2074be31","updated":"2023-08-02 13:45:08.000000000","message":"Done","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7817988936ca023b514c0b0bf131ddf30e862f82","unresolved":true,"context_lines":[{"line_number":3040,"context_line":""},{"line_number":3041,"context_line":"        QUOTAS.commit(context, reservations, project_id\u003dproject_id)"},{"line_number":3042,"context_line":""},{"line_number":3043,"context_line":"        if not volume.volume_attachment:"},{"line_number":3044,"context_line":"            orig_volume_status \u003d \u0027available\u0027"},{"line_number":3045,"context_line":"        else:"},{"line_number":3046,"context_line":"            orig_volume_status \u003d \u0027in-use\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c2cc246_2074be31","line":3043,"in_reply_to":"9219165e_caf49c3c","updated":"2023-02-15 09:53:03.000000000","message":"This is a different method now, `attachments` isn\u0027t defined here.","commit_id":"debd5628931e876526fbeae510c5e6616109b70f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":2970,"context_line":"                          for attachment in attachments"},{"line_number":2971,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2972,"context_line":""},{"line_number":2973,"context_line":"        # If the volume is not attached to any instances, we should not send"},{"line_number":2974,"context_line":"        # external events to Nova"},{"line_number":2975,"context_line":"        if instance_uuids:"},{"line_number":2976,"context_line":"            nova_api \u003d compute.API()"},{"line_number":2977,"context_line":"            nova_api.extend_volume(context, instance_uuids, volume.id)"},{"line_number":2978,"context_line":""},{"line_number":2979,"context_line":"    def extend_volume_completion(self,"},{"line_number":2980,"context_line":"                                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":10,"id":"8cdad9ba_e9914020","line":2977,"range":{"start_line":2973,"start_character":8,"end_line":2977,"end_character":70},"updated":"2024-02-14 13:00:30.000000000","message":"from what i understand here, we are just introducing the new extend_volume_completion action and keeping the old flow the way as it is.\n\nOn L#2963, we are calling the extend_volume_completion method which will be later called by nova in the later patches?","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"dfebae175adc516d79d87d51061895e3774ae05f","unresolved":true,"context_lines":[{"line_number":2970,"context_line":"                          for attachment in attachments"},{"line_number":2971,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2972,"context_line":""},{"line_number":2973,"context_line":"        # If the volume is not attached to any instances, we should not send"},{"line_number":2974,"context_line":"        # external events to Nova"},{"line_number":2975,"context_line":"        if instance_uuids:"},{"line_number":2976,"context_line":"            nova_api \u003d compute.API()"},{"line_number":2977,"context_line":"            nova_api.extend_volume(context, instance_uuids, volume.id)"},{"line_number":2978,"context_line":""},{"line_number":2979,"context_line":"    def extend_volume_completion(self,"},{"line_number":2980,"context_line":"                                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9257536c_b3c68635","line":2977,"range":{"start_line":2973,"start_character":8,"end_line":2977,"end_character":70},"in_reply_to":"8cdad9ba_e9914020","updated":"2024-02-16 15:53:32.000000000","message":"Yes, the extend_volume_completion method will later be called by nova externally (though, only if the volume status is \"extending\").\n\nBut it will also continue to be called directly, if the driver is able to extend the volume locally.","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02adf29d2aa7fdd55c2ff436d08dfe96441edf6f","unresolved":false,"context_lines":[{"line_number":2970,"context_line":"                          for attachment in attachments"},{"line_number":2971,"context_line":"                          if attachment.instance_uuid]"},{"line_number":2972,"context_line":""},{"line_number":2973,"context_line":"        # If the volume is not attached to any instances, we should not send"},{"line_number":2974,"context_line":"        # external events to Nova"},{"line_number":2975,"context_line":"        if instance_uuids:"},{"line_number":2976,"context_line":"            nova_api \u003d compute.API()"},{"line_number":2977,"context_line":"            nova_api.extend_volume(context, instance_uuids, volume.id)"},{"line_number":2978,"context_line":""},{"line_number":2979,"context_line":"    def extend_volume_completion(self,"},{"line_number":2980,"context_line":"                                 context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f2bb7400_db65323a","line":2977,"range":{"start_line":2973,"start_character":8,"end_line":2977,"end_character":70},"in_reply_to":"9257536c_b3c68635","updated":"2024-02-23 18:33:39.000000000","message":"sorry i meant L#2926\n\nokay makes sense to me","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"716e821cbd489890c3fb0d697ca11c88fd214a85","unresolved":true,"context_lines":[{"line_number":279,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume\u0027, volume\u003dvolume, new_size\u003dnew_size,"},{"line_number":280,"context_line":"                   reservations\u003dreservations)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def extend_volume_completion(self, ctxt, volume, new_size, reservations,"},{"line_number":283,"context_line":"                                 error):"},{"line_number":284,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"},{"line_number":285,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume_completion\u0027, volume\u003dvolume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1097307c_f2d97f29","line":282,"range":{"start_line":282,"start_character":8,"end_line":282,"end_character":32},"updated":"2024-02-14 13:00:30.000000000","message":"this requires rpc version bump","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"},{"author":{"_account_id":34859,"name":"Konrad Gube","email":"konrad.gube@cloudandheat.com","username":"kgube"},"change_message_id":"7ee3cbd37b53d4359e098edd3e7a395bd15676a1","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume\u0027, volume\u003dvolume, new_size\u003dnew_size,"},{"line_number":280,"context_line":"                   reservations\u003dreservations)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def extend_volume_completion(self, ctxt, volume, new_size, reservations,"},{"line_number":283,"context_line":"                                 error):"},{"line_number":284,"context_line":"        cctxt \u003d self._get_cctxt(volume.service_topic_queue)"},{"line_number":285,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume_completion\u0027, volume\u003dvolume,"}],"source_content_type":"text/x-python","patch_set":10,"id":"833bcd90_63ab65f4","line":282,"range":{"start_line":282,"start_character":8,"end_line":282,"end_character":32},"in_reply_to":"1097307c_f2d97f29","updated":"2024-02-16 17:22:17.000000000","message":"Done","commit_id":"0578dcfab451b6f23976df088ad46d1f3b2871d7"}]}
