)]}'
{"keystone/common/ldap/core.py":[{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"c67fe75714d245a4c158a0e7766cc5c0921ccc5a","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"                model_item \u003d self._ldap_res_to_model(res)"},{"line_number":1493,"context_line":"                result.append(model_item)"},{"line_number":1494,"context_line":"            except exception.NotFound:"},{"line_number":1495,"context_line":"                pass"},{"line_number":1496,"context_line":"                # this exception means that for some reason `id` field is"},{"line_number":1497,"context_line":"                # missing. Missing id field in one of items should not affect"},{"line_number":1498,"context_line":"                # other items, so skip it silently"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_9cd7e84e","line":1495,"updated":"2015-07-31 15:57:16.000000000","message":"(nit) I\u0027d add LOG.debug here. It\u0027s better to know when your cloud configured improperly","commit_id":"4e802a00879d1298bb72f2e5014154279e2101ab"}],"keystone/tests/unit/test_backend_ldap.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a8a621a1803a198266ec534d6bec551ea74a935","unresolved":false,"context_lines":[{"line_number":1428,"context_line":"        self.assertThat(new_user[\u0027description\u0027], matchers.Equals(description))"},{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"    def test_user_with_bad_id(self):"},{"line_number":1431,"context_line":"        # there are 4 users now"},{"line_number":1432,"context_line":"        users \u003d self.identity_api.driver.user.get_all()"},{"line_number":1433,"context_line":"        self.assertThat(users, matchers.HasLength(len(default_fixtures.USERS)))"},{"line_number":1434,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5f12d063","line":1431,"updated":"2015-08-04 13:51:00.000000000","message":"where does 4 come from? Also, 4 doesn\u0027t show up anywhere below.\n\nSuggest change this to \"the default fixtures exist now\". This part of the test seems redundant so suggest remove it... doesn\u0027t the test setUp already ensure that the users exist?","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a8a621a1803a198266ec534d6bec551ea74a935","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        users \u003d self.identity_api.driver.user.get_all()"},{"line_number":1433,"context_line":"        self.assertThat(users, matchers.HasLength(len(default_fixtures.USERS)))"},{"line_number":1434,"context_line":""},{"line_number":1435,"context_line":"        # assume that their id attribute is stored in some other field"},{"line_number":1436,"context_line":"        conf \u003d self.get_config(CONF.identity.default_domain_id)"},{"line_number":1437,"context_line":"        conf.ldap.user_id_attribute \u003d \u0027info\u0027"},{"line_number":1438,"context_line":"        self.reload_backends(CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5f3bb0eb","line":1435,"updated":"2015-08-04 13:51:00.000000000","message":"the comment should explain why the code is here... why \"assume that their id attribute is stored in some other field\".\n\nThis part of the test is unrealistic. Rather than reconfigure keystone, create a user on the ldap server directly.","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f45a779ee7532ed98fb6f285eb11c9f7bf73130b","unresolved":false,"context_lines":[{"line_number":1432,"context_line":"        users \u003d self.identity_api.driver.user.get_all()"},{"line_number":1433,"context_line":"        self.assertThat(users, matchers.HasLength(len(default_fixtures.USERS)))"},{"line_number":1434,"context_line":""},{"line_number":1435,"context_line":"        # assume that their id attribute is stored in some other field"},{"line_number":1436,"context_line":"        conf \u003d self.get_config(CONF.identity.default_domain_id)"},{"line_number":1437,"context_line":"        conf.ldap.user_id_attribute \u003d \u0027info\u0027"},{"line_number":1438,"context_line":"        self.reload_backends(CONF.identity.default_domain_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_82c0fc2b","line":1435,"in_reply_to":"1a4dcd0f_5f3bb0eb","updated":"2015-08-04 14:53:22.000000000","message":"rewrote the test","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a8a621a1803a198266ec534d6bec551ea74a935","unresolved":false,"context_lines":[{"line_number":1434,"context_line":""},{"line_number":1435,"context_line":"        # assume that their id attribute is stored in some other field"},{"line_number":1436,"context_line":"        conf \u003d self.get_config(CONF.identity.default_domain_id)"},{"line_number":1437,"context_line":"        conf.ldap.user_id_attribute \u003d \u0027info\u0027"},{"line_number":1438,"context_line":"        self.reload_backends(CONF.identity.default_domain_id)"},{"line_number":1439,"context_line":""},{"line_number":1440,"context_line":"        # there are no users with non-empty `id` field"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_d36edcc8","line":1437,"updated":"2015-08-04 13:51:00.000000000","message":"Use a random string instead of \u0027info\u0027, unless it happens that the value must be \u0027info\u0027 in which case explain why this value was chosen.","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a8a621a1803a198266ec534d6bec551ea74a935","unresolved":false,"context_lines":[{"line_number":1454,"context_line":"        users \u003d self.identity_api.driver.user.get_all()"},{"line_number":1455,"context_line":"        self.assertThat(users, matchers.HasLength(1))"},{"line_number":1456,"context_line":""},{"line_number":1457,"context_line":"        # make sure that the 4 users with `cn` serving for id are"},{"line_number":1458,"context_line":"        # still there"},{"line_number":1459,"context_line":"        conf \u003d self.get_config(CONF.identity.default_domain_id)"},{"line_number":1460,"context_line":"        conf.ldap.user_id_attribute \u003d \u0027cn\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_b3cd505f","line":1457,"updated":"2015-08-04 13:51:00.000000000","message":"suggest remove \"4\" since the number might change.","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"6a8a621a1803a198266ec534d6bec551ea74a935","unresolved":false,"context_lines":[{"line_number":1457,"context_line":"        # make sure that the 4 users with `cn` serving for id are"},{"line_number":1458,"context_line":"        # still there"},{"line_number":1459,"context_line":"        conf \u003d self.get_config(CONF.identity.default_domain_id)"},{"line_number":1460,"context_line":"        conf.ldap.user_id_attribute \u003d \u0027cn\u0027"},{"line_number":1461,"context_line":"        self.reload_backends(CONF.identity.default_domain_id)"},{"line_number":1462,"context_line":""},{"line_number":1463,"context_line":"        # users created with `info` serving for id don\u0027t have `cn` field and"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_139c44bf","line":1460,"updated":"2015-08-04 13:51:00.000000000","message":"rather than use a magic constant, store the previous config value.","commit_id":"2b727d6e4cda24c5cf27d68436767142c42ad73e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de05ce39c2760e0cb3feb1d9763e1ba19c8c55e0","unresolved":false,"context_lines":[{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"    def test_user_with_missing_id(self):"},{"line_number":1431,"context_line":"        # create a user with id field other than used in keystone"},{"line_number":1432,"context_line":"        ldap_ \u003d self.identity_api.driver.user.get_connection()"},{"line_number":1433,"context_line":"        # \u0027z\u0027 is prepended because ldap requires field names to start with"},{"line_number":1434,"context_line":"        # a letter"},{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_6d4cc170","line":1432,"updated":"2015-08-04 15:03:51.000000000","message":"I think you might want to put this in a context? e.g.,\n\n with self.identity_api.driver.user.get_connection() as ldap_:\n\nI\u0027ll check...","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ebfd85088d6ee4a5c2f08d0f11375fb6bac4be88","unresolved":false,"context_lines":[{"line_number":1429,"context_line":""},{"line_number":1430,"context_line":"    def test_user_with_missing_id(self):"},{"line_number":1431,"context_line":"        # create a user with id field other than used in keystone"},{"line_number":1432,"context_line":"        ldap_ \u003d self.identity_api.driver.user.get_connection()"},{"line_number":1433,"context_line":"        # \u0027z\u0027 is prepended because ldap requires field names to start with"},{"line_number":1434,"context_line":"        # a letter"},{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_ae22b0ff","line":1432,"in_reply_to":"1a4dcd0f_6d4cc170","updated":"2015-08-04 21:25:08.000000000","message":"everywhere where we use get_connection(), we use it like this.","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de05ce39c2760e0cb3feb1d9763e1ba19c8c55e0","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"        # a letter"},{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"},{"line_number":1436,"context_line":"        ldap_id_value \u003d uuid.uuid4().hex"},{"line_number":1437,"context_line":"        dn \u003d \u0027%s\u003d%s,ou\u003dUsers,cn\u003dexample,cn\u003dcom\u0027 % (ldap_id_field, ldap_id_value)"},{"line_number":1438,"context_line":"        modlist \u003d [(\u0027objectClass\u0027, [\u0027person\u0027, \u0027inetOrgPerson\u0027]),"},{"line_number":1439,"context_line":"                   (ldap_id_field, [ldap_id_value]),"},{"line_number":1440,"context_line":"                   (\u0027sn\u0027, [uuid.uuid4().hex]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_6d6da197","line":1437,"updated":"2015-08-04 15:03:51.000000000","message":"some of these magic values must be in the config?","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ebfd85088d6ee4a5c2f08d0f11375fb6bac4be88","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"        # a letter"},{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"},{"line_number":1436,"context_line":"        ldap_id_value \u003d uuid.uuid4().hex"},{"line_number":1437,"context_line":"        dn \u003d \u0027%s\u003d%s,ou\u003dUsers,cn\u003dexample,cn\u003dcom\u0027 % (ldap_id_field, ldap_id_value)"},{"line_number":1438,"context_line":"        modlist \u003d [(\u0027objectClass\u0027, [\u0027person\u0027, \u0027inetOrgPerson\u0027]),"},{"line_number":1439,"context_line":"                   (ldap_id_field, [ldap_id_value]),"},{"line_number":1440,"context_line":"                   (\u0027sn\u0027, [uuid.uuid4().hex]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_6447e94b","line":1437,"in_reply_to":"1a4dcd0f_6d6da197","updated":"2015-08-04 21:25:08.000000000","message":"like ou and cn? They are already in ldap. Have a look at fakeldap.py.","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de05ce39c2760e0cb3feb1d9763e1ba19c8c55e0","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"},{"line_number":1436,"context_line":"        ldap_id_value \u003d uuid.uuid4().hex"},{"line_number":1437,"context_line":"        dn \u003d \u0027%s\u003d%s,ou\u003dUsers,cn\u003dexample,cn\u003dcom\u0027 % (ldap_id_field, ldap_id_value)"},{"line_number":1438,"context_line":"        modlist \u003d [(\u0027objectClass\u0027, [\u0027person\u0027, \u0027inetOrgPerson\u0027]),"},{"line_number":1439,"context_line":"                   (ldap_id_field, [ldap_id_value]),"},{"line_number":1440,"context_line":"                   (\u0027sn\u0027, [uuid.uuid4().hex]),"},{"line_number":1441,"context_line":"                   (\u0027mail\u0027, [\u0027email@example.com\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_ed0f71df","line":1438,"updated":"2015-08-04 15:03:51.000000000","message":"some of these magic values must be in the config?","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"ebfd85088d6ee4a5c2f08d0f11375fb6bac4be88","unresolved":false,"context_lines":[{"line_number":1435,"context_line":"        ldap_id_field \u003d \u0027z\u0027 + uuid.uuid4().hex"},{"line_number":1436,"context_line":"        ldap_id_value \u003d uuid.uuid4().hex"},{"line_number":1437,"context_line":"        dn \u003d \u0027%s\u003d%s,ou\u003dUsers,cn\u003dexample,cn\u003dcom\u0027 % (ldap_id_field, ldap_id_value)"},{"line_number":1438,"context_line":"        modlist \u003d [(\u0027objectClass\u0027, [\u0027person\u0027, \u0027inetOrgPerson\u0027]),"},{"line_number":1439,"context_line":"                   (ldap_id_field, [ldap_id_value]),"},{"line_number":1440,"context_line":"                   (\u0027sn\u0027, [uuid.uuid4().hex]),"},{"line_number":1441,"context_line":"                   (\u0027mail\u0027, [\u0027email@example.com\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a4dcd0f_64b5a92f","line":1438,"in_reply_to":"1a4dcd0f_ed0f71df","updated":"2015-08-04 21:25:08.000000000","message":"what do you mean by config?","commit_id":"0c702e2a0d10e10ed558668bdf51c1161a12c7ff"}]}
