)]}'
{"keystone/common/ldap/core.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"88c7d192ba27432c8290d2a82d8b1c1193ce492f","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        for kind, values in six.iteritems(attrs):"},{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_b94d3140","line":156,"updated":"2014-09-05 20:28:50.000000000","message":"so, all the subsequent values in this list won\u0027t be decoded once one fails? shouldn\u0027t you attempt the rest?","commit_id":"62df2ca2eb306279e3f7d4aa805bf31c50119aac"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"05c23d78476572f5c6729a0f54816a1514a4a9a1","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        for kind, values in six.iteritems(attrs):"},{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_2b50040a","line":156,"in_reply_to":"fa98f980_b94d3140","updated":"2014-09-05 20:55:06.000000000","message":"++","commit_id":"62df2ca2eb306279e3f7d4aa805bf31c50119aac"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"14a691176642aa47371e9a14e728d70dc540fc6b","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        for kind, values in six.iteritems(attrs):"},{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_eb6a7c7f","line":156,"in_reply_to":"fa98f980_b94d3140","updated":"2014-09-05 21:00:55.000000000","message":"Correct.  If we encounter a binary value for a multi-valued attribute, I\u0027m skipping the entire attribute.  We are processing other attributes.\n\nIt\u0027s arguable if we should include the attribute at all given that Keystone really shouldn\u0027t be configured to want any attributes that allow binary values in the first place.  I can change this though if we\u0027d prefer to keep processing through the values.","commit_id":"62df2ca2eb306279e3f7d4aa805bf31c50119aac"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ef2d7d8dbe93923bf198f2befdeb200453a9c3a3","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        py_result.append((utf8_decode(dn), ldap_attrs))"},{"line_number":161,"context_line":"    if at_least_one_referral:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_9b8777b6","line":158,"updated":"2014-09-06 22:48:16.000000000","message":"This might be something that should be a warning level. The deployer *should* take action to correct this (keystone shouldn\u0027t be configured to want binary attrs)\n\nThis would require a STRING Freeze Exception if made warning level (probably not an issue).","commit_id":"940551c6bdd1477574c1dee165efe75366343bd7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7ab0ad0796b314f60b324ebe2ad803afe4e76608","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        py_result.append((utf8_decode(dn), ldap_attrs))"},{"line_number":161,"context_line":"    if at_least_one_referral:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_d493704d","line":158,"updated":"2014-09-08 14:33:38.000000000","message":"there\u0027s an unnecessary space at the end of the string. Remove it.","commit_id":"940551c6bdd1477574c1dee165efe75366343bd7"},{"author":{"_account_id":9098,"name":"Nathan Kinder","email":"nkinder@redhat.com","username":"nkinder"},"change_message_id":"04eaa20048844b99b00e428b1617edaf0c69fc7c","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            try:"},{"line_number":156,"context_line":"                ldap_attrs[kind] \u003d [ldap2py(x) for x in values]"},{"line_number":157,"context_line":"            except UnicodeDecodeError:"},{"line_number":158,"context_line":"                LOG.debug(\u0027Unable to decode value for attribute %s \u0027, kind)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        py_result.append((utf8_decode(dn), ldap_attrs))"},{"line_number":161,"context_line":"    if at_least_one_referral:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_db565f2a","line":158,"in_reply_to":"fa98f980_9b8777b6","updated":"2014-09-06 23:07:34.000000000","message":"I could go either way on this myself too.  Keystone shouldn\u0027t be configured for binary attributes in the first place, though I expect that there would be other exceptions encountered once those attributes are missing due to this new code (which would be logged at higher severities).  It\u0027s probably best to just avoid the string freeze at this point IMHO.","commit_id":"940551c6bdd1477574c1dee165efe75366343bd7"}],"keystone/tests/test_backend_ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7ab0ad0796b314f60b324ebe2ad803afe4e76608","unresolved":false,"context_lines":[{"line_number":1366,"context_line":"        self.assertEqual(mock_ldap_get.return_value[1][\u0027MaIl\u0027][0],"},{"line_number":1367,"context_line":"                         user[\u0027email\u0027])"},{"line_number":1368,"context_line":""},{"line_number":1369,"context_line":"    def test_binary_attribute_values(self):"},{"line_number":1370,"context_line":"        result \u003d [("},{"line_number":1371,"context_line":"            \u0027cn\u003djunk,dc\u003dexample,dc\u003dcom\u0027,"},{"line_number":1372,"context_line":"            {"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_141178ac","line":1369,"updated":"2014-09-08 14:33:38.000000000","message":"this test should be in keystone/tests/unit, not in test_backend_ldap.","commit_id":"940551c6bdd1477574c1dee165efe75366343bd7"}]}
