)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b14431f4b38aedef4bfebeac36526b7f197d3623","unresolved":false,"context_lines":[{"line_number":41,"context_line":"handling. The idea here is to separate out the refactoring needed to"},{"line_number":42,"context_line":"support unicode from the actual unicode changes, this should make"},{"line_number":43,"context_line":"reviewing easier."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Change-Id: I7db24040689245a616332b08744f40ab8381579d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAWH%2F%2BaNQ%3D","line":44,"updated":"2014-03-27 00:38:28.000000000","message":"Should reference bug: https://bugs.launchpad.net/keystone/+bug/1172106\n\n Partial-Bug: #1172106","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"}],"keystone/common/ldap/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        * integer values map to their string representation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        * unicode strings are encoded in UTF-8"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    In addition to handling type conversions at the API boundary we"},{"line_number":120,"context_line":"    have the requirement to support more than one LDAP API"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B000%3D","line":117,"updated":"2014-03-24 00:45:09.000000000","message":"is this a TODO? I don\u0027t see it happening anywhere.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        * integer values map to their string representation."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        * unicode strings are encoded in UTF-8"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    In addition to handling type conversions at the API boundary we"},{"line_number":120,"context_line":"    have the requirement to support more than one LDAP API"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Buxg%3D","line":117,"in_reply_to":"AAAAWH%2F%2B000%3D","updated":"2014-03-25 23:12:01.000000000","message":"The next patch in the series implements this.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    We have an addtional constraint at the time of this writing due to"},{"line_number":134,"context_line":"    limitations in the logging module. The logging module is not"},{"line_number":135,"context_line":"    capable of accepting UTF-8 encoded strings, it will throw an"},{"line_number":136,"context_line":"    encoding execption. Therefore all logging MUST be performed prior"},{"line_number":137,"context_line":"    to UTF-8 conversion. This means no logging can be performed in the"},{"line_number":138,"context_line":"    ldap API\u0027s that implement the python-ldap API because those API\u0027s"},{"line_number":139,"context_line":"    are defined to accept only UTF-8 strings. Thus the layer which"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B07c%3D","line":136,"updated":"2014-03-24 00:45:09.000000000","message":"change \"execption\" to \"exception\"","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    We have an addtional constraint at the time of this writing due to"},{"line_number":134,"context_line":"    limitations in the logging module. The logging module is not"},{"line_number":135,"context_line":"    capable of accepting UTF-8 encoded strings, it will throw an"},{"line_number":136,"context_line":"    encoding execption. Therefore all logging MUST be performed prior"},{"line_number":137,"context_line":"    to UTF-8 conversion. This means no logging can be performed in the"},{"line_number":138,"context_line":"    ldap API\u0027s that implement the python-ldap API because those API\u0027s"},{"line_number":139,"context_line":"    are defined to accept only UTF-8 strings. Thus the layer which"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BuvY%3D","line":136,"in_reply_to":"AAAAWH%2F%2B07c%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    use a chaining technique whereby instances of this class simply"},{"line_number":147,"context_line":"    call the next member in the chain via the \"conn\" attribute. The"},{"line_number":148,"context_line":"    chain is constructed by passing in an existing instance of this"},{"line_number":149,"context_line":"    class as the conn attirbute when the class is instantiated."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    Here is a brief explanation of why other possible approaches were"},{"line_number":152,"context_line":"    not used:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B07M%3D","line":149,"updated":"2014-03-24 00:45:09.000000000","message":"change \"attirbute\" to \"attribute\" (or parameter)","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    use a chaining technique whereby instances of this class simply"},{"line_number":147,"context_line":"    call the next member in the chain via the \"conn\" attribute. The"},{"line_number":148,"context_line":"    chain is constructed by passing in an existing instance of this"},{"line_number":149,"context_line":"    class as the conn attirbute when the class is instantiated."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    Here is a brief explanation of why other possible approaches were"},{"line_number":152,"context_line":"    not used:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Buuc%3D","line":149,"in_reply_to":"AAAAWH%2F%2B07M%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        raise exception.NotImplemented()"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @abc.abstractmethod"},{"line_number":233,"context_line":"    def search_ext(self, base, scope,"},{"line_number":234,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":235,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":236,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B06w%3D","line":233,"updated":"2014-03-24 00:45:09.000000000","message":"why no search_ext_s?","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        raise exception.NotImplemented()"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    @abc.abstractmethod"},{"line_number":233,"context_line":"    def search_ext(self, base, scope,"},{"line_number":234,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":235,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":236,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BusU%3D","line":233,"in_reply_to":"AAAAWH%2F%2B06w%3D","updated":"2014-03-25 23:12:01.000000000","message":"Because its not currently used. The full python-ldap API is quite large, there didn\u0027t seem to be any need to implement things at this stage which aren\u0027t currently used.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    \u0027\u0027\u0027"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def __init__(self, conn\u003dNone):"},{"line_number":267,"context_line":"        super(PythonLDAPHandler, self).__init__(conn\u003dconn)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def connect(self, url, page_size\u003d0, alias_dereferencing\u003dNone,"},{"line_number":270,"context_line":"                use_tls\u003dFalse, tls_cacertfile\u003dNone, tls_cacertdir\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B06s%3D","line":267,"updated":"2014-03-24 00:45:09.000000000","message":"this is the default, so suggest remove it","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    \u0027\u0027\u0027"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def __init__(self, conn\u003dNone):"},{"line_number":267,"context_line":"        super(PythonLDAPHandler, self).__init__(conn\u003dconn)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def connect(self, url, page_size\u003d0, alias_dereferencing\u003dNone,"},{"line_number":270,"context_line":"                use_tls\u003dFalse, tls_cacertfile\u003dNone, tls_cacertdir\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BunM%3D","line":267,"in_reply_to":"AAAAWH%2F%2B06s%3D","updated":"2014-03-25 23:12:01.000000000","message":"The method signatures should be the same. The base abstract class defines it this way which is useful for chaining,","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                                    timeout, sizelimit)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":372,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":373,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def modify_s(self, dn, modlist):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B04M%3D","line":372,"updated":"2014-03-24 00:45:09.000000000","message":"my python-ldap doesn\u0027t have a resp_ctrl_classes argument to result3. http://www.python-ldap.org/doc/html/ldap.html#ldap.LDAPObject.result3","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                                    timeout, sizelimit)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":372,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":373,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def modify_s(self, dn, modlist):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BuRY%3D","line":372,"in_reply_to":"AAAAWH%2F%2B04M%3D","updated":"2014-03-25 23:12:01.000000000","message":"Hmm... researching upstream python-ldap indicates the parameter was added in their CVS revision 1.117 on 3/31/2011, just shy of 3 years ago. Looks like that change would have appeared in the 2.3.13 release dated 6/2/2011, 2 3/4 years ago. So it\u0027s been a while. What release do you have? FWIW the test-requirements specify 2.3.13. So as far as I can tell this should be o.k.\n\nIt\u0027s not a big deal though, if we have to we can just let this parameter default, I don\u0027t see an immediate use for it but if we can export the same API we should.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    def modify_s(self, dn, modlist):"},{"line_number":376,"context_line":"        return self.conn.modify_s(dn, modlist)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def delete_s(self, dn):"},{"line_number":379,"context_line":"        return self.conn.delete_s(dn)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def delete_ext_s(self, dn, serverctrls\u003dNone, clientctrls\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B03s%3D","line":378,"updated":"2014-03-24 00:45:09.000000000","message":"we could probably simplify this interface by only supporting delete_ext_s.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":375,"context_line":"    def modify_s(self, dn, modlist):"},{"line_number":376,"context_line":"        return self.conn.modify_s(dn, modlist)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"    def delete_s(self, dn):"},{"line_number":379,"context_line":"        return self.conn.delete_s(dn)"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def delete_ext_s(self, dn, serverctrls\u003dNone, clientctrls\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BuJ0%3D","line":378,"in_reply_to":"AAAAWH%2F%2B03s%3D","updated":"2014-03-25 23:12:01.000000000","message":"Sure, that\u0027s true. FWIW the entire python-ldap API could probably be reduced to 1/3 it\u0027s current size because there are a lot methods which simply call their sister entry point which have additional parameters. But to understand which methods can be substituted one has to look at the API implementation.\n\nI can see an argument for retaining the simple entry points which are the ones used 99% of the time but I\u0027m not wed to that. If you feel strongly we can remove the \"simple\" entry points and only keep the more functional entry points. At the moment I\u0027m leaning to keeping the simple entry points.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        return self.conn.delete_ext_s(dn, serverctrls, clientctrls)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"class KeystoneLDAPHandler(LDAPHandler):"},{"line_number":386,"context_line":"    def __init__(self, conn\u003dNone):"},{"line_number":387,"context_line":"        super(KeystoneLDAPHandler, self).__init__(conn\u003dconn)"},{"line_number":388,"context_line":"        self.page_size \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B03c%3D","line":385,"updated":"2014-03-24 00:45:09.000000000","message":"A docstring would be nice.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        return self.conn.delete_ext_s(dn, serverctrls, clientctrls)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"class KeystoneLDAPHandler(LDAPHandler):"},{"line_number":386,"context_line":"    def __init__(self, conn\u003dNone):"},{"line_number":387,"context_line":"        super(KeystoneLDAPHandler, self).__init__(conn\u003dconn)"},{"line_number":388,"context_line":"        self.page_size \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bta8%3D","line":385,"in_reply_to":"AAAAWH%2F%2B03c%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done\n\nOpps, of course, thanks for the catch. FWIW the doc string will document the final intent of the class, not it\u0027s stub implementation as it appears in this intermediary patch.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def simple_bind_s(self, who\u003d\u0027\u0027, cred\u003d\u0027\u0027,"},{"line_number":408,"context_line":"                      serverctrls\u003dNone, clientctrls\u003dNone):"},{"line_number":409,"context_line":"        LOG.debug(_(\"LDAP bind: who\u003d%s\"), who)"},{"line_number":410,"context_line":"        return self.conn.simple_bind_s(who, cred,"},{"line_number":411,"context_line":"                                       serverctrls, clientctrls)"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B03g%3D","line":409,"updated":"2014-03-24 00:45:09.000000000","message":"suggest don\u0027t wrap strings in _() when there\u0027s nothing to translate (this applies throughout these changes, e.g., 424). Save the translators some time.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def simple_bind_s(self, who\u003d\u0027\u0027, cred\u003d\u0027\u0027,"},{"line_number":408,"context_line":"                      serverctrls\u003dNone, clientctrls\u003dNone):"},{"line_number":409,"context_line":"        LOG.debug(_(\"LDAP bind: who\u003d%s\"), who)"},{"line_number":410,"context_line":"        return self.conn.simple_bind_s(who, cred,"},{"line_number":411,"context_line":"                                       serverctrls, clientctrls)"},{"line_number":412,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BtY8%3D","line":409,"in_reply_to":"AAAAWH%2F%2B03g%3D","updated":"2014-03-25 23:12:01.000000000","message":"I agree. But I\u0027ve been criticized in the past for making changes not fundamental to the purpose of the change set. This is how things were logged in the existing code so I avoided changing it.\n\nBut since I happen to agree with you :-) I\u0027ll make the change. At the same time I\u0027ll remove the use of named substitutions and dictionaries in the log messages which won\u0027t be translated. Named substitutions are only necessary for translators and if the message is not going to be translated then the extra dictionary object is needless overhead and complexity.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":471,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":472,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"},{"line_number":473,"context_line":"        return self.conn.search_ext(base, scope,"},{"line_number":474,"context_line":"                                    filterstr, attrlist, attrsonly,"},{"line_number":475,"context_line":"                                    serverctrls, clientctrls,"},{"line_number":476,"context_line":"                                    timeout, sizelimit)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B02g%3D","line":473,"updated":"2014-03-24 00:45:09.000000000","message":"No logging?","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":471,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":472,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"},{"line_number":473,"context_line":"        return self.conn.search_ext(base, scope,"},{"line_number":474,"context_line":"                                    filterstr, attrlist, attrsonly,"},{"line_number":475,"context_line":"                                    serverctrls, clientctrls,"},{"line_number":476,"context_line":"                                    timeout, sizelimit)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bog0%3D","line":473,"in_reply_to":"AAAAWH%2F%2B02g%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                                    serverctrls, clientctrls,"},{"line_number":476,"context_line":"                                    timeout, sizelimit)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def paged_search_s(self, base, scope, filterstr, attrlist\u003dNone):"},{"line_number":479,"context_line":"        res \u003d []"},{"line_number":480,"context_line":"        lc \u003d ldap.controls.SimplePagedResultsControl("},{"line_number":481,"context_line":"            controlType\u003dldap.LDAP_CONTROL_PAGE_OID,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B018%3D","line":478,"updated":"2014-03-24 00:45:09.000000000","message":"this should probably be private (prefix with _)","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":475,"context_line":"                                    serverctrls, clientctrls,"},{"line_number":476,"context_line":"                                    timeout, sizelimit)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def paged_search_s(self, base, scope, filterstr, attrlist\u003dNone):"},{"line_number":479,"context_line":"        res \u003d []"},{"line_number":480,"context_line":"        lc \u003d ldap.controls.SimplePagedResultsControl("},{"line_number":481,"context_line":"            controlType\u003dldap.LDAP_CONTROL_PAGE_OID,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bogk%3D","line":478,"in_reply_to":"AAAAWH%2F%2B018%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done\n\nWasn\u0027t part of the original code but I agree this is correct.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":523,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":524,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def modify_s(self, dn, modlist):"},{"line_number":527,"context_line":"        ldap_modlist \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B01s%3D","line":524,"updated":"2014-03-24 00:45:09.000000000","message":"no logging?","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":523,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":524,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def modify_s(self, dn, modlist):"},{"line_number":527,"context_line":"        ldap_modlist \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bofc%3D","line":524,"in_reply_to":"AAAAWH%2F%2B01s%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        return mapping"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B01U%3D","line":678,"updated":"2014-03-24 00:45:09.000000000","message":"could change the name of get_handler to _get_connection... would probably make more sense.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        return mapping"},{"line_number":676,"context_line":""},{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BobA%3D","line":678,"in_reply_to":"AAAAWH%2F%2B01U%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done. Good suggestion.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        handler.connect(self.LDAP_URL,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B01o%3D","line":679,"updated":"2014-03-24 00:45:09.000000000","message":"suggest remove this blank line then it\u0027ll be more obvious that handler is being used.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":676,"context_line":""},{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        handler.connect(self.LDAP_URL,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BoZ8%3D","line":679,"in_reply_to":"AAAAWH%2F%2B01o%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        handler.connect(self.LDAP_URL,"},{"line_number":683,"context_line":"                        page_size\u003dself.page_size,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B01Y%3D","line":680,"updated":"2014-03-24 00:45:09.000000000","message":"suggest change the name from handler to conn.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":677,"context_line":"    def get_connection(self, user\u003dNone, password\u003dNone):"},{"line_number":678,"context_line":"        handler \u003d get_handler(self.LDAP_URL)"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"        handler \u003d KeystoneLDAPHandler(conn\u003dhandler)"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        handler.connect(self.LDAP_URL,"},{"line_number":683,"context_line":"                        page_size\u003dself.page_size,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BoZM%3D","line":680,"in_reply_to":"AAAAWH%2F%2B01Y%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done. Good suggestion.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b14431f4b38aedef4bfebeac36526b7f197d3623","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                                    timeout, sizelimit)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":365,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":366,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def modify_s(self, dn, modlist):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BaPc%3D","line":365,"updated":"2014-03-27 00:38:28.000000000","message":"Here\u0027s the source -- it\u0027s got resp_ctrl_classes -- http://python-ldap.cvs.sourceforge.net/viewvc/python-ldap/python-ldap/Lib/ldap/ldapobject.py?view\u003dmarkup\n\nHere\u0027s my version, installed via pip, it\u0027s 2.3.13.\n\n $ .tox/py27/bin/pip freeze | grep -i ldap\n python-ldap\u003d\u003d2.3.13\n\nI\u0027m fine with this as is. I assume we don\u0027t use it... would be weird if we had to.","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"0bfa0c85e8d46fd0e9255e5783b122b4eea81927","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                                    timeout, sizelimit)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":365,"context_line":"                resp_ctrl_classes\u003dNone):"},{"line_number":366,"context_line":"        return self.conn.result3(msgid, all, timeout, resp_ctrl_classes)"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def modify_s(self, dn, modlist):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BWmA%3D","line":365,"in_reply_to":"AAAAWH%2F%2BaPc%3D","updated":"2014-03-27 14:31:45.000000000","message":"Done.\n\nRemoved passing the resp_ctrl_classes parameter and added a comment.","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b14431f4b38aedef4bfebeac36526b7f197d3623","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    string."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    Prior to the call Python data types are converted to a string"},{"line_number":389,"context_line":"    representation as required by the LDAP API\u0027s"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    Then logging is performed so we can track what is being"},{"line_number":392,"context_line":"    sent/received from LDAP. Also the logging filters security"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BaO0%3D","line":389,"updated":"2014-03-27 00:38:28.000000000","message":". at end of sentence.\n\nAlso, suggest change \"API\u0027s\" to \"APIs\"","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"0bfa0c85e8d46fd0e9255e5783b122b4eea81927","unresolved":false,"context_lines":[{"line_number":386,"context_line":"    string."},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"    Prior to the call Python data types are converted to a string"},{"line_number":389,"context_line":"    representation as required by the LDAP API\u0027s"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    Then logging is performed so we can track what is being"},{"line_number":392,"context_line":"    sent/received from LDAP. Also the logging filters security"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BWlI%3D","line":389,"in_reply_to":"AAAAWH%2F%2BaO0%3D","updated":"2014-03-27 14:31:45.000000000","message":"Done.\n\nAnd changed it in the 2 other places it occurred.","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b14431f4b38aedef4bfebeac36526b7f197d3623","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    sent/received from LDAP. Also the logging filters security"},{"line_number":393,"context_line":"    sensitive items (i.e. passwords)."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    Then the string values are encoded into UTF-8"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    Then the LDAP API entry point is invoked."},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BaOw%3D","line":395,"updated":"2014-03-27 00:38:28.000000000","message":". at and of sentence","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"0bfa0c85e8d46fd0e9255e5783b122b4eea81927","unresolved":false,"context_lines":[{"line_number":392,"context_line":"    sent/received from LDAP. Also the logging filters security"},{"line_number":393,"context_line":"    sensitive items (i.e. passwords)."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    Then the string values are encoded into UTF-8"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    Then the LDAP API entry point is invoked."},{"line_number":398,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAWH%2F%2BWkY%3D","line":395,"in_reply_to":"AAAAWH%2F%2BaOw%3D","updated":"2014-03-27 14:31:45.000000000","message":"Done","commit_id":"93cb719574e288bcd0537eb1179b4b495cb719b9"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"5472ac1c988ab5db624fefc23773ba5f161ea9b7","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    conversions and then calls another LDAP API which is configurable"},{"line_number":131,"context_line":"    (e.g. either python-ldap or the fake emulation)."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    We have an addtional constraint at the time of this writing due to"},{"line_number":134,"context_line":"    limitations in the logging module. The logging module is not"},{"line_number":135,"context_line":"    capable of accepting UTF-8 encoded strings, it will throw an"},{"line_number":136,"context_line":"    encoding exception. Therefore all logging MUST be performed prior"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAWH%2F%2BRyU%3D","line":133,"updated":"2014-03-27 21:57:47.000000000","message":"typo addtional","commit_id":"ebb59a75cecc71ca7cc137e16056a4c8b513fd8d"}],"keystone/tests/fakeldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        using_ldaps \u003d url.lower().startswith(\"ldaps\")"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if use_tls and using_ldaps:"},{"line_number":195,"context_line":"            raise AssertionError(_(\u0027Invalid TLS / LDAPS combination\u0027))"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        if use_tls:"},{"line_number":198,"context_line":"            if tls_cacertfile:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B080%3D","line":195,"updated":"2014-03-24 00:45:09.000000000","message":"don\u0027t mark strings in test modules for translation.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        using_ldaps \u003d url.lower().startswith(\"ldaps\")"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        if use_tls and using_ldaps:"},{"line_number":195,"context_line":"            raise AssertionError(_(\u0027Invalid TLS / LDAPS combination\u0027))"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        if use_tls:"},{"line_number":198,"context_line":"            if tls_cacertfile:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BkgE%3D","line":195,"in_reply_to":"AAAAWH%2F%2B080%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done. Agree, but FWIW this was the original code and I try to avoid changing things not relevant to the bug.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            if tls_req_cert in core.LDAP_TLS_CERTS.values():"},{"line_number":203,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, tls_req_cert)"},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                LOG.debug(_(\"LDAP TLS: invalid TLS_REQUIRE_CERT Option\u003d%s\"),"},{"line_number":206,"context_line":"                          tls_req_cert)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if alias_dereferencing is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B08w%3D","line":205,"updated":"2014-03-24 00:45:09.000000000","message":"don\u0027t mark strings in test modules for translation.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":202,"context_line":"            if tls_req_cert in core.LDAP_TLS_CERTS.values():"},{"line_number":203,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, tls_req_cert)"},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                LOG.debug(_(\"LDAP TLS: invalid TLS_REQUIRE_CERT Option\u003d%s\"),"},{"line_number":206,"context_line":"                          tls_req_cert)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if alias_dereferencing is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bkd8%3D","line":205,"in_reply_to":"AAAAWH%2F%2B08w%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, tls_req_cert)"},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                LOG.debug(_(\"LDAP TLS: invalid TLS_REQUIRE_CERT Option\u003d%s\"),"},{"line_number":206,"context_line":"                          tls_req_cert)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if alias_dereferencing is not None:"},{"line_number":209,"context_line":"            self.set_option(ldap.OPT_DEREF, alias_dereferencing)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B0z8%3D","line":206,"updated":"2014-03-24 00:45:09.000000000","message":"shouldn\u0027t a fake used for testing raise an exception on bad input? nobody\u0027s going to be looking for debug output in the test output.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, tls_req_cert)"},{"line_number":204,"context_line":"            else:"},{"line_number":205,"context_line":"                LOG.debug(_(\"LDAP TLS: invalid TLS_REQUIRE_CERT Option\u003d%s\"),"},{"line_number":206,"context_line":"                          tls_req_cert)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        if alias_dereferencing is not None:"},{"line_number":209,"context_line":"            self.set_option(ldap.OPT_DEREF, alias_dereferencing)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2Bkdg%3D","line":206,"in_reply_to":"AAAAWH%2F%2B0z8%3D","updated":"2014-03-25 23:12:01.000000000","message":"Done","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":421,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":422,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"},{"line_number":423,"context_line":"        raise exception.NotImplemented()"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":426,"context_line":"                resp_ctrl_classes\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B0zU%3D","line":423,"updated":"2014-03-24 00:45:09.000000000","message":"how do we get away with this?","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"},{"author":{"_account_id":8116,"name":"John Dennis","email":"jdennis@redhat.com","username":"jdennis"},"change_message_id":"f3462ec9a7f57cb730c062fcbd5bf080f6bcd478","unresolved":false,"context_lines":[{"line_number":420,"context_line":"                   filterstr\u003d\u0027(objectClass\u003d*)\u0027, attrlist\u003dNone, attrsonly\u003d0,"},{"line_number":421,"context_line":"                   serverctrls\u003dNone, clientctrls\u003dNone,"},{"line_number":422,"context_line":"                   timeout\u003d-1, sizelimit\u003d0):"},{"line_number":423,"context_line":"        raise exception.NotImplemented()"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    def result3(self, msgid\u003dldap.RES_ANY, all\u003d1, timeout\u003dNone,"},{"line_number":426,"context_line":"                resp_ctrl_classes\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2BkZU%3D","line":423,"in_reply_to":"AAAAWH%2F%2B0zU%3D","updated":"2014-03-25 23:12:01.000000000","message":"These are not used with the fake ldap API, only with the real python-ldap API, but they are part of the interface and must have an implementation. In the future if these methods are used we\u0027ll have to implement them, probably by doing a search, caching the result and assigning it an id, then result3 would read from the cache. But that\u0027s for another day, the code will not get called so I see no point in implementing something that isn\u0027t used.","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"}],"keystone/tests/test_backend_ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"b782bd996261e0cf8ebc2b198fca69e2f2a4479c","unresolved":false,"context_lines":[{"line_number":1196,"context_line":""},{"line_number":1197,"context_line":"    def test_base_ldap_connection_deref_option(self):"},{"line_number":1198,"context_line":"        def get_conn(deref_name):"},{"line_number":1199,"context_line":"            CONF.ldap.alias_dereferencing \u003d deref_name"},{"line_number":1200,"context_line":"            base_ldap \u003d common_ldap.BaseLdap(CONF)"},{"line_number":1201,"context_line":"            return base_ldap.get_connection()"},{"line_number":1202,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAWH%2F%2B0zQ%3D","line":1199,"updated":"2014-03-24 00:45:09.000000000","message":"this should use the conf fixture, if it can\n\n self.config_fixture.config(group\u003d\u0027ldap\u0027, alias_dereferencing\u003dderef_name)","commit_id":"147fad2cef8f5c3f8e9bfacf3284909a4d3a3a78"}]}
