)]}'
{"HACKING.rst":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"73a4001627ef0c828d67a59cc001cce8c4e7ba8a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"- [P101] RBAC test filenames must end with \"_rbac.py\"; for example,"},{"line_number":38,"context_line":"         test_servers_rbac.py, not test_servers.py"},{"line_number":39,"context_line":"- [P102] RBAC test class names must end in \u0027RbacTest\u0027"},{"line_number":40,"context_line":"- [P103] ``self.client`` must not be used as a client alias"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Role Switching"},{"line_number":43,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ff0f0b1f_a7763f6f","line":40,"range":{"start_line":40,"start_character":25,"end_line":40,"end_character":59},"updated":"2017-05-24 14:41:02.000000000","message":"I think this requires elaboration, because putting myself in someone else\u0027s shoes for a second, I would look at this rule and question, What is the justification for this?","commit_id":"5d7bab4097d1a00d57f502dfe6c96da7b1cc763e"}],"patrole_tempest_plugin/hacking/checks.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"bf047a76c7905cdd7a282117126189840fd3ee91","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    P103"},{"line_number":209,"context_line":"    \"\"\""},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    if \"self.client\" not in logical_line:"},{"line_number":212,"context_line":"        return"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    return 0, \"Do not use \u0027self.client\u0027 as a client alias\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_8c116555","line":211,"range":{"start_line":211,"start_character":8,"end_line":211,"end_character":19},"updated":"2017-05-22 20:41:05.000000000","message":"nit: This could also include cls.client.","commit_id":"d7887e3a66c4583a0c2d595f5f7b726c1a73455a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"5e47f62ae4cf1124223733bfe2245c31a9b9d32c","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    P103"},{"line_number":209,"context_line":"    \"\"\""},{"line_number":210,"context_line":"    if not any(value in line for value in (\"self.client\", \"cls.client\")) in logical_line:"},{"line_number":211,"context_line":"        return"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    return 0, \"Do not use \u0027self.client\u0027 as a client alias\""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"def factory(register):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff0f0b1f_155555fa","line":213,"range":{"start_line":210,"start_character":4,"end_line":213,"end_character":58},"updated":"2017-05-23 01:10:16.000000000","message":"The more readable way to express this is:\n\nif \"self.client\" in logical_line or \"cls.client\" in logical_line:\n    return 0, \"this is bad\"","commit_id":"8f70fe9e1942a0879c2afde0c5809f8d21ecabd8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8b51fef4f6f1cf5ed5e24ea7e4a35589c7a08c8e","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    P103"},{"line_number":209,"context_line":"    \"\"\""},{"line_number":210,"context_line":"    if \"self.client\" in logical_line or \"cls.client\" in logical_line:"},{"line_number":211,"context_line":"        return 0, \"Do not use \u0027self.client\u0027 as a client alias\""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_0b47ffbe","line":210,"range":{"start_line":210,"start_character":0,"end_line":210,"end_character":69},"updated":"2017-05-26 01:52:06.000000000","message":"nice, but it is too broad and restrict to use it in some UT or other place. Can we just check for patrole_tempest_plugin/tests/api dir?\n\nlike below:\nif \u0027patrole_tempest_plugin/tests/api/\u0027 not in filename:\n        return\nif \"self.client\" in logical_line or \"cls.client\" in logical_line:\n        return 0, \"Do not use \u0027self.client\u0027 as a client alias\"\n\nit restrict to use self.client for any other purpose but should be ok.","commit_id":"a8579e9fdee91a3f4567fcdbcb4a579664223c18"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8b51fef4f6f1cf5ed5e24ea7e4a35589c7a08c8e","unresolved":false,"context_lines":[{"line_number":208,"context_line":"    P103"},{"line_number":209,"context_line":"    \"\"\""},{"line_number":210,"context_line":"    if \"self.client\" in logical_line or \"cls.client\" in logical_line:"},{"line_number":211,"context_line":"        return 0, \"Do not use \u0027self.client\u0027 as a client alias\""},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"def factory(register):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff0f0b1f_2ec1b181","line":211,"range":{"start_line":211,"start_character":19,"end_line":211,"end_character":61},"updated":"2017-05-26 01:52:06.000000000","message":"Do not use \u0027self.client\u0027 as a service client alias.","commit_id":"a8579e9fdee91a3f4567fcdbcb4a579664223c18"}]}
