)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"8ee3d8bfd92a3d48bee84edf05f5794fd74bc23d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4b151ae9_178ee013","updated":"2024-08-14 09:23:15.000000000","message":"rebased on the api-ref for os-availability-zones that has been missing for atleast 6 years – setting this as WIP because I need to update the api-ref in this patch","commit_id":"ab4d4208491fb6491ecdf0de73df49bdd9061411"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"5caf37fe949674fbad187ac0495011db0d99ad06","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ea3ba935_ace14cee","updated":"2024-08-22 08:05:58.000000000","message":"recheck releasenotes job fixed in openstack-zuul-jobs","commit_id":"e3ce8c0e6bc90515c44b8aed3bf591c4b8648e6b"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"56238def57108ee77de2feb7d83193f305b74628","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0e85d2b6_140db491","updated":"2024-08-30 19:20:59.000000000","message":"I need to look at this more closely.  Not sure if there\u0027s a precedent for using a query parameter that way in the block storage API (not that it\u0027s necessarily bad, will just require a bit of thought).","commit_id":"60b93d96116b5c8470c21d4ca42f75a74cba1ca5"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"69d32acf76ef0818518a7c916e82cf84dc3a2cae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"73f7d845_f1390fca","in_reply_to":"0e85d2b6_140db491","updated":"2024-09-02 09:39:09.000000000","message":"Ack, let me know and I\u0027ll adjust accordingly if there is any feedback on that.","commit_id":"60b93d96116b5c8470c21d4ca42f75a74cba1ca5"},{"author":{"_account_id":9236,"name":"Jon Bernard","email":"jobernar@redhat.com","username":"jbernard"},"change_message_id":"10f1a4558076fe0e56a7e5c89e135fb049432451","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"40d5a1a3_cb6f9971","updated":"2025-08-07 16:00:02.000000000","message":"This looks okay to me.  Appears to be implemented properly, the fallback preserves existing behavior, tests look good, passes CI.","commit_id":"b74e8828e41885307618ea709cf7c51e3c2c83e4"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"d4a422a6832347c39d9d26d7f6038e6db288e949","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f2841186_5b30d99d","updated":"2025-10-22 23:20:57.000000000","message":"This patch is looking good to me.  Just one minor question about the implementation.","commit_id":"460f599abddc1d644a3c7284efdad8d8dadb5faa"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"d21a71aa3d353d3fb9980c24e2a4088fc04abfbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f1a38e1b_07ed41f2","updated":"2025-09-01 14:19:48.000000000","message":"recheck post_failure","commit_id":"460f599abddc1d644a3c7284efdad8d8dadb5faa"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"0133c6416e7b76f6be829ead491da9da2a63479b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"a7a5daff_7c8d2250","updated":"2025-09-03 06:41:54.000000000","message":"recheck unrelated neutron port tempest error","commit_id":"460f599abddc1d644a3c7284efdad8d8dadb5faa"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"d834bbaf4b323acfff835a63bec7d14898d0c28b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"2685b2d2_1ff9ea16","updated":"2025-10-24 13:58:25.000000000","message":"fixed race condition in the FakeRequest class in testing","commit_id":"e3639748c0ab8884a31eecaf8c62371223fad6d2"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"778f984a7b753b79b74c40a3756253c37ee62358","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"97f5ece9_026db815","updated":"2026-02-19 08:54:24.000000000","message":"run-Quobyte CI","commit_id":"0e4175e53de71fcd258e2a8daa9d792187dffdda"}],"cinder/api/contrib/availability_zones.py":[{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"d4a422a6832347c39d9d26d7f6038e6db288e949","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        if service \u003d\u003d constants.BACKUP_TOPIC:"},{"line_number":46,"context_line":"            return self.backup_api.list_availability_zones()"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def index(self, req):"}],"source_content_type":"text/x-python","patch_set":13,"id":"87728b9b_c3b301fe","line":47,"updated":"2025-10-22 23:20:57.000000000","message":"Should we also check that it\u0027s the volume binary since we also handle service being None above, and throw an exception otherwise?  This way if new binaries are added we aren\u0027t doing something unexpected.","commit_id":"460f599abddc1d644a3c7284efdad8d8dadb5faa"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"2624dfa0588d0a947daab2e208d375d5b1a20f77","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        if service \u003d\u003d constants.BACKUP_TOPIC:"},{"line_number":46,"context_line":"            return self.backup_api.list_availability_zones()"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def index(self, req):"}],"source_content_type":"text/x-python","patch_set":13,"id":"a110105e_8e086259","line":47,"in_reply_to":"87728b9b_c3b301fe","updated":"2025-10-23 08:00:08.000000000","message":"Thanks for the review, I\u0027ve updated it to be even more explicit.","commit_id":"460f599abddc1d644a3c7284efdad8d8dadb5faa"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"545e22f16a546d839c1c6e90c890752e68683402","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if service \u003d\u003d constants.BACKUP_BINARY:"},{"line_number":43,"context_line":"            return self.backup_api.list_availability_zones()"},{"line_number":44,"context_line":"        elif service \u003d\u003d constants.VOLUME_BINARY:"},{"line_number":45,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":46,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"2f11ee9a_8b516e59","line":43,"updated":"2026-06-16 08:15:04.000000000","message":"multiple UT are testing for enable_cache\u003dTrue, why cache not enabled hear?","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"96f4c9118b9ea433da667d551efe2dbb7961f44e","unresolved":true,"context_lines":[{"line_number":40,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        if service \u003d\u003d constants.BACKUP_BINARY:"},{"line_number":43,"context_line":"            return self.backup_api.list_availability_zones()"},{"line_number":44,"context_line":"        elif service \u003d\u003d constants.VOLUME_BINARY:"},{"line_number":45,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":46,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":22,"id":"69b63e4e_4d5f6b41","line":43,"in_reply_to":"2f11ee9a_8b516e59","updated":"2026-06-30 07:44:04.000000000","message":"Not sure I understand, please elaborate.","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"545e22f16a546d839c1c6e90c890752e68683402","unresolved":true,"context_lines":[{"line_number":44,"context_line":"        elif service \u003d\u003d constants.VOLUME_BINARY:"},{"line_number":45,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise cinder.exception.Invalid(f\"Invalid service: {service}\")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def index(self, req):"},{"line_number":50,"context_line":"        \"\"\"Describe all known availability zones.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"12dc2f0b_ad89331f","line":47,"updated":"2026-06-16 08:15:04.000000000","message":"I didn\u0027t understand Invalid service? Do you mean InvalidInput given for Service name. Error is confusing.","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"96f4c9118b9ea433da667d551efe2dbb7961f44e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        elif service \u003d\u003d constants.VOLUME_BINARY:"},{"line_number":45,"context_line":"            return self.volume_api.list_availability_zones()"},{"line_number":46,"context_line":"        else:"},{"line_number":47,"context_line":"            raise cinder.exception.Invalid(f\"Invalid service: {service}\")"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def index(self, req):"},{"line_number":50,"context_line":"        \"\"\"Describe all known availability zones.\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"a843e38c_a3100c78","line":47,"in_reply_to":"12dc2f0b_ad89331f","updated":"2026-06-30 07:44:04.000000000","message":"Done, made error more clear and used i18n","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"}],"cinder/tests/unit/backup/test_availability_zone.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"545e22f16a546d839c1c6e90c890752e68683402","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":66,"context_line":"    def test_list_availability_zones_refetched(self, mock_utcnow):"},{"line_number":67,"context_line":"        now \u003d datetime.datetime.now(datetime.timezone.utc).replace(tzinfo\u003dNone)  # noqa"},{"line_number":68,"context_line":"        mock_utcnow.return_value \u003d now"},{"line_number":69,"context_line":"        azs \u003d self.backup_api.list_availability_zones(enable_cache\u003dTrue)"},{"line_number":70,"context_line":"        self.assertEqual([{\"name\": \u0027a\u0027, \u0027available\u0027: True}], list(azs))"}],"source_content_type":"text/x-python","patch_set":22,"id":"a8dc59e9_f84b607f","line":67,"updated":"2026-06-16 08:15:04.000000000","message":"Nit: not sure what issue is ignored. Can you please add comment.","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"},{"author":{"_account_id":16137,"name":"Tobias Urdin","email":"tobias.urdin@binero.com","username":"tobasco"},"change_message_id":"96f4c9118b9ea433da667d551efe2dbb7961f44e","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @mock.patch(\u0027oslo_utils.timeutils.utcnow\u0027)"},{"line_number":66,"context_line":"    def test_list_availability_zones_refetched(self, mock_utcnow):"},{"line_number":67,"context_line":"        now \u003d datetime.datetime.now(datetime.timezone.utc).replace(tzinfo\u003dNone)  # noqa"},{"line_number":68,"context_line":"        mock_utcnow.return_value \u003d now"},{"line_number":69,"context_line":"        azs \u003d self.backup_api.list_availability_zones(enable_cache\u003dTrue)"},{"line_number":70,"context_line":"        self.assertEqual([{\"name\": \u0027a\u0027, \u0027available\u0027: True}], list(azs))"}],"source_content_type":"text/x-python","patch_set":22,"id":"37b2db4b_ab8d7eb4","line":67,"in_reply_to":"a8dc59e9_f84b607f","updated":"2026-06-30 07:44:04.000000000","message":"Done, this is just for line length","commit_id":"1b2b8c9ae564d2849f2a404b94b0852b56eb5c73"}]}
