)]}'
{"keystone/common/ldap/core.py":[{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"9753b6cf65637831dd87aa3f7d4c21090072a44c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                             ldap.dn.escape_dn_chars(str(id)),"},{"line_number":149,"context_line":"                             self.tree_dn)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _id_to_dn(self, id):"},{"line_number":152,"context_line":"        if self.LDAP_SCOPE \u003d\u003d ldap.SCOPE_ONELEVEL:"},{"line_number":153,"context_line":"            return self._id_to_dn_string(id)"},{"line_number":154,"context_line":"        conn \u003d self.get_connection()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2BsAs%3D","line":151,"updated":"2013-02-21 16:38:38.000000000","message":"We should add an argument to turn on or off complex behavior. We get a coin flip here - we either get DN of the object we are interested in or some other DN that has nothing to do with our intensions.\n\nIf we are doing lookup (meaning we expect object to exist), we should raise some NotFound or NO_SUCH_OBJECT if this id wasn\u0027t found.","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"ec8f721fad959bc7718ceb8cdba128b77afe6836","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                             ldap.dn.escape_dn_chars(str(id)),"},{"line_number":149,"context_line":"                             self.tree_dn)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _id_to_dn(self, id):"},{"line_number":152,"context_line":"        if self.LDAP_SCOPE \u003d\u003d ldap.SCOPE_ONELEVEL:"},{"line_number":153,"context_line":"            return self._id_to_dn_string(id)"},{"line_number":154,"context_line":"        conn \u003d self.get_connection()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br64%3D","line":151,"in_reply_to":"AAAAM3%2F%2Br9w%3D","updated":"2013-02-21 17:27:45.000000000","message":"That\u0027s not what I meant, but it\u0027s just a fix, agreed.","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8481d7216c7afea54321444d3df12aa8359ef6a2","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                             ldap.dn.escape_dn_chars(str(id)),"},{"line_number":149,"context_line":"                             self.tree_dn)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def _id_to_dn(self, id):"},{"line_number":152,"context_line":"        if self.LDAP_SCOPE \u003d\u003d ldap.SCOPE_ONELEVEL:"},{"line_number":153,"context_line":"            return self._id_to_dn_string(id)"},{"line_number":154,"context_line":"        conn \u003d self.get_connection()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br9w%3D","line":151,"in_reply_to":"AAAAM3%2F%2BsAs%3D","updated":"2013-02-21 17:19:46.000000000","message":"This is done by the register_str(\u0027query_scope\u0027, group\u003d\u0027ldap\u0027, default\u003d\u0027one\u0027)\nconfig option.  This code could stand to be refactored, bt it is the simplest way to unbreak it.","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"9753b6cf65637831dd87aa3f7d4c21090072a44c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            search_result \u003d conn.search_s("},{"line_number":157,"context_line":"                self.tree_dn, self.LDAP_SCOPE,"},{"line_number":158,"context_line":"                \u0027(\u0026(%(id_attr)s\u003d%(id)s)(objectclass\u003d%(objclass)s))\u0027 %"},{"line_number":159,"context_line":"                {\u0027id_attr\u0027: self.id_attr,"},{"line_number":160,"context_line":"                 \u0027id\u0027: ldap.filter.escape_filter_chars(str(id)),"},{"line_number":161,"context_line":"                 \u0027objclass\u0027: self.object_class})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2BsB4%3D","line":158,"updated":"2013-02-21 16:38:38.000000000","message":"Can we make this simpler with positional format args instead of dict?","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8481d7216c7afea54321444d3df12aa8359ef6a2","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        try:"},{"line_number":156,"context_line":"            search_result \u003d conn.search_s("},{"line_number":157,"context_line":"                self.tree_dn, self.LDAP_SCOPE,"},{"line_number":158,"context_line":"                \u0027(\u0026(%(id_attr)s\u003d%(id)s)(objectclass\u003d%(objclass)s))\u0027 %"},{"line_number":159,"context_line":"                {\u0027id_attr\u0027: self.id_attr,"},{"line_number":160,"context_line":"                 \u0027id\u0027: ldap.filter.escape_filter_chars(str(id)),"},{"line_number":161,"context_line":"                 \u0027objclass\u0027: self.object_class})"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br9Y%3D","line":158,"in_reply_to":"AAAAM3%2F%2BsB4%3D","updated":"2013-02-21 17:19:46.000000000","message":"Yes, but not in this commit.  Just trying to fix the brokeness.","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"9753b6cf65637831dd87aa3f7d4c21090072a44c","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                return dn"},{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":167,"context_line":"        except ValueError:"},{"line_number":168,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2BsCQ%3D","line":167,"updated":"2013-02-21 16:38:38.000000000","message":"This exception cannot be raised. It\u0027s guarded by\n\n    if search_result:","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8481d7216c7afea54321444d3df12aa8359ef6a2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                return dn"},{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":167,"context_line":"        except ValueError:"},{"line_number":168,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br9U%3D","line":167,"in_reply_to":"AAAAM3%2F%2BsCQ%3D","updated":"2013-02-21 17:19:46.000000000","message":"Done","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"d756df15bb1d81589d7d4e7e7c135a8d0482193f","unresolved":false,"context_lines":[{"line_number":165,"context_line":"            else:"},{"line_number":166,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":167,"context_line":"        except ValueError:"},{"line_number":168,"context_line":"                return self._id_to_dn_string(id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    @staticmethod"},{"line_number":171,"context_line":"    def _dn_to_id(dn):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br%2FA%3D","line":168,"updated":"2013-02-21 16:49:06.000000000","message":"So if you don\u0027t find it or you get a value exception you just return\nself._id_to_dn_string(id).  So we are safe assuming that when this is invoked we won\u0027t ever need to know which case it really was?  And is it also OK that whereas before you were notified that the object did not exist (and you could take action) now you are given the dn back but its not really there in ldap. How will you know you need to create it? It looks like it was found with no issues.","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"}],"tests/test_backend_ldap.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"d756df15bb1d81589d7d4e7e7c135a8d0482193f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     test.testsdir(\u0027test_overrides.conf\u0027),"},{"line_number":45,"context_line":"                     test.testsdir(\u0027backend_ldap.conf\u0027)])"},{"line_number":46,"context_line":"        clear_database()"},{"line_number":47,"context_line":"#        self.stubs.Set(ldap_common.BaseLdap, \"_id_to_dn\","},{"line_number":48,"context_line":"#                       lambda self, id: \u0027%s\u003d%s,%s\u0027 % (self.id_attr,"},{"line_number":49,"context_line":"#                                                      str(id), self.tree_dn))"},{"line_number":50,"context_line":"        self.identity_api \u003d identity_ldap.Identity()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2BsBQ%3D","line":47,"updated":"2013-02-21 16:49:06.000000000","message":"Would be good to have a comment to explain why these are commented out and not just removed","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"8481d7216c7afea54321444d3df12aa8359ef6a2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     test.testsdir(\u0027test_overrides.conf\u0027),"},{"line_number":45,"context_line":"                     test.testsdir(\u0027backend_ldap.conf\u0027)])"},{"line_number":46,"context_line":"        clear_database()"},{"line_number":47,"context_line":"#        self.stubs.Set(ldap_common.BaseLdap, \"_id_to_dn\","},{"line_number":48,"context_line":"#                       lambda self, id: \u0027%s\u003d%s,%s\u0027 % (self.id_attr,"},{"line_number":49,"context_line":"#                                                      str(id), self.tree_dn))"},{"line_number":50,"context_line":"        self.identity_api \u003d identity_ldap.Identity()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2Br7I%3D","line":47,"in_reply_to":"AAAAM3%2F%2BsBQ%3D","updated":"2013-02-21 17:19:46.000000000","message":"Ah, right...will remove","commit_id":"1edd8d9dd57e1636cfb56e7ad20300df41ef5281"}]}
