)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9c1ecfa9fea089419b591ca49148fb40adcf960e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"validation requests on trusts."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I974907b427c34fd5db3228b6139d93bbcdc38df5"},{"line_number":15,"context_line":"Closes-Bug: #1796887"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_5e62b0a8","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":20},"updated":"2018-10-15 20:43:46.000000000","message":"Let\u0027s add a release note since this is end-user impacting.\n\nhttps://docs.openstack.org/keystone/latest/contributor/release-notes.html#release-notes-for-bugs","commit_id":"e397642fe800f6a8d15ffc4f345c411d6aa403b3"}],"keystone/assignment/core.py":[{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"dc37972185499765ca2f9094e5996fd80057855f","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":133,"context_line":"    def get_roles_for_trustor_and_project(self, user_id, tenant_id):"},{"line_number":134,"context_line":"        \"\"\"Get the roles associated with a trustor awithin given project."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        This includes roles directly assigned to the user on the"},{"line_number":137,"context_line":"        project, but we do not retrieve the domain roles."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f4747439","line":134,"updated":"2018-10-10 00:42:24.000000000","message":"typo within","commit_id":"cb9b6529e74c06955460130279a94ac60aa2a8a8"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"f5d6d8c0dc007e011122e1c1e28c0721c105aba7","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":114,"context_line":"    def get_roles_for_user_and_project(self, user_id, tenant_id,"},{"line_number":115,"context_line":"                                       strip_domain_roles):"},{"line_number":116,"context_line":"        \"\"\"Get the roles associated with a user within given project."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        This includes roles directly assigned to the user on the"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_e1e0d4cd","line":115,"range":{"start_line":115,"start_character":39,"end_line":115,"end_character":57},"updated":"2018-10-15 02:29:08.000000000","message":"make it optional, \"strip_domain_roles\u003dTrue\", then you don\u0027t need to update other files.","commit_id":"bf2c12600a7bbd3309b70ad83360a4abcd161355"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"120d303f6c9d7f8cb5086d13e14b1b1353ccb243","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        PROVIDERS.resource_api.get_project(tenant_id)"},{"line_number":128,"context_line":"        assignment_list \u003d self.list_role_assignments("},{"line_number":129,"context_line":"            user_id\u003duser_id, project_id\u003dtenant_id, effective\u003dTrue,"},{"line_number":130,"context_line":"            strip_domain_roles\u003dstrip_domain_roles)"},{"line_number":131,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":132,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_416188a7","line":129,"updated":"2018-10-15 01:46:14.000000000","message":"The value for effective\u003dTrue will be constant?","commit_id":"bf2c12600a7bbd3309b70ad83360a4abcd161355"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"12dc36e9d91e55d69b32aadfe1a1cd4dd7765d21","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":114,"context_line":"    def get_roles_for_user_and_project(self, user_id, tenant_id,"},{"line_number":115,"context_line":"                                       strip_domain_roles\u003dTrue):"},{"line_number":116,"context_line":"        \"\"\"Get the roles associated with a user within given project."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        This includes roles directly assigned to the user on the"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_420de03d","line":115,"updated":"2018-10-16 15:45:08.000000000","message":"Usually, there are issues caching methods that accept kwargs since they can change the return value making them hard to cache. Where-as, caching a method with know parameters is definitive.\n\nDo we have to include a new argument here? Or can we just assume domain roles to be stripped?","commit_id":"33e17273d5d66370146de9be21d814b45da09bf5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"c2c688c7d9f42df21918d41cf564968a02e30df3","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":114,"context_line":"    def get_roles_for_user_and_project(self, user_id, tenant_id,"},{"line_number":115,"context_line":"                                       strip_domain_roles\u003dTrue):"},{"line_number":116,"context_line":"        \"\"\"Get the roles associated with a user within given project."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        This includes roles directly assigned to the user on the"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_9d66eebb","line":115,"in_reply_to":"3f79a3b5_050b722a","updated":"2018-10-16 23:47:09.000000000","message":"lets make two explicit functions, one with domain roles, one without, and cache them both separately.","commit_id":"33e17273d5d66370146de9be21d814b45da09bf5"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"bf08a0d274a378e9b5c778d33eb77dc76ff4b82f","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":114,"context_line":"    def get_roles_for_user_and_project(self, user_id, tenant_id,"},{"line_number":115,"context_line":"                                       strip_domain_roles\u003dTrue):"},{"line_number":116,"context_line":"        \"\"\"Get the roles associated with a user within given project."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        This includes roles directly assigned to the user on the"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_050b722a","line":115,"in_reply_to":"3f79a3b5_420de03d","updated":"2018-10-16 16:09:25.000000000","message":"We are going to need to fix oslo_cache / our code to use the kwarg friendly key generator. i\u0027ll find it in a few.","commit_id":"33e17273d5d66370146de9be21d814b45da09bf5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"76e32fd76bf9013ac8eeefeda1bb4c66fc78498c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":133,"context_line":"    def get_roles_for_trustor_and_project(self, trustor_id, tenant_id):"},{"line_number":134,"context_line":"        \"\"\"Get the roles associated with a trustor within given project."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        This includes roles directly assigned to the trustor on the"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_f3728318","line":133,"range":{"start_line":133,"start_character":60,"end_line":133,"end_character":69},"updated":"2018-10-18 17:19:12.000000000","message":"I\u0027d opt for project_id here","commit_id":"9783b0a483b4176b9584039e58cd9673ff43a87c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8ec6783f086877c27caf99613e89c3136d8f7719","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @MEMOIZE_COMPUTED_ASSIGNMENTS"},{"line_number":133,"context_line":"    def get_roles_for_trustor_and_project(self, trustor_id, tenant_id):"},{"line_number":134,"context_line":"        \"\"\"Get the roles associated with a trustor within given project."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"        This includes roles directly assigned to the trustor on the"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_10a5aeb4","line":133,"range":{"start_line":133,"start_character":60,"end_line":133,"end_character":69},"in_reply_to":"3f79a3b5_f3728318","updated":"2018-10-18 22:26:40.000000000","message":"++ please use \"project\" if possible.","commit_id":"9783b0a483b4176b9584039e58cd9673ff43a87c"}],"keystone/models/token_model.py":[{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"dc37972185499765ca2f9094e5996fd80057855f","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            set([r[\u0027role_id\u0027] for r in effective_trust_roles])"},{"line_number":295,"context_line":"        )"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        current_effective_trustor_roles \u003d set("},{"line_number":298,"context_line":"            PROVIDERS.assignment_api.get_roles_for_trustor_and_project("},{"line_number":299,"context_line":"                original_trustor_id, self.trust.get(\u0027project_id\u0027)"},{"line_number":300,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b4bcbcb5","line":297,"updated":"2018-10-10 00:42:24.000000000","message":"the func get_roles_for_trustor_and project is returning a list with no duplicate values. Why using set on that list again?","commit_id":"cb9b6529e74c06955460130279a94ac60aa2a8a8"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"dc37972185499765ca2f9094e5996fd80057855f","unresolved":false,"context_lines":[{"line_number":513,"context_line":"            effective_trust_role_ids \u003d ("},{"line_number":514,"context_line":"                set([r[\u0027role_id\u0027] for r in effective_trust_roles])"},{"line_number":515,"context_line":"            )"},{"line_number":516,"context_line":"            current_effective_trustor_roles \u003d set("},{"line_number":517,"context_line":"                PROVIDERS.assignment_api.get_roles_for_trustor_and_project("},{"line_number":518,"context_line":"                    self.trustor[\u0027id\u0027], self.trust.get(\u0027project_id\u0027)"},{"line_number":519,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_74dce416","line":516,"updated":"2018-10-10 00:42:24.000000000","message":"ditto","commit_id":"cb9b6529e74c06955460130279a94ac60aa2a8a8"},{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"120d303f6c9d7f8cb5086d13e14b1b1353ccb243","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        current_effective_trustor_roles \u003d ("},{"line_number":298,"context_line":"            PROVIDERS.assignment_api.get_roles_for_user_and_project("},{"line_number":299,"context_line":"                original_trustor_id, self.trust.get(\u0027project_id\u0027), False"},{"line_number":300,"context_line":"            )"},{"line_number":301,"context_line":"        )"},{"line_number":302,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6167e4b9","line":299,"updated":"2018-10-15 01:46:14.000000000","message":"I think the variable \"effective\" should also be passed in this function definition. Is there any case of effective being false?","commit_id":"bf2c12600a7bbd3309b70ad83360a4abcd161355"}]}
