)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":true,"context_lines":[{"line_number":10,"context_line":"of volume-backed instances by leveraging cinder functionality to"},{"line_number":11,"context_line":"do so."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint volume-backed-server-rebuild"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Rajat Dhasmana \u003crajatdhasmana@gmail.com\u003e"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"c7475c6d_c4569e18","line":13,"updated":"2022-08-29 09:34:20.000000000","message":"you can add\nCloses-Bug: #1482040","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":10,"context_line":"of volume-backed instances by leveraging cinder functionality to"},{"line_number":11,"context_line":"do so."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint volume-backed-server-rebuild"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Co-Authored-By: Rajat Dhasmana \u003crajatdhasmana@gmail.com\u003e"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"95564cd5_5c3ef147","line":13,"in_reply_to":"c7475c6d_c4569e18","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"30ba9eb6_8fba50f8","updated":"2022-02-28 16:17:12.000000000","message":"Thanks Dan.","commit_id":"dc1ea9306ec20fac7538adf509a55bf4d9480c79"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"46c50d0d4994d96c043e30c5291875a18641459a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"00324d1c_5506c8bb","updated":"2022-03-02 20:50:18.000000000","message":"recheck\n\nUnrelated failure in nova-live-migration","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"1292dea6_b52d7c87","updated":"2022-03-23 11:00:40.000000000","message":"Thanks Dan","commit_id":"53c564ee21e5313d029f3f30bed3457b6f37d479"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6388277acfa208d3e4a1a8bbd550fccbe9daccfc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1f3d314a_3fa14731","updated":"2022-05-02 08:11:15.000000000","message":"Thanks for the review Alexey, please find the explanation inline, hope it helps.","commit_id":"83f152c22bfbaef0b5431ddaad897d9e0ba298f9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4d2a75081e389653093847442312be4da1b73404","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"32f38d56_69027fab","updated":"2022-05-19 06:39:56.000000000","message":"recheck","commit_id":"83f152c22bfbaef0b5431ddaad897d9e0ba298f9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"91abf7b92856ae82722bde94364db78b5914039d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"8dfeec5c_4a4ac164","updated":"2022-08-26 10:24:34.000000000","message":"this also looks ok. however we need to update the api refe and rebuild docs to expalin this new feature","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"83d5e9ef674ee026f32004eec614ca22b08f11ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"a43a77b9_201fe4a8","updated":"2022-08-26 21:02:01.000000000","message":"Haven\u0027t added doc changes yet","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"8ff2ae36_5dc90b3f","updated":"2022-08-29 11:03:46.000000000","message":"I finished with the review I\u0027m -1 mostly due to the missing api ref update. ","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"3f432d0d_1681be7a","updated":"2022-08-29 09:34:20.000000000","message":"I only looked at the code not the test code yet. I will do that next. But I already found some missing api-ref updates so I publishing my comments while I dig into the func test to help do things in parallel.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ca44196a71ec9a03c6658a48f8ce678962f6399","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"7e3d9a18_e575eaef","updated":"2022-08-29 22:03:51.000000000","message":"I have a couple fixes lined up and will push when I\u0027m done running locally.","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"abb6ec51_a692fbba","updated":"2022-08-30 09:07:05.000000000","message":"Just minor things inline. As this is the top of the series you can fix them here directly. But if we are short on time for FF then let me know and I can change my -1 to a +2 and solve the remaining nits in a follow up.","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27de4c3d272d18fb140932cb211702ae296a320f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"4c1abd3d_88b0074b","updated":"2022-08-30 15:07:04.000000000","message":"over all i agree with gibi btu the rest looks fine","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"26ce548291298c92c64a7ab4710795facb695f1f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"207b9adb_c51686a2","updated":"2022-08-30 06:26:16.000000000","message":"recheck\n\nPOST_FAILURE in nova-live-migration job","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3d9ca5a79065f8a9eab6b92898af4f7886593b8c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":28,"id":"1f083ce7_225e9b9a","updated":"2022-08-30 17:11:29.000000000","message":"recheck pypi fail","commit_id":"fe1a83fc35eb9b95077c22b0a9dfd013f54cc948"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bd86abe0e7817c1aeb695be4557af738e274e495","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"f55d338b_148dea15","updated":"2022-08-31 06:04:07.000000000","message":"recheck\n\nunrelated nova-multi-cell failed\nDetails: {\u0027code\u0027: 400, \u0027message\u0027: \u0027Compute host ubuntu-focal-rax-dfw-0030909226 could not be found.\u0027}","commit_id":"cbed7b86a329465d08a502927f15e86eb3de7cca"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"361ccc91cd80b0e045e8f34f1cc753f86708c5d9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"9e5a30ca_8c037eea","updated":"2022-08-30 20:21:15.000000000","message":"recheck unrelated unshelve fail","commit_id":"cbed7b86a329465d08a502927f15e86eb3de7cca"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd79c16b5993bea5ce65c77d0ef2e68c3bccbe1a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"fbe445e4_87c8b34b","updated":"2022-08-31 12:05:54.000000000","message":"LGTM, but I leave Sean to look at it too.","commit_id":"2c94fe585ef4da89e58afbc66dc1c5e715002287"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f5489d9b7a5ba68a4ee1bc1b61f63a8a9cd4aefe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":30,"id":"a81724a0_af15e46b","updated":"2022-08-31 12:02:54.000000000","message":"Looks good to me","commit_id":"2c94fe585ef4da89e58afbc66dc1c5e715002287"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"5e5cda50d8cb336b73c9675c495df2d2a446d663","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"5fd4aa40_3166fbdc","updated":"2022-08-31 13:02:07.000000000","message":"eventually.","commit_id":"45c5b80fd076d0017f957a2150d7496f6d4a4fcf"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"36e7c9ec5687159e4eb6f451b99afcd36b5fc6c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"303ba386_10420a68","updated":"2022-08-31 20:15:05.000000000","message":"recheck\n\nhttps://review.opendev.org/c/openstack/nova/+/855378 merged","commit_id":"45c5b80fd076d0017f957a2150d7496f6d4a4fcf"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"dba548a8c0d8273794ed459f5fc4ee5888d3fb5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"858e67ee_8b02ed39","updated":"2022-09-01 04:01:51.000000000","message":"recheck\n\nunrelated block storage cleanup test failure","commit_id":"45c5b80fd076d0017f957a2150d7496f6d4a4fcf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"746d4ec3aa370d50c262a76c9efaefc4068c180b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"04eda064_20f399d9","updated":"2022-08-31 14:52:21.000000000","message":"recheck test_unshelve_to_specific_host","commit_id":"45c5b80fd076d0017f957a2150d7496f6d4a4fcf"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":true,"context_lines":[{"line_number":4018,"context_line":"  required: false"},{"line_number":4019,"context_line":"  type: string"},{"line_number":4020,"context_line":"imageRef_rebuild:"},{"line_number":4021,"context_line":"  description: |"},{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    If rebuilding a volume-backed server with a new image"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"217cb8f6_b943201a","line":4021,"updated":"2022-08-29 09:34:20.000000000","message":"Please update this","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":4018,"context_line":"  required: false"},{"line_number":4019,"context_line":"  type: string"},{"line_number":4020,"context_line":"imageRef_rebuild:"},{"line_number":4021,"context_line":"  description: |"},{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    If rebuilding a volume-backed server with a new image"}],"source_content_type":"text/x-yaml","patch_set":25,"id":"0e85117f_608fa216","line":4021,"in_reply_to":"217cb8f6_b943201a","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":4021,"context_line":"  description: |"},{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    To rebuild a volume-backed server with a new image, microversion"},{"line_number":4025,"context_line":"    2.94 needs to be provided in the request else the requet will"},{"line_number":4026,"context_line":"    fall back to old behaviour i.e. the API will return 400"},{"line_number":4027,"context_line":"    (for an image different from the image used when creating the volume)."},{"line_number":4028,"context_line":"    For non-volume-backed servers, specifying a new image will result"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"bedfd5a9_ecc65f0b","line":4025,"range":{"start_line":4024,"start_character":56,"end_line":4025,"end_character":8},"updated":"2022-08-30 09:07:05.000000000","message":"at least microversion 2.94","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    To rebuild a volume-backed server with a new image, microversion"},{"line_number":4025,"context_line":"    2.94 needs to be provided in the request else the requet will"},{"line_number":4026,"context_line":"    fall back to old behaviour i.e. the API will return 400"},{"line_number":4027,"context_line":"    (for an image different from the image used when creating the volume)."},{"line_number":4028,"context_line":"    For non-volume-backed servers, specifying a new image will result"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"2877a35a_bcb49ebb","line":4025,"range":{"start_line":4025,"start_character":54,"end_line":4025,"end_character":60},"updated":"2022-08-30 09:07:05.000000000","message":"request","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e8a6a6007dd3eb03ea47b70e85e95c96e1f128a2","unresolved":false,"context_lines":[{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    To rebuild a volume-backed server with a new image, microversion"},{"line_number":4025,"context_line":"    2.94 needs to be provided in the request else the requet will"},{"line_number":4026,"context_line":"    fall back to old behaviour i.e. the API will return 400"},{"line_number":4027,"context_line":"    (for an image different from the image used when creating the volume)."},{"line_number":4028,"context_line":"    For non-volume-backed servers, specifying a new image will result"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"76b313aa_e4afc2d0","line":4025,"range":{"start_line":4025,"start_character":54,"end_line":4025,"end_character":60},"in_reply_to":"2877a35a_bcb49ebb","updated":"2022-08-30 16:37:16.000000000","message":"Done","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e8a6a6007dd3eb03ea47b70e85e95c96e1f128a2","unresolved":false,"context_lines":[{"line_number":4021,"context_line":"  description: |"},{"line_number":4022,"context_line":"    The UUID of the image to rebuild for your server instance."},{"line_number":4023,"context_line":"    It must be a valid UUID otherwise API will return 400."},{"line_number":4024,"context_line":"    To rebuild a volume-backed server with a new image, microversion"},{"line_number":4025,"context_line":"    2.94 needs to be provided in the request else the requet will"},{"line_number":4026,"context_line":"    fall back to old behaviour i.e. the API will return 400"},{"line_number":4027,"context_line":"    (for an image different from the image used when creating the volume)."},{"line_number":4028,"context_line":"    For non-volume-backed servers, specifying a new image will result"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"16f7f8b8_02305d10","line":4025,"range":{"start_line":4024,"start_character":56,"end_line":4025,"end_character":8},"in_reply_to":"bedfd5a9_ecc65f0b","updated":"2022-08-30 16:37:16.000000000","message":"Done","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"}],"api-ref/source/servers-actions.inc":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":true,"context_lines":[{"line_number":541,"context_line":"Specify the ``rebuild`` action in the request body."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"This operation recreates the root disk of the server."},{"line_number":544,"context_line":"For a volume-backed server, this operation keeps the contents of the volume."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"**Preconditions**"},{"line_number":547,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":25,"id":"57665cdc_c3b6ed01","line":544,"updated":"2022-08-29 09:34:20.000000000","message":"Please mention here that since the new microversion this is supported and it will reimage the volume","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":541,"context_line":"Specify the ``rebuild`` action in the request body."},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"This operation recreates the root disk of the server."},{"line_number":544,"context_line":"For a volume-backed server, this operation keeps the contents of the volume."},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"**Preconditions**"},{"line_number":547,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":25,"id":"a005d252_f2f6c14e","line":544,"in_reply_to":"57665cdc_c3b6ed01","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":true,"context_lines":[{"line_number":554,"context_line":"if the rebuild was successful or ``ERROR`` if the rebuild failed."},{"line_number":555,"context_line":""},{"line_number":556,"context_line":".. note:: There is a `known limitation`_ where the root disk is not"},{"line_number":557,"context_line":"   replaced for volume-backed instances during a rebuild."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":".. _known limitation: https://bugs.launchpad.net/nova/+bug/1482040"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":25,"id":"b77926be_b2993493","line":557,"updated":"2022-08-29 09:34:20.000000000","message":"update this too","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":554,"context_line":"if the rebuild was successful or ``ERROR`` if the rebuild failed."},{"line_number":555,"context_line":""},{"line_number":556,"context_line":".. note:: There is a `known limitation`_ where the root disk is not"},{"line_number":557,"context_line":"   replaced for volume-backed instances during a rebuild."},{"line_number":558,"context_line":""},{"line_number":559,"context_line":".. _known limitation: https://bugs.launchpad.net/nova/+bug/1482040"},{"line_number":560,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":25,"id":"b3d19928_094a0f30","line":557,"in_reply_to":"b77926be_b2993493","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"}],"doc/source/user/support-matrix.ini":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f5489d9b7a5ba68a4ee1bc1b61f63a8a9cd4aefe","unresolved":true,"context_lines":[{"line_number":339,"context_line":"  of a volume backed instance. This is available from microversion"},{"line_number":340,"context_line":"  2.93 and onwards."},{"line_number":341,"context_line":"cli\u003dopenstack server rebuild --reimage-boot-volume --image \u003cimage\u003e \u003cserver\u003e"},{"line_number":342,"context_line":"driver.libvirt-kvm-x86\u003dmissing"},{"line_number":343,"context_line":"driver.libvirt-kvm-aarch64\u003dmissing"},{"line_number":344,"context_line":"driver.libvirt-kvm-ppc64\u003dmissing"},{"line_number":345,"context_line":"driver.libvirt-kvm-s390x\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":30,"id":"9870a5d8_03b3d3aa","line":342,"range":{"start_line":342,"start_character":23,"end_line":342,"end_character":30},"updated":"2022-08-31 12:02:54.000000000","message":"this is complete as we have tempest tests passing","commit_id":"2c94fe585ef4da89e58afbc66dc1c5e715002287"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd79c16b5993bea5ce65c77d0ef2e68c3bccbe1a","unresolved":true,"context_lines":[{"line_number":339,"context_line":"  of a volume backed instance. This is available from microversion"},{"line_number":340,"context_line":"  2.93 and onwards."},{"line_number":341,"context_line":"cli\u003dopenstack server rebuild --reimage-boot-volume --image \u003cimage\u003e \u003cserver\u003e"},{"line_number":342,"context_line":"driver.libvirt-kvm-x86\u003dmissing"},{"line_number":343,"context_line":"driver.libvirt-kvm-aarch64\u003dmissing"},{"line_number":344,"context_line":"driver.libvirt-kvm-ppc64\u003dmissing"},{"line_number":345,"context_line":"driver.libvirt-kvm-s390x\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":30,"id":"a7026f36_cfeb434e","line":342,"range":{"start_line":342,"start_character":23,"end_line":342,"end_character":30},"in_reply_to":"9870a5d8_03b3d3aa","updated":"2022-08-31 12:05:54.000000000","message":"Yup, for sure, but this can be a FUP.","commit_id":"2c94fe585ef4da89e58afbc66dc1c5e715002287"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"553bcb99b1a683954f1340f1965799f5c68fae4b","unresolved":true,"context_lines":[{"line_number":343,"context_line":"driver.libvirt-kvm-aarch64\u003dcomplete"},{"line_number":344,"context_line":"driver.libvirt-kvm-ppc64\u003dcomplete"},{"line_number":345,"context_line":"driver.libvirt-kvm-s390x\u003dcomplete"},{"line_number":346,"context_line":"driver.libvirt-qemu-x86\u003dcomplete"},{"line_number":347,"context_line":"driver.libvirt-lxc\u003dunknown"},{"line_number":348,"context_line":"driver.vmware\u003dmissing"},{"line_number":349,"context_line":"driver.hyperv\u003dmissing"}],"source_content_type":"text/x-properties","patch_set":31,"id":"bb79aadb_f62e9436","line":346,"updated":"2022-08-31 12:06:45.000000000","message":"ok cool thanks for updating.","commit_id":"d5e30f921a466c481edfd241e2fc134e564f627d"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b64b1d75c25f44bcea11595beb1507474bababa4","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"            kwargs[\u0027hostname\u0027] \u003d rebuild_dict[\u0027hostname\u0027]"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.94\u0027):"},{"line_number":1232,"context_line":"            kwargs[\u0027reimage_boot_volume\u0027] \u003d True"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":"        for request_attribute, instance_attribute in attr_map.items():"},{"line_number":1235,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"c44dc39a_aac5a53a","line":1232,"updated":"2022-08-26 13:35:29.000000000","message":"At first I was like what? but the spec was approved this way. So the user express that the volume needs to be reimaged by simply using the new microversion. So this is OK","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"fa1988e97c974bb2f215b944427ab88999cc0dab","unresolved":false,"context_lines":[{"line_number":1229,"context_line":"            kwargs[\u0027hostname\u0027] \u003d rebuild_dict[\u0027hostname\u0027]"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        if api_version_request.is_supported(req, min_version\u003d\u00272.94\u0027):"},{"line_number":1232,"context_line":"            kwargs[\u0027reimage_boot_volume\u0027] \u003d True"},{"line_number":1233,"context_line":""},{"line_number":1234,"context_line":"        for request_attribute, instance_attribute in attr_map.items():"},{"line_number":1235,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"047e073e_42505637","line":1232,"in_reply_to":"c44dc39a_aac5a53a","updated":"2022-08-26 13:59:46.000000000","message":"Yes, to give us consistent behavior going forward. Rebuild is a rebuild now.","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"}],"nova/compute/api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ec41547aea46bbb84b935200cbb5eee85cef5bc9","unresolved":true,"context_lines":[{"line_number":3560,"context_line":"            volume_image_metadata \u003d volume.get(\u0027volume_image_metadata\u0027, {})"},{"line_number":3561,"context_line":"            orig_image_ref \u003d volume_image_metadata.get(\u0027image_id\u0027)"},{"line_number":3562,"context_line":""},{"line_number":3563,"context_line":"            if orig_image_ref !\u003d image_href:"},{"line_number":3564,"context_line":"                if \u0027reimage_boot_volume\u0027 in kwargs:"},{"line_number":3565,"context_line":"                    if not kwargs[\u0027reimage_boot_volume\u0027]:"},{"line_number":3566,"context_line":"                        # If the instance is volume-backed and"}],"source_content_type":"text/x-python","patch_set":1,"id":"07f8f326_3b284f4d","line":3563,"updated":"2022-02-24 18:09:59.000000000","message":"Per the comment on the previous patch, if the image-ref does not change, we won\u0027t check the \"reimage_boot_volume\" flag here (which is probably okay) but then we will call rebuild in manager in the else case, and then destroy the disk anyway. We need to make sure that manager never destroys the disk unless the flag is true, and if we keep the else case for the new api version, then we need to make sure the flag gets passed down as false.","commit_id":"4889bdf65c7268468330cfc055fecfa8782f1c73"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d647f14bd6933618a5e205e6a97aefb85cf83142","unresolved":false,"context_lines":[{"line_number":3560,"context_line":"            volume_image_metadata \u003d volume.get(\u0027volume_image_metadata\u0027, {})"},{"line_number":3561,"context_line":"            orig_image_ref \u003d volume_image_metadata.get(\u0027image_id\u0027)"},{"line_number":3562,"context_line":""},{"line_number":3563,"context_line":"            if orig_image_ref !\u003d image_href:"},{"line_number":3564,"context_line":"                if \u0027reimage_boot_volume\u0027 in kwargs:"},{"line_number":3565,"context_line":"                    if not kwargs[\u0027reimage_boot_volume\u0027]:"},{"line_number":3566,"context_line":"                        # If the instance is volume-backed and"}],"source_content_type":"text/x-python","patch_set":1,"id":"61b90a9d_fbfd3116","line":3563,"in_reply_to":"07f8f326_3b284f4d","updated":"2022-02-25 16:27:42.000000000","message":"Modified the API code to pass reimage_boot_volume flag down to the compute manager (via conductor).\n\nWe will set default in OSC to False","commit_id":"4889bdf65c7268468330cfc055fecfa8782f1c73"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":3622,"context_line":"                        # and hasn\u0027t opted for rebuilding the volume"},{"line_number":3623,"context_line":"                        # intentionally"},{"line_number":3624,"context_line":"                        raise exception.NovaException("},{"line_number":3625,"context_line":"                            _(\u0027Volume-backed instance can not be rebuild \u0027"},{"line_number":3626,"context_line":"                              \u0027unless \"reimage_boot_volume\" is True.\u0027))"},{"line_number":3627,"context_line":"                    else:"},{"line_number":3628,"context_line":"                        reimage_boot_volume \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"20b64eb3_41f482a1","line":3625,"range":{"start_line":3625,"start_character":65,"end_line":3625,"end_character":72},"updated":"2022-03-21 15:51:14.000000000","message":"rebuilt","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":3622,"context_line":"                        # and hasn\u0027t opted for rebuilding the volume"},{"line_number":3623,"context_line":"                        # intentionally"},{"line_number":3624,"context_line":"                        raise exception.NovaException("},{"line_number":3625,"context_line":"                            _(\u0027Volume-backed instance can not be rebuild \u0027"},{"line_number":3626,"context_line":"                              \u0027unless \"reimage_boot_volume\" is True.\u0027))"},{"line_number":3627,"context_line":"                    else:"},{"line_number":3628,"context_line":"                        reimage_boot_volume \u003d True"}],"source_content_type":"text/x-python","patch_set":15,"id":"81088fd1_260a8aa0","line":3625,"range":{"start_line":3625,"start_character":65,"end_line":3625,"end_character":72},"in_reply_to":"20b64eb3_41f482a1","updated":"2022-03-23 11:00:40.000000000","message":"Done","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"50930a64ee23fef125449403df3fe57842275d40","unresolved":true,"context_lines":[{"line_number":3616,"context_line":"            if orig_image_ref !\u003d image_href:"},{"line_number":3617,"context_line":"                if \u0027reimage_boot_volume\u0027 in kwargs:"},{"line_number":3618,"context_line":"                    if not kwargs[\u0027reimage_boot_volume\u0027]:"},{"line_number":3619,"context_line":"                        # If the instance is volume-backed and"},{"line_number":3620,"context_line":"                        # reimage_boot_volume is False that means the user"},{"line_number":3621,"context_line":"                        # has requested this API with latest microversion"},{"line_number":3622,"context_line":"                        # and hasn\u0027t opted for rebuilding the volume"},{"line_number":3623,"context_line":"                        # intentionally"},{"line_number":3624,"context_line":"                        raise exception.NovaException("},{"line_number":3625,"context_line":"                            _(\u0027Volume-backed instance can not be rebuilt \u0027"},{"line_number":3626,"context_line":"                              \u0027unless \"reimage_boot_volume\" is True.\u0027))"},{"line_number":3627,"context_line":"                    else:"},{"line_number":3628,"context_line":"                        reimage_boot_volume \u003d True"},{"line_number":3629,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"2e43f6f8_0265cace","line":3626,"range":{"start_line":3619,"start_character":0,"end_line":3626,"end_character":71},"updated":"2022-04-29 13:40:33.000000000","message":"Do we really want to raise exception in this case? Maybe DEBUG or INFO message would work better? Am I missing something?","commit_id":"83f152c22bfbaef0b5431ddaad897d9e0ba298f9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6388277acfa208d3e4a1a8bbd550fccbe9daccfc","unresolved":true,"context_lines":[{"line_number":3616,"context_line":"            if orig_image_ref !\u003d image_href:"},{"line_number":3617,"context_line":"                if \u0027reimage_boot_volume\u0027 in kwargs:"},{"line_number":3618,"context_line":"                    if not kwargs[\u0027reimage_boot_volume\u0027]:"},{"line_number":3619,"context_line":"                        # If the instance is volume-backed and"},{"line_number":3620,"context_line":"                        # reimage_boot_volume is False that means the user"},{"line_number":3621,"context_line":"                        # has requested this API with latest microversion"},{"line_number":3622,"context_line":"                        # and hasn\u0027t opted for rebuilding the volume"},{"line_number":3623,"context_line":"                        # intentionally"},{"line_number":3624,"context_line":"                        raise exception.NovaException("},{"line_number":3625,"context_line":"                            _(\u0027Volume-backed instance can not be rebuilt \u0027"},{"line_number":3626,"context_line":"                              \u0027unless \"reimage_boot_volume\" is True.\u0027))"},{"line_number":3627,"context_line":"                    else:"},{"line_number":3628,"context_line":"                        reimage_boot_volume \u003d True"},{"line_number":3629,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"f384a48f_0c970c3b","line":3626,"range":{"start_line":3619,"start_character":0,"end_line":3626,"end_character":71},"in_reply_to":"2e43f6f8_0265cace","updated":"2022-05-02 08:11:15.000000000","message":"Yes we need to. This feature is a user opted one meaning the user needs to explicitly pass reimage_boot_volume parameter to rebuild a volume backed instance. This functionality didn\u0027t exist before and it is not something every user (who can request microversion 2.91) wants to do since it will destroy all contents of the existing volume and rewrite it with the new image. This is clearly explained and in the spec[1] (in the comment above, the exception message)\n\n[1] https://specs.openstack.org/openstack/nova-specs/specs/yoga/approved/volume-backed-server-rebuild.html#proposed-change","commit_id":"83f152c22bfbaef0b5431ddaad897d9e0ba298f9"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"a86d08caa1354fd9e7cd9a49f407cdc0cca32e74","unresolved":false,"context_lines":[{"line_number":3616,"context_line":"            if orig_image_ref !\u003d image_href:"},{"line_number":3617,"context_line":"                if \u0027reimage_boot_volume\u0027 in kwargs:"},{"line_number":3618,"context_line":"                    if not kwargs[\u0027reimage_boot_volume\u0027]:"},{"line_number":3619,"context_line":"                        # If the instance is volume-backed and"},{"line_number":3620,"context_line":"                        # reimage_boot_volume is False that means the user"},{"line_number":3621,"context_line":"                        # has requested this API with latest microversion"},{"line_number":3622,"context_line":"                        # and hasn\u0027t opted for rebuilding the volume"},{"line_number":3623,"context_line":"                        # intentionally"},{"line_number":3624,"context_line":"                        raise exception.NovaException("},{"line_number":3625,"context_line":"                            _(\u0027Volume-backed instance can not be rebuilt \u0027"},{"line_number":3626,"context_line":"                              \u0027unless \"reimage_boot_volume\" is True.\u0027))"},{"line_number":3627,"context_line":"                    else:"},{"line_number":3628,"context_line":"                        reimage_boot_volume \u003d True"},{"line_number":3629,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":18,"id":"d034d031_46c67649","line":3626,"range":{"start_line":3619,"start_character":0,"end_line":3626,"end_character":71},"in_reply_to":"f384a48f_0c970c3b","updated":"2022-05-02 12:25:35.000000000","message":"Ack","commit_id":"83f152c22bfbaef0b5431ddaad897d9e0ba298f9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b64b1d75c25f44bcea11595beb1507474bababa4","unresolved":true,"context_lines":[{"line_number":3536,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3537,"context_line":"                                    vm_states.ERROR])"},{"line_number":3538,"context_line":"    def rebuild(self, context, instance, image_href, admin_password,"},{"line_number":3539,"context_line":"                files_to_inject\u003dNone, **kwargs):"},{"line_number":3540,"context_line":"        \"\"\"Rebuild the given instance with the provided attributes.\"\"\""},{"line_number":3541,"context_line":"        files_to_inject \u003d files_to_inject or []"},{"line_number":3542,"context_line":"        metadata \u003d kwargs.get(\u0027metadata\u0027, {})"}],"source_content_type":"text/x-python","patch_set":22,"id":"c2a4c3c6_7aaee2e7","line":3539,"updated":"2022-08-26 13:35:29.000000000","message":"I would make reimage_boot_volume an explicit parameter if possible","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"83d5e9ef674ee026f32004eec614ca22b08f11ca","unresolved":false,"context_lines":[{"line_number":3536,"context_line":"    @check_instance_state(vm_state\u003d[vm_states.ACTIVE, vm_states.STOPPED,"},{"line_number":3537,"context_line":"                                    vm_states.ERROR])"},{"line_number":3538,"context_line":"    def rebuild(self, context, instance, image_href, admin_password,"},{"line_number":3539,"context_line":"                files_to_inject\u003dNone, **kwargs):"},{"line_number":3540,"context_line":"        \"\"\"Rebuild the given instance with the provided attributes.\"\"\""},{"line_number":3541,"context_line":"        files_to_inject \u003d files_to_inject or []"},{"line_number":3542,"context_line":"        metadata \u003d kwargs.get(\u0027metadata\u0027, {})"}],"source_content_type":"text/x-python","patch_set":22,"id":"1b75828a_490985c6","line":3539,"in_reply_to":"c2a4c3c6_7aaee2e7","updated":"2022-08-26 21:02:01.000000000","message":"Done","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27de4c3d272d18fb140932cb211702ae296a320f","unresolved":false,"context_lines":[{"line_number":3689,"context_line":"                    msg \u003d _(\u0027Unable to rebuild with a different image for a \u0027"},{"line_number":3690,"context_line":"                            \u0027volume-backed server.\u0027)"},{"line_number":3691,"context_line":"                    raise exception.ImageUnacceptable("},{"line_number":3692,"context_line":"                        image_id\u003dimage_href, reason\u003dmsg)"},{"line_number":3693,"context_line":"        else:"},{"line_number":3694,"context_line":"            orig_image_ref \u003d instance.image_ref"},{"line_number":3695,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"ac253b38_963d53a2","line":3692,"updated":"2022-08-30 15:07:04.000000000","message":"ack this is preserving the old behavior for the older microverions","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"}],"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":532,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":533,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    target \u003d messaging.Target(version\u003d\u00276.1\u0027)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":538,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"e56adff4_92ca37ea","line":535,"updated":"2022-02-25 20:11:56.000000000","message":"This goes in the previous patch with the actual interface change.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":532,"context_line":"class ComputeManager(manager.Manager):"},{"line_number":533,"context_line":"    \"\"\"Manages the running instances from creation to destruction.\"\"\""},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    target \u003d messaging.Target(version\u003d\u00276.1\u0027)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def __init__(self, compute_driver\u003dNone, *args, **kwargs):"},{"line_number":538,"context_line":"        \"\"\"Load configuration options and connect to the hypervisor.\"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"fb5ff4cb_66da45d1","line":535,"in_reply_to":"e56adff4_92ca37ea","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":402,"context_line":"        * ...  - Rename the instance_type argument of prep_resize() to flavor"},{"line_number":403,"context_line":"        * ...  - Rename the instance_type argument of resize_instance() to"},{"line_number":404,"context_line":"                 flavor"},{"line_number":405,"context_line":"        * 6.1 - Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":406,"context_line":"    \u0027\u0027\u0027"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"f46bf803_f98a7aac","line":405,"updated":"2022-02-25 20:11:56.000000000","message":"All these changes also need to go back in the previous patch where the interface is actually changed.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":402,"context_line":"        * ...  - Rename the instance_type argument of prep_resize() to flavor"},{"line_number":403,"context_line":"        * ...  - Rename the instance_type argument of resize_instance() to"},{"line_number":404,"context_line":"                 flavor"},{"line_number":405,"context_line":"        * 6.1 - Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":406,"context_line":"    \u0027\u0027\u0027"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    VERSION_ALIASES \u003d {"}],"source_content_type":"text/x-python","patch_set":6,"id":"0a648d11_ce504a82","line":405,"in_reply_to":"f46bf803_f98a7aac","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":466,"context_line":"        \"\"\""},{"line_number":467,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":468,"context_line":"        if client.can_send_version(\u00276.1\u0027):"},{"line_number":469,"context_line":"            return \u00276.1\u0027"},{"line_number":470,"context_line":"        else:"},{"line_number":471,"context_line":"            return old"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"cffd5494_32bb29d6","line":469,"updated":"2022-02-25 20:11:56.000000000","message":"This should not be updated (per the comment above). This will cause things that would have sent 6.0 to send 5.0 if 6.1 isn\u0027t allowed.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":466,"context_line":"        \"\"\""},{"line_number":467,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":468,"context_line":"        if client.can_send_version(\u00276.1\u0027):"},{"line_number":469,"context_line":"            return \u00276.1\u0027"},{"line_number":470,"context_line":"        else:"},{"line_number":471,"context_line":"            return old"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"f53b816f_7217b558","line":469,"in_reply_to":"cffd5494_32bb29d6","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":1081,"context_line":"            image_ref, orig_image_ref, orig_sys_metadata, bdms,"},{"line_number":1082,"context_line":"            recreate, on_shared_storage, host, node,"},{"line_number":1083,"context_line":"            preserve_ephemeral, migration, limits, request_spec, accel_uuids,"},{"line_number":1084,"context_line":"            reimage_boot_volume\u003dFalse):"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        # NOTE(edleafe): compute nodes can only use the dict form of limits."},{"line_number":1087,"context_line":"        if isinstance(limits, objects.SchedulerLimits):"}],"source_content_type":"text/x-python","patch_set":6,"id":"4b8d3c63_49519a40","line":1084,"updated":"2022-02-25 20:11:56.000000000","message":"It would be best to avoid this being optional in the rpc client, as that interface is baked into code. It needs to be optional on the wire (below) but here it is best if it\u0027s always passed explicitly.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"            image_ref, orig_image_ref, orig_sys_metadata, bdms,"},{"line_number":1082,"context_line":"            recreate, on_shared_storage, host, node,"},{"line_number":1083,"context_line":"            preserve_ephemeral, migration, limits, request_spec, accel_uuids,"},{"line_number":1084,"context_line":"            reimage_boot_volume\u003dFalse):"},{"line_number":1085,"context_line":""},{"line_number":1086,"context_line":"        # NOTE(edleafe): compute nodes can only use the dict form of limits."},{"line_number":1087,"context_line":"        if isinstance(limits, objects.SchedulerLimits):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5e21d51c_c4216fb0","line":1084,"in_reply_to":"4b8d3c63_49519a40","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":1100,"context_line":"        version \u003d \u00276.1\u0027"},{"line_number":1101,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1102,"context_line":"        if not client.can_send_version(version):"},{"line_number":1103,"context_line":"            del msg_args[\u0027reimage_boot_volume\u0027]"},{"line_number":1104,"context_line":"            version \u003d self._ver(ctxt, \u00275.12\u0027)"},{"line_number":1105,"context_line":"            if not client.can_send_version(version):"},{"line_number":1106,"context_line":"                del msg_args[\u0027accel_uuids\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"531865e8_45ff185b","line":1103,"updated":"2022-02-25 20:11:56.000000000","message":"In this case, I think we might want to raise an exception and not just silently drop it. In this case, the API user has specifically requested this action. If we just drop the flag here, then we\u0027re going to go do a bunch of work (the actual rebuild) without a key part of what they asked for. They\u0027ll wait for that to complete and then ssh to their instance, wondering why it wasn\u0027t actually re-imaged.\n\nSometimes we just drop a flag or parameter, or backlevel it to the older version. However in this case, we won\u0027t be able to do the actual thing they\u0027re asking for.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":1100,"context_line":"        version \u003d \u00276.1\u0027"},{"line_number":1101,"context_line":"        client \u003d self.router.client(ctxt)"},{"line_number":1102,"context_line":"        if not client.can_send_version(version):"},{"line_number":1103,"context_line":"            del msg_args[\u0027reimage_boot_volume\u0027]"},{"line_number":1104,"context_line":"            version \u003d self._ver(ctxt, \u00275.12\u0027)"},{"line_number":1105,"context_line":"            if not client.can_send_version(version):"},{"line_number":1106,"context_line":"                del msg_args[\u0027accel_uuids\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"a2b317c8_602514c3","line":1103,"in_reply_to":"531865e8_45ff185b","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":1102,"context_line":"        if not client.can_send_version(version):"},{"line_number":1103,"context_line":"            del msg_args[\u0027reimage_boot_volume\u0027]"},{"line_number":1104,"context_line":"            version \u003d self._ver(ctxt, \u00275.12\u0027)"},{"line_number":1105,"context_line":"            if not client.can_send_version(version):"},{"line_number":1106,"context_line":"                del msg_args[\u0027accel_uuids\u0027]"},{"line_number":1107,"context_line":"                version \u003d \u00275.0\u0027"},{"line_number":1108,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(host, instance),"}],"source_content_type":"text/x-python","patch_set":6,"id":"48848b2b_f66dc7c2","line":1105,"updated":"2022-02-25 20:11:56.000000000","message":"de-ident this (for convention).","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":1102,"context_line":"        if not client.can_send_version(version):"},{"line_number":1103,"context_line":"            del msg_args[\u0027reimage_boot_volume\u0027]"},{"line_number":1104,"context_line":"            version \u003d self._ver(ctxt, \u00275.12\u0027)"},{"line_number":1105,"context_line":"            if not client.can_send_version(version):"},{"line_number":1106,"context_line":"                del msg_args[\u0027accel_uuids\u0027]"},{"line_number":1107,"context_line":"                version \u003d \u00275.0\u0027"},{"line_number":1108,"context_line":"        cctxt \u003d client.prepare(server\u003d_compute_host(host, instance),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bb39c66d_7821c0af","line":1105,"in_reply_to":"48848b2b_f66dc7c2","updated":"2022-02-28 16:17:12.000000000","message":"Done but in resize_instance L#1160, this is defined as a nested statement.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"}],"nova/conductor/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":286,"context_line":"    1.21 - Added cache_images()"},{"line_number":287,"context_line":"    1.22 - Added confirm_snapshot_based_resize()"},{"line_number":288,"context_line":"    1.23 - Added revert_snapshot_based_resize()"},{"line_number":289,"context_line":"    1.24 - Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":290,"context_line":"    \"\"\""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"275bfbbf_158bfe93","line":289,"updated":"2022-02-25 20:11:56.000000000","message":"All the conductor RPC stuff could be its own patch with its own validation. That will also help inspect, at each change, that it\u0027s compatible backwards and forwards.","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    1.21 - Added cache_images()"},{"line_number":287,"context_line":"    1.22 - Added confirm_snapshot_based_resize()"},{"line_number":288,"context_line":"    1.23 - Added revert_snapshot_based_resize()"},{"line_number":289,"context_line":"    1.24 - Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":290,"context_line":"    \"\"\""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"c627317f_ce6e50a1","line":289,"in_reply_to":"275bfbbf_158bfe93","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":447,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":448,"context_line":"            version \u003d \u00271.12\u0027"},{"line_number":449,"context_line":"            del kw[\u0027reimage_boot_volume\u0027]"},{"line_number":450,"context_line":"            if not self.client.can_send_version(version):"},{"line_number":451,"context_line":"                version \u003d \u00271.8\u0027"},{"line_number":452,"context_line":"                del kw[\u0027request_spec\u0027]"},{"line_number":453,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":6,"id":"61f77988_1a5f0a4b","line":450,"updated":"2022-02-25 20:11:56.000000000","message":"Also de-indent. That pattern becomes a nice ladder where we can sometimes step through a bunch of versions without being n*4 spaces indented at the bottom :)","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        if not self.client.can_send_version(version):"},{"line_number":448,"context_line":"            version \u003d \u00271.12\u0027"},{"line_number":449,"context_line":"            del kw[\u0027reimage_boot_volume\u0027]"},{"line_number":450,"context_line":"            if not self.client.can_send_version(version):"},{"line_number":451,"context_line":"                version \u003d \u00271.8\u0027"},{"line_number":452,"context_line":"                del kw[\u0027request_spec\u0027]"},{"line_number":453,"context_line":"        cctxt \u003d self.client.prepare(version\u003dversion)"}],"source_content_type":"text/x-python","patch_set":6,"id":"c0b5b1f7_05fd535e","line":450,"in_reply_to":"61f77988_1a5f0a4b","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"}],"nova/objects/service.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"74c2369ba02e4d61618302358e3efda6afb00724","unresolved":true,"context_lines":[{"line_number":219,"context_line":"    # Version 62: Compute RPC v6.1:"},{"line_number":220,"context_line":"    # Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":221,"context_line":"    {\u0027compute_rpc\u0027: \u00276.1\u0027},"},{"line_number":222,"context_line":")"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"# This is used to raise an error at service startup if older than N-1 computes"},{"line_number":225,"context_line":"# are detected. Update this at the beginning of every release cycle to point to"}],"source_content_type":"text/x-python","patch_set":6,"id":"f2c8e46d_e4e19d35","line":222,"updated":"2022-02-25 20:11:56.000000000","message":"This would need to go back in the previous patch where you changed the compute rpc version (and where those version changes should be)","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"74ef22556ca2f19944dfa932acef3e3fb4c76dea","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    # Version 62: Compute RPC v6.1:"},{"line_number":220,"context_line":"    # Add reimage_boot_volume parameter to rebuild_instance()"},{"line_number":221,"context_line":"    {\u0027compute_rpc\u0027: \u00276.1\u0027},"},{"line_number":222,"context_line":")"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"# This is used to raise an error at service startup if older than N-1 computes"},{"line_number":225,"context_line":"# are detected. Update this at the beginning of every release cycle to point to"}],"source_content_type":"text/x-python","patch_set":6,"id":"2e1704e1_6986bf23","line":222,"in_reply_to":"f2c8e46d_e4e19d35","updated":"2022-02-28 16:17:12.000000000","message":"Done","commit_id":"1da376208484f56eca165cd6311dad0de3957fa8"}],"nova/tests/fixtures/cinder.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[{"line_number":366,"context_line":"        self.test.stub_out("},{"line_number":367,"context_line":"            \u0027nova.volume.cinder.API.terminate_connection\u0027,"},{"line_number":368,"context_line":"            lambda *args, **kwargs: None)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def volume_ids_for_instance(self, instance_uuid):"},{"line_number":371,"context_line":"        for volume_id, attachments in self.volume_to_attachment.items():"},{"line_number":372,"context_line":"            for attachment in attachments.values():"}],"source_content_type":"text/x-python","patch_set":25,"id":"12e735f0_e0e62087","line":369,"updated":"2022-08-29 11:03:46.000000000","message":"We can start intercepting \u0027nova.volume.cinder.API.reimage_volume \u0027 here to assert the new cinder interaction","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        self.test.stub_out("},{"line_number":367,"context_line":"            \u0027nova.volume.cinder.API.terminate_connection\u0027,"},{"line_number":368,"context_line":"            lambda *args, **kwargs: None)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"    def volume_ids_for_instance(self, instance_uuid):"},{"line_number":371,"context_line":"        for volume_id, attachments in self.volume_to_attachment.items():"},{"line_number":372,"context_line":"            for attachment in attachments.values():"}],"source_content_type":"text/x-python","patch_set":25,"id":"f38d64cf_332637e1","line":369,"in_reply_to":"12e735f0_e0e62087","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        def fake_reimage_volume(*args, **kwargs):"},{"line_number":331,"context_line":"            assert self.IMAGE_BACKED_VOL in args"},{"line_number":332,"context_line":"            assert \u0027reimage_reserved\u0027 in kwargs"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        self.test.stub_out("},{"line_number":335,"context_line":"            \u0027nova.volume.cinder.API.attachment_create\u0027, fake_attachment_create)"}],"source_content_type":"text/x-python","patch_set":27,"id":"5f58c90c_fcb7f734","line":332,"updated":"2022-08-30 09:07:05.000000000","message":"there is an ongoing debate about having asserts enabled in the test runs. I think today we don\u0027t have them enabled. So please raise a ValueError instead OR use the self.test.assert* calls to make an assert","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e8a6a6007dd3eb03ea47b70e85e95c96e1f128a2","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        def fake_reimage_volume(*args, **kwargs):"},{"line_number":331,"context_line":"            assert self.IMAGE_BACKED_VOL in args"},{"line_number":332,"context_line":"            assert \u0027reimage_reserved\u0027 in kwargs"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        self.test.stub_out("},{"line_number":335,"context_line":"            \u0027nova.volume.cinder.API.attachment_create\u0027, fake_attachment_create)"}],"source_content_type":"text/x-python","patch_set":27,"id":"398f6b91_7ecf779e","line":332,"in_reply_to":"0c995e27_6c9259e1","updated":"2022-08-30 16:37:16.000000000","message":"Done","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27de4c3d272d18fb140932cb211702ae296a320f","unresolved":true,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"        def fake_reimage_volume(*args, **kwargs):"},{"line_number":331,"context_line":"            assert self.IMAGE_BACKED_VOL in args"},{"line_number":332,"context_line":"            assert \u0027reimage_reserved\u0027 in kwargs"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        self.test.stub_out("},{"line_number":335,"context_line":"            \u0027nova.volume.cinder.API.attachment_create\u0027, fake_attachment_create)"}],"source_content_type":"text/x-python","patch_set":27,"id":"0c995e27_6c9259e1","line":332,"in_reply_to":"5f58c90c_fcb7f734","updated":"2022-08-30 15:07:04.000000000","message":"they are not enabled by default corect\n\ni added PYTHONOPTIMIZE to the pasenv so you can trun them on \nhttps://github.com/openstack/nova/blob/master/tox.ini#L39-L43","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"}],"nova/tests/fixtures/instance_events.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a6197f0f3ce8f89e94c91bed86b6fe2a09579ec6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"b2dd8453_954ce3a5","line":33,"updated":"2022-08-29 09:34:20.000000000","message":"can we do this in the test class simply by\n\n    self.useFixture(\n        fixtures.MockPatch(\n            \u0027nova.compute.manager.ComputeVirtAPI.wait_for_instance_event\u0027, \n            new\u003dlambda *args, **kwargs: yield))","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"812ec606c5752ba9d2afc12fc04e2b96f0e201a3","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"7e46b9aa_7152363d","line":33,"in_reply_to":"02e25dbb_737c4f67","updated":"2022-08-29 14:12:31.000000000","message":"I\u0027m not sure what the complaint is here. I initially did it this way because I was going to write some more tests for error scenarios that would require some extra behavior inside the fake, but didn\u0027t. Are you really concerned about providing a handler when we don\u0027t need to?","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5102bc25f955aa8f4a60a953087ea173482df7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"03a00fce_3fba14c6","line":33,"in_reply_to":"4de18076_c484a956","updated":"2022-08-30 13:59:57.000000000","message":"Ack","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e259db7ec893223af9f27b03c97f6fdbbe92fc24","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"4de18076_c484a956","line":33,"in_reply_to":"7e46b9aa_7152363d","updated":"2022-08-29 14:16:47.000000000","message":"At the current stat of the patch we don\u0027t need the fixture as a simple would have a same effect.\n\n        self.useFixture(\n            fixtures.MockPatch(\n                \"nova.compute.manager.ComputeVirtAPI.wait_for_instance_event\",\n            )\n        )\n        \nBut if you plan to add more tests that needs more configurable behavior then sure keep it as is.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":25,"id":"02e25dbb_737c4f67","line":33,"in_reply_to":"b2dd8453_954ce3a5","updated":"2022-08-29 11:03:46.000000000","message":"\u003e can we do this in the test class simply by\n\u003e \n\u003e     self.useFixture(\n\u003e         fixtures.MockPatch(\n\u003e             \u0027nova.compute.manager.ComputeVirtAPI.wait_for_instance_event\u0027, \n\u003e             new\u003dlambda *args, **kwargs: yield))\n\n//later\n\n1) the python parser needs help with yield in lamba. That would be lambda *args, **kwargs: (yield)\n2) but while this is equivalent with this fixture, the fixture itself tries to plug a generator to a context manager which does not fit.\n3) but we don\u0027t need to emulate a context manager we can simply replace wait_for_instance_event with a mock and that will simulate us that the event is received. I.e. making the test test_rebuild_volume_backed_larger_than_local_gb pass it is enough to have\n\n        self.useFixture(\n            fixtures.MockPatch(\n                \"nova.compute.manager.ComputeVirtAPI.wait_for_instance_event\",\n            )\n        )\n\nand nova.volume.cinder.API.reimage_volume mocked.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InstanceEventFixture(fixtures.Fixture):"},{"line_number":19,"context_line":"    def __init__(self, compute_manager):"},{"line_number":20,"context_line":"        super().__init__()"},{"line_number":21,"context_line":"        self.compute_manager \u003d compute_manager"}],"source_content_type":"text/x-python","patch_set":27,"id":"80d337d7_64ed94b4","line":18,"updated":"2022-08-30 09:07:05.000000000","message":"This class is unused","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5102bc25f955aa8f4a60a953087ea173482df7f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import fixtures"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"class InstanceEventFixture(fixtures.Fixture):"},{"line_number":19,"context_line":"    def __init__(self, compute_manager):"},{"line_number":20,"context_line":"        super().__init__()"},{"line_number":21,"context_line":"        self.compute_manager \u003d compute_manager"}],"source_content_type":"text/x-python","patch_set":27,"id":"381bb580_422de83b","line":18,"in_reply_to":"80d337d7_64ed94b4","updated":"2022-08-30 13:59:57.000000000","message":"Oh, I don\u0027t think I meant to even commit this. Per my comment earlier, I had planned to make this a more comprehensive thing, then realized I didn\u0027t need it for these tests and probably added it to git by accident. My bad.","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"}],"nova/tests/functional/api_sample_tests/api_samples/servers/v2.93/servers-list-resp.json.tpl":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":22,"context_line":"        }"},{"line_number":23,"context_line":"    ]"},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-smarty","patch_set":27,"id":"971a65ee_434614e0","line":25,"updated":"2022-08-30 09:07:05.000000000","message":"this is an unnecessary change","commit_id":"3a5829f19c71662c271a3112971c3110b94c073f"}],"nova/tests/functional/integrated_helpers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    @property"},{"line_number":85,"context_line":"    def router(self):"},{"line_number":86,"context_line":"        with lockutils.lock(\u0027compute-rpcapi-router\u0027):"},{"line_number":87,"context_line":"            target \u003d messaging.Target(topic\u003d\u0027compute\u0027, version\u003d\u00276.1\u0027)"},{"line_number":88,"context_line":"            version_cap \u003d self.version"},{"line_number":89,"context_line":"            serializer \u003d objects_base.NovaObjectSerializer()"},{"line_number":90,"context_line":"            rpc.get_client(target, version_cap, serializer)"}],"source_content_type":"text/x-python","patch_set":15,"id":"d332d6b0_bc81ea99","line":87,"updated":"2022-03-21 15:51:14.000000000","message":"Why are you bumping this? This only needs to change on major bumps, AFAIK.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    @property"},{"line_number":85,"context_line":"    def router(self):"},{"line_number":86,"context_line":"        with lockutils.lock(\u0027compute-rpcapi-router\u0027):"},{"line_number":87,"context_line":"            target \u003d messaging.Target(topic\u003d\u0027compute\u0027, version\u003d\u00276.1\u0027)"},{"line_number":88,"context_line":"            version_cap \u003d self.version"},{"line_number":89,"context_line":"            serializer \u003d objects_base.NovaObjectSerializer()"},{"line_number":90,"context_line":"            rpc.get_client(target, version_cap, serializer)"}],"source_content_type":"text/x-python","patch_set":15,"id":"648077bf_4013dc38","line":87,"in_reply_to":"d332d6b0_bc81ea99","updated":"2022-03-23 11:00:40.000000000","message":"Done","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"}],"nova/tests/functional/regressions/test_bug_1732947.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        rebuild_req_body \u003d {"},{"line_number":77,"context_line":"            \u0027rebuild\u0027: {"},{"line_number":78,"context_line":"                \u0027imageRef\u0027: \u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":79,"context_line":"                \u0027reimage_boot_volume\u0027: True"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        with mock.patch.object(self.compute.manager,"}],"source_content_type":"text/x-python","patch_set":15,"id":"f9bb025f_49c0a216","line":79,"updated":"2022-03-21 15:51:14.000000000","message":"Why are you modifying this test? These bug regression tests are supposed to check for very specific regressions we\u0027ve had in time. So changing the behavior to use the new path would be changing what these are testing.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        rebuild_req_body \u003d {"},{"line_number":77,"context_line":"            \u0027rebuild\u0027: {"},{"line_number":78,"context_line":"                \u0027imageRef\u0027: \u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,"},{"line_number":79,"context_line":"                \u0027reimage_boot_volume\u0027: True"},{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        with mock.patch.object(self.compute.manager,"}],"source_content_type":"text/x-python","patch_set":15,"id":"4697d310_3ac84064","line":79,"in_reply_to":"f9bb025f_49c0a216","updated":"2022-03-23 11:00:40.000000000","message":"Done\nI think these tests were failing with the initial logic","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":83,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":84,"context_line":"            server \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":85,"context_line":"                                       rebuild_req_body).body[\u0027server\u0027]"},{"line_number":86,"context_line":"            # The server image ref should still be blank for a volume-backed"}],"source_content_type":"text/x-python","patch_set":15,"id":"712ff165_fd8c39d6","line":83,"updated":"2022-03-21 15:51:14.000000000","message":"I think you should probably drop all the change to this patch, but just FYI, mocking compute manager from a functional test should generally be avoided.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            }"},{"line_number":81,"context_line":"        }"},{"line_number":82,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":83,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":84,"context_line":"            server \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":85,"context_line":"                                       rebuild_req_body).body[\u0027server\u0027]"},{"line_number":86,"context_line":"            # The server image ref should still be blank for a volume-backed"}],"source_content_type":"text/x-python","patch_set":15,"id":"5fc12773_15f28c88","line":83,"in_reply_to":"712ff165_fd8c39d6","updated":"2022-03-23 11:00:40.000000000","message":"Ack, I think this was done to avoid some failure happening in compute manager but i don\u0027t remember exactly, will revert to original.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"}],"nova/tests/functional/test_boot_from_volume.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                                 \u0027reimage_boot_volume\u0027: True}}"},{"line_number":142,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":143,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":144,"context_line":"            self.api.post_server_action(server_id, post_data)"},{"line_number":145,"context_line":"        self._wait_for_state_change(created_server, \u0027ACTIVE\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # Check that hypervisor local disk reporting is still 0"}],"source_content_type":"text/x-python","patch_set":15,"id":"bd1b9fe7_0e4f35ed","line":144,"updated":"2022-03-21 15:51:14.000000000","message":"I think we need to keep this test case and add another for the new microversion behavior. We still need to ensure that the old way works.\n\nAlso, mocking compute manager like this from a functional test is really undesirable, and also causes us to not really test this like it should be. You should be, whenever possible, mocking the cinder client or whatever to behave like it would in real life so we\u0027re running as much nova code in functional tests like this as possible.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                                 \u0027reimage_boot_volume\u0027: True}}"},{"line_number":142,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":143,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":144,"context_line":"            self.api.post_server_action(server_id, post_data)"},{"line_number":145,"context_line":"        self._wait_for_state_change(created_server, \u0027ACTIVE\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # Check that hypervisor local disk reporting is still 0"}],"source_content_type":"text/x-python","patch_set":15,"id":"87704b64_825042c8","line":144,"in_reply_to":"bd1b9fe7_0e4f35ed","updated":"2022-03-23 11:00:40.000000000","message":"Done","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[{"line_number":173,"context_line":"        self.api.microversion \u003d \u00272.94\u0027"},{"line_number":174,"context_line":"        image_uuid \u003d \u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027"},{"line_number":175,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":176,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":177,"context_line":"        self._wait_for_state_change(created_server, \u0027ACTIVE\u0027)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Check that hypervisor local disk reporting is still 0"}],"source_content_type":"text/x-python","patch_set":25,"id":"167b8047_51147df7","line":176,"updated":"2022-08-29 11:03:46.000000000","message":"this now fails with BuildAbortException as the func test tries to call reimage_volume on cinder. So either our cinder fixture needs to be extended to handle that OR this test needs to be transformed to do the rebuild without changing the image of the VM.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.api.microversion \u003d \u00272.94\u0027"},{"line_number":174,"context_line":"        image_uuid \u003d \u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027"},{"line_number":175,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":176,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":177,"context_line":"        self._wait_for_state_change(created_server, \u0027ACTIVE\u0027)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        # Check that hypervisor local disk reporting is still 0"}],"source_content_type":"text/x-python","patch_set":25,"id":"a3e1a49e_4bcf2fc3","line":176,"in_reply_to":"167b8047_51147df7","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"72c289fb1e6457a465222efd7e29ec3d40389847","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":141,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_rebuild_volume_backed_larger_than_local_gb(self):"},{"line_number":144,"context_line":"        # Verify no local disk is being used currently"},{"line_number":145,"context_line":"        self._verify_zero_local_gb_used()"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7c2d4cdc_60fb3ab0","line":143,"updated":"2022-08-29 21:55:03.000000000","message":"This test is failing now, and I can repro locally. Did this work for you when you submitted?","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f5102bc25f955aa8f4a60a953087ea173482df7f","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":141,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_rebuild_volume_backed_larger_than_local_gb(self):"},{"line_number":144,"context_line":"        # Verify no local disk is being used currently"},{"line_number":145,"context_line":"        self._verify_zero_local_gb_used()"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"b868af27_3c46c26a","line":143,"in_reply_to":"2737f161_2ea7b114","updated":"2022-08-30 13:59:57.000000000","message":"Yeah, idk, I didn\u0027t see any obvious reason why this had started failing either.","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":true,"context_lines":[{"line_number":140,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":141,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_rebuild_volume_backed_larger_than_local_gb(self):"},{"line_number":144,"context_line":"        # Verify no local disk is being used currently"},{"line_number":145,"context_line":"        self._verify_zero_local_gb_used()"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"2737f161_2ea7b114","line":143,"in_reply_to":"7c2d4cdc_60fb3ab0","updated":"2022-08-30 09:07:05.000000000","message":"interesting, it is passing for me locally. Previously it was failing due to calling the reimage on the cinder client, but in the recent PS the cinder fixture is extended to handle that","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"27de4c3d272d18fb140932cb211702ae296a320f","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        post_data \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: image_uuid}}"},{"line_number":141,"context_line":"        self.api.post_server_action(server_id, post_data)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_rebuild_volume_backed_larger_than_local_gb(self):"},{"line_number":144,"context_line":"        # Verify no local disk is being used currently"},{"line_number":145,"context_line":"        self._verify_zero_local_gb_used()"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"7127cca1_d3c7f5f2","line":143,"in_reply_to":"b868af27_3c46c26a","updated":"2022-08-30 15:07:04.000000000","message":"Done","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":1512,"context_line":"            }"},{"line_number":1513,"context_line":"        }"},{"line_number":1514,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":1515,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":1516,"context_line":"            self.api.microversion \u003d \u00272.91\u0027"},{"line_number":1517,"context_line":"            resp \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1518,"context_line":"                                     rebuild_req_body,"}],"source_content_type":"text/x-python","patch_set":15,"id":"6ba67553_92c6e857","line":1515,"updated":"2022-03-21 15:51:14.000000000","message":"Same deal here: Don\u0027t mock compute manager, and don\u0027t remove coverage for the existing/compatibility behavior - add more coverage for the new behavior.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":1512,"context_line":"            }"},{"line_number":1513,"context_line":"        }"},{"line_number":1514,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":1515,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027):"},{"line_number":1516,"context_line":"            self.api.microversion \u003d \u00272.91\u0027"},{"line_number":1517,"context_line":"            resp \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1518,"context_line":"                                     rebuild_req_body,"}],"source_content_type":"text/x-python","patch_set":15,"id":"8e8d39a1_a8af3f1e","line":1515,"in_reply_to":"6ba67553_92c6e857","updated":"2022-03-23 11:00:40.000000000","message":"Done","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"91abf7b92856ae82722bde94364db78b5914039d","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"        \"\"\""},{"line_number":1525,"context_line":"        # First create our server as normal."},{"line_number":1526,"context_line":"        server_req_body \u003d {"},{"line_number":1527,"context_line":"            # There is no imageRef because this is boot from volume."},{"line_number":1528,"context_line":"            \u0027server\u0027: {"},{"line_number":1529,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,  # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1530,"context_line":"                \u0027name\u0027: \u0027test_volume_backed_rebuild_different_image\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"9039da3e_11fc4b5c","line":1527,"range":{"start_line":1527,"start_character":11,"end_line":1527,"end_character":68},"updated":"2022-08-26 10:24:34.000000000","message":"this is boot from existing volume that is not the only way to boot\nfrom volume we can boot from volume from image too.","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"        \"\"\""},{"line_number":1525,"context_line":"        # First create our server as normal."},{"line_number":1526,"context_line":"        server_req_body \u003d {"},{"line_number":1527,"context_line":"            # There is no imageRef because this is boot from volume."},{"line_number":1528,"context_line":"            \u0027server\u0027: {"},{"line_number":1529,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,  # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1530,"context_line":"                \u0027name\u0027: \u0027test_volume_backed_rebuild_different_image\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"7c656735_7d409e14","line":1527,"range":{"start_line":1527,"start_character":11,"end_line":1527,"end_character":68},"in_reply_to":"45b8cc87_728e5631","updated":"2022-08-29 11:03:46.000000000","message":"Hm. I think we have an interesting case to test though. The generic rebuild logic compares the old image ref to the requested image ref to make decisions[1][2]. If the VM was booted from a volume the we don\u0027t have such image information available. But if the VM is booted with an image -\u003e volume bdm then that image ref is stored in the volume metadata[3]. Now during reimage I don\u0027t see we are updating that field to the new image.\n\n//later\n\nahh that should be done by the reimage cinder API request itself. So then we don\u0027t have to test that logic here in the func test. (the cinder logic is asserted in [4])\n\n[1]https://review.opendev.org/c/openstack/nova/+/830883/25/nova/compute/api.py#3672\n[2]https://review.opendev.org/c/openstack/nova/+/830883/25/nova/compute/api.py#3703\n[3]https://review.opendev.org/c/openstack/nova/+/830883/25/nova/compute/api.py#3669\n[4]https://review.opendev.org/c/openstack/tempest/+/831018/22/tempest/api/compute/servers/test_server_actions.py#925","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f5489d9b7a5ba68a4ee1bc1b61f63a8a9cd4aefe","unresolved":false,"context_lines":[{"line_number":1524,"context_line":"        \"\"\""},{"line_number":1525,"context_line":"        # First create our server as normal."},{"line_number":1526,"context_line":"        server_req_body \u003d {"},{"line_number":1527,"context_line":"            # There is no imageRef because this is boot from volume."},{"line_number":1528,"context_line":"            \u0027server\u0027: {"},{"line_number":1529,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,  # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1530,"context_line":"                \u0027name\u0027: \u0027test_volume_backed_rebuild_different_image\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ec790a73_79f1bef8","line":1527,"range":{"start_line":1527,"start_character":11,"end_line":1527,"end_character":68},"in_reply_to":"7c656735_7d409e14","updated":"2022-08-31 12:02:54.000000000","message":"Ack","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0509673dd066d83894ee5bfd4ba4ba3448a75c0b","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"        \"\"\""},{"line_number":1525,"context_line":"        # First create our server as normal."},{"line_number":1526,"context_line":"        server_req_body \u003d {"},{"line_number":1527,"context_line":"            # There is no imageRef because this is boot from volume."},{"line_number":1528,"context_line":"            \u0027server\u0027: {"},{"line_number":1529,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,  # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1530,"context_line":"                \u0027name\u0027: \u0027test_volume_backed_rebuild_different_image\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"a3b59b64_db04603a","line":1527,"range":{"start_line":1527,"start_character":11,"end_line":1527,"end_character":68},"in_reply_to":"9039da3e_11fc4b5c","updated":"2022-08-26 14:12:56.000000000","message":"...are you asking for another test or just commenting on this comment? Because I\u0027m pretty sure this was copied from existing L1479 above.","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dbc5f27c85773008c0f26b05bd17805e3faaaa66","unresolved":true,"context_lines":[{"line_number":1524,"context_line":"        \"\"\""},{"line_number":1525,"context_line":"        # First create our server as normal."},{"line_number":1526,"context_line":"        server_req_body \u003d {"},{"line_number":1527,"context_line":"            # There is no imageRef because this is boot from volume."},{"line_number":1528,"context_line":"            \u0027server\u0027: {"},{"line_number":1529,"context_line":"                \u0027flavorRef\u0027: \u00271\u0027,  # m1.tiny from DefaultFlavorsFixture,"},{"line_number":1530,"context_line":"                \u0027name\u0027: \u0027test_volume_backed_rebuild_different_image\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"45b8cc87_728e5631","line":1527,"range":{"start_line":1527,"start_character":11,"end_line":1527,"end_character":68},"in_reply_to":"a3b59b64_db04603a","updated":"2022-08-26 15:34:05.000000000","message":"just commeitning on this comment.\nas noted on line 1536 below the rebuild feature should not care as long as the vm has a root disk backed by a volume. im just not sure if this commet is always correct.\n\n\nat least in the api version fo the dbms i think we can have a reference to and image for the workflow where nov create a voluem form an image but may thats client side.\n\nanyway not asking for a new test.","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"91abf7b92856ae82722bde94364db78b5914039d","unresolved":true,"context_lines":[{"line_number":1533,"context_line":"                    \u0027boot_index\u0027: 0,"},{"line_number":1534,"context_line":"                    \u0027uuid\u0027:"},{"line_number":1535,"context_line":"                    nova_fixtures.CinderFixture.IMAGE_BACKED_VOL,"},{"line_number":1536,"context_line":"                    \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":1537,"context_line":"                    \u0027destination_type\u0027: \u0027volume\u0027"},{"line_number":1538,"context_line":"                }]"},{"line_number":1539,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":22,"id":"1cde5b57_3d9f2cf6","line":1536,"range":{"start_line":1536,"start_character":36,"end_line":1536,"end_character":42},"updated":"2022-08-26 10:24:34.000000000","message":"boot form volume from image would have a source type image \nwe also have the ability to use a snapshot as the soruce too.\n\n\nwe dont need all the permuations however since your rebild code does not care how the volume was created just that wwe are booting from it as the root disk","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"83d5e9ef674ee026f32004eec614ca22b08f11ca","unresolved":false,"context_lines":[{"line_number":1533,"context_line":"                    \u0027boot_index\u0027: 0,"},{"line_number":1534,"context_line":"                    \u0027uuid\u0027:"},{"line_number":1535,"context_line":"                    nova_fixtures.CinderFixture.IMAGE_BACKED_VOL,"},{"line_number":1536,"context_line":"                    \u0027source_type\u0027: \u0027volume\u0027,"},{"line_number":1537,"context_line":"                    \u0027destination_type\u0027: \u0027volume\u0027"},{"line_number":1538,"context_line":"                }]"},{"line_number":1539,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":22,"id":"87f85a7f_f04a6fa6","line":1536,"range":{"start_line":1536,"start_character":36,"end_line":1536,"end_character":42},"in_reply_to":"1cde5b57_3d9f2cf6","updated":"2022-08-26 21:02:01.000000000","message":"Ack","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b64b1d75c25f44bcea11595beb1507474bababa4","unresolved":true,"context_lines":[{"line_number":1549,"context_line":"        rebuild_image_ref \u003d self.glance.auto_disk_config_enabled_image[\u0027id\u0027]"},{"line_number":1550,"context_line":"        rebuild_req_body \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: rebuild_image_ref}}"},{"line_number":1551,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":1552,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027), \\"},{"line_number":1553,"context_line":"            mock.patch.object(self.compute.manager, \u0027_prep_block_device\u0027):"},{"line_number":1554,"context_line":"            self.api.microversion \u003d \u00272.94\u0027"},{"line_number":1555,"context_line":"            resp \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"2a44ea7d_06e486e1","line":1552,"updated":"2022-08-26 13:35:29.000000000","message":"This turns off the meat of the rebuild change.\n\nCould you create functional test where:\n1) server is booted from volume\n2) the server is rebuilt with the new microversion\n3) assert that nova interacted with cinder to re-image the volume","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0509673dd066d83894ee5bfd4ba4ba3448a75c0b","unresolved":true,"context_lines":[{"line_number":1549,"context_line":"        rebuild_image_ref \u003d self.glance.auto_disk_config_enabled_image[\u0027id\u0027]"},{"line_number":1550,"context_line":"        rebuild_req_body \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: rebuild_image_ref}}"},{"line_number":1551,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":1552,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027), \\"},{"line_number":1553,"context_line":"            mock.patch.object(self.compute.manager, \u0027_prep_block_device\u0027):"},{"line_number":1554,"context_line":"            self.api.microversion \u003d \u00272.94\u0027"},{"line_number":1555,"context_line":"            resp \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"a584c2f7_255de604","line":1552,"in_reply_to":"2a44ea7d_06e486e1","updated":"2022-08-26 14:12:56.000000000","message":"There\u0027s a test of cinder stuff at L1022 that does more mocking at the cinder client level, which could maybe be a model for what gibi is asking for.","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"83d5e9ef674ee026f32004eec614ca22b08f11ca","unresolved":false,"context_lines":[{"line_number":1549,"context_line":"        rebuild_image_ref \u003d self.glance.auto_disk_config_enabled_image[\u0027id\u0027]"},{"line_number":1550,"context_line":"        rebuild_req_body \u003d {\u0027rebuild\u0027: {\u0027imageRef\u0027: rebuild_image_ref}}"},{"line_number":1551,"context_line":"        with mock.patch.object(self.compute.manager,"},{"line_number":1552,"context_line":"                               \u0027_rebuild_volume_backed_instance\u0027), \\"},{"line_number":1553,"context_line":"            mock.patch.object(self.compute.manager, \u0027_prep_block_device\u0027):"},{"line_number":1554,"context_line":"            self.api.microversion \u003d \u00272.94\u0027"},{"line_number":1555,"context_line":"            resp \u003d self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":22,"id":"92ebb3cf_627b35bb","line":1552,"in_reply_to":"a584c2f7_255de604","updated":"2022-08-26 21:02:01.000000000","message":"Dan added them in new PS. thanks!","commit_id":"e68f4db7a7632144db6122c5218b967586f32aa9"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[{"line_number":1538,"context_line":"        server \u003d self.api.post_server(server_req_body)"},{"line_number":1539,"context_line":"        return self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":1540,"context_line":""},{"line_number":1541,"context_line":"    @mock.patch.object(volume.cinder.API, \u0027reimage_volume\u0027)"},{"line_number":1542,"context_line":"    def _test_rebuild(self, server, mock_rv):"},{"line_number":1543,"context_line":"        self.api.microversion \u003d \u00272.94\u0027"},{"line_number":1544,"context_line":"        # Now rebuild the server with a different image than was used to create"}],"source_content_type":"text/x-python","patch_set":25,"id":"5a736275_a6e84bb4","line":1541,"updated":"2022-08-29 11:03:46.000000000","message":"in the func test we tend to use the cinder fixture to assert the cinder interactions instead of direct mocking. Mocking is probably OK for one time interactions like fault injection. But I think the happy path should be provided by the cinder fixture so that other tests can use that behavior too","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":1538,"context_line":"        server \u003d self.api.post_server(server_req_body)"},{"line_number":1539,"context_line":"        return self._wait_for_state_change(server, \u0027ACTIVE\u0027)"},{"line_number":1540,"context_line":""},{"line_number":1541,"context_line":"    @mock.patch.object(volume.cinder.API, \u0027reimage_volume\u0027)"},{"line_number":1542,"context_line":"    def _test_rebuild(self, server, mock_rv):"},{"line_number":1543,"context_line":"        self.api.microversion \u003d \u00272.94\u0027"},{"line_number":1544,"context_line":"        # Now rebuild the server with a different image than was used to create"}],"source_content_type":"text/x-python","patch_set":25,"id":"df2ee2a2_ffb7bb5a","line":1541,"in_reply_to":"5a736275_a6e84bb4","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"411848feb359c93023026e068b0af120cd542d92","unresolved":true,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"5aa84ee7_1659e8d3","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"updated":"2022-08-29 11:03:46.000000000","message":"you can drop this, a simple mock will be enough to simulate that the event is received","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d90a9c87e58dfb7717ce6e8971a51fb27aac2132","unresolved":true,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"edef6fbe_3773488b","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"in_reply_to":"147a2eb2_74772a3d","updated":"2022-08-29 14:18:20.000000000","message":"$ python3\nPython 3.10.6 (main, Aug 10 2022, 11:19:32) [GCC 12.1.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e from unittest import mock\n\u003e\u003e\u003e with mock.Mock():\n...     print(\u0027boo\u0027)\n... \nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nAttributeError: __enter__\n\u003e\u003e\u003e with mock.MagicMock():\n...     print(\u0027boo\u0027)\n... \nboo\n\u003e\u003e\u003e \n\u003e\u003e\u003e","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"02cb6efdccede72babbfecb6db556ded4ba25387","unresolved":false,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"027f4ae9_de401450","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"in_reply_to":"264b3456_a3987a3a","updated":"2022-08-29 18:57:00.000000000","message":"Done","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e259db7ec893223af9f27b03c97f6fdbbe92fc24","unresolved":true,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"147a2eb2_74772a3d","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"in_reply_to":"42b04c82_cd4552d7","updated":"2022-08-29 14:16:47.000000000","message":"I dropped it locally and it works so I think it is supported by the mock lib now.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"812ec606c5752ba9d2afc12fc04e2b96f0e201a3","unresolved":true,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"42b04c82_cd4552d7","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"in_reply_to":"5aa84ee7_1659e8d3","updated":"2022-08-29 14:12:31.000000000","message":"Has this changed in mock at some point? We used to get the error of \"MagicMock has no attribute __enter__\" when doing this sort of thing.","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0e2c534f046da99c2097cd334b429827e5cd3560","unresolved":true,"context_lines":[{"line_number":1554,"context_line":""},{"line_number":1555,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1556,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1557,"context_line":"                               fake_wait):"},{"line_number":1558,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1559,"context_line":"                              rebuild_req_body,"},{"line_number":1560,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":25,"id":"264b3456_a3987a3a","line":1557,"range":{"start_line":1557,"start_character":31,"end_line":1557,"end_character":40},"in_reply_to":"edef6fbe_3773488b","updated":"2022-08-29 14:29:45.000000000","message":"Yep, I just did the same thing. I\u0027m pretty sure that\u0027s new :)","commit_id":"2f4400dbe556265337bc01b05dc4c337f787edab"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"0ca44196a71ec9a03c6658a48f8ce678962f6399","unresolved":true,"context_lines":[{"line_number":1551,"context_line":""},{"line_number":1552,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1553,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1554,"context_line":"                               mock.MagicMock()):"},{"line_number":1555,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1556,"context_line":"                              rebuild_req_body,"},{"line_number":1557,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":26,"id":"2f901733_ef933bbe","line":1554,"range":{"start_line":1554,"start_character":31,"end_line":1554,"end_character":47},"updated":"2022-08-29 22:03:51.000000000","message":"This is redundant. Gibi wants you to remove this entirely and take the default mocking that is a MagicMock().","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8ef3bc2e0c949e1f2ca99c69ec6c232d2fba7656","unresolved":false,"context_lines":[{"line_number":1551,"context_line":""},{"line_number":1552,"context_line":"        with mock.patch.object(self.compute.manager.virtapi,"},{"line_number":1553,"context_line":"                               \u0027wait_for_instance_event\u0027,"},{"line_number":1554,"context_line":"                               mock.MagicMock()):"},{"line_number":1555,"context_line":"            self.api.api_post(\u0027/servers/%s/action\u0027 % server[\u0027id\u0027],"},{"line_number":1556,"context_line":"                              rebuild_req_body,"},{"line_number":1557,"context_line":"                              check_response_status\u003d[202])"}],"source_content_type":"text/x-python","patch_set":26,"id":"6f13fb2b_e6ee12f7","line":1554,"range":{"start_line":1554,"start_character":31,"end_line":1554,"end_character":47},"in_reply_to":"2f901733_ef933bbe","updated":"2022-08-30 09:07:05.000000000","message":"Done","commit_id":"a2be3fef4280b67dedcd0647e06d52939876ea79"}],"nova/tests/unit/compute/test_api.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":4073,"context_line":"            _check_image_arch, mock_get_image,"},{"line_number":4074,"context_line":"            mock_get_bdms, get_flavor,"},{"line_number":4075,"context_line":"            instance_save, req_spec_get_by_inst_uuid, request_save):"},{"line_number":4076,"context_line":"        \"\"\"Test a scenario where we don\u0027t pass parameters to rebuild"},{"line_number":4077,"context_line":"        boot volume"},{"line_number":4078,"context_line":"        \"\"\""},{"line_number":4079,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":15,"id":"93a177e1_abfa580c","line":4076,"range":{"start_line":4076,"start_character":33,"end_line":4076,"end_character":57},"updated":"2022-03-21 15:51:14.000000000","message":"Actually, this case is for when we *do* but we have requested a different image and didn\u0027t indicate that it\u0027s okay to rebuild the root volume right?\n\nAlso, I think we need a test for the case you\u0027re describing here, where no parameter is passed at all, right?","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":4073,"context_line":"            _check_image_arch, mock_get_image,"},{"line_number":4074,"context_line":"            mock_get_bdms, get_flavor,"},{"line_number":4075,"context_line":"            instance_save, req_spec_get_by_inst_uuid, request_save):"},{"line_number":4076,"context_line":"        \"\"\"Test a scenario where we don\u0027t pass parameters to rebuild"},{"line_number":4077,"context_line":"        boot volume"},{"line_number":4078,"context_line":"        \"\"\""},{"line_number":4079,"context_line":"        instance \u003d fake_instance.fake_instance_obj("}],"source_content_type":"text/x-python","patch_set":15,"id":"4d25ef51_e94bf483","line":4076,"range":{"start_line":4076,"start_character":33,"end_line":4076,"end_character":57},"in_reply_to":"93a177e1_abfa580c","updated":"2022-03-23 11:00:40.000000000","message":"Right, we need 3 tests\n1) reimage_boot_volume\u003dTrue\n2) reimage_boot_volume\u003dFalse\n3) reimage_boot_volume is not passed at all\n\nI\u0027ve combined all 3 cases with ddt","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"}],"releasenotes/notes/add-volume-rebuild-b973562ea8f49347.yaml":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8ede6f16da8fcdf3a2f592abd741b9c8a21c1024","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Added support for rebuilding a volume-backed instance."},{"line_number":5,"context_line":"    This is supported starting from API microversion 2.91 and requires"},{"line_number":6,"context_line":"    an additional parameter ``reimage_boot_volume`` to be passed as"},{"line_number":7,"context_line":"    ``True``."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"266e9460_0ef63be5","line":7,"updated":"2022-03-21 15:51:14.000000000","message":"Maybe add something about \"rebuilding with a different image\" and \"will reimage the boot volume\" to this? Right now, rebuild of BFV instances is allowed (if the image_ref doesn\u0027t change and without actually rebuilding the disk) so someone reading this could very likely not understand what is changing.","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dc748012546b0e66714f73977e78db993705ebe","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added support for rebuilding a volume-backed instance."},{"line_number":5,"context_line":"    This is supported starting from API microversion 2.91 and requires"},{"line_number":6,"context_line":"    an additional parameter ``reimage_boot_volume`` to be passed as"},{"line_number":7,"context_line":"    ``True``."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"bf09c237_a0007dfa","line":7,"in_reply_to":"266e9460_0ef63be5","updated":"2022-03-23 11:00:40.000000000","message":"Done","commit_id":"d80787acfe49a7313a1da43a79b887566e2f9b08"}]}
