)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"},{"line_number":11,"context_line":"related OpenStack services such as Barbican."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint enhance-oauth2-interoperability"},{"line_number":14,"context_line":"Change-Id: Ic6ee3c74f5a0e6b7c566033b32ae7308bc198a49"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7b28830d_e54abc4f","line":11,"range":{"start_line":11,"start_character":27,"end_line":11,"end_character":43},"updated":"2023-02-03 15:02:18.000000000","message":"isn\u0027t it Barbican-specific?","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"},{"line_number":11,"context_line":"related OpenStack services such as Barbican."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint enhance-oauth2-interoperability"},{"line_number":14,"context_line":"Change-Id: Ic6ee3c74f5a0e6b7c566033b32ae7308bc198a49"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3ed0544a_68b90e9d","line":11,"range":{"start_line":11,"start_character":27,"end_line":11,"end_character":43},"in_reply_to":"7b28830d_e54abc4f","updated":"2023-02-09 01:42:09.000000000","message":"The word \"barbican\" has been removed.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External Authentication Server OAuth2.0 Grant Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"},{"line_number":11,"context_line":"related OpenStack services that uses the external_oauth2_token filter"},{"line_number":12,"context_line":"provided by the keystone middleware for permission authentication."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"a7fe85c6_233cad6a","line":9,"range":{"start_line":9,"start_character":8,"end_line":9,"end_character":14},"updated":"2023-02-22 03:00:13.000000000","message":"nits: tacker -\u003e Tacker","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External Authentication Server OAuth2.0 Grant Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"},{"line_number":11,"context_line":"related OpenStack services that uses the external_oauth2_token filter"},{"line_number":12,"context_line":"provided by the keystone middleware for permission authentication."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"e82f8284_41c79f02","line":9,"range":{"start_line":9,"start_character":8,"end_line":9,"end_character":14},"in_reply_to":"a7fe85c6_233cad6a","updated":"2023-02-22 07:57:21.000000000","message":"Has Modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"846d906f494085c4f6c6751fbfe648d3ed7f53ef","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     sunyonggen \u003csunyonggen@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-24 09:11:58 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External Authentication Server OAuth2.0 Grant Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"6c2174d7_a98dedb0","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":53},"updated":"2023-03-02 00:51:14.000000000","message":"Could you follow the commit message guideline?\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure\n\u003e The first line should be limited to 50 characters and should not end with a period.","commit_id":"7c4e41ff0e078f1c2dd1149e77ef710fb488cbbb"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"1f52f0e6c4e73064d496cade253acf92bc587adb","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     sunyonggen \u003csunyonggen@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-24 09:11:58 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External Authentication Server OAuth2.0 Grant Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"55311cc0_f4b97b35","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":53},"in_reply_to":"6c2174d7_a98dedb0","updated":"2023-09-15 10:40:18.000000000","message":"Ack","commit_id":"7c4e41ff0e078f1c2dd1149e77ef710fb488cbbb"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"170890f9c300dae13d2adfd65437af0e378308fe","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     sunyonggen \u003csunyonggen@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-24 09:11:58 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External Authentication Server OAuth2.0 Grant Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"77de3ddb_925ec245","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":53},"in_reply_to":"6c2174d7_a98dedb0","updated":"2023-03-03 08:06:15.000000000","message":"Has modified.","commit_id":"7c4e41ff0e078f1c2dd1149e77ef710fb488cbbb"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"4e2671fb9a36408ab6da5ea985625d674f6dee7d","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     sunyonggen \u003csunyonggen@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-03-13 16:57:00 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External OAuth2.0 Authorization Server Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"54156b76_cd3bf4ac","line":7,"updated":"2023-04-10 05:39:25.000000000","message":"Please kindly add [DNM] to the title because we are waiting to merge the keystone\u0027s patch [1].\n\n[1] https://review.opendev.org/c/openstack/keystonemiddleware/+/868734","commit_id":"42de787327d1a9172f1bf570c2e1dc7e379f0194"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     sunyonggen \u003csunyonggen@fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-03-13 16:57:00 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"External OAuth2.0 Authorization Server Support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Support Tacker service to obtain an OAuth 2.0 access token from an"},{"line_number":10,"context_line":"external authorization server, and then use the access token to access"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":14,"id":"5938a42b_a6ea53aa","line":7,"in_reply_to":"54156b76_cd3bf4ac","updated":"2023-09-15 08:08:28.000000000","message":"Removed DNM because keystone\u0027s patch was merged.","commit_id":"42de787327d1a9172f1bf570c2e1dc7e379f0194"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"5d4623fcc947efde260081f7df55fb7fdf45028d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"769ac5ca_e8de0343","updated":"2023-01-23 09:17:18.000000000","message":"recheck - infra failure in sol job","commit_id":"d2eff409bb243ebb4f639676a5342e5379c68cbf"},{"author":{"_account_id":35476,"name":"taiki kimura","email":"taiki.kimura@ntt-at.co.jp","username":"tkimura"},"change_message_id":"e1ccf52db76f88adfba7839dddb0c4c60ad335cd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"099cad1a_d0dbf157","updated":"2023-02-06 06:39:23.000000000","message":"Thank you for the patch.\n\nPlease kindly find my comments.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9a26c8f4_738dd04f","updated":"2023-02-03 15:02:18.000000000","message":"Thank you for the patch.\n\nPlease kindly find my comments.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"8b7391335a82096f925eb829f0820fcfa69ac544","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ccd43923_934ba128","updated":"2023-01-27 13:33:47.000000000","message":"recheck - infra failure in tacker.tests.functional.sol.vnflcm.test_vnf_instance_with_user_data.VnfLcmWithUserDataTest.test_stack_update_in_scaling of sol job.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e2f7475a_c53f5e66","updated":"2023-02-22 03:00:13.000000000","message":"Thank you for the patch. Please kindly check my comments.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"846d906f494085c4f6c6751fbfe648d3ed7f53ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"52dc3270_c9592be1","updated":"2023-03-02 00:51:14.000000000","message":"Thanks for your patch, please kindly find my comment and resolve merge conflict.","commit_id":"7c4e41ff0e078f1c2dd1149e77ef710fb488cbbb"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"7e6dfd310906ab0211e1ceeea187b0ff14813935","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"23f92ec1_4804fc06","updated":"2023-03-13 04:45:31.000000000","message":"Thank you for rework.\nI\u0027ll +1 after Zuul passes","commit_id":"57baddcc8eed70def0c1af010a94a6f120cc264c"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"4e2671fb9a36408ab6da5ea985625d674f6dee7d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"d1a2e747_4a388e0b","updated":"2023-04-10 05:39:25.000000000","message":"Thanks for your great re-work! Please check my nit request.","commit_id":"42de787327d1a9172f1bf570c2e1dc7e379f0194"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"adf438ceff842c00818acdbba296098b0a28a7ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"ae31239f_20e8af5d","updated":"2023-04-13 02:39:45.000000000","message":"recheck - infra failure in solv2 job","commit_id":"484f1facc51a30f1eb8aa11d2e75d75e702e3925"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"1f52f0e6c4e73064d496cade253acf92bc587adb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"eb328266_49123c54","updated":"2023-09-15 10:40:18.000000000","message":"LGTM.","commit_id":"4a2cce57c26e97d2167dfdc229f96ee429aeb7d9"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"53feff95_7d0c46bb","updated":"2023-09-15 08:08:28.000000000","message":"Thank you for your comment.\nI have fixed the commented points.","commit_id":"4a2cce57c26e97d2167dfdc229f96ee429aeb7d9"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"a86123e2368f4894bd1d5c4709ea1ba170aa22d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"fb521ef8_1258a307","updated":"2023-09-15 10:59:53.000000000","message":"Thanks for your response so quickly.","commit_id":"4a2cce57c26e97d2167dfdc229f96ee429aeb7d9"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"8dc539c0a5b0de336c926b60a7136beacac82a25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"d5b01721_9c80f5b3","updated":"2023-09-15 10:34:07.000000000","message":"There was a mistake in some of the comments, so I have corrected them.","commit_id":"4a2cce57c26e97d2167dfdc229f96ee429aeb7d9"}],"releasenotes/notes/bp-enhance-oauth2-interoperability-74eea5a851c31894.yaml":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Support tacker service to obtain an OAuth 2.0 access token from an\r"},{"line_number":4,"context_line":"    external authorization server, and then use the access token to access\r"},{"line_number":5,"context_line":"    related OpenStack services such as Barbican.\r"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"4a5a815c_22a5d321","line":5,"range":{"start_line":5,"start_character":39,"end_line":5,"end_character":47},"updated":"2023-02-03 15:02:18.000000000","message":"ditto","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Support tacker service to obtain an OAuth 2.0 access token from an\r"},{"line_number":4,"context_line":"    external authorization server, and then use the access token to access\r"},{"line_number":5,"context_line":"    related OpenStack services such as Barbican.\r"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"787ccd73_3f76609e","line":5,"range":{"start_line":5,"start_character":39,"end_line":5,"end_character":47},"in_reply_to":"4a5a815c_22a5d321","updated":"2023-02-09 01:42:09.000000000","message":"The word \"barbican\" has been removed.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Support tacker service to obtain an OAuth 2.0 access token from an\r"},{"line_number":4,"context_line":"    external authorization server, and then use the access token to access\r"},{"line_number":5,"context_line":"    related OpenStack services that uses the external_oauth2_token filter\r"},{"line_number":6,"context_line":"    provided by the keystone middleware for permission authentication.\r"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"03a9656a_fb0a7b91","line":3,"updated":"2023-02-22 03:00:13.000000000","message":"nits: tacker -\u003e Tacker","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---\r"},{"line_number":2,"context_line":"features:\r"},{"line_number":3,"context_line":"  - Support tacker service to obtain an OAuth 2.0 access token from an\r"},{"line_number":4,"context_line":"    external authorization server, and then use the access token to access\r"},{"line_number":5,"context_line":"    related OpenStack services that uses the external_oauth2_token filter\r"},{"line_number":6,"context_line":"    provided by the keystone middleware for permission authentication.\r"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"205010bf_630f3aa2","line":3,"in_reply_to":"03a9656a_fb0a7b91","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"}],"tacker/common/ext_oauth2_auth.py":[{"author":{"_account_id":35476,"name":"taiki kimura","email":"taiki.kimura@ntt-at.co.jp","username":"tkimura"},"change_message_id":"e1ccf52db76f88adfba7839dddb0c4c60ad335cd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ab7a435f_8bb17f4a","updated":"2023-02-06 06:39:23.000000000","message":"Isn\u0027t it necessary to add `tacker.common.ext_oauth2_auth` to `/etc/config-generator.conf`?","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"85f839f9_4a4956c9","in_reply_to":"ab7a435f_8bb17f4a","updated":"2023-02-09 01:42:09.000000000","message":"Already added.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":33,"context_line":"_EXT_AUTH_CONFIG_GROUP_NAME \u003d \u0027ext_oauth2_auth\u0027\r"},{"line_number":34,"context_line":"_EXTERNAL_AUTH2_OPTS \u003d [\r"},{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to true.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"961011f2_5b0ad63e","line":35,"updated":"2023-02-03 15:02:18.000000000","message":"I think it\u0027s necessary to warn that this feature is not available until the patch for keystonemiddleware [1] is marged.\n\n[1] https://review.opendev.org/c/openstack/keystonemiddleware/+/868734","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":32,"context_line":"LOG \u003d logging.getLogger(__name__)\r"},{"line_number":33,"context_line":"_EXT_AUTH_CONFIG_GROUP_NAME \u003d \u0027ext_oauth2_auth\u0027\r"},{"line_number":34,"context_line":"_EXTERNAL_AUTH2_OPTS \u003d [\r"},{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to true.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"5e60ea11_967991fd","line":35,"in_reply_to":"961011f2_5b0ad63e","updated":"2023-02-09 01:42:09.000000000","message":"A relevant warning has been added.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":100,"context_line":"    \"\"\"Construct an Auth to fetch a access token for HTTP access.\"\"\"\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"    def __init__(self):\r"},{"line_number":103,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"},{"line_number":104,"context_line":"        self.token_endpoint \u003d self._get_config_option(\r"},{"line_number":105,"context_line":"            \u0027token_endpoint\u0027, is_required\u003dTrue)\r"},{"line_number":106,"context_line":"        self.auth_method \u003d self._get_config_option(\r"},{"line_number":107,"context_line":"            \u0027auth_method\u0027, is_required\u003dTrue)\r"},{"line_number":108,"context_line":"        self.client_id \u003d self._get_config_option(\r"},{"line_number":109,"context_line":"            \u0027client_id\u0027, is_required\u003dTrue)\r"},{"line_number":110,"context_line":"        self.scope \u003d self._get_config_option(\r"},{"line_number":111,"context_line":"            \u0027scope\u0027, is_required\u003dTrue)\r"},{"line_number":112,"context_line":"        self.access_token \u003d None\r"},{"line_number":113,"context_line":"\r"},{"line_number":114,"context_line":"    def _get_config_option(self, key, is_required):\r"},{"line_number":115,"context_line":"        \"\"\"Read the value from config file by the config key.\"\"\"\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"f716d98c_c736a859","line":112,"range":{"start_line":103,"start_character":0,"end_line":112,"end_character":33},"updated":"2023-02-03 15:02:18.000000000","message":"it might be better to set these variables by arguments.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    \"\"\"Construct an Auth to fetch a access token for HTTP access.\"\"\"\r"},{"line_number":101,"context_line":"\r"},{"line_number":102,"context_line":"    def __init__(self):\r"},{"line_number":103,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"},{"line_number":104,"context_line":"        self.token_endpoint \u003d self._get_config_option(\r"},{"line_number":105,"context_line":"            \u0027token_endpoint\u0027, is_required\u003dTrue)\r"},{"line_number":106,"context_line":"        self.auth_method \u003d self._get_config_option(\r"},{"line_number":107,"context_line":"            \u0027auth_method\u0027, is_required\u003dTrue)\r"},{"line_number":108,"context_line":"        self.client_id \u003d self._get_config_option(\r"},{"line_number":109,"context_line":"            \u0027client_id\u0027, is_required\u003dTrue)\r"},{"line_number":110,"context_line":"        self.scope \u003d self._get_config_option(\r"},{"line_number":111,"context_line":"            \u0027scope\u0027, is_required\u003dTrue)\r"},{"line_number":112,"context_line":"        self.access_token \u003d None\r"},{"line_number":113,"context_line":"\r"},{"line_number":114,"context_line":"    def _get_config_option(self, key, is_required):\r"},{"line_number":115,"context_line":"        \"\"\"Read the value from config file by the config key.\"\"\"\r"}],"source_content_type":"text/x-python","patch_set":4,"id":"c5b8c6b5_b8045056","line":112,"range":{"start_line":103,"start_character":0,"end_line":112,"end_character":33},"in_reply_to":"f716d98c_c736a859","updated":"2023-02-09 01:42:09.000000000","message":"Because the relevant field values of the ExtOAuth2Auth object do not change and are used by multiple methods, properties are defined. In addition, considering that the parameters of the config are defined in the ext_oauth2_auth.py, in order to reduce the external call to the relevant config parameters, the relevant configuration information is automatically loaded inside the constructor.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to true. Warning: This feature is not available \u0027\r"},{"line_number":39,"context_line":"                     \u0027until the patch for keystonemiddleware [1] is marged.\u0027\r"},{"line_number":40,"context_line":"                     \u0027[1] https://review.opendev.org/c/openstack/\u0027\r"},{"line_number":41,"context_line":"                     \u0027keystonemiddleware/+/868734\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"76003146_e2023f46","line":38,"range":{"start_line":38,"start_character":29,"end_line":38,"end_character":33},"updated":"2023-02-22 03:00:13.000000000","message":"nits: true -\u003e True.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to true. Warning: This feature is not available \u0027\r"},{"line_number":39,"context_line":"                     \u0027until the patch for keystonemiddleware [1] is marged.\u0027\r"},{"line_number":40,"context_line":"                     \u0027[1] https://review.opendev.org/c/openstack/\u0027\r"},{"line_number":41,"context_line":"                     \u0027keystonemiddleware/+/868734\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"d631bc71_dddd2db3","line":38,"range":{"start_line":38,"start_character":29,"end_line":38,"end_character":33},"in_reply_to":"76003146_e2023f46","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027certfile\u0027,\r"},{"line_number":43,"context_line":"               help\u003d\u0027Required if identity server requires client certificate\u0027),\r"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027keyfile\u0027,\r"},{"line_number":45,"context_line":"               help\u003d\u0027Required if identity server requires client certificate\u0027),\r"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027cafile\u0027,\r"},{"line_number":47,"context_line":"               help\u003d\u0027A PEM encoded Certificate Authority to use when \u0027\r"},{"line_number":48,"context_line":"                    \u0027verifying HTTPs connections. Defaults to system CAs.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"8ea772cb_eedb61b1","line":45,"range":{"start_line":45,"start_character":65,"end_line":45,"end_character":76},"updated":"2023-02-22 03:00:13.000000000","message":"If `keyfile` means private key, this is not a certificate.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    cfg.StrOpt(\u0027certfile\u0027,\r"},{"line_number":43,"context_line":"               help\u003d\u0027Required if identity server requires client certificate\u0027),\r"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027keyfile\u0027,\r"},{"line_number":45,"context_line":"               help\u003d\u0027Required if identity server requires client certificate\u0027),\r"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027cafile\u0027,\r"},{"line_number":47,"context_line":"               help\u003d\u0027A PEM encoded Certificate Authority to use when \u0027\r"},{"line_number":48,"context_line":"                    \u0027verifying HTTPs connections. Defaults to system CAs.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"6b6b863a_d23a49ba","line":45,"range":{"start_line":45,"start_character":65,"end_line":45,"end_character":76},"in_reply_to":"8ea772cb_eedb61b1","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":73,"context_line":"                    \u0027Authorization Server\u0027),\r"},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027client_secret\u0027,\r"},{"line_number":75,"context_line":"               help\u003d\u0027The OAuth 2.0 client secret. When the auth_method is \u0027\r"},{"line_number":76,"context_line":"                    \u0027client_secret_basic, client_secret_post, \u0027\r"},{"line_number":77,"context_line":"                    \u0027client_secret_jwt, the value is used, and otherwise the \u0027\r"},{"line_number":78,"context_line":"                    \u0027value is ignored.\u0027),\r"},{"line_number":79,"context_line":"    cfg.StrOpt(\u0027jwt_key_file\u0027,\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"c9617562_7cfa9f1a","line":76,"range":{"start_line":76,"start_character":61,"end_line":76,"end_character":62},"updated":"2023-02-22 03:00:13.000000000","message":"nits: Add `or`","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                    \u0027Authorization Server\u0027),\r"},{"line_number":74,"context_line":"    cfg.StrOpt(\u0027client_secret\u0027,\r"},{"line_number":75,"context_line":"               help\u003d\u0027The OAuth 2.0 client secret. When the auth_method is \u0027\r"},{"line_number":76,"context_line":"                    \u0027client_secret_basic, client_secret_post, \u0027\r"},{"line_number":77,"context_line":"                    \u0027client_secret_jwt, the value is used, and otherwise the \u0027\r"},{"line_number":78,"context_line":"                    \u0027value is ignored.\u0027),\r"},{"line_number":79,"context_line":"    cfg.StrOpt(\u0027jwt_key_file\u0027,\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"9b6b90dd_cc28cbf4","line":76,"range":{"start_line":76,"start_character":61,"end_line":76,"end_character":62},"in_reply_to":"c9617562_7cfa9f1a","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":89,"context_line":"                    \u0027often set to RS256, and otherwise the value is ignored.\u0027),\r"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027jwt_bearer_time_out\u0027, default\u003d3600,\r"},{"line_number":91,"context_line":"               help\u003d\u0027This value is used to calculate the expiration time. If \u0027\r"},{"line_number":92,"context_line":"                    \u0027after the expiration time, the access token can not be \u0027\r"},{"line_number":93,"context_line":"                    \u0027accepted. When the auth_method is client_secret_jwt or \u0027\r"},{"line_number":94,"context_line":"                    \u0027private_key_jwt, the value is used, and otherwise the \u0027\r"},{"line_number":95,"context_line":"                    \u0027value is ignored.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"77ff81b0_de283beb","line":92,"range":{"start_line":92,"start_character":65,"end_line":92,"end_character":72},"updated":"2023-02-22 03:00:13.000000000","message":"nits: can not -\u003e cannot","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                    \u0027often set to RS256, and otherwise the value is ignored.\u0027),\r"},{"line_number":90,"context_line":"    cfg.IntOpt(\u0027jwt_bearer_time_out\u0027, default\u003d3600,\r"},{"line_number":91,"context_line":"               help\u003d\u0027This value is used to calculate the expiration time. If \u0027\r"},{"line_number":92,"context_line":"                    \u0027after the expiration time, the access token can not be \u0027\r"},{"line_number":93,"context_line":"                    \u0027accepted. When the auth_method is client_secret_jwt or \u0027\r"},{"line_number":94,"context_line":"                    \u0027private_key_jwt, the value is used, and otherwise the \u0027\r"},{"line_number":95,"context_line":"                    \u0027value is ignored.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"c987c54a_329102da","line":92,"range":{"start_line":92,"start_character":65,"end_line":92,"end_character":72},"in_reply_to":"77ff81b0_de283beb","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":105,"context_line":"\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"class ExtOAuth2Auth(object):\r"},{"line_number":108,"context_line":"    \"\"\"Construct an Auth to fetch a access token for HTTP access.\"\"\"\r"},{"line_number":109,"context_line":"\r"},{"line_number":110,"context_line":"    def __init__(self):\r"},{"line_number":111,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"a3157e51_abb81522","line":108,"range":{"start_line":108,"start_character":34,"end_line":108,"end_character":35},"updated":"2023-02-22 03:00:13.000000000","message":"typo: a -\u003e an","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":105,"context_line":"\r"},{"line_number":106,"context_line":"\r"},{"line_number":107,"context_line":"class ExtOAuth2Auth(object):\r"},{"line_number":108,"context_line":"    \"\"\"Construct an Auth to fetch a access token for HTTP access.\"\"\"\r"},{"line_number":109,"context_line":"\r"},{"line_number":110,"context_line":"    def __init__(self):\r"},{"line_number":111,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"a213dc4a_12c79774","line":108,"range":{"start_line":108,"start_character":34,"end_line":108,"end_character":35},"in_reply_to":"a3157e51_abb81522","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34712,"name":"Yuta Kazato","display_name":"Yuta Kazato","email":"yuta.kazato.nw@hco.ntt.co.jp","username":"kazatoy-ntt"},"change_message_id":"008182244dc3cf20c3b49401bbdc9dc792799c25","unresolved":true,"context_lines":[{"line_number":309,"context_line":"        return http_response\r"},{"line_number":310,"context_line":"\r"},{"line_number":311,"context_line":"    def get_headers(self, session, **kwargs):\r"},{"line_number":312,"context_line":"        \"\"\"Get access token and add to request header for HTTP access.\"\"\"\r"},{"line_number":313,"context_line":"        if not self.access_token:\r"},{"line_number":314,"context_line":"            try:\r"},{"line_number":315,"context_line":"                if self.auth_method \u003d\u003d \u0027tls_client_auth\u0027:\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"74199502_a5568c71","line":312,"range":{"start_line":312,"start_character":15,"end_line":312,"end_character":27},"updated":"2023-02-22 03:00:13.000000000","message":"nits: access token -\u003e an access token","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b6762439b99d692f05a383f358c7324a839ed4dd","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        return http_response\r"},{"line_number":310,"context_line":"\r"},{"line_number":311,"context_line":"    def get_headers(self, session, **kwargs):\r"},{"line_number":312,"context_line":"        \"\"\"Get access token and add to request header for HTTP access.\"\"\"\r"},{"line_number":313,"context_line":"        if not self.access_token:\r"},{"line_number":314,"context_line":"            try:\r"},{"line_number":315,"context_line":"                if self.auth_method \u003d\u003d \u0027tls_client_auth\u0027:\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"e55ca29a_46ddef15","line":312,"range":{"start_line":312,"start_character":15,"end_line":312,"end_character":27},"in_reply_to":"74199502_a5568c71","updated":"2023-02-22 07:57:21.000000000","message":"Has modified.","commit_id":"04b986ac3005461df80a72ce8b5643245f2d61de"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"53361bf014beddf0a26ec16deb1fde620c6166fe","unresolved":true,"context_lines":[{"line_number":116,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"},{"line_number":117,"context_line":"        try:\r"},{"line_number":118,"context_line":"            # Check whether the configuration parameter has been registered\r"},{"line_number":119,"context_line":"            self.auth_method \u003d self._conf.auth_method\r"},{"line_number":120,"context_line":"        except cfg.NoSuchOptError:\r"},{"line_number":121,"context_line":"            LOG.debug(\u0027The relevant config parameters are not registered \u0027\r"},{"line_number":122,"context_line":"                      \u0027and need to be registered before they can be used.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"19a0937c_0f61bc03","line":119,"updated":"2023-03-09 12:39:35.000000000","message":"Do you know any alternative ways to confirm if the parameter exists or not?\nUsing if-else is more preferable than try-except, IMO.","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"7e6dfd310906ab0211e1ceeea187b0ff14813935","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self._conf \u003d cfg.CONF.ext_oauth2_auth\r"},{"line_number":117,"context_line":"        try:\r"},{"line_number":118,"context_line":"            # Check whether the configuration parameter has been registered\r"},{"line_number":119,"context_line":"            self.auth_method \u003d self._conf.auth_method\r"},{"line_number":120,"context_line":"        except cfg.NoSuchOptError:\r"},{"line_number":121,"context_line":"            LOG.debug(\u0027The relevant config parameters are not registered \u0027\r"},{"line_number":122,"context_line":"                      \u0027and need to be registered before they can be used.\u0027)\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"b0b6e109_ace3627e","line":119,"in_reply_to":"19a0937c_0f61bc03","updated":"2023-03-13 04:45:31.000000000","message":"Done","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":33,"context_line":"_EXT_AUTH_CONFIG_GROUP_NAME \u003d \u0027ext_oauth2_auth\u0027\r"},{"line_number":34,"context_line":"_EXTERNAL_AUTH2_OPTS \u003d [\r"},{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to True. Warning: This feature is not available \u0027\r"},{"line_number":39,"context_line":"                     \u0027until the patch for keystonemiddleware [1] is merged.\u0027\r"},{"line_number":40,"context_line":"                     \u0027[1] https://review.opendev.org/c/openstack/\u0027\r"},{"line_number":41,"context_line":"                     \u0027keystonemiddleware/+/868734\u0027),\r"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027token_endpoint\u0027,\r"},{"line_number":43,"context_line":"               help\u003d\u0027The endpoint for access token API.\u0027),\r"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027scope\u0027,\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"dec670cd_311fc8d8","line":41,"range":{"start_line":36,"start_character":0,"end_line":41,"end_character":51},"updated":"2023-09-14 14:45:08.000000000","message":"It\u0027s just a little bit long and redundant. And it\u0027s required drop the reference. So, it\u0027s enough \"Set True to use external Oauth2.0 auth server\". What do you think?","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":33,"context_line":"_EXT_AUTH_CONFIG_GROUP_NAME \u003d \u0027ext_oauth2_auth\u0027\r"},{"line_number":34,"context_line":"_EXTERNAL_AUTH2_OPTS \u003d [\r"},{"line_number":35,"context_line":"    cfg.BoolOpt(\u0027use_ext_oauth2_auth\u0027, default\u003dFalse,\r"},{"line_number":36,"context_line":"                help\u003d\u0027When using an External OAuth2.0 Authentication Server \u0027\r"},{"line_number":37,"context_line":"                     \u0027for authentication, the use_ext_oauth2_auth must be \u0027\r"},{"line_number":38,"context_line":"                     \u0027set to True. Warning: This feature is not available \u0027\r"},{"line_number":39,"context_line":"                     \u0027until the patch for keystonemiddleware [1] is merged.\u0027\r"},{"line_number":40,"context_line":"                     \u0027[1] https://review.opendev.org/c/openstack/\u0027\r"},{"line_number":41,"context_line":"                     \u0027keystonemiddleware/+/868734\u0027),\r"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027token_endpoint\u0027,\r"},{"line_number":43,"context_line":"               help\u003d\u0027The endpoint for access token API.\u0027),\r"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027scope\u0027,\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"478d4062_512695a6","line":41,"range":{"start_line":36,"start_character":0,"end_line":41,"end_character":51},"in_reply_to":"dec670cd_311fc8d8","updated":"2023-09-15 08:08:28.000000000","message":"As you pointed out, I think it would be better to write it concisely, so I have fixed it.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":60,"context_line":"                    \u0027API server.\u0027),\r"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027audience\u0027,\r"},{"line_number":62,"context_line":"               help\u003d\u0027The Audience should be the URL of the Authorization \u0027\r"},{"line_number":63,"context_line":"                    \u0027Server\\\u0027s Token Endpoint. The Authorization Server will \u0027\r"},{"line_number":64,"context_line":"                    \u0027verify that it is an intended audience for the token.\u0027),\r"},{"line_number":65,"context_line":"    cfg.StrOpt(\u0027auth_method\u0027,\r"},{"line_number":66,"context_line":"               default\u003d\u0027client_secret_basic\u0027,\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"d73594cb_f0c88520","line":63,"updated":"2023-09-14 14:45:08.000000000","message":"Why don\u0027t you parenthesize this second line with \u0027\"\u0027 and drop \u0027\\\u0027?","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":60,"context_line":"                    \u0027API server.\u0027),\r"},{"line_number":61,"context_line":"    cfg.StrOpt(\u0027audience\u0027,\r"},{"line_number":62,"context_line":"               help\u003d\u0027The Audience should be the URL of the Authorization \u0027\r"},{"line_number":63,"context_line":"                    \u0027Server\\\u0027s Token Endpoint. The Authorization Server will \u0027\r"},{"line_number":64,"context_line":"                    \u0027verify that it is an intended audience for the token.\u0027),\r"},{"line_number":65,"context_line":"    cfg.StrOpt(\u0027auth_method\u0027,\r"},{"line_number":66,"context_line":"               default\u003d\u0027client_secret_basic\u0027,\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"166c81ee_6043f19b","line":63,"in_reply_to":"d73594cb_f0c88520","updated":"2023-09-15 08:08:28.000000000","message":"I fixed it to use `\"\"` and drop `\\`.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":69,"context_line":"                        \u0027client_secret_jwt\u0027),\r"},{"line_number":70,"context_line":"               help\u003d\u0027The auth_method must use the authentication method \u0027\r"},{"line_number":71,"context_line":"                    \u0027specified by the Authorization Server. The system \u0027\r"},{"line_number":72,"context_line":"                    \u0027supports 5 authentication methods such as \u0027\r"},{"line_number":73,"context_line":"                    \u0027tls_client_auth, client_secret_basic, \u0027\r"},{"line_number":74,"context_line":"                    \u0027client_secret_post, client_secret_jwt, private_key_jwt.\u0027),\r"},{"line_number":75,"context_line":"    cfg.StrOpt(\u0027client_id\u0027,\r"},{"line_number":76,"context_line":"               help\u003d\u0027The OAuth 2.0 Client Identifier valid at the \u0027\r"},{"line_number":77,"context_line":"                    \u0027Authorization Server.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"2ad5c41f_5cbedd39","line":74,"range":{"start_line":72,"start_character":20,"end_line":74,"end_character":77},"updated":"2023-09-14 14:45:08.000000000","message":"Just a question. Is it needed to explain all the choice again here even though it can be referred in `choices` field above?","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":69,"context_line":"                        \u0027client_secret_jwt\u0027),\r"},{"line_number":70,"context_line":"               help\u003d\u0027The auth_method must use the authentication method \u0027\r"},{"line_number":71,"context_line":"                    \u0027specified by the Authorization Server. The system \u0027\r"},{"line_number":72,"context_line":"                    \u0027supports 5 authentication methods such as \u0027\r"},{"line_number":73,"context_line":"                    \u0027tls_client_auth, client_secret_basic, \u0027\r"},{"line_number":74,"context_line":"                    \u0027client_secret_post, client_secret_jwt, private_key_jwt.\u0027),\r"},{"line_number":75,"context_line":"    cfg.StrOpt(\u0027client_id\u0027,\r"},{"line_number":76,"context_line":"               help\u003d\u0027The OAuth 2.0 Client Identifier valid at the \u0027\r"},{"line_number":77,"context_line":"                    \u0027Authorization Server.\u0027),\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"ec3a7de5_f87ad289","line":74,"range":{"start_line":72,"start_character":20,"end_line":74,"end_character":77},"in_reply_to":"2ad5c41f_5cbedd39","updated":"2023-09-15 08:08:28.000000000","message":"As you pointed out, it was deleted because it was redundant.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"}],"tacker/context.py":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":217,"context_line":"def generate_tacker_service_context():"},{"line_number":218,"context_line":"    if CONF.ext_oauth2_auth.use_ext_oauth2_auth:"},{"line_number":219,"context_line":"        return ExtOAuth2Auth()"},{"line_number":220,"context_line":"    else:"},{"line_number":221,"context_line":"        return keystone_password.KeystonePassword("},{"line_number":222,"context_line":"            password\u003dCONF.keystone_authtoken.password,"},{"line_number":223,"context_line":"            auth_url\u003dCONF.keystone_authtoken.auth_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7de37a35_f27c940e","line":220,"updated":"2023-02-03 15:02:18.000000000","message":"This `else` is not necessary. Please remove it.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":217,"context_line":"def generate_tacker_service_context():"},{"line_number":218,"context_line":"    if CONF.ext_oauth2_auth.use_ext_oauth2_auth:"},{"line_number":219,"context_line":"        return ExtOAuth2Auth()"},{"line_number":220,"context_line":"    else:"},{"line_number":221,"context_line":"        return keystone_password.KeystonePassword("},{"line_number":222,"context_line":"            password\u003dCONF.keystone_authtoken.password,"},{"line_number":223,"context_line":"            auth_url\u003dCONF.keystone_authtoken.auth_url,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3b3127ae_70ad84d1","line":220,"in_reply_to":"7de37a35_f27c940e","updated":"2023-02-09 01:42:09.000000000","message":"Already modified.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"}],"tacker/tests/unit/common/test_ext_oauth2_auth.py":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":26,"context_line":"from tacker import context\r"},{"line_number":27,"context_line":"from tacker.tests.unit import base\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"JWT_KEY_CONTENT \u003d (\r"},{"line_number":30,"context_line":"    \u0027-----BEGIN PRIVATE KEY-----\\n\u0027\r"},{"line_number":31,"context_line":"    \u0027MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDegNuQgmQL7n10\\n\u0027\r"},{"line_number":32,"context_line":"    \u0027+Z3itXtpiNHlvZwCYOS66+3PakAw1OoRB6SiHeNYnuVRHlraTDKnnfgHhX/1AVs7\\n\u0027\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"0b728a07_dc346312","line":29,"updated":"2023-09-14 14:45:08.000000000","message":"This key is better to use here document or move it to another file instead for maintenance.","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":26,"context_line":"from tacker import context\r"},{"line_number":27,"context_line":"from tacker.tests.unit import base\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"JWT_KEY_CONTENT \u003d (\r"},{"line_number":30,"context_line":"    \u0027-----BEGIN PRIVATE KEY-----\\n\u0027\r"},{"line_number":31,"context_line":"    \u0027MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDegNuQgmQL7n10\\n\u0027\r"},{"line_number":32,"context_line":"    \u0027+Z3itXtpiNHlvZwCYOS66+3PakAw1OoRB6SiHeNYnuVRHlraTDKnnfgHhX/1AVs7\\n\u0027\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"eade4db1_0022ec05","line":29,"in_reply_to":"0b728a07_dc346312","updated":"2023-09-15 08:08:28.000000000","message":"I fixed to read from another file.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":132,"context_line":"\r"},{"line_number":133,"context_line":"    def __getattr__(self, name):\r"},{"line_number":134,"context_line":"        if not self.conf:\r"},{"line_number":135,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":136,"context_line":"        if name not in self.conf:\r"},{"line_number":137,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":138,"context_line":"        return self.conf.get(name)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"1d4195ea_4fcdac97","line":135,"updated":"2023-09-14 14:45:08.000000000","message":"The message is correct because it\u0027s the same as next one. Or making it one `if` statement is better as below if my understanding is correct.\n\n```\nif not self.conf or name not in self.conf:\n```","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":132,"context_line":"\r"},{"line_number":133,"context_line":"    def __getattr__(self, name):\r"},{"line_number":134,"context_line":"        if not self.conf:\r"},{"line_number":135,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":136,"context_line":"        if name not in self.conf:\r"},{"line_number":137,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":138,"context_line":"        return self.conf.get(name)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"a7badbf0_e9b2b627","line":135,"in_reply_to":"1d4195ea_4fcdac97","updated":"2023-09-15 08:08:28.000000000","message":"As you pointed out, the if branches were combined into one, so I fixed it.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        if raise_error:\r"},{"line_number":175,"context_line":"            raise raise_error\r"},{"line_number":176,"context_line":"        if auth_method \u003d\u003d \u0027tls_client_auth\u0027:\r"},{"line_number":177,"context_line":"            body \u003d \u0027client_id\u003d%s\u0026scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027 % (\r"},{"line_number":178,"context_line":"                client_id, scope\r"},{"line_number":179,"context_line":"            )\r"},{"line_number":180,"context_line":"            self.assertEqual(request.text, body)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"ba757eaa_d361ee34","line":177,"updated":"2023-09-14 14:45:08.000000000","message":"Please use `format()` or f-string because it\u0027s just annoying to read.","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        if raise_error:\r"},{"line_number":175,"context_line":"            raise raise_error\r"},{"line_number":176,"context_line":"        if auth_method \u003d\u003d \u0027tls_client_auth\u0027:\r"},{"line_number":177,"context_line":"            body \u003d \u0027client_id\u003d%s\u0026scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027 % (\r"},{"line_number":178,"context_line":"                client_id, scope\r"},{"line_number":179,"context_line":"            )\r"},{"line_number":180,"context_line":"            self.assertEqual(request.text, body)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"46688c77_811bb7e6","line":177,"in_reply_to":"ba757eaa_d361ee34","updated":"2023-09-15 08:08:28.000000000","message":"I fixed it to use f-string for strings.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":179,"context_line":"            )\r"},{"line_number":180,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":181,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_post\u0027:\r"},{"line_number":182,"context_line":"            body \u003d (\u0027client_id\u003d%s\u0026client_secret\u003d%s\u0027\r"},{"line_number":183,"context_line":"                    \u0027\u0026scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027\r"},{"line_number":184,"context_line":"                    ) % (client_id, client_secret, scope)\r"},{"line_number":185,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":186,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_basic\u0027:\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"9054bf65_5e668545","line":183,"range":{"start_line":182,"start_character":1,"end_line":183,"end_character":61},"updated":"2023-09-14 14:45:08.000000000","message":"ditto.","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":179,"context_line":"            )\r"},{"line_number":180,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":181,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_post\u0027:\r"},{"line_number":182,"context_line":"            body \u003d (\u0027client_id\u003d%s\u0026client_secret\u003d%s\u0027\r"},{"line_number":183,"context_line":"                    \u0027\u0026scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027\r"},{"line_number":184,"context_line":"                    ) % (client_id, client_secret, scope)\r"},{"line_number":185,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":186,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_basic\u0027:\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"61d86b47_820497ea","line":183,"range":{"start_line":182,"start_character":1,"end_line":183,"end_character":61},"in_reply_to":"9054bf65_5e668545","updated":"2023-09-15 08:08:28.000000000","message":"I fixed it to use f-string for strings.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                    ) % (client_id, client_secret, scope)\r"},{"line_number":185,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":186,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_basic\u0027:\r"},{"line_number":187,"context_line":"            body \u003d \u0027scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027 % scope\r"},{"line_number":188,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":189,"context_line":"            auth_basic \u003d request._request.headers.get(\u0027Authorization\u0027)\r"},{"line_number":190,"context_line":"            self.assertIsNotNone(auth_basic)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"dbe87153_db7bbdc8","line":187,"updated":"2023-09-14 14:45:08.000000000","message":"ditto.","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                    ) % (client_id, client_secret, scope)\r"},{"line_number":185,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":186,"context_line":"        elif auth_method \u003d\u003d \u0027client_secret_basic\u0027:\r"},{"line_number":187,"context_line":"            body \u003d \u0027scope\u003d%s\u0026grant_type\u003dclient_credentials\u0027 % scope\r"},{"line_number":188,"context_line":"            self.assertEqual(request.text, body)\r"},{"line_number":189,"context_line":"            auth_basic \u003d request._request.headers.get(\u0027Authorization\u0027)\r"},{"line_number":190,"context_line":"            self.assertIsNotNone(auth_basic)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"bcacd259_dc5bfd76","line":187,"in_reply_to":"dbe87153_db7bbdc8","updated":"2023-09-15 08:08:28.000000000","message":"I fixed it to use f-string for strings.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            client_secret\u003dself.client_secret,\r"},{"line_number":239,"context_line":"            scope\u003dself.scope)\r"},{"line_number":240,"context_line":"\r"},{"line_number":241,"context_line":"    def _check_header(self):\r"},{"line_number":242,"context_line":"        auth_context \u003d context.generate_tacker_service_context()\r"},{"line_number":243,"context_line":"        session \u003d auth_context.create_session()\r"},{"line_number":244,"context_line":"        headers \u003d auth_context.get_headers(session)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"a01448d9_03cda9e9","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":21},"updated":"2023-09-14 14:45:08.000000000","message":"Could you revise the name because it\u0027s too general to understand the behavior?","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"8dc539c0a5b0de336c926b60a7136beacac82a25","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            client_secret\u003dself.client_secret,\r"},{"line_number":239,"context_line":"            scope\u003dself.scope)\r"},{"line_number":240,"context_line":"\r"},{"line_number":241,"context_line":"    def _check_header(self):\r"},{"line_number":242,"context_line":"        auth_context \u003d context.generate_tacker_service_context()\r"},{"line_number":243,"context_line":"        session \u003d auth_context.create_session()\r"},{"line_number":244,"context_line":"        headers \u003d auth_context.get_headers(session)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff666f4a_55413d8a","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":21},"in_reply_to":"768c6370_4b08c8c4","updated":"2023-09-15 10:34:07.000000000","message":"Sorry, the previous comment was incorrect.\nFixed method name.\n(patch set 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":238,"context_line":"            client_secret\u003dself.client_secret,\r"},{"line_number":239,"context_line":"            scope\u003dself.scope)\r"},{"line_number":240,"context_line":"\r"},{"line_number":241,"context_line":"    def _check_header(self):\r"},{"line_number":242,"context_line":"        auth_context \u003d context.generate_tacker_service_context()\r"},{"line_number":243,"context_line":"        session \u003d auth_context.create_session()\r"},{"line_number":244,"context_line":"        headers \u003d auth_context.get_headers(session)\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"768c6370_4b08c8c4","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":21},"in_reply_to":"a01448d9_03cda9e9","updated":"2023-09-15 08:08:28.000000000","message":"I fixed it to use f-string for strings.\n(Patchset 21)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"}],"tacker/tests/unit/keymgr/test_barbican_key_manager.py":[{"author":{"_account_id":25701,"name":"Yasufumi Ogawa","email":"yasufum.o@gmail.com","username":"yasufum"},"change_message_id":"64f11038304b9102d7140bfc8803a6ca7594716d","unresolved":true,"context_lines":[{"line_number":62,"context_line":"\r"},{"line_number":63,"context_line":"    def __getattr__(self, name):\r"},{"line_number":64,"context_line":"        if not self.conf:\r"},{"line_number":65,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":66,"context_line":"        if name not in self.conf:\r"},{"line_number":67,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":68,"context_line":"        return self.conf.get(name)\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def __contains__(self, key):\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"fac27ce2_0b73a907","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":59},"updated":"2023-09-14 14:45:08.000000000","message":"The message is correct because it\u0027s the same as next one. Or making it one `if` statement is better as below if my understanding is correct.\n\n```\nif not self.conf or name not in self.conf:\n```","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"},{"author":{"_account_id":33920,"name":"Yusuke Niimi","email":"niimi.yusuke@fujitsu.com","username":"yniimi"},"change_message_id":"970d245bf37df23a039ec9b70f5d8db23e57a25f","unresolved":true,"context_lines":[{"line_number":62,"context_line":"\r"},{"line_number":63,"context_line":"    def __getattr__(self, name):\r"},{"line_number":64,"context_line":"        if not self.conf:\r"},{"line_number":65,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":66,"context_line":"        if name not in self.conf:\r"},{"line_number":67,"context_line":"            raise cfg.NoSuchOptError(\u0027not found %s\u0027 % name)\r"},{"line_number":68,"context_line":"        return self.conf.get(name)\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def __contains__(self, key):\r"}],"source_content_type":"text/x-python","patch_set":20,"id":"b6f7597f_639aaa35","line":67,"range":{"start_line":65,"start_character":0,"end_line":67,"end_character":59},"in_reply_to":"fac27ce2_0b73a907","updated":"2023-09-15 08:08:28.000000000","message":"As you pointed out, the if branches were combined into one, so I fixed it.\n(Patchset 22)","commit_id":"61c51086f4681057e17cff5ba7e596e5446d71b7"}],"tacker/tests/unit/nfvo/drivers/vim/test_kubernetes_driver.py":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"53361bf014beddf0a26ec16deb1fde620c6166fe","unresolved":true,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    @mock.patch(\u0027oslo_config.cfg.ConfigOpts.__getattr__\u0027)"},{"line_number":289,"context_line":"    @mock.patch(\u0027barbicanclient.base.validate_ref_and_return_uuid\u0027)"},{"line_number":290,"context_line":"    def test_deregister_vim_barbican_external(self, mock_validate,"},{"line_number":291,"context_line":"                                              mock_get_conf_key):"},{"line_number":292,"context_line":"        mock_get_conf_key.side_effect \u003d get_mock_conf_key_effect("},{"line_number":293,"context_line":"            barbican_endpoint\u003d\u0027http://test/barbican/\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"d8b7b66b_1700257e","line":290,"updated":"2023-03-09 12:39:35.000000000","message":"I think it\u0027s better to add tests for `tacker/keymgr/barbican_key_manager.py` something like `test_barbican_key_manager.py` and write the following tests there.\n- test_deregister_vim_barbican_external\n- test_encode_vim_auth_barbican_external\n- test_deregister_vim_barbican_external_no_endpoint\n\nThe tests in this file should only check the added if-else blocks work correctly.\n- tacker/nfvo/drivers/vim/kubernetes_driver.py ll.181-186, ll.224-228\n- tacker/nfvo/drivers/vim/openstack_driver.py ll.203-207, ll.238-242","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"7e6dfd310906ab0211e1ceeea187b0ff14813935","unresolved":false,"context_lines":[{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    @mock.patch(\u0027oslo_config.cfg.ConfigOpts.__getattr__\u0027)"},{"line_number":289,"context_line":"    @mock.patch(\u0027barbicanclient.base.validate_ref_and_return_uuid\u0027)"},{"line_number":290,"context_line":"    def test_deregister_vim_barbican_external(self, mock_validate,"},{"line_number":291,"context_line":"                                              mock_get_conf_key):"},{"line_number":292,"context_line":"        mock_get_conf_key.side_effect \u003d get_mock_conf_key_effect("},{"line_number":293,"context_line":"            barbican_endpoint\u003d\u0027http://test/barbican/\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"4d6f0e95_1a435e0b","line":290,"in_reply_to":"d8b7b66b_1700257e","updated":"2023-03-13 04:45:31.000000000","message":"Done","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"}],"tacker/tests/unit/nfvo/drivers/vim/test_openstack_driver.py":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"53361bf014beddf0a26ec16deb1fde620c6166fe","unresolved":true,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @mock.patch(\u0027oslo_config.cfg.ConfigOpts.__getattr__\u0027)"},{"line_number":341,"context_line":"    @mock.patch(\u0027barbicanclient.base.validate_ref_and_return_uuid\u0027)"},{"line_number":342,"context_line":"    def test_deregister_vim_barbican_external(self, mock_validate,"},{"line_number":343,"context_line":"                                              mock_get_conf_key):"},{"line_number":344,"context_line":"        mock_get_conf_key.side_effect \u003d get_mock_conf_key_effect("},{"line_number":345,"context_line":"            barbican_endpoint\u003d\u0027http://demo/barbican/\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"17e04c68_3f99abc8","line":342,"updated":"2023-03-09 12:39:35.000000000","message":"Please see the comment on https://review.opendev.org/c/openstack/tacker/+/871201/12/tacker/tests/unit/nfvo/drivers/vim/test_kubernetes_driver.py#290","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"},{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"7e6dfd310906ab0211e1ceeea187b0ff14813935","unresolved":false,"context_lines":[{"line_number":339,"context_line":""},{"line_number":340,"context_line":"    @mock.patch(\u0027oslo_config.cfg.ConfigOpts.__getattr__\u0027)"},{"line_number":341,"context_line":"    @mock.patch(\u0027barbicanclient.base.validate_ref_and_return_uuid\u0027)"},{"line_number":342,"context_line":"    def test_deregister_vim_barbican_external(self, mock_validate,"},{"line_number":343,"context_line":"                                              mock_get_conf_key):"},{"line_number":344,"context_line":"        mock_get_conf_key.side_effect \u003d get_mock_conf_key_effect("},{"line_number":345,"context_line":"            barbican_endpoint\u003d\u0027http://demo/barbican/\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"519bb816_f5eabdf4","line":342,"in_reply_to":"17e04c68_3f99abc8","updated":"2023-03-13 04:45:31.000000000","message":"Done","commit_id":"6e63ce7467fc29ee5b38f7196db84eae037dacab"}],"tacker/tests/unit/test_context.py":[{"author":{"_account_id":33455,"name":"Hiromu Asahina","email":"hiromu.a5a@gmail.com","username":"h_asahina"},"change_message_id":"4d5692a3c7aee0a62c41ea309aa6af835550dbae","unresolved":true,"context_lines":[{"line_number":227,"context_line":"                \u0027client_secret\u0027: client_secret,"},{"line_number":228,"context_line":"                \u0027scope\u0027: scope,"},{"line_number":229,"context_line":"                \u0027use_ext_oauth2_auth\u0027: True})"},{"line_number":230,"context_line":"        auth_context \u003d context.generate_tacker_service_context()"},{"line_number":231,"context_line":"        self.assertIsInstance(auth_context, ExtOAuth2Auth)"},{"line_number":232,"context_line":"        self.assertEqual(token_endpoint, auth_context.token_endpoint)"},{"line_number":233,"context_line":"        self.assertEqual(auth_method, auth_context.auth_method)"},{"line_number":234,"context_line":"        self.assertEqual(client_id, auth_context.client_id)"},{"line_number":235,"context_line":"        self.assertEqual(scope, auth_context.scope)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dd5c1dfe_5882a900","line":235,"range":{"start_line":230,"start_character":0,"end_line":235,"end_character":51},"updated":"2023-02-03 15:02:18.000000000","message":"It might be redundant.\nI think what we have to do is ExtOAuth2Auth instance is created correctly by using `assertIsInstance` for example.\nsame for others.\n\nI\u0027d like to hear your thought about it. What do you think we have to confirm here?","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"},{"author":{"_account_id":34634,"name":"Yonggen Sun","email":"sunyonggen@fujitsu.com","username":"sunyonggen"},"change_message_id":"b978b4b7a44a4dab5eb9ac9d43db0294f2c941c0","unresolved":false,"context_lines":[{"line_number":227,"context_line":"                \u0027client_secret\u0027: client_secret,"},{"line_number":228,"context_line":"                \u0027scope\u0027: scope,"},{"line_number":229,"context_line":"                \u0027use_ext_oauth2_auth\u0027: True})"},{"line_number":230,"context_line":"        auth_context \u003d context.generate_tacker_service_context()"},{"line_number":231,"context_line":"        self.assertIsInstance(auth_context, ExtOAuth2Auth)"},{"line_number":232,"context_line":"        self.assertEqual(token_endpoint, auth_context.token_endpoint)"},{"line_number":233,"context_line":"        self.assertEqual(auth_method, auth_context.auth_method)"},{"line_number":234,"context_line":"        self.assertEqual(client_id, auth_context.client_id)"},{"line_number":235,"context_line":"        self.assertEqual(scope, auth_context.scope)"}],"source_content_type":"text/x-python","patch_set":4,"id":"ebaae59e_220c8fbb","line":235,"range":{"start_line":230,"start_character":0,"end_line":235,"end_character":51},"in_reply_to":"dd5c1dfe_5882a900","updated":"2023-02-09 01:42:09.000000000","message":"Deleted. Previously, it was used to confirm whether ExtOAuth2Auth set the relevant fields correctly. Because other unit tests use these fields, the confirmation here can be removed.","commit_id":"7ac492bbfbf6cbe6e8157c977d9c0452e7bc0279"}]}
