)]}'
{"keystone/identity/core.py":[{"author":{"_account_id":21463,"name":"Andrew Liu","email":"andrew.lhj@gmail.com","username":"andrewliu"},"change_message_id":"6bd8d86b2c58f6f2dacfbaa1bdd83a28890dca6e","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        # build a map of refs for fast look-up. Also add a domain_id."},{"line_number":611,"context_line":"        refs_map \u003d {}"},{"line_number":612,"context_line":"        for r in ref_list:"},{"line_number":613,"context_line":"            refs_map[(r[\u0027id\u0027], entity_type)] \u003d r"},{"line_number":614,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        if not self._is_mapping_needed(driver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_8da99827","line":613,"updated":"2016-07-08 03:30:44.000000000","message":"a copy of ref is needed here.","commit_id":"cab12d6e77d8dd22a6c5cb4029bc480652c1df10"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"49ccbd0a96eabcde26e8d580eeea0e4f21db29c5","unresolved":false,"context_lines":[{"line_number":610,"context_line":"        # build a map of refs for fast look-up. Also add a domain_id."},{"line_number":611,"context_line":"        refs_map \u003d {}"},{"line_number":612,"context_line":"        for r in ref_list:"},{"line_number":613,"context_line":"            refs_map[(r[\u0027id\u0027], entity_type)] \u003d r"},{"line_number":614,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        if not self._is_mapping_needed(driver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_91452ab5","line":613,"in_reply_to":"1aa78d24_8da99827","updated":"2016-07-08 08:37:12.000000000","message":"no, it should be exactly as is.","commit_id":"cab12d6e77d8dd22a6c5cb4029bc480652c1df10"},{"author":{"_account_id":21463,"name":"Andrew Liu","email":"andrew.lhj@gmail.com","username":"andrewliu"},"change_message_id":"6bd8d86b2c58f6f2dacfbaa1bdd83a28890dca6e","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        if not self._is_mapping_needed(driver):"},{"line_number":617,"context_line":"            return ref_list"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"        # NOTE(breton): there are cases when the driver is not domain aware and"},{"line_number":620,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_2d2184b5","line":617,"updated":"2016-07-08 03:30:44.000000000","message":"a copy of the ref list should be returned.","commit_id":"cab12d6e77d8dd22a6c5cb4029bc480652c1df10"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"49ccbd0a96eabcde26e8d580eeea0e4f21db29c5","unresolved":false,"context_lines":[{"line_number":614,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"        if not self._is_mapping_needed(driver):"},{"line_number":617,"context_line":"            return ref_list"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"        # NOTE(breton): there are cases when the driver is not domain aware and"},{"line_number":620,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_310b967f","line":617,"in_reply_to":"1aa78d24_2d2184b5","updated":"2016-07-08 08:37:12.000000000","message":"why?","commit_id":"cab12d6e77d8dd22a6c5cb4029bc480652c1df10"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"43d8240efdf2aa5cebb95f63d1c15a8140974e24","unresolved":false,"context_lines":[{"line_number":651,"context_line":"                public_id \u003d ref[\u0027id\u0027]"},{"line_number":652,"context_line":"                local_entity[\u0027public_id\u0027] \u003d public_id"},{"line_number":653,"context_line":"            local_entities.append(local_entity)"},{"line_number":654,"context_line":"        public_ids \u003d self.id_mapping_api.bulk_create_id_mappings("},{"line_number":655,"context_line":"            local_entities)"},{"line_number":656,"context_line":"        for public_id, ref in zip(public_ids, ref_list):"},{"line_number":657,"context_line":"            ref[\u0027id\u0027] \u003d public_id"},{"line_number":658,"context_line":"            LOG.debug(\u0027Created new mapping to public ID: %s\u0027, ref[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aa78d24_dcfb4246","line":655,"range":{"start_line":654,"start_character":0,"end_line":655,"end_character":27},"updated":"2016-07-08 10:17:08.000000000","message":"race condition is awaiting here","commit_id":"cab12d6e77d8dd22a6c5cb4029bc480652c1df10"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"932fd51c54112db78b9f101d468267434e4d89ab","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        # at previous step and replace his id."},{"line_number":628,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":629,"context_line":"            domain_id)"},{"line_number":630,"context_line":"        for m in domain_mappings:"},{"line_number":631,"context_line":"            idx \u003d (m.local_id, m.entity_type)"},{"line_number":632,"context_line":"            try:"},{"line_number":633,"context_line":"                ref \u003d refs_map.pop(idx)"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_114f6b93","line":630,"updated":"2016-07-18 16:12:46.000000000","message":"I suggest use a better variable name than \u0027m\u0027, maybe map?","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"abf9f6a004b767dd613e2fa3a87a40f31f24eeb6","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        # at previous step and replace his id."},{"line_number":628,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":629,"context_line":"            domain_id)"},{"line_number":630,"context_line":"        for m in domain_mappings:"},{"line_number":631,"context_line":"            idx \u003d (m.local_id, m.entity_type)"},{"line_number":632,"context_line":"            try:"},{"line_number":633,"context_line":"                ref \u003d refs_map.pop(idx)"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_8d0637cc","line":630,"in_reply_to":"dada55a8_114f6b93","updated":"2016-08-04 17:31:39.000000000","message":"Done","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8360c581a49497e97c44b4dcfb65dbdaa0a779c4","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            idx \u003d (m.local_id, m.entity_type)"},{"line_number":632,"context_line":"            try:"},{"line_number":633,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":634,"context_line":"                ref[\u0027id\u0027] \u003d m.public_id"},{"line_number":635,"context_line":"            except KeyError:"},{"line_number":636,"context_line":"                pass  # some old entry, skip it"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_d3d152cf","line":634,"range":{"start_line":634,"start_character":0,"end_line":634,"end_character":39},"updated":"2016-07-18 18:27:25.000000000","message":"takes a while to figure out why this works...it;s no immediately obvious this is updating the entry in ref_list..maybe a comment would be good","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"abf9f6a004b767dd613e2fa3a87a40f31f24eeb6","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            idx \u003d (m.local_id, m.entity_type)"},{"line_number":632,"context_line":"            try:"},{"line_number":633,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":634,"context_line":"                ref[\u0027id\u0027] \u003d m.public_id"},{"line_number":635,"context_line":"            except KeyError:"},{"line_number":636,"context_line":"                pass  # some old entry, skip it"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_6d0b03d7","line":634,"range":{"start_line":634,"start_character":0,"end_line":634,"end_character":39},"in_reply_to":"bacf61ea_465d2078","updated":"2016-08-04 17:31:39.000000000","message":"Done","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"69b5de0175836d1a20f9aceeed652653d8262ebd","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            idx \u003d (m.local_id, m.entity_type)"},{"line_number":632,"context_line":"            try:"},{"line_number":633,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":634,"context_line":"                ref[\u0027id\u0027] \u003d m.public_id"},{"line_number":635,"context_line":"            except KeyError:"},{"line_number":636,"context_line":"                pass  # some old entry, skip it"},{"line_number":637,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_465d2078","line":634,"range":{"start_line":634,"start_character":0,"end_line":634,"end_character":39},"in_reply_to":"dada55a8_d3d152cf","updated":"2016-08-01 03:17:55.000000000","message":"++","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"423e0b4e14bf19fcc06e51021455607f2670dba0","unresolved":false,"context_lines":[{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":639,"context_line":"        # left, there are no mappings. They need to be created."},{"line_number":640,"context_line":"        for ref in refs_map.values():"},{"line_number":641,"context_line":"            local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"},{"line_number":642,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":643,"context_line":"                            \u0027entity_type\u0027: entity_type}"}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_d3aaf36f","line":640,"updated":"2016-07-18 17:56:42.000000000","message":"I think there\u0027s opportunity to refactor _set_domain_id_and_mapping_for_single_ref() to avoid duplicating code. The only difference is the addition public_id lookup. If we can make it optional, we can share the same logic.","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"abf9f6a004b767dd613e2fa3a87a40f31f24eeb6","unresolved":false,"context_lines":[{"line_number":637,"context_line":""},{"line_number":638,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":639,"context_line":"        # left, there are no mappings. They need to be created."},{"line_number":640,"context_line":"        for ref in refs_map.values():"},{"line_number":641,"context_line":"            local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"},{"line_number":642,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":643,"context_line":"                            \u0027entity_type\u0027: entity_type}"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_4d01dfae","line":640,"in_reply_to":"dada55a8_d3aaf36f","updated":"2016-08-04 17:31:39.000000000","message":"i agree. Lets do it in a follow-up?","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"b239b573393465abc7f2d3321a59df59ce37d7a1","unresolved":false,"context_lines":[{"line_number":622,"context_line":"            refs_map[(r[\u0027id\u0027], entity_type)] \u003d r"},{"line_number":623,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        if not self._is_mapping_needed(driver):"},{"line_number":626,"context_line":"            return ref_list"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"        # NOTE(breton): there are cases when the driver is not domain aware and"},{"line_number":629,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"9ad45d7e_95d9c8f5","line":626,"range":{"start_line":625,"start_character":8,"end_line":626,"end_character":27},"updated":"2016-08-16 21:45:07.000000000","message":"Shouldn\u0027t you do this first, no point in building a map if mapping is not needed.","commit_id":"af234dbac2f74d27944574de45405a95ea9d7f4c"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"f14505c85fc6471d16fee1181aecd233e3d54374","unresolved":false,"context_lines":[{"line_number":622,"context_line":"            refs_map[(r[\u0027id\u0027], entity_type)] \u003d r"},{"line_number":623,"context_line":"            self._insert_domain_id_if_needed(r, driver, domain_id, conf)"},{"line_number":624,"context_line":""},{"line_number":625,"context_line":"        if not self._is_mapping_needed(driver):"},{"line_number":626,"context_line":"            return ref_list"},{"line_number":627,"context_line":""},{"line_number":628,"context_line":"        # NOTE(breton): there are cases when the driver is not domain aware and"},{"line_number":629,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"3ac371cc_73ff7167","line":626,"range":{"start_line":625,"start_character":8,"end_line":626,"end_character":27},"in_reply_to":"9ad45d7e_95d9c8f5","updated":"2016-08-16 22:04:12.000000000","message":"right. I also insert domain id there, but i will break it into 2 parts","commit_id":"af234dbac2f74d27944574de45405a95ea9d7f4c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"3996fb72b145729e751aea9e0efdc5a0c7d40cd9","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":9,"id":"3ac371cc_afc104e6","line":634,"updated":"2016-08-18 15:52:02.000000000","message":"This is kind of ugly.  I would prefer that you enforcethe domain_id is set from the conf file prior to calling this function if possible.  Otherwise, use the logic in the function after this.","commit_id":"32e59e0ec9f857e49e6893712d03b157cd9b4c3b"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"fbfc7e1266d01b3276ca399030a929a9a971164d","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ac06dbe_f7c0d1e2","line":634,"in_reply_to":"1ac06dbe_9ef9bacb","updated":"2016-08-19 16:26:29.000000000","message":"I\u0027ve pushed a new patch that clearly filters out entries from different domains, by building a more unique `refs_map`.\n\nAlso, unit-tests pass.","commit_id":"32e59e0ec9f857e49e6893712d03b157cd9b4c3b"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"88e66f8477eb9d30f12cb72259abc0c3062d62c1","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ac06dbe_9ef9bacb","line":634,"in_reply_to":"3ac371cc_afc104e6","updated":"2016-08-19 16:15:49.000000000","message":"\u003e The logic for defaulting the domain ID looks questionable. If all of the records should have the same domain_id, make it explicit. If not, there is the possibility you are using the wrong value.\n\nIf not all records have the same domain_id, fallback to previous behaviour will happen. So wrong value will result in worse performance. It will still be better than before the patch.","commit_id":"32e59e0ec9f857e49e6893712d03b157cd9b4c3b"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b587b93f56a4f9bfbe5a381c2c82c0433a1c7d3","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_66ecfef3","line":634,"range":{"start_line":634,"start_character":8,"end_line":634,"end_character":37},"updated":"2016-08-25 12:20:43.000000000","message":"Is it possible to have an empty ref_list? If not you don\u0027t need the \"and ref_list\" check, if it is, what happens if a domain_id hasn\u0027t been provided?","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d2023c7a2a51a2ce93f5c32a3d2da62dc86eddf5","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_f83a3933","line":634,"range":{"start_line":634,"start_character":8,"end_line":634,"end_character":37},"in_reply_to":"1ac06dbe_66ecfef3","updated":"2016-08-25 16:28:11.000000000","message":"Theoretically this method allows to have empty ref_list. However, right now nothing calls it with empty ref_list. Since it doesn\u0027t add any complexity or confusion, i suggest to leave it here so that in future it doesn\u0027t shoot someone in the leg.","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"318e50a5022fe4c34dad8e15868fcb1c539bb5a2","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_dc8c2538","line":634,"range":{"start_line":634,"start_character":8,"end_line":634,"end_character":37},"in_reply_to":"1ac06dbe_f83a3933","updated":"2016-08-25 21:50:09.000000000","message":"maybe add a stronger validation for the \"not domain_id and not_ref_list\" case? Even if isn\u0027t currently possible, I think it is safer than just see this blowing up in line 639 because the domain_id is None in some case in the future.","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"4235c5d5c1fb3307737fc63469ae3e21bbf9d36b","unresolved":false,"context_lines":[{"line_number":631,"context_line":"        # no domain_id was explicitely provided for list operation. domain_id"},{"line_number":632,"context_line":"        # gets inserted into refs, but not passed into this method. Lets use"},{"line_number":633,"context_line":"        # domain_id from one of the refs."},{"line_number":634,"context_line":"        if not domain_id and ref_list:"},{"line_number":635,"context_line":"            domain_id \u003d ref_list[0][\u0027domain_id\u0027]"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # fetch all mappings for the domain, lookup the user at the map built"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa7ab95a_ca650ce2","line":634,"range":{"start_line":634,"start_character":8,"end_line":634,"end_character":37},"in_reply_to":"fa7ab95a_dc8c2538","updated":"2016-08-26 13:34:40.000000000","message":"Done","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b587b93f56a4f9bfbe5a381c2c82c0433a1c7d3","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":657,"context_line":"                            \u0027entity_type\u0027: entity_type}"},{"line_number":658,"context_line":"            public_id \u003d None"},{"line_number":659,"context_line":"            if driver.generates_uuids():"},{"line_number":660,"context_line":"                public_id \u003d ref[\u0027id\u0027]"},{"line_number":661,"context_line":"            public_id \u003d self.id_mapping_api.create_id_mapping("},{"line_number":662,"context_line":"                local_entity, public_id\u003dpublic_id)"},{"line_number":663,"context_line":"            ref[\u0027id\u0027] \u003d public_id"},{"line_number":664,"context_line":"            LOG.debug(\u0027Created new mapping to public ID: %s\u0027, ref[\u0027id\u0027])"},{"line_number":665,"context_line":"        return ref_list"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_c6cfb2b1","line":663,"range":{"start_line":659,"start_character":0,"end_line":663,"end_character":33},"updated":"2016-08-25 12:20:43.000000000","message":"this is basically [1], right? Suggest to extract to a method and use in both places\n\n[1] https://github.com/openstack/keystone/blob/master/keystone/identity/core.py#L605-L610","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d2023c7a2a51a2ce93f5c32a3d2da62dc86eddf5","unresolved":false,"context_lines":[{"line_number":656,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":657,"context_line":"                            \u0027entity_type\u0027: entity_type}"},{"line_number":658,"context_line":"            public_id \u003d None"},{"line_number":659,"context_line":"            if driver.generates_uuids():"},{"line_number":660,"context_line":"                public_id \u003d ref[\u0027id\u0027]"},{"line_number":661,"context_line":"            public_id \u003d self.id_mapping_api.create_id_mapping("},{"line_number":662,"context_line":"                local_entity, public_id\u003dpublic_id)"},{"line_number":663,"context_line":"            ref[\u0027id\u0027] \u003d public_id"},{"line_number":664,"context_line":"            LOG.debug(\u0027Created new mapping to public ID: %s\u0027, ref[\u0027id\u0027])"},{"line_number":665,"context_line":"        return ref_list"},{"line_number":666,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ac06dbe_69c95d78","line":663,"range":{"start_line":659,"start_character":0,"end_line":663,"end_character":33},"in_reply_to":"1ac06dbe_c6cfb2b1","updated":"2016-08-25 16:28:11.000000000","message":"Done","commit_id":"c7398fe255b4c7f0fd068c08ccfea0580fbb1c4e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"4af9b78f28b440c15eb8f5b81e2760cc8bff1bca","unresolved":false,"context_lines":[{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    def _set_domain_id_and_mapping_for_list(self, ref_list, domain_id, driver,"},{"line_number":617,"context_line":"                                            entity_type, conf):"},{"line_number":618,"context_line":"        \"\"\"Set domain id and mapping for a list of refs."},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        The method modifies refs in-place."},{"line_number":621,"context_line":"        \"\"\""},{"line_number":622,"context_line":"        if not ref_list:"},{"line_number":623,"context_line":"            return []"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba5da102_74673a25","line":620,"range":{"start_line":618,"start_character":0,"end_line":620,"end_character":42},"updated":"2016-10-31 23:25:02.000000000","message":"this could use a bit more detail","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"a8650008ab08cdbc761c0c8ae2c0276c301c7b5f","unresolved":false,"context_lines":[{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_ead10931","line":653,"range":{"start_line":651,"start_character":0,"end_line":653,"end_character":40},"updated":"2016-08-31 09:29:33.000000000","message":"thank you for adding this comment.  I think why people might still find this code difficult to follow is that it is like a double indirect, i.e.:\n\nref -\u003e ref_map -\u003e ref_list\n\nIt\u0027s actually a clever way of doing it...but perhaps still needs some additional explanation.\n\nPS: are my C/C++ credentials showing through :-)","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0126642385d4512d815e88a2b2cb462f25f65fb8","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        # at previous step and replace his id."},{"line_number":645,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":646,"context_line":"            domain_id)"},{"line_number":647,"context_line":"        for _mapping in domain_mappings:"},{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_b8b31897","line":656,"range":{"start_line":647,"start_character":0,"end_line":656,"end_character":47},"updated":"2016-08-30 13:37:05.000000000","message":"I\u0027m not a huge fan of playing back and forth with references in different data structures. Not because it might be wrong, but more because this becomes a sensitive area for others to understand and modify.\n\nYou could extract this to an inner function and have this function returning a the \"result\" ref_list while modifies refs_map by reference:\n\n  def extract_stored_public_ids(refs_map):\n        refs_list \u003d []\n        for _mapping in domain_mappings:\n            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)\n            try:\n                ref \u003d refs_map.pop(idx)\n                ref[\u0027id\u0027] \u003d _mapping.public_id\n                refs_list.append(ref)\n            except KeyError:\n                pass  # some old entry, skip it\n         refs_list\n\n^ this might not be a good suggestion, but I guess you understand the concern outlined above?","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"43a3f29fc70ad25f80a181615707f93411ec07b8","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        # at previous step and replace his id."},{"line_number":645,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":646,"context_line":"            domain_id)"},{"line_number":647,"context_line":"        for _mapping in domain_mappings:"},{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_fc928c56","line":656,"range":{"start_line":647,"start_character":0,"end_line":656,"end_character":47},"in_reply_to":"7a8ec9b2_ab5a7c81","updated":"2016-09-14 15:48:04.000000000","message":"yes, the whole thing uses the fact that Python uses \"assignments\" (a tweak from reference). What I\u0027m trying to alert is to avoid having code that modifies objects presents in two data structures at the same time using exactly the fact that they have the same references for the same objects. The code is correct today, but it turns out to be difficult to maintain/evolve if we keep like that.\n\nMaybe there isn\u0027t a better way to implement that, but the concern is related to maintainability, not correctness/elegance :)","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"b4d0100eacc0b104d76e270de628e2f25163d2c1","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        # at previous step and replace his id."},{"line_number":645,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":646,"context_line":"            domain_id)"},{"line_number":647,"context_line":"        for _mapping in domain_mappings:"},{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_ab5a7c81","line":656,"range":{"start_line":647,"start_character":0,"end_line":656,"end_character":47},"in_reply_to":"fa7ab95a_6130b49f","updated":"2016-09-14 15:18:36.000000000","message":"\u003e of course, you would need to add the other values in the loop below\n\nthat\u0027s the problem: there is no list to add the values to. The whole thing is written to inject ids into refs and is based on the fact that in Python dicts are passed by reference, not by value.","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"c2ec6c8b7a0b7521e868f82144453053fc1240ee","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        # at previous step and replace his id."},{"line_number":645,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":646,"context_line":"            domain_id)"},{"line_number":647,"context_line":"        for _mapping in domain_mappings:"},{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_6130b49f","line":656,"range":{"start_line":647,"start_character":0,"end_line":656,"end_character":47},"in_reply_to":"fa7ab95a_7357f1c9","updated":"2016-08-31 11:50:14.000000000","message":"of course, you would need to add the other values in the loop below. I\u0027m not saying the suggestion is the best option, the idea was to not modify the references inside two collections at the same time.","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"e0e24817f94cec0da7625ff67bd457d15b94f39a","unresolved":false,"context_lines":[{"line_number":644,"context_line":"        # at previous step and replace his id."},{"line_number":645,"context_line":"        domain_mappings \u003d self.id_mapping_api.get_domain_mapping_list("},{"line_number":646,"context_line":"            domain_id)"},{"line_number":647,"context_line":"        for _mapping in domain_mappings:"},{"line_number":648,"context_line":"            idx \u003d (_mapping.local_id, _mapping.entity_type, _mapping.domain_id)"},{"line_number":649,"context_line":"            try:"},{"line_number":650,"context_line":"                ref \u003d refs_map.pop(idx)"},{"line_number":651,"context_line":"                # due to python specifics, `ref` still points to an item in"},{"line_number":652,"context_line":"                # `ref_list`. That\u0027s why when we change it here, it gets"},{"line_number":653,"context_line":"                # changed in `ref_list`."},{"line_number":654,"context_line":"                ref[\u0027id\u0027] \u003d _mapping.public_id"},{"line_number":655,"context_line":"            except KeyError:"},{"line_number":656,"context_line":"                pass  # some old entry, skip it"},{"line_number":657,"context_line":""},{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_7357f1c9","line":656,"range":{"start_line":647,"start_character":0,"end_line":656,"end_character":47},"in_reply_to":"fa7ab95a_b8b31897","updated":"2016-08-30 13:44:53.000000000","message":"I don\u0027t understand. How returning a ref_list will help? It will also be broken, because ref_list will contain not all refs.","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"692f5ebd672e3e5d27f799cffc574731d4331a00","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."},{"line_number":660,"context_line":"        for ref in refs_map.values():"},{"line_number":661,"context_line":"            local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"},{"line_number":662,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":663,"context_line":"                            \u0027entity_type\u0027: entity_type}"},{"line_number":664,"context_line":"            self._insert_new_public_id(local_entity, ref, driver)"},{"line_number":665,"context_line":"        return ref_list"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def _insert_domain_id_if_needed(self, ref, driver, domain_id, conf):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_82aa6183","line":664,"range":{"start_line":661,"start_character":0,"end_line":664,"end_character":65},"updated":"2016-08-30 13:04:24.000000000","message":"is this part of the change tested? it looks to me that the test already has created all the mappings. Maybe a good idea to expand the test.","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"b4d0100eacc0b104d76e270de628e2f25163d2c1","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."},{"line_number":660,"context_line":"        for ref in refs_map.values():"},{"line_number":661,"context_line":"            local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"},{"line_number":662,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":663,"context_line":"                            \u0027entity_type\u0027: entity_type}"},{"line_number":664,"context_line":"            self._insert_new_public_id(local_entity, ref, driver)"},{"line_number":665,"context_line":"        return ref_list"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def _insert_domain_id_if_needed(self, ref, driver, domain_id, conf):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a8ec9b2_cb1188ae","line":664,"range":{"start_line":661,"start_character":0,"end_line":664,"end_character":65},"in_reply_to":"fa7ab95a_15c3ed57","updated":"2016-09-14 15:18:36.000000000","message":"actually, this is tested. LdapIdentityWithMapping.test_dynamic_mapping_build tests this part.","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"0126642385d4512d815e88a2b2cb462f25f65fb8","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # at this point, all known refs were granted a public_id. For the refs"},{"line_number":659,"context_line":"        # left, there are no mappings. They need to be created."},{"line_number":660,"context_line":"        for ref in refs_map.values():"},{"line_number":661,"context_line":"            local_entity \u003d {\u0027domain_id\u0027: ref[\u0027domain_id\u0027],"},{"line_number":662,"context_line":"                            \u0027local_id\u0027: ref[\u0027id\u0027],"},{"line_number":663,"context_line":"                            \u0027entity_type\u0027: entity_type}"},{"line_number":664,"context_line":"            self._insert_new_public_id(local_entity, ref, driver)"},{"line_number":665,"context_line":"        return ref_list"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"    def _insert_domain_id_if_needed(self, ref, driver, domain_id, conf):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa7ab95a_15c3ed57","line":664,"range":{"start_line":661,"start_character":0,"end_line":664,"end_character":65},"in_reply_to":"fa7ab95a_82aa6183","updated":"2016-08-30 13:37:05.000000000","message":"++","commit_id":"f534f36246fd0b41bcdc2a664369507f9e299266"}],"keystone/identity/mapping_backends/base.py":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"7cc959892c13b591fa41c1c2faa5e3b86092641c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @abc.abstractmethod"},{"line_number":38,"context_line":"    def get_domain_mapping_list(self, domain_id):"},{"line_number":39,"context_line":"        \"\"\"Return mappings for the domain."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        :param domain_id: Domain ID to get mappings for."}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_ed790b31","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":49},"updated":"2016-08-20 04:46:59.000000000","message":"Since you are changing the driver interface, please add release notes. For example: \nhttps://review.openstack.org/#/c/343314/50/releasenotes/notes/identity_driver_new_change_password_method-e8c0e06795bca2d8.yaml","commit_id":"f12af4f557da45810a0cded1b6760e82321b9811"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"d5575016c8e5bfc6896f68aa0cd87b213cb21683","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @abc.abstractmethod"},{"line_number":38,"context_line":"    def get_domain_mapping_list(self, domain_id):"},{"line_number":39,"context_line":"        \"\"\"Return mappings for the domain."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        :param domain_id: Domain ID to get mappings for."}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_1bb3260c","line":38,"range":{"start_line":38,"start_character":4,"end_line":38,"end_character":49},"in_reply_to":"1ac06dbe_ed790b31","updated":"2016-08-24 14:55:54.000000000","message":"Done","commit_id":"f12af4f557da45810a0cded1b6760e82321b9811"}],"keystone/identity/mapping_backends/sql.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"423e0b4e14bf19fcc06e51021455607f2670dba0","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            except sql.NotFound:"},{"line_number":58,"context_line":"                return None"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_domain_mapping_list(self, domain_id):"},{"line_number":61,"context_line":"        with sql.session_for_read() as session:"},{"line_number":62,"context_line":"            return session.query(IDMapping).filter_by(domain_id\u003ddomain_id)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_078d6931","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":31},"updated":"2016-07-18 17:56:42.000000000","message":"do we need to add this MappingDriver interface?","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"8360c581a49497e97c44b4dcfb65dbdaa0a779c4","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            except sql.NotFound:"},{"line_number":58,"context_line":"                return None"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_domain_mapping_list(self, domain_id):"},{"line_number":61,"context_line":"        with sql.session_for_read() as session:"},{"line_number":62,"context_line":"            return session.query(IDMapping).filter_by(domain_id\u003ddomain_id)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"dada55a8_539442e1","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":31},"in_reply_to":"dada55a8_078d6931","updated":"2016-07-18 18:27:25.000000000","message":"++ agreed, this should go in the interface....","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"abf9f6a004b767dd613e2fa3a87a40f31f24eeb6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            except sql.NotFound:"},{"line_number":58,"context_line":"                return None"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_domain_mapping_list(self, domain_id):"},{"line_number":61,"context_line":"        with sql.session_for_read() as session:"},{"line_number":62,"context_line":"            return session.query(IDMapping).filter_by(domain_id\u003ddomain_id)"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_4dc6ff68","line":60,"range":{"start_line":60,"start_character":8,"end_line":60,"end_character":31},"in_reply_to":"dada55a8_539442e1","updated":"2016-08-04 17:31:39.000000000","message":"Done","commit_id":"202cbb31659f4cbcc7fb81caf928779824766754"}]}
