)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"61c9694e9d5bae01fabf6dfc60af7060d360c3a0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"AuthorDate: 2013-02-19 08:30:38 +0100"},{"line_number":4,"context_line":"Commit:     Jose Castro Leon \u003cjose.castro.leon@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-02-19 08:30:38 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Enable two parameters on ldap to allow paged_search of ldap queries"},{"line_number":8,"context_line":"When querying to AD it refuses to allow queries of more than 1000 entries"},{"line_number":9,"context_line":"This fixes bug 1083463"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAM3%2F%2BqH4%3D","line":6,"updated":"2013-02-22 15:39:12.000000000","message":"add a short summary line.","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"}],"etc/keystone.conf.sample":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"03f7572122e23440f0f10804b5f076c095055f22","unresolved":false,"context_lines":[{"line_number":117,"context_line":"# allow_subtree_delete \u003d False"},{"line_number":118,"context_line":"# dumb_member \u003d cn\u003ddumb,dc\u003dexample,dc\u003dcom"},{"line_number":119,"context_line":"# enable_page \u003d False"},{"line_number":120,"context_line":"# page_size \u003d 1000"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"# user_tree_dn \u003d ou\u003dUsers,dc\u003dexample,dc\u003dcom"},{"line_number":123,"context_line":"# user_filter \u003d"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAM3%2F%2FZ3o%3D","line":120,"updated":"2013-01-23 20:40:58.000000000","message":"I\u0027d prefer that there\u0027s a single option, page_size, which if set to 0 indicates no paging. Also, document the configuration options so that people can use this new feature correctly.","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"# allow_subtree_delete \u003d False"},{"line_number":118,"context_line":"# dumb_member \u003d cn\u003ddumb,dc\u003dexample,dc\u003dcom"},{"line_number":119,"context_line":"# enable_page \u003d False"},{"line_number":120,"context_line":"# page_size \u003d 1000"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"# user_tree_dn \u003d ou\u003dUsers,dc\u003dexample,dc\u003dcom"},{"line_number":123,"context_line":"# user_filter \u003d"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAM3%2F%2FZuw%3D","line":120,"in_reply_to":"AAAAM3%2F%2FZ3o%3D","updated":"2013-01-23 22:06:13.000000000","message":"+1; 0 or None both sound like good defaults here","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"}],"keystone/common/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"03f7572122e23440f0f10804b5f076c095055f22","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.common.ldap import fakeldap"},{"line_number":20,"context_line":"from keystone.common import logging"},{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":"from ldap.controls import SimplePagedResultsControl"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZ4E%3D","line":22,"updated":"2013-01-23 20:40:58.000000000","message":"openstack coding standards say that you should import packages and not classes, see https://github.com/openstack/python-keystoneclient/blob/master/HACKING","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from keystone.common.ldap import fakeldap"},{"line_number":20,"context_line":"from keystone.common import logging"},{"line_number":21,"context_line":"from keystone import exception"},{"line_number":22,"context_line":"from ldap.controls import SimplePagedResultsControl"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZuo%3D","line":22,"in_reply_to":"AAAAM3%2F%2FZ4E%3D","updated":"2013-01-23 22:06:13.000000000","message":"from ldap import coding; and put it after the \u0027import ldap\u0027","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"03f7572122e23440f0f10804b5f076c095055f22","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self.LDAP_USER \u003d conf.ldap.user"},{"line_number":81,"context_line":"        self.LDAP_PASSWORD \u003d conf.ldap.password"},{"line_number":82,"context_line":"        self.LDAP_ENABLE_PAGE \u003d conf.ldap.enable_page"},{"line_number":83,"context_line":"        self.LDAP_PAGE_SIZE \u003d conf.ldap.page_size"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if self.options_name is not None:"},{"line_number":86,"context_line":"            self.suffix \u003d conf.ldap.suffix"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZ3A%3D","line":83,"updated":"2013-01-23 20:40:58.000000000","message":"Remove LDAP_ from the name of these variables. It\u0027s already in a class with Ldap in the name. This is getting close to Smurf Naming Convention (http://www.codinghorror.com/blog/2012/07/new-programming-jargon.html).","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        self.LDAP_USER \u003d conf.ldap.user"},{"line_number":81,"context_line":"        self.LDAP_PASSWORD \u003d conf.ldap.password"},{"line_number":82,"context_line":"        self.LDAP_ENABLE_PAGE \u003d conf.ldap.enable_page"},{"line_number":83,"context_line":"        self.LDAP_PAGE_SIZE \u003d conf.ldap.page_size"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if self.options_name is not None:"},{"line_number":86,"context_line":"            self.suffix \u003d conf.ldap.suffix"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZuk%3D","line":83,"in_reply_to":"AAAAM3%2F%2FZ3A%3D","updated":"2013-01-23 22:06:13.000000000","message":"it\u0027s weird that their uppercase too\n\n  self.url\n  self.username\n  self.password\n  self.page_size","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"03f7572122e23440f0f10804b5f076c095055f22","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                      dn,"},{"line_number":365,"context_line":"                      scope,"},{"line_number":366,"context_line":"                      query)"},{"line_number":367,"context_line":"        if (self.enable_page):"},{"line_number":368,"context_line":"            res \u003d []"},{"line_number":369,"context_line":"            lc \u003d SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,True,(self.page_size,\u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn, scope, query, serverctrls\u003d[lc])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZ28%3D","line":367,"updated":"2013-01-23 20:40:58.000000000","message":"remove (), this is python.","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                      dn,"},{"line_number":365,"context_line":"                      scope,"},{"line_number":366,"context_line":"                      query)"},{"line_number":367,"context_line":"        if (self.enable_page):"},{"line_number":368,"context_line":"            res \u003d []"},{"line_number":369,"context_line":"            lc \u003d SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,True,(self.page_size,\u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn, scope, query, serverctrls\u003d[lc])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZu8%3D","line":367,"in_reply_to":"AAAAM3%2F%2FZ28%3D","updated":"2013-01-23 22:06:13.000000000","message":"haha","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"03f7572122e23440f0f10804b5f076c095055f22","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                      query)"},{"line_number":367,"context_line":"        if (self.enable_page):"},{"line_number":368,"context_line":"            res \u003d []"},{"line_number":369,"context_line":"            lc \u003d SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,True,(self.page_size,\u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn, scope, query, serverctrls\u003d[lc])"},{"line_number":371,"context_line":"            while True:"},{"line_number":372,"context_line":"                rtype, rdata, rmsgid, serverctrls \u003d self.conn.result3(msgid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZ20%3D","line":369,"updated":"2013-01-23 20:40:58.000000000","message":"this must fail PEP8 checks? there\u0027s no spaces after ,.","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                      query)"},{"line_number":367,"context_line":"        if (self.enable_page):"},{"line_number":368,"context_line":"            res \u003d []"},{"line_number":369,"context_line":"            lc \u003d SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,True,(self.page_size,\u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn, scope, query, serverctrls\u003d[lc])"},{"line_number":371,"context_line":"            while True:"},{"line_number":372,"context_line":"                rtype, rdata, rmsgid, serverctrls \u003d self.conn.result3(msgid)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZuE%3D","line":369,"in_reply_to":"AAAAM3%2F%2FZ20%3D","updated":"2013-01-23 22:06:13.000000000","message":"it will","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            res \u003d []"},{"line_number":369,"context_line":"            lc \u003d SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,True,(self.page_size,\u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn, scope, query, serverctrls\u003d[lc])"},{"line_number":371,"context_line":"            while True:"},{"line_number":372,"context_line":"                rtype, rdata, rmsgid, serverctrls \u003d self.conn.result3(msgid)"},{"line_number":373,"context_line":"                res.extend(rdata)"},{"line_number":374,"context_line":"                pctrls \u003d [c for c in serverctrls if c.controlType \u003d\u003d ldap.LDAP_CONTROL_PAGE_OID]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZtw%3D","line":371,"updated":"2013-01-23 22:06:13.000000000","message":"add a comment explaining why the endless loop is necessary / what the exit conditions are -- it set off red flags at first","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                    else:"},{"line_number":381,"context_line":"                        break"},{"line_number":382,"context_line":"                else:"},{"line_number":383,"context_line":"                    LOG.error(\u0027Warning:  Server ignores RFC 2696 control.\u0027)"},{"line_number":384,"context_line":"                    break"},{"line_number":385,"context_line":"        else:"},{"line_number":386,"context_line":"            res \u003d self.conn.search_s(dn, scope, query)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZt0%3D","line":383,"updated":"2013-01-23 22:06:13.000000000","message":"Log a warning instead, use i18n, and refer to a specific server (not sure if it should be LDAP_URL or whatever):\n\n  LOG.warning(_(\u0027%s ignores RFC 2696 control.\u0027) % self.url)","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1ab42be29979f5eabc1ac36e2f9ae32144f835cd","unresolved":false,"context_lines":[{"line_number":337,"context_line":"class LdapWrapper(object):"},{"line_number":338,"context_line":"    def __init__(self, url, page_size):"},{"line_number":339,"context_line":"        LOG.debug(_(\"LDAP init: url\u003d%s\"), url)"},{"line_number":340,"context_line":"        self.conn \u003d ldap.initialize(url)"},{"line_number":341,"context_line":"        self.page_size \u003d page_size"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def simple_bind_s(self, user, password):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FXBc%3D","line":340,"updated":"2013-01-25 17:20:16.000000000","message":"Applications should set the LDAP protocol version, see the note here: http://www.python-ldap.org/doc/html/ldap.html#object-attributes , under LDAPObject.protocol_version. I think it\u0027s especially the case if we\u0027re going to use LDAP v3 features such as controls.","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"245137e623036aa7b5f9708bc565283e4d7fbaa5","unresolved":false,"context_lines":[{"line_number":337,"context_line":"class LdapWrapper(object):"},{"line_number":338,"context_line":"    def __init__(self, url, page_size):"},{"line_number":339,"context_line":"        LOG.debug(_(\"LDAP init: url\u003d%s\"), url)"},{"line_number":340,"context_line":"        self.conn \u003d ldap.initialize(url)"},{"line_number":341,"context_line":"        self.page_size \u003d page_size"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def simple_bind_s(self, user, password):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FDhY%3D","line":340,"in_reply_to":"AAAAM3%2F%2FD8E%3D","updated":"2013-02-08 19:28:21.000000000","message":"My opinion is that we shouldn\u0027t be concerned with supporting V2 servers. The V3 spec has been out for \u003e 10 years. I still think we should specify LDAP V3 version to the API because the docs say to do it.","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"0cfac31e4e7978582b9ccc63de6e239765464f9c","unresolved":false,"context_lines":[{"line_number":337,"context_line":"class LdapWrapper(object):"},{"line_number":338,"context_line":"    def __init__(self, url, page_size):"},{"line_number":339,"context_line":"        LOG.debug(_(\"LDAP init: url\u003d%s\"), url)"},{"line_number":340,"context_line":"        self.conn \u003d ldap.initialize(url)"},{"line_number":341,"context_line":"        self.page_size \u003d page_size"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"    def simple_bind_s(self, user, password):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FD8E%3D","line":340,"in_reply_to":"AAAAM3%2F%2FXBc%3D","updated":"2013-02-08 13:54:46.000000000","message":"I understand it, but does it mean that an extra parameter for the protocol version (for backwards compatibility) that disables tree_deletion and paged_search ?","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1ab42be29979f5eabc1ac36e2f9ae32144f835cd","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                        # Exit condition no more data on server"},{"line_number":391,"context_line":"                        break"},{"line_number":392,"context_line":"                else:"},{"line_number":393,"context_line":"                    LOG.warning(_(\"LDAP Server ignores RFC 2696 control\"))"},{"line_number":394,"context_line":"                    break"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            res \u003d self.conn.search_s(dn, scope, query)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FXBY%3D","line":393,"updated":"2013-01-25 17:20:16.000000000","message":"is it worth it to provide some more information with this message? Here\u0027s my stab at a more usable message:\n\nLDAP Server does not support paging. Disable paging in your keystone.conf file to avoid this message.\n\nAlso, is it worth it to only print this error once (set self.page_size \u003d 0 for subsequent searches).","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"eef9a0fbf9fb2f69d0a101473c3434c32a0edd8b","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                        # Exit condition no more data on server"},{"line_number":391,"context_line":"                        break"},{"line_number":392,"context_line":"                else:"},{"line_number":393,"context_line":"                    LOG.warning(_(\"LDAP Server ignores RFC 2696 control\"))"},{"line_number":394,"context_line":"                    break"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            res \u003d self.conn.search_s(dn, scope, query)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2B8eY%3D","line":393,"in_reply_to":"AAAAM3%2F%2FD8A%3D","updated":"2013-02-13 18:04:48.000000000","message":"the more informative message would definitely be better","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":5575,"name":"Jose Castro Leon","email":"jose.castro.leon@cern.ch","username":"jose-castro-leon"},"change_message_id":"0cfac31e4e7978582b9ccc63de6e239765464f9c","unresolved":false,"context_lines":[{"line_number":390,"context_line":"                        # Exit condition no more data on server"},{"line_number":391,"context_line":"                        break"},{"line_number":392,"context_line":"                else:"},{"line_number":393,"context_line":"                    LOG.warning(_(\"LDAP Server ignores RFC 2696 control\"))"},{"line_number":394,"context_line":"                    break"},{"line_number":395,"context_line":"        else:"},{"line_number":396,"context_line":"            res \u003d self.conn.search_s(dn, scope, query)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FD8A%3D","line":393,"in_reply_to":"AAAAM3%2F%2FXBY%3D","updated":"2013-02-08 13:54:46.000000000","message":"I fully agree.","commit_id":"52117c3e8bbf35006d5e8deea06c3a80e4d6d259"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"61c9694e9d5bae01fabf6dfc60af7060d360c3a0","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import ldap"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from ldap import controls"},{"line_number":20,"context_line":"from keystone.common.ldap import fakeldap"},{"line_number":21,"context_line":"from keystone.common import logging"},{"line_number":22,"context_line":"from keystone import exception"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BqHw%3D","line":19,"updated":"2013-02-22 15:39:12.000000000","message":"suggest use ldap.controls in the code and not import controls separately (remove this line).\n\nAlso, group imports, so this line (if you keep it) should be moved up with line 17.","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"1475f3a7487e4984fc5dd20a460ab2dca0defc8a","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                      scope,"},{"line_number":363,"context_line":"                      query,"},{"line_number":364,"context_line":"                      attrlist)"},{"line_number":365,"context_line":"        if self.page_size:"},{"line_number":366,"context_line":"            res \u003d []"},{"line_number":367,"context_line":"            lc \u003d controls.SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,"},{"line_number":368,"context_line":"                                                    True,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Bt1k%3D","line":365,"updated":"2013-02-20 20:54:39.000000000","message":"I think SCOPE_BASE should be ruled out here.","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"61c9694e9d5bae01fabf6dfc60af7060d360c3a0","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                      query,"},{"line_number":364,"context_line":"                      attrlist)"},{"line_number":365,"context_line":"        if self.page_size:"},{"line_number":366,"context_line":"            res \u003d []"},{"line_number":367,"context_line":"            lc \u003d controls.SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,"},{"line_number":368,"context_line":"                                                    True,"},{"line_number":369,"context_line":"                                                    (self.page_size, \u0027\u0027))"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BqHg%3D","line":366,"updated":"2013-02-22 15:39:12.000000000","message":"suggest move the code in this leg into a separate function. I prefer fewer levels of indentation.","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"61c9694e9d5bae01fabf6dfc60af7060d360c3a0","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        if self.page_size:"},{"line_number":366,"context_line":"            res \u003d []"},{"line_number":367,"context_line":"            lc \u003d controls.SimplePagedResultsControl(ldap.LDAP_CONTROL_PAGE_OID,"},{"line_number":368,"context_line":"                                                    True,"},{"line_number":369,"context_line":"                                                    (self.page_size, \u0027\u0027))"},{"line_number":370,"context_line":"            msgid \u003d self.conn.search_ext(dn,"},{"line_number":371,"context_line":"                                         scope,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BqHk%3D","line":368,"updated":"2013-02-22 15:39:12.000000000","message":"why True? give a name to this \"magic number\" parameter so reviewers know what it is.","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"61c9694e9d5bae01fabf6dfc60af7060d360c3a0","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                    LOG.warning(_(\u0027LDAP Server does not support paging.\u0027"},{"line_number":400,"context_line":"                                  \u0027Disable paging in keystone.conf to\u0027"},{"line_number":401,"context_line":"                                  \u0027avoid this message\u0027))"},{"line_number":402,"context_line":"                    self.page_size \u003d 0"},{"line_number":403,"context_line":"                    break"},{"line_number":404,"context_line":"        else:"},{"line_number":405,"context_line":"            res \u003d self.conn.search_s(dn, scope, query)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2BqHU%3D","line":402,"updated":"2013-02-22 15:39:12.000000000","message":"suggest put a comment here saying that this disables paging from now on (or, write a small function called self._disable_paging()).","commit_id":"f706ecacf4311104b0d0dc59c34ea598f2c86868"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"3dc131a55a6730f2a46a68b5df2e71b77270d693","unresolved":false,"context_lines":[{"line_number":439,"context_line":"                LOG.warning(_(\u0027LDAP Server does not support paging.\u0027"},{"line_number":440,"context_line":"                              \u0027Disable paging in keystone.conf to\u0027"},{"line_number":441,"context_line":"                              \u0027avoid this message\u0027))"},{"line_number":442,"context_line":"                self._disable_paging()"},{"line_number":443,"context_line":"                break"},{"line_number":444,"context_line":"        return res"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAN3%2F%2F%2B20%3D","line":442,"updated":"2013-03-04 18:29:49.000000000","message":"nice","commit_id":"83d08cfc7bec00f2f82cff2a5101e63f52b1402b"}],"keystone/config.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"efb30aebc264a234510270997fab67c0fe8c2fc8","unresolved":false,"context_lines":[{"line_number":188,"context_line":"register_str(\u0027dumb_member\u0027, group\u003d\u0027ldap\u0027, default\u003d\u0027cn\u003ddumb,dc\u003dnonexistent\u0027)"},{"line_number":189,"context_line":"register_bool(\u0027allow_subtree_delete\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":190,"context_line":"register_bool(\u0027enable_page\u0027, group\u003d\u0027ldap\u0027, default\u003dFalse)"},{"line_number":191,"context_line":"register_int(\u0027page_size\u0027, group\u003d\u0027ldap\u0027, default\u003d1000)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"register_str(\u0027user_tree_dn\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"},{"line_number":194,"context_line":"register_str(\u0027user_filter\u0027, group\u003d\u0027ldap\u0027, default\u003dNone)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2FZts%3D","line":191,"updated":"2013-01-23 22:06:13.000000000","message":"I\u0027m happy to defer to the community on whether paging should be enabled or not, but I assume it should? If people don\u0027t want paging they can specify a page_size \u003d 0, or page_size \u003d None","commit_id":"e509f886e7d495f2fe59addd50b7c9c62d0487a2"}]}
