)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"3466ebda530719dc5de0f0c39bc50f743e65afbf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove manager-driver assignment metadata construct"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The old kvs-inspired metadata construct was still hanging around"},{"line_number":10,"context_line":"beteen the assignment manager and driver. This patch removes this"},{"line_number":11,"context_line":"and re-uses other existing methods in its place."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements blueprint: remove-role-metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_231026ab","line":10,"updated":"2015-02-13 11:15:25.000000000","message":"(nit) s/beteen/between","commit_id":"4fdcd6f7a3d1bb96deb93615d2ff649c0d915ba0"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cde41769137446a03c168f5e8d2c1459db7a86ed","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove manager-driver assignment metadata construct"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The old kvs-inspired metadata construct was still hanging around"},{"line_number":10,"context_line":"beteen the assignment manager and driver. This patch removes this"},{"line_number":11,"context_line":"and re-uses other existing methods in its place."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements blueprint: remove-role-metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_97cd87ba","line":10,"in_reply_to":"da86d52c_231026ab","updated":"2015-02-13 14:52:22.000000000","message":"Done","commit_id":"4fdcd6f7a3d1bb96deb93615d2ff649c0d915ba0"},{"author":{"_account_id":9142,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@lsd.ufcg.edu.br","username":"samuel-z","inactive":true},"change_message_id":"3466ebda530719dc5de0f0c39bc50f743e65afbf","unresolved":false,"context_lines":[{"line_number":10,"context_line":"beteen the assignment manager and driver. This patch removes this"},{"line_number":11,"context_line":"and re-uses other existing methods in its place."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements blueprint: remove-role-metadata"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic7737fc44c1d1a86521c428216316d06b67dd1f9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_a36a5619","line":13,"updated":"2015-02-13 11:15:25.000000000","message":"(nit) According Gerrit doc [1], it should be:\n\nImplements: blueprint remove-role-metadata\n\n[1] https://wiki.openstack.org/wiki/Gerrit_Workflow","commit_id":"4fdcd6f7a3d1bb96deb93615d2ff649c0d915ba0"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"cde41769137446a03c168f5e8d2c1459db7a86ed","unresolved":false,"context_lines":[{"line_number":10,"context_line":"beteen the assignment manager and driver. This patch removes this"},{"line_number":11,"context_line":"and re-uses other existing methods in its place."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements blueprint: remove-role-metadata"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic7737fc44c1d1a86521c428216316d06b67dd1f9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_d7be1f00","line":13,"in_reply_to":"da86d52c_a36a5619","updated":"2015-02-13 14:52:22.000000000","message":"yep, you\u0027re dead right!","commit_id":"4fdcd6f7a3d1bb96deb93615d2ff649c0d915ba0"}],"keystone/assignment/backends/ldap.py":[{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"2bf5c7c334c06b87f599e666c4494cad04c71445","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        self._assert_not_domain_grant(domain_id)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        role_ids \u003d set(self._roles_from_role_dicts("},{"line_number":189,"context_line":"            metadata_ref.get(\u0027roles\u0027, []), inherited_to_projects))"},{"line_number":190,"context_line":"        if role_id not in role_ids:"},{"line_number":191,"context_line":"            raise exception.RoleNotFound(role_id\u003drole_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a930d6b_5e923d58","line":188,"updated":"2015-01-21 17:29:51.000000000","message":"still working on this...unfinished","commit_id":"3f26634a85def85550b925ddad53be97b358ab05"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"483a0fec738b978d9f212ff62da5b05ea3c2fadc","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self._assert_not_domain_grant(domain_id)"},{"line_number":200,"context_line":"        if not self.list_role_assignments("},{"line_number":201,"context_line":"            role_id\u003drole_id, user_id\u003duser_id,"},{"line_number":202,"context_line":"            group_ids\u003dself._construct_id_list(group_id),"},{"line_number":203,"context_line":"                project_ids\u003dself._construct_id_list(project_id)):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            actor_id \u003d user_id or group_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"1a4dcd0f_f1d2cc5a","line":202,"updated":"2015-08-17 03:00:30.000000000","message":"Instead of calling a method to do this, this can just be simplified as this,\n\ngroup_ids\u003d list(group_id) if group_id else []\n\nsame in other occurrences.","commit_id":"1785f38f58026a9cc2767b451a74fe22bc9c6dec"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5993eb6a7efc7f106572689293f2ebe6dcca20e6","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        self._assert_not_domain_grant(domain_id)"},{"line_number":200,"context_line":"        if not self.list_role_assignments("},{"line_number":201,"context_line":"            role_id\u003drole_id, user_id\u003duser_id,"},{"line_number":202,"context_line":"            group_ids\u003dself._construct_id_list(group_id),"},{"line_number":203,"context_line":"                project_ids\u003dself._construct_id_list(project_id)):"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            actor_id \u003d user_id or group_id"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa1b9901_76a114a9","line":202,"in_reply_to":"1a4dcd0f_f1d2cc5a","updated":"2015-08-17 22:31:03.000000000","message":"Nice.  Done!","commit_id":"1785f38f58026a9cc2767b451a74fe22bc9c6dec"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d46a7f54811e6b6f8a41faa989be1bc30fa8ad8e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                     domain_id\u003dNone, project_id\u003dNone,"},{"line_number":207,"context_line":"                     inherited_to_projects\u003dFalse):"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.check_grant_role_id("},{"line_number":210,"context_line":"            role_id, user_id\u003duser_id, group_id\u003dgroup_id,"},{"line_number":211,"context_line":"            domain_id\u003ddomain_id, project_id\u003dproject_id,"},{"line_number":212,"context_line":"            inherited_to_projects\u003dinherited_to_projects)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa80f949_93a4bea6","line":209,"updated":"2015-11-04 17:03:46.000000000","message":"does this check need to be done? we can just remove the role, and if it\u0027s not there, it\u0027ll error out or silently do nothing","commit_id":"c500a815a8e0cf9d1fdde9beca6921fc395a1de2"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1390a0f96e2d28df1769470145ce5fb537fa88c2","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                     domain_id\u003dNone, project_id\u003dNone,"},{"line_number":207,"context_line":"                     inherited_to_projects\u003dFalse):"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        self.check_grant_role_id("},{"line_number":210,"context_line":"            role_id, user_id\u003duser_id, group_id\u003dgroup_id,"},{"line_number":211,"context_line":"            domain_id\u003ddomain_id, project_id\u003dproject_id,"},{"line_number":212,"context_line":"            inherited_to_projects\u003dinherited_to_projects)"}],"source_content_type":"text/x-python","patch_set":22,"id":"fa80f949_acd4e31f","line":209,"in_reply_to":"fa80f949_93a4bea6","updated":"2015-11-05 10:54:42.000000000","message":"So you are probably right, but I was just ensuring we executed the equivalent functionality as before. This ensures we don\u0027t change any error codes that might be generated (e.g. domain not supported).","commit_id":"c500a815a8e0cf9d1fdde9beca6921fc395a1de2"}],"keystone/assignment/core.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"6d7c3d1af54b9a6316c729c922fdc18dca3a70f0","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        inheritance."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        :returns: a list of role ids."},{"line_number":94,"context_line":"        :raises: keystone.exception.ProjectNotFound"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        \"\"\""},{"line_number":97,"context_line":"        self.resource_api.get_project(tenant_id)"}],"source_content_type":"text/x-python","patch_set":22,"id":"1a26ad4f_add59a1c","line":94,"updated":"2015-11-02 12:57:38.000000000","message":"I hope these docstring should be updated to \n :raises keystone.exception.ProjectNotFound: condition.\n\nThere was a patch to do this, https://review.openstack.org/#/c/226225/, so we needn\u0027t respin again.\n\nThis is good as is since this is not under the scope of this patch.","commit_id":"c500a815a8e0cf9d1fdde9beca6921fc395a1de2"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"789f10ef512c6ce19dc74dab6d221dc774deb79b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        self.resource_api.get_domain(domain_id)"},{"line_number":111,"context_line":"        assignment_list \u003d self.list_role_assignments("},{"line_number":112,"context_line":"            user_id\u003duser_id, domain_id\u003ddomain_id, effective\u003dTrue)"},{"line_number":113,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":114,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"fa80f949_457ce5b4","line":112,"updated":"2015-11-06 17:50:23.000000000","message":"Asking for domain and effective will always return an empty list. [1] I believe we had agreed that it wasn\u0027t a valid case.\n\nWe can either change the list_role_assignments behavior (can be dangerous ?) or just make two calls for it here (1 for user and another for groups), similar to the old code.\n\nAlso, this probably show that we haven\u0027t tested well this corner case.\n\n[1] https://github.com/openstack/keystone/blob/master/keystone/assignment/core.py#L760-L763","commit_id":"b2ed78c7ddc3a0fb3b87920e4187c2b8b51a9378"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"3d2c28e8ae702c7ef401c4360b2f4c4a60ddff92","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        self.resource_api.get_domain(domain_id)"},{"line_number":111,"context_line":"        assignment_list \u003d self.list_role_assignments("},{"line_number":112,"context_line":"            user_id\u003duser_id, domain_id\u003ddomain_id, effective\u003dTrue)"},{"line_number":113,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":114,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_02b98ae9","line":112,"in_reply_to":"da85f559_9ff636d6","updated":"2015-11-08 03:43:09.000000000","message":"no worries....better that we checked first!  Thanks for your analysis","commit_id":"b2ed78c7ddc3a0fb3b87920e4187c2b8b51a9378"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"90a4015bbd75e248aed065b43aeebb636304bcd9","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        self.resource_api.get_domain(domain_id)"},{"line_number":111,"context_line":"        assignment_list \u003d self.list_role_assignments("},{"line_number":112,"context_line":"            user_id\u003duser_id, domain_id\u003ddomain_id, effective\u003dTrue)"},{"line_number":113,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":114,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_9ff636d6","line":112,"in_reply_to":"da85f559_fd2bd231","updated":"2015-11-07 20:54:58.000000000","message":"Henry, the code I put in the link above is clear: (domain_id and inherited)\n\nSo yes, I got confused, the case that returns empty list is \"domain \u0026 inherited\", which is different from \"domain \u0026 effective\" that is used in your code.","commit_id":"b2ed78c7ddc3a0fb3b87920e4187c2b8b51a9378"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"79a373910e3107e71aa93f3cde3e21b05e3a54e7","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        \"\"\""},{"line_number":110,"context_line":"        self.resource_api.get_domain(domain_id)"},{"line_number":111,"context_line":"        assignment_list \u003d self.list_role_assignments("},{"line_number":112,"context_line":"            user_id\u003duser_id, domain_id\u003ddomain_id, effective\u003dTrue)"},{"line_number":113,"context_line":"        # Use set() to process the list to remove any duplicates"},{"line_number":114,"context_line":"        return list(set([x[\u0027role_id\u0027] for x in assignment_list]))"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"da85f559_fd2bd231","line":112,"in_reply_to":"fa80f949_457ce5b4","updated":"2015-11-07 05:47:12.000000000","message":"Samuel - thanks for the comment. However, I think you are getting muddled with \"domain \u0026 inherited \u0026 effective\" (which does indeed always return an empty list).  I think the code above is OK - and in fact is tested pretty comprehensively, (search for get_roles_for_user_and_domain in test_backend.py).","commit_id":"b2ed78c7ddc3a0fb3b87920e4187c2b8b51a9378"}]}
