)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"23307c64bda43d61b00146f2357273cdec6485fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4ae85c33_bdc69f71","updated":"2026-07-30 14:55:06.000000000","message":"See comment inline.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"3956fd1e4a6610e0dca95b502aecb21d2f7c6401","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"01b9db4a_9d653570","updated":"2026-08-02 23:45:12.000000000","message":"Thanks for working on this, looks good to me!","commit_id":"071a6a3165bdfdc16f6ce33503ca2ac408030c8e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c584671b59574edd1bd8de1443cf99157a7cc78c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ce507f54_3f090309","updated":"2026-08-04 18:32:49.000000000","message":"Thanks, Amit!","commit_id":"071a6a3165bdfdc16f6ce33503ca2ac408030c8e"}],"cinder/tests/functional/__init__.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"f01138c84e00339a15a1a54b42571fddf461a5fa","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# flake8: noqa: I202"},{"line_number":14,"context_line":"from cinder import monkey_patch; monkey_patch.patch()  # noqa"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(e0ne): Make sure we have all of the objects loaded. We do this"},{"line_number":19,"context_line":"# at module import time, because we may be using mock decorators in our"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8fd595d_e9585872","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":26},"updated":"2026-07-28 15:17:40.000000000","message":"```suggestion\nfrom cinder import monkey_patch; monkey_patch.patch()  # noqa: E702\nfrom cinder import objects\n```","commit_id":"598e59b9382531f7a5e536edf23e08a8745b149a"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"4175bf724db58257db9f7ead379fd7f65903d8b6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# flake8: noqa: I202"},{"line_number":14,"context_line":"from cinder import monkey_patch; monkey_patch.patch()  # noqa"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from cinder import objects"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"# NOTE(e0ne): Make sure we have all of the objects loaded. We do this"},{"line_number":19,"context_line":"# at module import time, because we may be using mock decorators in our"}],"source_content_type":"text/x-python","patch_set":1,"id":"610d832e_1e265745","line":16,"range":{"start_line":13,"start_character":0,"end_line":16,"end_character":26},"in_reply_to":"a8fd595d_e9585872","updated":"2026-07-28 15:26:22.000000000","message":"Done","commit_id":"598e59b9382531f7a5e536edf23e08a8745b149a"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"9561f0f91e1308a5ff40f7a0f2d8f9239f3bd185","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import monkey_patch; monkey_patch.patch()  # noqa: E702"},{"line_number":14,"context_line":"from cinder import objects"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(e0ne): Make sure we have all of the objects loaded. We do this"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8a256f_da9698c6","line":13,"updated":"2026-07-30 14:40:39.000000000","message":"Do we need this line? I’m not following why it’s needed.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d202d3604f56ae1956ac1484b2cdeafa7c9ef190","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import monkey_patch; monkey_patch.patch()  # noqa: E702"},{"line_number":14,"context_line":"from cinder import objects"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(e0ne): Make sure we have all of the objects loaded. We do this"}],"source_content_type":"text/x-python","patch_set":2,"id":"fb51a9f9_1d147fdc","line":13,"in_reply_to":"7a8a256f_da9698c6","updated":"2026-07-30 14:49:11.000000000","message":"Probably needed for functional tests since those start services, but I do think it is probably out of scope for this patch.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"12f0a87ab258283760206c4bcf715d0f7955bbb9","unresolved":true,"context_lines":[{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from cinder import monkey_patch; monkey_patch.patch()  # noqa: E702"},{"line_number":14,"context_line":"from cinder import objects"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# NOTE(e0ne): Make sure we have all of the objects loaded. We do this"}],"source_content_type":"text/x-python","patch_set":2,"id":"ee1365e8_b7372aad","line":13,"in_reply_to":"fb51a9f9_1d147fdc","updated":"2026-07-31 04:52:19.000000000","message":"yes, this is needed - so functional tests need monkey_patching called early before test discovery, otherwise threading mode hits BackendAlreadySelected. \n\nbut since we split the functional threading CI job into a separate patch, this belongs there. I\u0027ll move this.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"}],"cinder/tests/unit/backup/test_backup.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"23307c64bda43d61b00146f2357273cdec6485fb","unresolved":true,"context_lines":[{"line_number":234,"context_line":"    @mock.patch.object(cinder.db.api, \u0027_volume_type_get_by_name\u0027,"},{"line_number":235,"context_line":"                       v3_fakes.fake_volume_type_get)"},{"line_number":236,"context_line":"    @mock.patch(\u0027cinder.context.get_admin_context\u0027)"},{"line_number":237,"context_line":"    def test_init_host(self, mock_get_admin_context, mock_check, mock_setup,"},{"line_number":238,"context_line":"                       mock_set_initialized):"},{"line_number":239,"context_line":"        \"\"\"Test stuck volumes and backups."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"797134ad_b3460a7a","line":237,"updated":"2026-07-30 14:55:06.000000000","message":"This seems like a test that we should be running also in threaded mode.  I would be OK with a TODO because you could argue that it\u0027s out of scope for this patch, but I think we should have some kind of test like this for threaded mode.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"c584671b59574edd1bd8de1443cf99157a7cc78c","unresolved":false,"context_lines":[{"line_number":234,"context_line":"    @mock.patch.object(cinder.db.api, \u0027_volume_type_get_by_name\u0027,"},{"line_number":235,"context_line":"                       v3_fakes.fake_volume_type_get)"},{"line_number":236,"context_line":"    @mock.patch(\u0027cinder.context.get_admin_context\u0027)"},{"line_number":237,"context_line":"    def test_init_host(self, mock_get_admin_context, mock_check, mock_setup,"},{"line_number":238,"context_line":"                       mock_set_initialized):"},{"line_number":239,"context_line":"        \"\"\"Test stuck volumes and backups."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d43caebe_71ba382d","line":237,"in_reply_to":"245bf489_a7f744ad","updated":"2026-08-04 18:32:49.000000000","message":"Acknowledged","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"},{"author":{"_account_id":34860,"name":"Amit Uniyal","email":"auniyal@redhat.com","username":"auniyal"},"change_message_id":"12f0a87ab258283760206c4bcf715d0f7955bbb9","unresolved":true,"context_lines":[{"line_number":234,"context_line":"    @mock.patch.object(cinder.db.api, \u0027_volume_type_get_by_name\u0027,"},{"line_number":235,"context_line":"                       v3_fakes.fake_volume_type_get)"},{"line_number":236,"context_line":"    @mock.patch(\u0027cinder.context.get_admin_context\u0027)"},{"line_number":237,"context_line":"    def test_init_host(self, mock_get_admin_context, mock_check, mock_setup,"},{"line_number":238,"context_line":"                       mock_set_initialized):"},{"line_number":239,"context_line":"        \"\"\"Test stuck volumes and backups."},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"245bf489_a7f744ad","line":237,"in_reply_to":"797134ad_b3460a7a","updated":"2026-07-31 04:52:19.000000000","message":"yeah I missed it, thanks for catching, I was mostly focused on adding skips.\n\nadding  TODO for now. as a proper threading equivalent needs the backup service threading migration (https://review.opendev.org/c/openstack/cinder/+/977851) first, since BackupManager\u0027s _add_to_threadpool isn\u0027t available in threading mode yet.","commit_id":"9ccf6b17e78ef12db0ae16cabef85d7de9ecf1da"}]}
