)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c0f10f600af21bee082fff796877d3100bfbcbd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Keystone will ignore users and groups that do have only white"},{"line_number":11,"context_line":"spaces as value for the LDAP attribute which Keystone has been"},{"line_number":12,"context_line":"configured to use for that entity\u0027s name."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Id539e1b7e1cea8b05cd9bb753707e1fc98244d29"},{"line_number":15,"context_line":"Closes-Bug: #1727726"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_b0532a16","line":13,"updated":"2017-11-03 14:41:46.000000000","message":"We can add a release note for this, too. \n\nhttps://docs.openstack.org/keystone/latest/contributor/release-notes.html#release-notes-for-bugs","commit_id":"8c2283336431eb66dd5c7efaa2623bf991c86971"}],"keystone/identity/backends/ldap/common.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3372865af8fd9aad48e4d7af12498f1f0cfa7db9","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                             \u0027 \"%(attr_name)s\"\u0027 % {\u0027attr\u0027: attr,"},{"line_number":1404,"context_line":"                                                   \u0027attr_name\u0027: attr_name})"},{"line_number":1405,"context_line":"        return [obj for obj in ldap_result"},{"line_number":1406,"context_line":"                if (obj[1].get(attr) and obj[1].get(attr)[0] and"},{"line_number":1407,"context_line":"                    obj[1].get(attr)[0].strip())]"},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"    def _ldap_get(self, object_id, ldap_filter\u003dNone):"},{"line_number":1410,"context_line":"        query \u003d (u\u0027(\u0026(%(id_attr)s\u003d%(id)s)\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_92179d52","line":1407,"range":{"start_line":1406,"start_character":16,"end_line":1407,"end_character":49},"updated":"2017-10-30 14:17:40.000000000","message":"Since this is now a compound if statement, it could benefit from a comment that describes what it does.","commit_id":"b037ed8c8af1f5b121f829c5b0eb5911b0fd94ea"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"49130806ca2ff276457e5eec4facf4122b43bf9f","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                             \u0027 \"%(attr_name)s\"\u0027 % {\u0027attr\u0027: attr,"},{"line_number":1404,"context_line":"                                                   \u0027attr_name\u0027: attr_name})"},{"line_number":1405,"context_line":"        return [obj for obj in ldap_result"},{"line_number":1406,"context_line":"                if (obj[1].get(attr) and obj[1].get(attr)[0] and"},{"line_number":1407,"context_line":"                    obj[1].get(attr)[0].strip())]"},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"    def _ldap_get(self, object_id, ldap_filter\u003dNone):"},{"line_number":1410,"context_line":"        query \u003d (u\u0027(\u0026(%(id_attr)s\u003d%(id)s)\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_ec71f1a9","line":1407,"range":{"start_line":1406,"start_character":16,"end_line":1407,"end_character":49},"updated":"2017-11-02 15:00:53.000000000","message":"This is a bit complicated, since we\u0027re adding a whole other condition to the statement. It might be more readable to break these into multiple if statements or add a comment.","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"5f3be5681bfaa63941c60d8a5b68037c5571e695","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"                             \u0027 \"%(attr_name)s\"\u0027 % {\u0027attr\u0027: attr,"},{"line_number":1404,"context_line":"                                                   \u0027attr_name\u0027: attr_name})"},{"line_number":1405,"context_line":"        return [obj for obj in ldap_result"},{"line_number":1406,"context_line":"                if (obj[1].get(attr) and obj[1].get(attr)[0] and"},{"line_number":1407,"context_line":"                    obj[1].get(attr)[0].strip())]"},{"line_number":1408,"context_line":""},{"line_number":1409,"context_line":"    def _ldap_get(self, object_id, ldap_filter\u003dNone):"},{"line_number":1410,"context_line":"        query \u003d (u\u0027(\u0026(%(id_attr)s\u003d%(id)s)\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_e177afd3","line":1407,"range":{"start_line":1406,"start_character":16,"end_line":1407,"end_character":49},"in_reply_to":"3f4b6375_ec71f1a9","updated":"2017-11-02 19:52:05.000000000","message":"Done","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"49130806ca2ff276457e5eec4facf4122b43bf9f","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        )]"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"        user_api \u003d identity.backends.ldap.UserApi(CONF)"},{"line_number":1243,"context_line":"        user_refs \u003d user_api.get_all()"},{"line_number":1244,"context_line":"        # validate that keystone.identity.backends.ldap.common.BaseLdap."},{"line_number":1245,"context_line":"        # _filter_ldap_result_by_attr() method fitlered the ldap query results"},{"line_number":1246,"context_line":"        # whose name attribute values has emptyspaces, emptystring"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_0cce8d2c","line":1243,"range":{"start_line":1243,"start_character":8,"end_line":1243,"end_character":17},"updated":"2017-11-02 15:00:53.000000000","message":"So which user is returned? If we know only a specific user is going to be returned in this list, we can add an assertion for it, too. Just to make sure it\u0027s actually returning what we expect.","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"5f3be5681bfaa63941c60d8a5b68037c5571e695","unresolved":false,"context_lines":[{"line_number":1240,"context_line":"        )]"},{"line_number":1241,"context_line":""},{"line_number":1242,"context_line":"        user_api \u003d identity.backends.ldap.UserApi(CONF)"},{"line_number":1243,"context_line":"        user_refs \u003d user_api.get_all()"},{"line_number":1244,"context_line":"        # validate that keystone.identity.backends.ldap.common.BaseLdap."},{"line_number":1245,"context_line":"        # _filter_ldap_result_by_attr() method fitlered the ldap query results"},{"line_number":1246,"context_line":"        # whose name attribute values has emptyspaces, emptystring"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_01bacb6c","line":1243,"range":{"start_line":1243,"start_character":8,"end_line":1243,"end_character":17},"in_reply_to":"3f4b6375_0cce8d2c","updated":"2017-11-02 19:52:05.000000000","message":"Done","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"49130806ca2ff276457e5eec4facf4122b43bf9f","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        user_api \u003d identity.backends.ldap.UserApi(CONF)"},{"line_number":1243,"context_line":"        user_refs \u003d user_api.get_all()"},{"line_number":1244,"context_line":"        # validate that keystone.identity.backends.ldap.common.BaseLdap."},{"line_number":1245,"context_line":"        # _filter_ldap_result_by_attr() method fitlered the ldap query results"},{"line_number":1246,"context_line":"        # whose name attribute values has emptyspaces, emptystring"},{"line_number":1247,"context_line":"        # and attibute itself is not set."},{"line_number":1248,"context_line":"        self.assertEqual(1, len(user_refs))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_0ca20dfd","line":1245,"range":{"start_line":1245,"start_character":47,"end_line":1245,"end_character":55},"updated":"2017-11-02 15:00:53.000000000","message":"filtered*","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"5f3be5681bfaa63941c60d8a5b68037c5571e695","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        user_api \u003d identity.backends.ldap.UserApi(CONF)"},{"line_number":1243,"context_line":"        user_refs \u003d user_api.get_all()"},{"line_number":1244,"context_line":"        # validate that keystone.identity.backends.ldap.common.BaseLdap."},{"line_number":1245,"context_line":"        # _filter_ldap_result_by_attr() method fitlered the ldap query results"},{"line_number":1246,"context_line":"        # whose name attribute values has emptyspaces, emptystring"},{"line_number":1247,"context_line":"        # and attibute itself is not set."},{"line_number":1248,"context_line":"        self.assertEqual(1, len(user_refs))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_a1a8971f","line":1245,"range":{"start_line":1245,"start_character":47,"end_line":1245,"end_character":55},"in_reply_to":"3f4b6375_0ca20dfd","updated":"2017-11-02 19:52:05.000000000","message":"Done","commit_id":"341d47f23959580dbe7d2670c9192cd623fe5eff"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1c0f10f600af21bee082fff796877d3100bfbcbd","unresolved":false,"context_lines":[{"line_number":1247,"context_line":"        # and attibute itself is not set."},{"line_number":1248,"context_line":"        self.assertEqual(1, len(user_refs))"},{"line_number":1249,"context_line":""},{"line_number":1250,"context_line":"        self.assertEqual(\u0027junk1\u0027, user_refs[0][\u0027name\u0027])"},{"line_number":1251,"context_line":"        self.assertEqual(\u0027sn\u003djunk1,dc\u003dexample,dc\u003dcom\u0027, user_refs[0][\u0027dn\u0027])"},{"line_number":1252,"context_line":""},{"line_number":1253,"context_line":"    @mock.patch.object(common_ldap.BaseLdap, \u0027_ldap_get\u0027)"},{"line_number":1254,"context_line":"    def test_user_enabled_attribute_handles_expired(self, mock_ldap_get):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_d0890675","line":1251,"range":{"start_line":1250,"start_character":8,"end_line":1251,"end_character":74},"updated":"2017-11-03 14:41:46.000000000","message":"Nice - thanks for adding this.","commit_id":"8c2283336431eb66dd5c7efaa2623bf991c86971"}]}
