)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"271df38439ecececb76a1f3a20e5290f71038736","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                        # use populate the values."},{"line_number":945,"context_line":"                        _user \u003d self.identity_api.get_user(value)"},{"line_number":946,"context_line":"                    except exception.NotFound:"},{"line_number":947,"context_line":"                        _user[\u0027name\u0027] \u003d \u0027N/A\u0027"},{"line_number":948,"context_line":"                        _user[\u0027user_domain_id\u0027] \u003d \u0027N/A\u0027"},{"line_number":949,"context_line":"                        _user[\u0027user_domain_name\u0027] \u003d \u0027N/A\u0027"},{"line_number":950,"context_line":"                    new_assign[\u0027user_name\u0027] \u003d _user[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_c52d90a9","line":947,"updated":"2017-05-03 21:24:50.000000000","message":"I guess it\u0027s pretty unlikely that someone would have a user named \"N/A\", but I\u0027m still not wild about making that a special string value here... is there a good reason you didn\u0027t use \u0027\u0027 (empty string)?","commit_id":"5512d16407b29aab389ef25519899d938abc6052"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"35880a23180a81dc6eb6a02cc828359fc6d28f76","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                        # use populate the values."},{"line_number":945,"context_line":"                        _user \u003d self.identity_api.get_user(value)"},{"line_number":946,"context_line":"                    except exception.NotFound:"},{"line_number":947,"context_line":"                        _user[\u0027name\u0027] \u003d \u0027N/A\u0027"},{"line_number":948,"context_line":"                        _user[\u0027user_domain_id\u0027] \u003d \u0027N/A\u0027"},{"line_number":949,"context_line":"                        _user[\u0027user_domain_name\u0027] \u003d \u0027N/A\u0027"},{"line_number":950,"context_line":"                    new_assign[\u0027user_name\u0027] \u003d _user[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_044a5c26","line":947,"in_reply_to":"3f044301_c52d90a9","updated":"2017-05-12 16:37:27.000000000","message":"Empty string is what I thought originally, but N/A seemed more descriptive as empty could be misinterpreted for the excepted normal response. Either way reverted back to empty string.","commit_id":"5512d16407b29aab389ef25519899d938abc6052"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"271df38439ecececb76a1f3a20e5290f71038736","unresolved":false,"context_lines":[{"line_number":947,"context_line":"                        _user[\u0027name\u0027] \u003d \u0027N/A\u0027"},{"line_number":948,"context_line":"                        _user[\u0027user_domain_id\u0027] \u003d \u0027N/A\u0027"},{"line_number":949,"context_line":"                        _user[\u0027user_domain_name\u0027] \u003d \u0027N/A\u0027"},{"line_number":950,"context_line":"                    new_assign[\u0027user_name\u0027] \u003d _user[\u0027name\u0027]"},{"line_number":951,"context_line":"                    new_assign[\u0027user_domain_id\u0027] \u003d _user[\u0027domain_id\u0027]"},{"line_number":952,"context_line":"                    new_assign[\u0027user_domain_name\u0027] \u003d ("},{"line_number":953,"context_line":"                        self.resource_api.get_domain(_user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_3026b0b9","line":950,"updated":"2017-05-03 21:24:50.000000000","message":"I think it would probably make more sense to not return the name/domain_id/domain_name in this case. E.g.:\n\ntry:\n    _user \u003d self.identity_api.get_user(value)\nexcept exception.NotFound:\n    # log a warning\nelse:\n    # set new_assign values based on _user","commit_id":"5512d16407b29aab389ef25519899d938abc6052"},{"author":{"_account_id":16465,"name":"Kristi Nikolla","email":"knikolla@bu.edu","username":"knikolla"},"change_message_id":"35880a23180a81dc6eb6a02cc828359fc6d28f76","unresolved":false,"context_lines":[{"line_number":947,"context_line":"                        _user[\u0027name\u0027] \u003d \u0027N/A\u0027"},{"line_number":948,"context_line":"                        _user[\u0027user_domain_id\u0027] \u003d \u0027N/A\u0027"},{"line_number":949,"context_line":"                        _user[\u0027user_domain_name\u0027] \u003d \u0027N/A\u0027"},{"line_number":950,"context_line":"                    new_assign[\u0027user_name\u0027] \u003d _user[\u0027name\u0027]"},{"line_number":951,"context_line":"                    new_assign[\u0027user_domain_id\u0027] \u003d _user[\u0027domain_id\u0027]"},{"line_number":952,"context_line":"                    new_assign[\u0027user_domain_name\u0027] \u003d ("},{"line_number":953,"context_line":"                        self.resource_api.get_domain(_user[\u0027domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f013ff3_e4d89080","line":950,"in_reply_to":"3f044301_3026b0b9","updated":"2017-05-12 16:37:27.000000000","message":"You are right. It would also very probably fail since it would search for the domain with ID N/A. Updated in the next patchset.","commit_id":"5512d16407b29aab389ef25519899d938abc6052"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"271df38439ecececb76a1f3a20e5290f71038736","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                        # use empty values."},{"line_number":960,"context_line":"                        _group \u003d self.identity_api.get_group(value)"},{"line_number":961,"context_line":"                    except exception.NotFound:"},{"line_number":962,"context_line":"                        _group[\u0027name\u0027] \u003d \u0027N/A\u0027"},{"line_number":963,"context_line":"                        _group[\u0027group_domain_id\u0027] \u003d \u0027N/A\u0027"},{"line_number":964,"context_line":"                        _group[\u0027group_domain_name\u0027] \u003d \u0027N/A\u0027"},{"line_number":965,"context_line":"                    new_assign[\u0027group_name\u0027] \u003d _group[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f044301_30a910df","line":962,"updated":"2017-05-03 21:24:50.000000000","message":"same comments as above.","commit_id":"5512d16407b29aab389ef25519899d938abc6052"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"797c0c9533223c40e8bf2ce69115ca2f24a5fc42","unresolved":false,"context_lines":[{"line_number":944,"context_line":"                        # use empty values."},{"line_number":945,"context_line":"                        _user \u003d self.identity_api.get_user(value)"},{"line_number":946,"context_line":"                    except exception.NotFound:"},{"line_number":947,"context_line":"                        msg \u003d (\u0027User %(user)s has been deleted in the\u0027"},{"line_number":948,"context_line":"                               \u0027 backend but still has role assignments.\u0027)"},{"line_number":949,"context_line":"                        LOG.warning(msg, {\u0027user\u0027: value})"},{"line_number":950,"context_line":"                        new_assign[\u0027user_name\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_94b54c34","line":947,"range":{"start_line":947,"start_character":50,"end_line":947,"end_character":62},"updated":"2017-05-16 01:04:18.000000000","message":"Do we know what happened to them? Why don\u0027t just say the user has not been found in the identity backend?","commit_id":"2dbeef6a1890c827097e7010c41c608070571076"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"797c0c9533223c40e8bf2ce69115ca2f24a5fc42","unresolved":false,"context_lines":[{"line_number":963,"context_line":"                        # use empty values."},{"line_number":964,"context_line":"                        _group \u003d self.identity_api.get_group(value)"},{"line_number":965,"context_line":"                    except exception.NotFound:"},{"line_number":966,"context_line":"                        msg \u003d (\u0027Group %(group)s has been deleted in the\u0027"},{"line_number":967,"context_line":"                               \u0027 backend but still has role assignments.\u0027)"},{"line_number":968,"context_line":"                        LOG.warning(msg, {\u0027group\u0027: value})"},{"line_number":969,"context_line":"                        new_assign[\u0027group_name\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f013ff3_347e786b","line":966,"range":{"start_line":966,"start_character":52,"end_line":966,"end_character":65},"updated":"2017-05-16 01:04:18.000000000","message":"same here","commit_id":"2dbeef6a1890c827097e7010c41c608070571076"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0cd612e7e505e39d1c8bc94f90186862130333da","unresolved":false,"context_lines":[{"line_number":964,"context_line":"                        # use empty values."},{"line_number":965,"context_line":"                        _group \u003d self.identity_api.get_group(value)"},{"line_number":966,"context_line":"                    except exception.GroupNotFound:"},{"line_number":967,"context_line":"                        msg \u003d (\u0027Group %(group)s not found in the\u0027"},{"line_number":968,"context_line":"                               \u0027 backend but still has role assignments.\u0027)"},{"line_number":969,"context_line":"                        LOG.warning(msg, {\u0027group\u0027: value})"},{"line_number":970,"context_line":"                        new_assign[\u0027group_name\u0027] \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_f24a49aa","line":967,"range":{"start_line":967,"start_character":48,"end_line":967,"end_character":57},"updated":"2017-05-16 17:27:49.000000000","message":"neat!","commit_id":"252f1dee1a25d95c5a2c7ef8330900f6dccaaede"}],"keystone/tests/unit/assignment/test_backends.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0cd612e7e505e39d1c8bc94f90186862130333da","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                               _group_not_found):"},{"line_number":598,"context_line":"            assignment_list \u003d self.assignment_api.list_role_assignments("},{"line_number":599,"context_line":"                include_names\u003dTrue"},{"line_number":600,"context_line":"            )"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    def test_add_duplicate_role_grant(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_3251d163","line":600,"updated":"2017-05-16 17:27:49.000000000","message":"so these tests check calling the operation won\u0027t fail anymore, but they don\u0027t check on the format of the response.\n\nyou could improve these by having data and checking the entities will be returned with \"\" attributes.","commit_id":"252f1dee1a25d95c5a2c7ef8330900f6dccaaede"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"0cd612e7e505e39d1c8bc94f90186862130333da","unresolved":false,"context_lines":[{"line_number":599,"context_line":"                include_names\u003dTrue"},{"line_number":600,"context_line":"            )"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":""},{"line_number":603,"context_line":"    def test_add_duplicate_role_grant(self):"},{"line_number":604,"context_line":"        roles_ref \u003d self.assignment_api.get_roles_for_user_and_project("},{"line_number":605,"context_line":"            self.user_foo[\u0027id\u0027], self.tenant_bar[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f013ff3_725f5972","line":602,"updated":"2017-05-16 17:27:49.000000000","message":"(nit) double blank line will probably fail pep8","commit_id":"252f1dee1a25d95c5a2c7ef8330900f6dccaaede"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"38097db092d22611123640336cc0977b2e87e8f3","unresolved":false,"context_lines":[{"line_number":588,"context_line":"            assignment_list \u003d self.assignment_api.list_role_assignments("},{"line_number":589,"context_line":"                include_names\u003dTrue"},{"line_number":590,"context_line":"            )"},{"line_number":591,"context_line":"        for assignment in assignment_list:"},{"line_number":592,"context_line":"            if \u0027user_name\u0027 in assignment:"},{"line_number":593,"context_line":"                self.assertEqual(\u0027\u0027, assignment[\u0027user_name\u0027])"},{"line_number":594,"context_line":"                self.assertEqual(\u0027\u0027, assignment[\u0027user_domain_id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_abb20ce5","line":591,"range":{"start_line":591,"start_character":26,"end_line":591,"end_character":41},"updated":"2017-05-16 19:17:49.000000000","message":"just assert this is not empty one line before the loop so we can make sure we\u0027re effectively testing anything","commit_id":"b739a99c68594af1a24d85140fb2eeba2a01c445"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"65bb93070653ba95a57269d13428492ecb500fe5","unresolved":false,"context_lines":[{"line_number":616,"context_line":"                include_names\u003dTrue"},{"line_number":617,"context_line":"            )"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"        self.assertNotEqual([], assignment_list)"},{"line_number":620,"context_line":"        for assignment in assignment_list:"},{"line_number":621,"context_line":"            if \u0027group_name\u0027 in assignment:"},{"line_number":622,"context_line":"                # Note(knikolla): In the case of a not found group we"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f013ff3_2b815c90","line":619,"updated":"2017-05-16 19:34:30.000000000","message":"I like the way you get out of the mocking context here as it is not needed anymore","commit_id":"0392b36a0d7d3e7cc479b357245da04c949924de"}]}
