)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":20865,"name":"Gökhan","email":"gokhan.isik@tubitak.gov.tr","username":"gokhan.isik"},"change_message_id":"53db325ab17db5913b0e7cc966f356d1d6a2caea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3f14b8b3_7e787995","updated":"2024-04-24 11:00:33.000000000","message":"Hi Rajat, I tried this patch with cinder patch on antelope but I am getting errors like https://paste.openstack.org/show/bV0E00krD5jSzz51Oz1h/","commit_id":"4966169053d5eae7e8506e4efbcb04a667dc140f"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"8c2b9f0be8cb526a0fc388f48d75a8706e1cd5df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fd8c9b9f_a3347b79","updated":"2024-12-11 13:39:55.000000000","message":"Working on stable/2024.1 with cinder patch applied https://review.opendev.org/c/openstack/cinder/+/916408","commit_id":"4966169053d5eae7e8506e4efbcb04a667dc140f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"12576e7315e0d9351dd829ab65f979d3b92b1436","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7d576be7_3390cb8b","updated":"2025-04-17 11:17:37.000000000","message":"This is mergable as it is but i would prefer if you udpatd the release not as i commented inline.\n\nyou can ignore the other nit as im unsure that applyting the same logic to source image is actully correct and what you have written defintly sufficent for the described but.\n\nif you update for the release not ill reapply the +2","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":20865,"name":"Gökhan","email":"gokhan.isik@tubitak.gov.tr","username":"gokhan.isik"},"change_message_id":"a7cefe8a6de7b13db8f4e8c3de1fd08fa7d404ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"864f775c_9145e2b3","updated":"2025-03-27 05:31:41.000000000","message":"https://review.opendev.org/c/openstack/cinder/+/916408 is merged. Can you also help to merge this please @rajatdhasmana@gmail.com ? Thanks for fixing this bug 😊","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"01f66a953338dbc79aa0bb980396ef6e43d3bafa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6eab1b5c_ae4ea08f","in_reply_to":"7d576be7_3390cb8b","updated":"2025-04-17 11:48:06.000000000","message":"Thanks Sean for the review!","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":27339,"name":"Michal Arbet","email":"michal.arbet@ultimum.io","username":"michalarbet"},"change_message_id":"36b68d158a911641f7b8d54517ab6683550dddca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f4881bd2_6267ad37","updated":"2025-05-27 11:46:49.000000000","message":"Hi folks, this is still not merged. Can I kindly ask to review please ?","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":20865,"name":"Gökhan","email":"gokhan.isik@tubitak.gov.tr","username":"gokhan.isik"},"change_message_id":"ed56196deaa897285831aacf7eaf4a1f726bfb86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e7879f81_312ab5ad","updated":"2025-07-25 05:44:08.000000000","message":"Hi, can you please review this and merge ?","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c0b25b9965b160d15463f86bb1fab8b22d4c275","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"03c59d00_e1ab42a8","updated":"2025-04-21 14:30:43.000000000","message":"I don\u0027t want to derail if others are fine with this, but it seems to me like we\u0027d normally do this kind of thing with a functional reproducer.","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"01f66a953338dbc79aa0bb980396ef6e43d3bafa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"91fe7c5e_b15fe7ad","updated":"2025-04-17 11:48:06.000000000","message":"Thanks Sean!","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd281465f33b7494cab40568e45a57493351cf5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e47cdfb5_20d555cc","in_reply_to":"03c59d00_e1ab42a8","updated":"2026-02-13 10:59:48.000000000","message":"done","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fd281465f33b7494cab40568e45a57493351cf5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"4bdc91cd_674567bf","updated":"2026-02-13 10:59:48.000000000","message":"i just rebased this on top of my repoducer so readding +2","commit_id":"962fc2339e6c82eb12a47f1540e66505c7a3e61f"}],"nova/compute/manager.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"12576e7315e0d9351dd829ab65f979d3b92b1436","unresolved":true,"context_lines":[{"line_number":3640,"context_line":"            bdms \u003d image[\u0027properties\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":3641,"context_line":"            # If the BDM is of root volume, get the volume_size"},{"line_number":3642,"context_line":"            boot_bdm \u003d [bdm for bdm in bdms if ("},{"line_number":3643,"context_line":"                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and"},{"line_number":3644,"context_line":"                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]"},{"line_number":3645,"context_line":"            if boot_bdm:"},{"line_number":3646,"context_line":"                image_size \u003d boot_bdm[0].get(\u0027volume_size\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c5d9bdb4_91417d6b","line":3643,"range":{"start_line":3643,"start_character":16,"end_line":3643,"end_character":52},"updated":"2025-04-17 11:17:37.000000000","message":"nit: we probably do not need to check if its a snapshot here.\nwe can but i think falling back to the volume size would always be ok.\nthis is more explict so you do not need to change it but im not sure what\nis really gained by only using the volume size in this case.\n\nWhile it would be unconventional I could see someone creating a blank 0-length image and then using rebuild to erase the volume.\n\ni have created small but not 0 lenght images in teh past to do somethign similar when i actully planned to install form an iso via rescure so maybe we dont need to care about source_type\u003d\u0027image\u0027 here and snapshot is fine.","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"01f66a953338dbc79aa0bb980396ef6e43d3bafa","unresolved":false,"context_lines":[{"line_number":3640,"context_line":"            bdms \u003d image[\u0027properties\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":3641,"context_line":"            # If the BDM is of root volume, get the volume_size"},{"line_number":3642,"context_line":"            boot_bdm \u003d [bdm for bdm in bdms if ("},{"line_number":3643,"context_line":"                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and"},{"line_number":3644,"context_line":"                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]"},{"line_number":3645,"context_line":"            if boot_bdm:"},{"line_number":3646,"context_line":"                image_size \u003d boot_bdm[0].get(\u0027volume_size\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d4033ba1_ee4d1cac","line":3643,"range":{"start_line":3643,"start_character":16,"end_line":3643,"end_character":52},"in_reply_to":"c5d9bdb4_91417d6b","updated":"2025-04-17 11:48:06.000000000","message":"Acknowledged","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":38865,"name":"Nope","email":"ohnomyvms@gmail.com","username":"ohnomyvms"},"change_message_id":"0aad75e93ebc43d48fb3de75a85255fbc71ace40","unresolved":false,"context_lines":[{"line_number":3760,"context_line":"        if image_size \u003d\u003d 0:"},{"line_number":3761,"context_line":"            # If the image size is 0, it could be a metadata reference"},{"line_number":3762,"context_line":"            # of a volume snapshot"},{"line_number":3763,"context_line":"            bdms \u003d image[\u0027properties\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":3764,"context_line":"            # If the BDM is of root volume, get the volume_size"},{"line_number":3765,"context_line":"            boot_bdm \u003d [bdm for bdm in bdms if ("},{"line_number":3766,"context_line":"                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b0973a1_6c521745","line":3763,"updated":"2026-03-01 04:29:29.000000000","message":"if `block_device_mapping` is absent from properties, `bdms` is None and iterating it on the next line is a TypeError. separately, if `volume_size` is missing from the BDM, `image_size` becomes None, skips the `\u003d\u003d 0` guard (None !\u003d 0), and `reimage_timeout_per_gb * None` is another TypeError. both happen when the zero-size image isn\u0027t a volume snapshot. default values on the `.get()` calls would handle it: `get(\u0027block_device_mapping\u0027, [])` and `get(\u0027volume_size\u0027, 0)`.","commit_id":"962fc2339e6c82eb12a47f1540e66505c7a3e61f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9b7ecc79ad3cdc271f87ea7021acb3b7b4d71aa9","unresolved":true,"context_lines":[{"line_number":3760,"context_line":"        if image_size \u003d\u003d 0:"},{"line_number":3761,"context_line":"            # If the image size is 0, it could be a metadata reference"},{"line_number":3762,"context_line":"            # of a volume snapshot"},{"line_number":3763,"context_line":"            bdms \u003d image[\u0027properties\u0027].get(\u0027block_device_mapping\u0027)"},{"line_number":3764,"context_line":"            # If the BDM is of root volume, get the volume_size"},{"line_number":3765,"context_line":"            boot_bdm \u003d [bdm for bdm in bdms if ("},{"line_number":3766,"context_line":"                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and"}],"source_content_type":"text/x-python","patch_set":4,"id":"ff924f5b_d95b7224","line":3763,"in_reply_to":"3b0973a1_6c521745","updated":"2026-04-15 13:05:12.000000000","message":"```\n \u0027x\u0027 in None\nTraceback (most recent call last):\n  File \"\u003cpython-input-1\u003e\", line 1, in \u003cmodule\u003e\n    \u0027x\u0027 in None\nTypeError: argument of type \u0027NoneType\u0027 is not iterable\n```\nyep this is valid.\n\nill quickly respin it for the merge conflict and we can apply your suggested fix as well.","commit_id":"962fc2339e6c82eb12a47f1540e66505c7a3e61f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2171151b3c93be8d20a36614dafdef26ea07d759","unresolved":true,"context_lines":[{"line_number":3874,"context_line":"                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and"},{"line_number":3875,"context_line":"                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]"},{"line_number":3876,"context_line":"            if boot_bdm:"},{"line_number":3877,"context_line":"                image_size \u003d boot_bdm[0].get(\u0027volume_size\u0027, 0) or 0"},{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"af2bc7ce_60cc21f7","line":3877,"range":{"start_line":3877,"start_character":15,"end_line":3877,"end_character":67},"updated":"2026-06-26 16:51:24.000000000","message":"```suggestion\n                image_size \u003d boot_bdm[0].get(\u0027volume_size\u0027, 0)\n```\n\nthe or is redundant.","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6aac7d3dc4dc71cdbfc6f3bf08a087c25bf91b65","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fd2db711_62175e4c","line":3881,"updated":"2026-06-26 14:02:12.000000000","message":"This isn\u0027t necessarily correct, right? You say this if you get here but you could have come via `if boot_bdm` being False, which would be very confusing to the user I think.","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1337476f448960b3821193199823d12f86d1c361","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9d3a4826_efa7ecd6","line":3881,"in_reply_to":"b848d96a_29382e6e","updated":"2026-06-28 06:36:34.000000000","message":"Hi Sean, the image metadata format should be similar to the one used in this test[1]\n\n        image_meta \u003d {\n            \u0027properties\u0027: {\n                \u0027block_device_mapping\u0027: [\n                    {\n                        \u0027source_type\u0027: \u0027snapshot\u0027,\n                        \u0027boot_index\u0027: 0,\n                        \u0027volume_size\u0027: 1,\n                    }\n                ]\n            }\n        }\n\nThe image size was taken as a metric because the data copied is the image.\nSuppose if we have a 1TB volume with 10GB image to write, and c-vol dies during the operation, we will be waiting 1000*20(default time) seconds which doesn\u0027t look correct. The correct way to fail should be within 10*20 seconds.\n\n[1] https://review.opendev.org/c/openstack/cinder/+/916408/8/cinder/tests/unit/api/contrib/test_volume_actions.py","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a374b64f6e66dca8c87d4a6d574eb0c5add84087","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa8d968_5592f753","line":3881,"in_reply_to":"e0e13f9c_7eb2c071","updated":"2026-06-26 16:41:32.000000000","message":"It doesn\u0027t even matter why we got a zero-byte image. If we got it (L3867) and found it has no root volume BDM (L3876) we still get here and raise an error specific to volumes. Whether it\u0027s in the past or in the future, it\u0027s not consistent I think.\n\nBut yeah, IIRC, ceph snapshots get recorded in glance the same way (but not positive). I think it\u0027s also possible to create images that are zero-length by creating them and adding a location manually.","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2171151b3c93be8d20a36614dafdef26ea07d759","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb9473d6_e33d4992","line":3881,"in_reply_to":"e0e13f9c_7eb2c071","updated":"2026-06-26 16:51:24.000000000","message":"sorry i didn\u0027t  express that well lets try that agian\n\nyour concern is that if boot_bdm is an empty list\nbecase the bdm at boot_index 0 is not a snaphsot then this could incorrectly say \n\u0027Failed to rebuild volume backed instance as image is of zero size.\u0027\n\nif the bfv instnace was orgianlly created form a glance image or a prexisting ovlume\n\nthe source_type woudl not be snapshot.\n\nwhich woudl mean boot_bdm woudl be empty which is falsy\nand we woudl incorrectly sass the the image is 0 size\n\nso\n\n```\n            boot_bdm \u003d [bdm for bdm in bdms if (\n                bdm.get(\u0027source_type\u0027) \u003d\u003d \u0027snapshot\u0027 and\n                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]\n```\n\nporbaly shoudl not filter on source_type\n\nit shoudl either just drop it\n\n\n```\n            boot_bdm \u003d [bdm for bdm in bdms if (\n                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]\n```\n\nor if we want to eb 100% sure this si a bfv root bdm check the dest_type\n\n```\n            boot_bdm \u003d [bdm for bdm in bdms if (\n                bdm.get(\u0027destiantion_type\u0027) \u003d\u003d \u0027volume\u0027 and\n                bdm.get(\u0027boot_index\u0027) \u003d\u003d 0)]\n```\n\nbut in either case we would need to change the message","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6a78eab2ce90d516a7d1292813974c4e379b15b","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"b848d96a_29382e6e","line":3881,"in_reply_to":"eb9473d6_e33d4992","updated":"2026-06-26 17:22:45.000000000","message":"well hum looking at this agin\n\nroperties \u003d image.get(\u0027properties\u0027) or {}\nbdms \u003d properties.get(\u0027block_device_mapping\u0027, [])\n\nwe are looking at the bdm info in the image not for the current instance\n\nso regradelss of which of the bfv flows were taken to create the vm\n\nboot from nova created volume form glance image/snapthot/volume-snapshot\nor \nboot form exsitign precreted voluem this code is lookign at the metadta store on the image inclance rather then the bdms of the vm.\n\nwe expect to be able to rebuild form any glance image regarless of if its backed by a file, swift a volume or a volume snapshot\n\nif the image was just uploaded normally we woudl expect the size to be non zero.\n\nin the past if nova added a snapshot image that was backed by a cinder voluem or rbd with the driect snapshot fuctionatiy then i think the glance image woudl be 0 bytes but i dont recall what the image metadata for such an image looks like \n\nif i have cidner deploy i might tst tha tlocally\n\nbut i wonder if a better approch to this issue might be to use the size of the volume we are imaging isntead fo the image isize when the image size is 0\nto calulate the timeout?\n\nworst case teh image shoudl be equal or less than the size of the voluem so that is the worst posiable case timeout that we woudl need.","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"77d16bf54c7002fc30aa134f6a5106770e3a70a5","unresolved":true,"context_lines":[{"line_number":3878,"context_line":"            # If the image size is still 0, there is some issue"},{"line_number":3879,"context_line":"            if image_size \u003d\u003d 0:"},{"line_number":3880,"context_line":"                msg \u003d _(\u0027Failed to rebuild volume backed instance as image \u0027"},{"line_number":3881,"context_line":"                        \u0027is of zero size.\u0027)"},{"line_number":3882,"context_line":"                LOG.error(msg)"},{"line_number":3883,"context_line":"                raise exception.BuildAbortException("},{"line_number":3884,"context_line":"                    instance_uuid\u003dinstance.uuid, reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"e0e13f9c_7eb2c071","line":3881,"in_reply_to":"fd2db711_62175e4c","updated":"2026-06-26 16:35:55.000000000","message":"hum good poitn if the image is a snapshot and that snapshot is on rbd or cinder? we created metadta only images for a long time and those woudl be 0 bytes corect?\n\ni know you changed some of that logic a while ago but i dont recall the details off hand.","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8c0b25b9965b160d15463f86bb1fab8b22d4c275","unresolved":true,"context_lines":[{"line_number":6105,"context_line":"                exception.BuildAbortException,"},{"line_number":6106,"context_line":"                self.compute._rebuild_volume_backed_instance,"},{"line_number":6107,"context_line":"                self.context, instance, bdms, uuids.image_id,"},{"line_number":6108,"context_line":"            )"},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027, return_value\u003dNone)"},{"line_number":6111,"context_line":"    @mock.patch.object(fake_driver.SmallFakeDriver, \u0027detach_volume\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"42fd7b13_7f963270","line":6108,"updated":"2025-04-21 14:30:43.000000000","message":"These tests feel mocked to the point of near pointlessness. I know they are actually tickling the new conditional, but it\u0027s a lot of work and synthetic setup. Could we not have a functional reproducer and fix for this to make sure we\u0027re hitting it before the fix and that it works after?","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6aac7d3dc4dc71cdbfc6f3bf08a087c25bf91b65","unresolved":false,"context_lines":[{"line_number":6105,"context_line":"                exception.BuildAbortException,"},{"line_number":6106,"context_line":"                self.compute._rebuild_volume_backed_instance,"},{"line_number":6107,"context_line":"                self.context, instance, bdms, uuids.image_id,"},{"line_number":6108,"context_line":"            )"},{"line_number":6109,"context_line":""},{"line_number":6110,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027, return_value\u003dNone)"},{"line_number":6111,"context_line":"    @mock.patch.object(fake_driver.SmallFakeDriver, \u0027detach_volume\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"d497336c_1d4454f4","line":6108,"in_reply_to":"42fd7b13_7f963270","updated":"2026-06-26 14:02:12.000000000","message":"Done","commit_id":"3f2bba901b85b8b2607b6b661ede5db889c1e47a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bf9cdd3baf1829ae8fcc100ba9475a017d814b6a","unresolved":true,"context_lines":[{"line_number":7855,"context_line":"        ):"},{"line_number":7856,"context_line":"            instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":7857,"context_line":"            instance.task_state \u003d task_states.REBUILDING"},{"line_number":7858,"context_line":"            # 1024 ** 3 \u003d 1073741824"},{"line_number":7859,"context_line":"            mock_get_img.return_value \u003d {"},{"line_number":7860,"context_line":"                \u0027size\u0027: 0,"},{"line_number":7861,"context_line":"                \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"8b954446_6652a552","line":7858,"updated":"2026-06-26 15:22:39.000000000","message":"This may be true, but.. why is it here?","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bf9cdd3baf1829ae8fcc100ba9475a017d814b6a","unresolved":true,"context_lines":[{"line_number":7915,"context_line":"        ):"},{"line_number":7916,"context_line":"            instance \u003d fake_instance.fake_instance_obj(self.context)"},{"line_number":7917,"context_line":"            instance.task_state \u003d task_states.REBUILDING"},{"line_number":7918,"context_line":"            # 1024 ** 3 \u003d 1073741824"},{"line_number":7919,"context_line":"            mock_get_img.return_value \u003d {"},{"line_number":7920,"context_line":"                \u0027size\u0027: 0,"},{"line_number":7921,"context_line":"                \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":6,"id":"b0fff11f_e9757357","line":7918,"updated":"2026-06-26 15:22:39.000000000","message":"Same","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bf9cdd3baf1829ae8fcc100ba9475a017d814b6a","unresolved":true,"context_lines":[{"line_number":7947,"context_line":"            volume_id\u003duuids.volume_id, connection_info\u003dfake_conn_info,"},{"line_number":7948,"context_line":"            device_name\u003dfake_device, attachment_id\u003duuids.old_attachment_id,"},{"line_number":7949,"context_line":"            save\u003dmock.MagicMock())"},{"line_number":7950,"context_line":"        bdms \u003d [root_bdm]"},{"line_number":7951,"context_line":""},{"line_number":7952,"context_line":"        with test.nested("},{"line_number":7953,"context_line":"            mock.patch.object(objects.Instance, \u0027save\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5b201d3e_e0e6cc67","line":7950,"updated":"2026-06-26 15:22:39.000000000","message":"Can you add a case where we have no root/volume BDMs at all and zero image size to make sure we still abort?","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"bf9cdd3baf1829ae8fcc100ba9475a017d814b6a","unresolved":true,"context_lines":[{"line_number":8020,"context_line":"                self.compute._rebuild_volume_backed_instance,"},{"line_number":8021,"context_line":"                self.context, instance, bdms, uuids.image_id,"},{"line_number":8022,"context_line":"            )"},{"line_number":8023,"context_line":""},{"line_number":8024,"context_line":"    @mock.patch.object(objects.Instance, \u0027save\u0027, return_value\u003dNone)"},{"line_number":8025,"context_line":"    @mock.patch.object(fake_driver.SmallFakeDriver, \u0027detach_volume\u0027)"},{"line_number":8026,"context_line":"    @mock.patch.object(cinder.API, \u0027roll_detaching\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"f8844816_19f8d7cb","line":8023,"updated":"2026-06-26 15:22:39.000000000","message":"Feels like these three cases (and the extra one I asked for above) could re-use some test setup material...","commit_id":"95c9d988f4327f3b590018e82fc09640e6b380c8"}],"releasenotes/notes/fix-rebuild-image-snapshot-2d2aea8517edb1bc.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"12576e7315e0d9351dd829ab65f979d3b92b1436","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed issue when trying to rebuild a volume backed server"},{"line_number":5,"context_line":"    with an image snapshot of the server. More information about"},{"line_number":6,"context_line":"    the issue can be found in `bug 2062127`_."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    .. _bug 2062127: https://bugs.launchpad.net/nova/+bug/2062127"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"0c8530da_aad27b8f","line":6,"range":{"start_line":4,"start_character":0,"end_line":6,"end_character":45},"updated":"2025-04-17 11:17:37.000000000","message":"This is less helpful than I was hoping.\n\nNormally we want to include enough info in the release so that you don\u0027t need to click on any links to understand the underlying issue\nLinks should only be for extra context.\n\nThe commit message does a pretty good job of this\n\n```suggestion\n    When we create a server snapshot of a volume backed\n    server, it creates a zero-sized metadata reference in\n    glance that points to a volume snapshot in Cinder.\n    When trying to rebuild a server with such an image,\n    the size needs to be fetched from the volume instead\n    of the image. This is now fixed, see `bug 2062127`_ for\n    More information about the issue.\n```","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"01f66a953338dbc79aa0bb980396ef6e43d3bafa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed issue when trying to rebuild a volume backed server"},{"line_number":5,"context_line":"    with an image snapshot of the server. More information about"},{"line_number":6,"context_line":"    the issue can be found in `bug 2062127`_."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    .. _bug 2062127: https://bugs.launchpad.net/nova/+bug/2062127"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"36f5b208_b4d5794a","line":6,"range":{"start_line":4,"start_character":0,"end_line":6,"end_character":45},"in_reply_to":"0c8530da_aad27b8f","updated":"2025-04-17 11:48:06.000000000","message":"Done","commit_id":"42e44f126d8d01f110618773cfc082ea1e008f52"}]}
