)]}'
{"keystone/identity/backends/ldap/core.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"f06e628e1c764cc8faf3c590020b80ea3232f4f6","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_27569329","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"updated":"2016-06-06 14:41:41.000000000","message":"why are you removing this since the call below is not the one you are modifying?","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"b4bb16c8701850d05be650047795a28eab2f40e0","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c03b35ea","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_003b7dd2","updated":"2016-06-06 15:18:26.000000000","message":"fix that in another patchset, with its own set of tests, if not related to this one.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"27731e70a29a1aed00bf4ba4d1cbfaf162814475","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6f065b1e","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_0cb36599","updated":"2016-06-07 19:09:14.000000000","message":"this change doesn\u0027t have any impact on backward compat or what filtering a user can do via the API. See the commit message for an explanation of exactly what this change does.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"fca458e344fd03a3f56e4ac1aa09e13e652bc4a6","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_18928df6","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_169d8765","updated":"2016-06-07 16:22:47.000000000","message":"If we remove this code and if (say) user_filter is not configured in keystone.conf, this code may ended up with something weird like \"(member\u003dcn\u003dfoo,o\u003dbar)None\". I am surprised we don\u0027t have a test for this.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"d0fcd26786650659b7bac6475441f46f8c34b49f","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_7bb748f5","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_18928df6","updated":"2016-06-07 17:20:33.000000000","message":"@guang-yee I don\u0027t follow... The change proposed here can\u0027t possibly cause what you describe.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"792c1225bd241da62ae08af35b5532290b5c3de2","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_003b7dd2","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_27569329","updated":"2016-06-06 15:08:47.000000000","message":"this is answered in the commit message.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"33122bb1431a93a4081a2cedd68fa0c10e978b29","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_0213215c","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_6f065b1e","updated":"2016-06-08 00:05:25.000000000","message":"Say I have an existing configuration in my keystone.conf\n\ngroup_filter \u003d (status\u003dactive)(cn!\u003dignorethisgroup)\n\nWill this change still honor it? Your commit msg seem to suggest this is not necessary. But we do have use cases where we need to be able to do additional filtering.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"4a5c1ca720c187cb82d95c74dc0f010571d1536c","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_0cb36599","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_7bb748f5","updated":"2016-06-07 19:05:36.000000000","message":"Oh my bad, I didn\u0027t see the subtle change on line 377. With this change, we can\u0027t do custom partial filtering then? That would break backward compatibility right?","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"c4f950c5824bf975fae554fb8f25cba3bca2f699","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        user_dn_esc \u003d ldap.filter.escape_filter_chars(user_dn)"},{"line_number":377,"context_line":"        query \u003d \u0027(%s\u003d%s)%s\u0027 % (self.member_attribute,"},{"line_number":378,"context_line":"                               user_dn_esc,"},{"line_number":379,"context_line":"                               self.ldap_filter or \u0027\u0027)"},{"line_number":380,"context_line":"        return self.get_all(query)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def list_user_groups_filtered(self, user_dn, hints):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_169d8765","side":"PARENT","line":379,"range":{"start_line":379,"start_character":31,"end_line":379,"end_character":53},"in_reply_to":"7aa08908_c03b35ea","updated":"2016-06-06 15:39:08.000000000","message":"I figured it was related, since this commit is all about ldap group filtering. Do you think it really has to be split out? And as for tests, same issue I mentioned in the commit and a previous comment, that the current UT infrastructure does not really give us a way to test this that I could figure out.","commit_id":"b4e2ce74f8c2532ab903762598ab554d632f0679"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"23bff437d8cbd6d72fc1f6737578acc5af3bcd7f","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def get_all_filtered(self, hints, query\u003dNone):"},{"line_number":418,"context_line":"        if self.ldap_filter:"},{"line_number":419,"context_line":"            query \u003d (query or \u0027\u0027) + self.ldap_filter"},{"line_number":420,"context_line":"        query \u003d self.filter_query(hints, query)"},{"line_number":421,"context_line":"        return [common_ldap.filter_entity(group)"},{"line_number":422,"context_line":"                for group in self.get_all(query, hints)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_1a4d099a","line":419,"range":{"start_line":419,"start_character":36,"end_line":419,"end_character":52},"updated":"2016-06-08 19:01:24.000000000","message":"This should be (self.ldap_filter or \u0027\u0027). Otherwise if self.ldap_filter is None, you will get:\n\nTypeError: cannot concatenate \u0027str\u0027 and \u0027NoneType\u0027 objects","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"d13ecbb9460082345938db4655fe8b3cefaf0040","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def get_all_filtered(self, hints, query\u003dNone):"},{"line_number":418,"context_line":"        if self.ldap_filter:"},{"line_number":419,"context_line":"            query \u003d (query or \u0027\u0027) + self.ldap_filter"},{"line_number":420,"context_line":"        query \u003d self.filter_query(hints, query)"},{"line_number":421,"context_line":"        return [common_ldap.filter_entity(group)"},{"line_number":422,"context_line":"                for group in self.get_all(query, hints)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_7ddb677c","line":419,"range":{"start_line":419,"start_character":36,"end_line":419,"end_character":52},"in_reply_to":"7aa08908_1a4d099a","updated":"2016-06-08 19:07:43.000000000","message":"the if above prevents entering here if self.ldap_filter is None","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5e7c44daf2f58df70ceaaf2046b02dc2973d3004","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def get_all_filtered(self, hints, query\u003dNone):"},{"line_number":418,"context_line":"        if self.ldap_filter:"},{"line_number":419,"context_line":"            query \u003d (query or \u0027\u0027) + self.ldap_filter"},{"line_number":420,"context_line":"        query \u003d self.filter_query(hints, query)"},{"line_number":421,"context_line":"        return [common_ldap.filter_entity(group)"},{"line_number":422,"context_line":"                for group in self.get_all(query, hints)]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_dd4d3bc5","line":419,"range":{"start_line":419,"start_character":36,"end_line":419,"end_character":52},"in_reply_to":"7aa08908_7ddb677c","updated":"2016-06-08 19:20:19.000000000","message":"that\u0027s true","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4f9ff913f146c35bfbb83e0e895dce4d678c59e4","unresolved":false,"context_lines":[{"line_number":249,"context_line":"            hints\u003dhints)"},{"line_number":250,"context_line":"        self.assertEqual(0, len(users))"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def test_list_groups_by_name_and_with_filter(self):"},{"line_number":253,"context_line":"        # Create some test groups."},{"line_number":254,"context_line":"        domain \u003d self._get_domain_fixture()"},{"line_number":255,"context_line":"        group_names \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_ff29129c","line":252,"updated":"2016-06-08 18:11:10.000000000","message":"nice test plan!","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4f9ff913f146c35bfbb83e0e895dce4d678c59e4","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        # confirm that the groups can all be listed"},{"line_number":262,"context_line":"        groups \u003d self.identity_api.list_groups("},{"line_number":263,"context_line":"            domain_scope\u003dself._set_domain_scope(domain[\u0027id\u0027]))"},{"line_number":264,"context_line":"        self.assertEqual(numgroups, len(groups))"},{"line_number":265,"context_line":"        # configure the group filter"},{"line_number":266,"context_line":"        driver \u003d self.identity_api._select_identity_driver(domain[\u0027id\u0027])"},{"line_number":267,"context_line":"        driver.group.ldap_filter \u003d (\u0027(|(ou\u003d%s)(ou\u003d%s))\u0027 %"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_1f497ed0","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":48},"updated":"2016-06-08 18:11:10.000000000","message":"would be better if you use self.assertItemsEqual() here (and below) to verify the content, not just the length","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"23bff437d8cbd6d72fc1f6737578acc5af3bcd7f","unresolved":false,"context_lines":[{"line_number":261,"context_line":"        # confirm that the groups can all be listed"},{"line_number":262,"context_line":"        groups \u003d self.identity_api.list_groups("},{"line_number":263,"context_line":"            domain_scope\u003dself._set_domain_scope(domain[\u0027id\u0027]))"},{"line_number":264,"context_line":"        self.assertEqual(numgroups, len(groups))"},{"line_number":265,"context_line":"        # configure the group filter"},{"line_number":266,"context_line":"        driver \u003d self.identity_api._select_identity_driver(domain[\u0027id\u0027])"},{"line_number":267,"context_line":"        driver.group.ldap_filter \u003d (\u0027(|(ou\u003d%s)(ou\u003d%s))\u0027 %"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_3a3d65dd","line":264,"range":{"start_line":264,"start_character":8,"end_line":264,"end_character":48},"in_reply_to":"7aa08908_1f497ed0","updated":"2016-06-08 19:01:24.000000000","message":"++","commit_id":"1c0e59dc9c0cd8bb4fd54f26d01986a53bcd148c"}]}
