)]}'
{"keystone/identity/mapping_backends/sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2b8f51fcccec2d220b998997800089ad86235b32","unresolved":true,"context_lines":[{"line_number":21,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":22,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":23,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":24,"context_line":"    local_id \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":25,"context_line":"    # NOTE(henry-nash): Postgres requires a name to be defined for an Enum"},{"line_number":26,"context_line":"    entity_type \u003d sql.Column("},{"line_number":27,"context_line":"        sql.Enum(identity_mapping.EntityType.USER,"}],"source_content_type":"text/x-python","patch_set":6,"id":"c6870ca2_f3b3248a","line":24,"range":{"start_line":24,"start_character":37,"end_line":24,"end_character":40},"updated":"2021-08-05 02:18:16.000000000","message":"One thing I would like to test before we merge this or in a subsequent change is if this works with LDAP group names longer than 64 characters.\n\nI *think* it will since the id_mapping is used for both user and group mappings. So updating the length to 255 should work.\n\nInitially, I was thinking this would need to update the group ID attribute of the group table, but I don\u0027t think that is necessary here since we\u0027re not mirroring groups from LDAP in the keystone group table.","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"c420e97b000be7b6961e006db7f78fab2bcebf97","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    __tablename__ \u003d \u0027id_mapping\u0027"},{"line_number":22,"context_line":"    public_id \u003d sql.Column(sql.String(64), primary_key\u003dTrue)"},{"line_number":23,"context_line":"    domain_id \u003d sql.Column(sql.String(64), nullable\u003dFalse)"},{"line_number":24,"context_line":"    local_id \u003d sql.Column(sql.String(255), nullable\u003dFalse)"},{"line_number":25,"context_line":"    # NOTE(henry-nash): Postgres requires a name to be defined for an Enum"},{"line_number":26,"context_line":"    entity_type \u003d sql.Column("},{"line_number":27,"context_line":"        sql.Enum(identity_mapping.EntityType.USER,"}],"source_content_type":"text/x-python","patch_set":6,"id":"c92814b2_727e32c1","line":24,"range":{"start_line":24,"start_character":37,"end_line":24,"end_character":40},"in_reply_to":"c6870ca2_f3b3248a","updated":"2021-08-05 11:11:31.000000000","message":"I just re-tested it with group names (previously I tested with user names).","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"}],"keystone/tests/unit/test_backend_id_mapping_sql.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Create the new mappings and then read them back"},{"line_number":97,"context_line":"        public_id1 \u003d PROVIDERS.id_mapping_api.create_id_mapping(local_entity1)"},{"line_number":98,"context_line":"        public_id2 \u003d PROVIDERS.id_mapping_api.create_id_mapping(local_entity2)"},{"line_number":99,"context_line":"        self.assertThat(mapping_sql.list_id_mappings(),"},{"line_number":100,"context_line":"                        matchers.HasLength(initial_mappings + 2))"}],"source_content_type":"text/x-python","patch_set":6,"id":"0fcd45a3_ceb16986","line":97,"updated":"2021-08-05 20:56:46.000000000","message":"This module should include tests like that that we can use to invoke the actual hashing through:\n\n  PROVIDERS.id_mapping_api.create_id_mapping(...)\n\nWe might be able to add a test here that:\n\n  def test_hashes_greater_than_64_characters_work(self):\n      # build an entity dictionary with a long group name\n      # call create_id_mapping\n      # fetch the mapping\n      # check that the public_id is greater than 64 but less than 255","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        )"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Create the new mappings and then read them back"},{"line_number":97,"context_line":"        public_id1 \u003d PROVIDERS.id_mapping_api.create_id_mapping(local_entity1)"},{"line_number":98,"context_line":"        public_id2 \u003d PROVIDERS.id_mapping_api.create_id_mapping(local_entity2)"},{"line_number":99,"context_line":"        self.assertThat(mapping_sql.list_id_mappings(),"},{"line_number":100,"context_line":"                        matchers.HasLength(initial_mappings + 2))"}],"source_content_type":"text/x-python","patch_set":6,"id":"13f9e971_d8b4c8aa","line":97,"in_reply_to":"0fcd45a3_ceb16986","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"24f8b9ff0e208aa13f0ad33b0046617df22dc5d7","unresolved":true,"context_lines":[{"line_number":169,"context_line":"        self.assertEqual("},{"line_number":170,"context_line":"            public_id, PROVIDERS.id_mapping_api.get_public_id(local_entity))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def test_id_mapping_handles_ids_grater_than_64_characters(self):"},{"line_number":173,"context_line":"        initial_mappings \u003d len(mapping_sql.list_id_mappings())"},{"line_number":174,"context_line":"        local_id \u003d \u0027Aa\u0027 * 100"},{"line_number":175,"context_line":"        local_entity \u003d {\u0027domain_id\u0027: self.domainA[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":7,"id":"43b8006a_b0bec61d","line":172,"range":{"start_line":172,"start_character":36,"end_line":172,"end_character":42},"updated":"2021-08-09 16:01:38.000000000","message":"nit: greater*","commit_id":"1e6a9d466247ee10ea70d0cebe05e7a254e95d15"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b7488648db3c39998e3fad9a7652f7133ef2467e","unresolved":true,"context_lines":[{"line_number":187,"context_line":"            public_id, PROVIDERS.id_mapping_api.get_public_id(local_entity))"},{"line_number":188,"context_line":"        self.assertEqual("},{"line_number":189,"context_line":"            local_id,"},{"line_number":190,"context_line":"            PROVIDERS.id_mapping_api.get_id_mapping(public_id)[\u0027local_id\u0027])"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def test_delete_public_id_is_silent(self):"},{"line_number":193,"context_line":"        # Test that deleting an invalid public key is silent"}],"source_content_type":"text/x-python","patch_set":8,"id":"1252e3c3_67bc864b","line":190,"updated":"2021-08-19 17:11:34.000000000","message":"Thanks for adding this - I was able to verify this exposes the bug without the fix locally.","commit_id":"ce6031ca12156620cec214a49d162ec7bb30752f"}],"keystone/tests/unit/test_sql_upgrade.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        id_mapping_table \u003d sqlalchemy.Table(\u0027id_mapping\u0027,"},{"line_number":3508,"context_line":"                                            self.metadata, autoload\u003dTrue)"},{"line_number":3509,"context_line":"        # assert id column is a string (before)"},{"line_number":3510,"context_line":"        self.assertEqual(\u0027VARCHAR(64)\u0027, str(id_mapping_table.c.local_id.type))"},{"line_number":3511,"context_line":""},{"line_number":3512,"context_line":"        self.expand(79)"}],"source_content_type":"text/x-python","patch_set":6,"id":"117636c2_a666f9b6","line":3509,"range":{"start_line":3509,"start_character":32,"end_line":3509,"end_character":38},"updated":"2021-08-05 20:56:46.000000000","message":"string with length 64*?","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        id_mapping_table \u003d sqlalchemy.Table(\u0027id_mapping\u0027,"},{"line_number":3508,"context_line":"                                            self.metadata, autoload\u003dTrue)"},{"line_number":3509,"context_line":"        # assert id column is a string (before)"},{"line_number":3510,"context_line":"        self.assertEqual(\u0027VARCHAR(64)\u0027, str(id_mapping_table.c.local_id.type))"},{"line_number":3511,"context_line":""},{"line_number":3512,"context_line":"        self.expand(79)"}],"source_content_type":"text/x-python","patch_set":6,"id":"552c485b_f388af15","line":3509,"range":{"start_line":3509,"start_character":32,"end_line":3509,"end_character":38},"in_reply_to":"117636c2_a666f9b6","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        id_mapping_table \u003d sqlalchemy.Table(\u0027id_mapping\u0027,"},{"line_number":3517,"context_line":"                                            self.metadata, autoload\u003dTrue)"},{"line_number":3518,"context_line":"        # assert id column is a string (before)"},{"line_number":3519,"context_line":"        self.assertEqual(\u0027VARCHAR(255)\u0027, str(id_mapping_table.c.local_id.type))"},{"line_number":3520,"context_line":""},{"line_number":3521,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"17a58116_3266d94d","line":3518,"range":{"start_line":3518,"start_character":40,"end_line":3518,"end_character":46},"updated":"2021-08-05 20:56:46.000000000","message":"string of length 255? after*?","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[{"line_number":3515,"context_line":""},{"line_number":3516,"context_line":"        id_mapping_table \u003d sqlalchemy.Table(\u0027id_mapping\u0027,"},{"line_number":3517,"context_line":"                                            self.metadata, autoload\u003dTrue)"},{"line_number":3518,"context_line":"        # assert id column is a string (before)"},{"line_number":3519,"context_line":"        self.assertEqual(\u0027VARCHAR(255)\u0027, str(id_mapping_table.c.local_id.type))"},{"line_number":3520,"context_line":""},{"line_number":3521,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"2376618c_3019ee42","line":3518,"range":{"start_line":3518,"start_character":40,"end_line":3518,"end_character":46},"in_reply_to":"17a58116_3266d94d","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"}],"releasenotes/notes/bug-1929066-6e741c9182620a37.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The local_id char limit is expanded to 255 to accomodate LDAP backends."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fe1e9ea_85e907de","line":3,"updated":"2021-08-05 20:56:46.000000000","message":"I think we can add the bug ID here for readers who want more information on the actual error.\n\nhttps://bugs.launchpad.net/keystone/+bug/1929066\nhttps://docs.openstack.org/keystone/latest/contributor/release-notes.html#release-notes-for-bugs","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The local_id char limit is expanded to 255 to accomodate LDAP backends."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"f86ae70b_a8fa6b53","line":3,"in_reply_to":"3fe1e9ea_85e907de","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The local_id char limit is expanded to 255 to accomodate LDAP backends."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"93d97a00_2260ec00","line":4,"updated":"2021-08-05 20:56:46.000000000","message":"nit: Increase the length of the `local_id` column in the `id_mapping` table to accommodate LDAP group names that result in hashes greater than 64 characters?","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    The local_id char limit is expanded to 255 to accomodate LDAP backends."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9ff31e53_9e9ea774","line":4,"in_reply_to":"93d97a00_2260ec00","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"1002f8ae5d6a2e16511fc1a946462579c6c9774f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"d5fdadc8_31ef0841","line":5,"updated":"2021-08-05 20:56:46.000000000","message":"IIUC, this patch only fixes the problem up to hashes that are 255 characters long (just less likely than what we\u0027re hitting today, but theoretically the bug still exists).\n\nWe might consider adding something to the keystone documentation that clarifies this for users.\n\nThere is some documentation about public IDs and what they are in the administrator guide [0].\n\n[0] https://docs.openstack.org/keystone/latest/admin/configuration.html#domain-specific-configuration","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f76665eeac63f521b9d7cce631f75ee5c25c34e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"5a1bb37f_c3824884","line":5,"in_reply_to":"d5fdadc8_31ef0841","updated":"2021-08-09 09:30:30.000000000","message":"Done","commit_id":"05df70857117d1c2d4b1c195324182463c751e85"}]}
