)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39103,"name":"Dirley Rodrigues Lima da Silva","display_name":"Dirley","email":"Dirley.RodriguesLimadaSilva@windriver.com","username":"drodrig1"},"change_message_id":"70ee8323147d2b16715afe3f4a4e18fbade67a71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2c6ad47e_5bc68450","updated":"2026-06-26 17:49:32.000000000","message":"LGTM","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":38749,"name":"Luis Henrique Silva Cazuriaga","display_name":"Luis Cazuriaga","email":"LuisHenrique.SilvaCazuriaga@windriver.com","username":"lsilvac1"},"change_message_id":"c2af9dc5c8988df4a495e4ce3bd31d77f4abb3ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"27f87f07_27f3689d","updated":"2026-06-26 17:52:04.000000000","message":"LGTM!","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2a3741288cb95bf4e61edd1a4eb7b2b96521f23f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1938dbab_829af5db","updated":"2026-07-02 09:30:47.000000000","message":"tests are not really validating the code addition.\nand a question.\n\nplease do not resolve comments, I\u0027ll resolve them.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"3affc4141e68c00e3cc5fbbb13e62e2fd40e296c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"788e7c95_28a4a846","in_reply_to":"1938dbab_829af5db","updated":"2026-07-07 17:29:52.000000000","message":"Acknowledged. Added a test covering the scenario where service_uuid is None and shared_targets is False (patchset 5). Apologies for resolving comments earlier, I\u0027ll leave them for you to resolve going forward.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":38749,"name":"Luis Henrique Silva Cazuriaga","display_name":"Luis Cazuriaga","email":"LuisHenrique.SilvaCazuriaga@windriver.com","username":"lsilvac1"},"change_message_id":"b707bacb47fef58bdfd9c58c4bf1622a30208651","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3419c2eb_9d1b1ef8","updated":"2026-08-20 16:43:22.000000000","message":"LGTM!","commit_id":"95cd7e9b0664fe7fbdd131a10b16b8217a18e30e"},{"author":{"_account_id":39103,"name":"Dirley Rodrigues Lima da Silva","display_name":"Dirley","email":"Dirley.RodriguesLimadaSilva@windriver.com","username":"drodrig1"},"change_message_id":"a62810bb6d65d05ef64b26ef708e4da842407697","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a341429d_0a172019","updated":"2026-07-16 14:25:26.000000000","message":"LGTM!","commit_id":"95cd7e9b0664fe7fbdd131a10b16b8217a18e30e"}],"cinder/tests/unit/volume/test_manage_volume.py":[{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2a3741288cb95bf4e61edd1a4eb7b2b96521f23f","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":76,"context_line":"        self.assertEqual(fake.UUID1, volume_object.service_uuid)"},{"line_number":77,"context_line":"        self.assertTrue(volume_object.shared_targets)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_manage_existing_with_volume_object(self):"},{"line_number":80,"context_line":"        volume_object \u003d self._stub_volume_object_get(self)"},{"line_number":81,"context_line":"        mock_object_volume \u003d self.mock_object(objects.Volume, \u0027get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"4781e5b7_e21a938a","line":78,"updated":"2026-07-02 09:30:47.000000000","message":"can you add a test with no service_uuid, no shared_targets, db update.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"3affc4141e68c00e3cc5fbbb13e62e2fd40e296c","unresolved":true,"context_lines":[{"line_number":75,"context_line":"        mock_save.assert_called_once_with()"},{"line_number":76,"context_line":"        self.assertEqual(fake.UUID1, volume_object.service_uuid)"},{"line_number":77,"context_line":"        self.assertTrue(volume_object.shared_targets)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def test_manage_existing_with_volume_object(self):"},{"line_number":80,"context_line":"        volume_object \u003d self._stub_volume_object_get(self)"},{"line_number":81,"context_line":"        mock_object_volume \u003d self.mock_object(objects.Volume, \u0027get_by_id\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a017273d_04b4d105","line":78,"in_reply_to":"4781e5b7_e21a938a","updated":"2026-07-07 17:29:52.000000000","message":"Added in patchset 5: test_manage_existing_no_service_uuid — tests with service_uuid \u003d None and _driver_shares_targets returning False, asserting that the volume is saved with those values.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"}],"cinder/volume/manager.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"7e5f69ed403e50955268b3e45bf288b5ef25b2da","unresolved":true,"context_lines":[{"line_number":3241,"context_line":"                replication_status \u003d fields.ReplicationStatus.DISABLED"},{"line_number":3242,"context_line":"            model_update[\u0027replication_status\u0027] \u003d replication_status"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"    def manage_existing(self,"},{"line_number":3245,"context_line":"                        ctxt: context.RequestContext,"},{"line_number":3246,"context_line":"                        volume: objects.Volume,"},{"line_number":3247,"context_line":"                        ref\u003dNone) -\u003e ovo_fields.UUIDField:"}],"source_content_type":"text/x-python","patch_set":4,"id":"cb3865a2_e7a7c577","line":3244,"updated":"2026-06-29 13:57:44.000000000","message":"The commit message says the bug is caused by managed volumes having service_uuid NULL. If the production issue already exists, fixing only future imports does not fix the customer’s current broken volumes. Can you confirm this works for existing volumes as well?","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"87f02c606ea55861f454aa39fbe4f9d33ebfb17f","unresolved":false,"context_lines":[{"line_number":3241,"context_line":"                replication_status \u003d fields.ReplicationStatus.DISABLED"},{"line_number":3242,"context_line":"            model_update[\u0027replication_status\u0027] \u003d replication_status"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"    def manage_existing(self,"},{"line_number":3245,"context_line":"                        ctxt: context.RequestContext,"},{"line_number":3246,"context_line":"                        volume: objects.Volume,"},{"line_number":3247,"context_line":"                        ref\u003dNone) -\u003e ovo_fields.UUIDField:"}],"source_content_type":"text/x-python","patch_set":4,"id":"73eb7029_0dd4dddb","line":3244,"in_reply_to":"6d50f337_366447ee","updated":"2026-06-30 13:52:17.000000000","message":"Acknowledged","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"2f69cfd2d60e9cb53fce54a9530b9da3d1f7862e","unresolved":true,"context_lines":[{"line_number":3241,"context_line":"                replication_status \u003d fields.ReplicationStatus.DISABLED"},{"line_number":3242,"context_line":"            model_update[\u0027replication_status\u0027] \u003d replication_status"},{"line_number":3243,"context_line":""},{"line_number":3244,"context_line":"    def manage_existing(self,"},{"line_number":3245,"context_line":"                        ctxt: context.RequestContext,"},{"line_number":3246,"context_line":"                        volume: objects.Volume,"},{"line_number":3247,"context_line":"                        ref\u003dNone) -\u003e ovo_fields.UUIDField:"}],"source_content_type":"text/x-python","patch_set":4,"id":"6d50f337_366447ee","line":3244,"in_reply_to":"cb3865a2_e7a7c577","updated":"2026-06-30 13:51:37.000000000","message":"Thanks for the review!!\n\nThis patch fixes future cinder manage imports. For volumes that already have service_uuid \u003d NULL in the database, the existing cinder-manage volume update_service command (see cinder/db/api.py:volume_update_all_by_service) does not cover them, its query uses models.Volume.service_uuid !\u003d service.uuid, which in SQL excludes NULL rows (since NULL !\u003d value evaluates to NULL/false in SQL).\n\nFixing the update_service command to also handle NULLs could be a follow-up patch. In the meantime, affected volumes can be re-managed: cinder unmanage \u003cvol\u003e followed by cinder manage (which now correctly stamps service_uuid).","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2a3741288cb95bf4e61edd1a4eb7b2b96521f23f","unresolved":true,"context_lines":[{"line_number":3250,"context_line":""},{"line_number":3251,"context_line":"        self._update_stats_for_managed(vol_ref)"},{"line_number":3252,"context_line":""},{"line_number":3253,"context_line":"        # Set service_uuid so os-brick\u0027s guard_connection lock works"},{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"}],"source_content_type":"text/x-python","patch_set":4,"id":"6ac3fc77_10db87aa","line":3253,"updated":"2026-07-02 09:30:47.000000000","message":"wonder if its not true for some scenarios, like service_uuid exist inside manage_existing.\nin that case we should not directly update it.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"3affc4141e68c00e3cc5fbbb13e62e2fd40e296c","unresolved":true,"context_lines":[{"line_number":3250,"context_line":""},{"line_number":3251,"context_line":"        self._update_stats_for_managed(vol_ref)"},{"line_number":3252,"context_line":""},{"line_number":3253,"context_line":"        # Set service_uuid so os-brick\u0027s guard_connection lock works"},{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1d1ab7c3_f0bc64a9","line":3253,"in_reply_to":"6ac3fc77_10db87aa","updated":"2026-07-07 17:29:52.000000000","message":"Verified: manage_existing.py contains no reference to service_uuid. The ManageExistingTask.execute only applies the driver\u0027s model_update (driver-level fields like provider_location), not service-level fields. So vol_ref.service_uuid is always NULL after the flow.\n\nThe unconditional assignment mirrors create_volume (line 853) which also sets it without checking first.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"2a3741288cb95bf4e61edd1a4eb7b2b96521f23f","unresolved":true,"context_lines":[{"line_number":3253,"context_line":"        # Set service_uuid so os-brick\u0027s guard_connection lock works"},{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"},{"line_number":3257,"context_line":"        vol_ref.save()"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"        LOG.info(\"Manage existing volume completed successfully.\","}],"source_content_type":"text/x-python","patch_set":4,"id":"87fca53a_4f0e6e1b","line":3256,"updated":"2026-07-02 09:30:47.000000000","message":"can you tell why what and why shared_targets need to set.\nthis is not done for fresh vol.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"3affc4141e68c00e3cc5fbbb13e62e2fd40e296c","unresolved":true,"context_lines":[{"line_number":3253,"context_line":"        # Set service_uuid so os-brick\u0027s guard_connection lock works"},{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"},{"line_number":3257,"context_line":"        vol_ref.save()"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"        LOG.info(\"Manage existing volume completed successfully.\","}],"source_content_type":"text/x-python","patch_set":4,"id":"03ffce02_1600eee0","line":3256,"in_reply_to":"87fca53a_4f0e6e1b","updated":"2026-07-07 17:29:52.000000000","message":"shared_targets is set for fresh volumes at line 849 of this file:\n\nvolume.shared_targets \u003d self._driver_shares_targets()\n\nThis is part of the same block (lines 849-854) that sets both service_uuid and shared_targets after create_volume completes.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"7e5f69ed403e50955268b3e45bf288b5ef25b2da","unresolved":true,"context_lines":[{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"},{"line_number":3257,"context_line":"        vol_ref.save()"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"        LOG.info(\"Manage existing volume completed successfully.\","},{"line_number":3260,"context_line":"                 resource\u003dvol_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"e34a5fbf_caeae641","line":3257,"updated":"2026-06-29 13:57:44.000000000","message":"can you move this block before _run_manage_existing_flow_engine. Any reason these ids are set after manage_existing flow?Hope this won\u0027t create race condition.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"2f69cfd2d60e9cb53fce54a9530b9da3d1f7862e","unresolved":true,"context_lines":[{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"},{"line_number":3257,"context_line":"        vol_ref.save()"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"        LOG.info(\"Manage existing volume completed successfully.\","},{"line_number":3260,"context_line":"                 resource\u003dvol_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"eee4c041_e5dd94f9","line":3257,"in_reply_to":"e34a5fbf_caeae641","updated":"2026-06-30 13:51:37.000000000","message":"I cannot set service_uuid before _run_manage_existing_flow_engine because vol_ref is the volume object returned by the flow engine after it completes (see manage_existing.py:ManageExistingTask.execute which returns {\u0027volume\u0027: volume} after calling volume.save()). Before the flow runs, we don\u0027t have the final committed volume reference yet.\n\nThis placement mirrors create_volume (line 849-854 in manager.py), which also sets service_uuid and shared_targets after the create flow completes, immediately before the final LOG.info.\n\nRegarding race conditions: the volume is in managing status while the flow runs and transitions to available only in CreateVolumeOnFinishTask at the end of the flow. Our save() happens after the flow returns but before anything else can consume the volume, so there is no window for an attach request to see the volume without service_uuid.","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"},{"author":{"_account_id":36340,"name":"Vinícius Fernando Rocha Lobo","display_name":"Vinicius Lobo","email":"Vinicius.RochaLobo@windriver.com","username":"vrochalo"},"change_message_id":"87f02c606ea55861f454aa39fbe4f9d33ebfb17f","unresolved":false,"context_lines":[{"line_number":3254,"context_line":"        # correctly on shared-target backends (LP#2125469)."},{"line_number":3255,"context_line":"        vol_ref.service_uuid \u003d self.service_uuid"},{"line_number":3256,"context_line":"        vol_ref.shared_targets \u003d self._driver_shares_targets()"},{"line_number":3257,"context_line":"        vol_ref.save()"},{"line_number":3258,"context_line":""},{"line_number":3259,"context_line":"        LOG.info(\"Manage existing volume completed successfully.\","},{"line_number":3260,"context_line":"                 resource\u003dvol_ref)"}],"source_content_type":"text/x-python","patch_set":4,"id":"c50d6185_7e584401","line":3257,"in_reply_to":"eee4c041_e5dd94f9","updated":"2026-06-30 13:52:17.000000000","message":"Acknowledged","commit_id":"8ed28b5f116cbba0fdbd726a2ef4f0ec9c0dab19"}]}
