)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad304d278d4ba1a57a34094da8802d460e9dbfe1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0e4cf820_8d2ce1fa","updated":"2024-02-02 02:00:10.000000000","message":"I think you\u0027re working with an out-of-date version of cinder/backup/drivers/gcs.py here, so please rebase the patch.","commit_id":"84ac8df6313fbbdd0f2ac52d4cb5a7880d5ebeab"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"16c7f6b1ad3186f46f4695c28274234ebcc75d09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c2400492_7c12698a","in_reply_to":"0e4cf820_8d2ce1fa","updated":"2024-02-02 02:39:59.000000000","message":"I\u0027ve rebased this on the current master.","commit_id":"84ac8df6313fbbdd0f2ac52d4cb5a7880d5ebeab"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b17c78b1f2fc308eb81201b86491766f5cbe6535","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"58f8a9ab_8ac9afa2","updated":"2024-02-19 23:28:15.000000000","message":"Code and test changes look good; suggestion inline for improving the comments to make it easier to understand what\u0027s going on without having to search through the file.","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"118cf0695973c231898bce8b4de70bcde2af1fc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"fe7d14fd_54601807","in_reply_to":"58f8a9ab_8ac9afa2","updated":"2024-02-20 01:14:40.000000000","message":"Thanks. These makes sense to me. I\u0027ve updated these comments according to the suggestion.","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"8da53baa71513e95b18eaafe6769c94c37910353","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8d5ce435_f76802e9","updated":"2024-02-20 13:10:25.000000000","message":"Thanks for the quick revision, Takashi!  LGTM.","commit_id":"8fb2b3550c54d495d4314fcd4f9d683b3103cc6f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"42c4a4c4d8b7f96737f40bc6e18ba8713edad782","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1d9d25ee_e3fc6b4f","updated":"2024-08-15 18:32:49.000000000","message":"cinder-tempest-plugin-ceph failed, need https://review.opendev.org/c/openstack/cinder/+/926287 to fix","commit_id":"8fb2b3550c54d495d4314fcd4f9d683b3103cc6f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"2dc1f4dfbfaa5316fa68c66ea892b2d5d33f3a04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"6849d16c_490026b0","updated":"2024-08-17 17:03:28.000000000","message":"recheck https://review.opendev.org/c/openstack/cinder/+/926287 was merged.","commit_id":"8fb2b3550c54d495d4314fcd4f9d683b3103cc6f"}],"cinder/backup/drivers/gcs.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"74b4650506d38a23081df57caa02bddfa70ad380","unresolved":true,"context_lines":[{"line_number":194,"context_line":"        # (v1.6.0 or higher) and all required libraries are installed use"},{"line_number":195,"context_line":"        # google-auth for the credentials"},{"line_number":196,"context_line":"        dist_version \u003d _get_dist_version(\u0027google-api-python-client\u0027)"},{"line_number":197,"context_line":"        if (version.parse(dist_version) \u003e\u003d version.parse(\u00271.6.0\u0027)"},{"line_number":198,"context_line":"                and service_account):"},{"line_number":199,"context_line":"            creds \u003d service_account.Credentials.from_service_account_file("},{"line_number":200,"context_line":"                backup_credential)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1794f077_15eb839d","line":197,"range":{"start_line":197,"start_character":8,"end_line":197,"end_character":65},"updated":"2023-11-28 18:18:20.000000000","message":"hmm probably we should rather drop the whole logic according to `google-api-python-client\u003e\u003d1.11.0 # Apache-2.0`","commit_id":"56b3c2aba89ed3baf0c1b1e1884f2a4ecdd65a1e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"7cc4888c48d66237e23156b57cf7b9e7ef4469ee","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # (v1.6.0 or higher) and all required libraries are installed use"},{"line_number":195,"context_line":"        # google-auth for the credentials"},{"line_number":196,"context_line":"        dist_version \u003d _get_dist_version(\u0027google-api-python-client\u0027)"},{"line_number":197,"context_line":"        if (version.parse(dist_version) \u003e\u003d version.parse(\u00271.6.0\u0027)"},{"line_number":198,"context_line":"                and service_account):"},{"line_number":199,"context_line":"            creds \u003d service_account.Credentials.from_service_account_file("},{"line_number":200,"context_line":"                backup_credential)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ce91c24_b148694f","line":197,"range":{"start_line":197,"start_character":8,"end_line":197,"end_character":65},"in_reply_to":"1794f077_15eb839d","updated":"2023-11-28 18:38:05.000000000","message":"Done","commit_id":"56b3c2aba89ed3baf0c1b1e1884f2a4ecdd65a1e"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d35126dd6d48089b1dd54541a54194ee2a9f1bc7","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                                gexceptions.DefaultCredentialsError,"},{"line_number":182,"context_line":"                                client.Error)"},{"line_number":183,"context_line":"        # Can\u0027t use google-auth, use deprecated oauth2client"},{"line_number":184,"context_line":"        elif client:"},{"line_number":185,"context_line":"            creds \u003d client.GoogleCredentials.from_stream(backup_credential)"},{"line_number":186,"context_line":"            OAUTH_EXCEPTIONS \u003d client.Error"},{"line_number":187,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"caf812a8_2a46db60","line":184,"range":{"start_line":184,"start_character":13,"end_line":184,"end_character":19},"updated":"2023-11-28 18:53:22.000000000","message":"it seems google_auth_httplib2 is installed as a dependency of google-api-python-client 1.11.0 so we might be able to remove this elif logic as well.","commit_id":"cf36e419b521307f610088f4afb843793807d296"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad304d278d4ba1a57a34094da8802d460e9dbfe1","unresolved":true,"context_lines":[{"line_number":30,"context_line":"import io"},{"line_number":31,"context_line":"import os"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"try:"},{"line_number":34,"context_line":"    # For python 3.8 and later"},{"line_number":35,"context_line":"    import importlib.metadata as importlib_metadata"},{"line_number":36,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"30ad0c20_2ac5937a","side":"PARENT","line":33,"updated":"2024-02-02 02:00:10.000000000","message":"I think you need to rebase this patch.  This try block was already removed by https://review.opendev.org/c/openstack/cinder/+/897645","commit_id":"73a4cb9a401fff8d8435691a95933f94c6d879fe"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"353db656faed3df795d70d11f8e563a526c14acd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"import io"},{"line_number":31,"context_line":"import os"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"try:"},{"line_number":34,"context_line":"    # For python 3.8 and later"},{"line_number":35,"context_line":"    import importlib.metadata as importlib_metadata"},{"line_number":36,"context_line":"except ImportError:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ec164a9f_d3dd0da2","side":"PARENT","line":33,"in_reply_to":"30ad0c20_2ac5937a","updated":"2024-02-02 02:39:36.000000000","message":"Done","commit_id":"73a4cb9a401fff8d8435691a95933f94c6d879fe"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"bc13d77304c0b785d948df04ebc9de8582c8a1a2","unresolved":false,"context_lines":[{"line_number":27,"context_line":"\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import base64"},{"line_number":30,"context_line":"import importlib.metadata as importlib_metadata"},{"line_number":31,"context_line":"import io"},{"line_number":32,"context_line":"import os"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"29651af8_1cb40feb","line":30,"range":{"start_line":30,"start_character":0,"end_line":30,"end_character":47},"updated":"2024-02-02 02:43:40.000000000","message":"OK I have to remove this ...","commit_id":"a8f33b5e9e3479544801d4db644b2a21eeb5dbee"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b17c78b1f2fc308eb81201b86491766f5cbe6535","unresolved":true,"context_lines":[{"line_number":173,"context_line":"        backup_credential \u003d CONF.backup_gcs_credential_file"},{"line_number":174,"context_line":"        # If all required libraries are installed use google-auth for"},{"line_number":175,"context_line":"        # the credentials"},{"line_number":176,"context_line":"        if service_account:"},{"line_number":177,"context_line":"            creds \u003d service_account.Credentials.from_service_account_file("},{"line_number":178,"context_line":"                backup_credential)"},{"line_number":179,"context_line":"            OAUTH_EXCEPTIONS \u003d (gexceptions.RefreshError,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3edb5680_c4b7d197","line":176,"updated":"2024-02-19 23:28:15.000000000","message":"This happened about 170 lines ago.  I suggest replacing the comment with something like:\n\nThe service_account was imported if all required libraries are available","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"118cf0695973c231898bce8b4de70bcde2af1fc9","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        backup_credential \u003d CONF.backup_gcs_credential_file"},{"line_number":174,"context_line":"        # If all required libraries are installed use google-auth for"},{"line_number":175,"context_line":"        # the credentials"},{"line_number":176,"context_line":"        if service_account:"},{"line_number":177,"context_line":"            creds \u003d service_account.Credentials.from_service_account_file("},{"line_number":178,"context_line":"                backup_credential)"},{"line_number":179,"context_line":"            OAUTH_EXCEPTIONS \u003d (gexceptions.RefreshError,"}],"source_content_type":"text/x-python","patch_set":7,"id":"704fcbde_46e75735","line":176,"in_reply_to":"3edb5680_c4b7d197","updated":"2024-02-20 01:14:40.000000000","message":"Done","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b17c78b1f2fc308eb81201b86491766f5cbe6535","unresolved":true,"context_lines":[{"line_number":180,"context_line":"                                gexceptions.DefaultCredentialsError,"},{"line_number":181,"context_line":"                                client.Error)"},{"line_number":182,"context_line":"        # Can\u0027t use google-auth, use deprecated oauth2client"},{"line_number":183,"context_line":"        elif client:"},{"line_number":184,"context_line":"            creds \u003d client.GoogleCredentials.from_stream(backup_credential)"},{"line_number":185,"context_line":"            OAUTH_EXCEPTIONS \u003d client.Error"},{"line_number":186,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"f5950b4b_c130664e","line":183,"updated":"2024-02-19 23:28:15.000000000","message":"Similar to the previous comment, I suggest replacing line 182 with something like:\n\nThe (deprecated) client was imported if the oauth2client library is available","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"118cf0695973c231898bce8b4de70bcde2af1fc9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                                gexceptions.DefaultCredentialsError,"},{"line_number":181,"context_line":"                                client.Error)"},{"line_number":182,"context_line":"        # Can\u0027t use google-auth, use deprecated oauth2client"},{"line_number":183,"context_line":"        elif client:"},{"line_number":184,"context_line":"            creds \u003d client.GoogleCredentials.from_stream(backup_credential)"},{"line_number":185,"context_line":"            OAUTH_EXCEPTIONS \u003d client.Error"},{"line_number":186,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5222a086_c4b133ba","line":183,"in_reply_to":"f5950b4b_c130664e","updated":"2024-02-20 01:14:40.000000000","message":"Done","commit_id":"6702a620b5c6703c8ad7e6ef0f6693ba9db008a9"}],"requirements.txt":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ad304d278d4ba1a57a34094da8802d460e9dbfe1","unresolved":true,"context_lines":[{"line_number":57,"context_line":"os-brick\u003e\u003d6.0.0 # Apache-2.0"},{"line_number":58,"context_line":"os-win\u003e\u003d5.5.0 # Apache-2.0"},{"line_number":59,"context_line":"tooz\u003e\u003d2.8.0 # Apache-2.0"},{"line_number":60,"context_line":"google-api-python-client\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":61,"context_line":"castellan\u003e\u003d3.7.0 # Apache-2.0"},{"line_number":62,"context_line":"cryptography\u003e\u003d3.1 # BSD/Apache-2.0"},{"line_number":63,"context_line":"cursive\u003e\u003d0.2.2 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":4,"id":"41b0118a_4b614568","line":60,"updated":"2024-02-02 02:00:10.000000000","message":"yep, we specify at least 1.11.0","commit_id":"84ac8df6313fbbdd0f2ac52d4cb5a7880d5ebeab"}]}
