)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"816fbe55470ab6074d621063ac108cdfc27c17b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"baf2664c_cee327e0","updated":"2021-12-24 17:45:14.000000000","message":"recheck","commit_id":"5804d76d7b9b211e19fbbb9d437b627f6c10ec77"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"0e1091b13c581c1d44510e6525c36a1b3b89248e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"27647023_caa1f3d5","updated":"2021-12-24 19:05:48.000000000","message":"recheck DesignatePtrRecordNegative","commit_id":"5804d76d7b9b211e19fbbb9d437b627f6c10ec77"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"ce51a02ed2d20dd16eb38ea0645014430f842b5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"27dce4ee_4409d76a","updated":"2021-12-24 08:53:32.000000000","message":"recheck ovn issue","commit_id":"5804d76d7b9b211e19fbbb9d437b627f6c10ec77"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"dfaed52f42740e6fa9756112ad30593f3717fdc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8c9e9c6e_12637055","updated":"2021-12-27 21:40:04.000000000","message":"recheck","commit_id":"fa12671c671b325dd48e32e092d2f2007d211ee6"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d446ad2aa7a36a3861bc740a8949da080b6431c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aee4f281_549fa209","updated":"2021-12-27 20:25:39.000000000","message":"recheck","commit_id":"fa12671c671b325dd48e32e092d2f2007d211ee6"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"283412f18f1d10e651a18b2039cd226bb029557c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1c418a96_64ef5b47","updated":"2021-12-28 00:37:12.000000000","message":"recheck DesignatePtrRecordNegative","commit_id":"fa12671c671b325dd48e32e092d2f2007d211ee6"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"8a2946f4fea0aab899f2fc7b0b561e9e42a17f89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"adaf9dbc_91293033","updated":"2022-01-08 00:03:48.000000000","message":"It would be nice to add a bit more test coverage for the reported scenarios, but the fix is good.","commit_id":"bff3d5f6e31fe595a77143ec4ac779c187bf72a8"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"2ef427e61c6160610ece04a5961eb8e9dc779a58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"e65a1373_bbc1abc4","updated":"2022-01-06 06:01:00.000000000","message":"recheck","commit_id":"bff3d5f6e31fe595a77143ec4ac779c187bf72a8"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"6d4081c26035f654933b7c1697f5c5ce249b481e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f9cbd772_c75d5e18","in_reply_to":"adaf9dbc_91293033","updated":"2022-01-08 00:48:51.000000000","message":"Yep. Test coverage is high on the list, especially functional, and if I get some time over I can try to come up with some new unit tests. The current central tests are a mess and needs to be re-worked, which is why I choose to not add prioritize it yet.","commit_id":"bff3d5f6e31fe595a77143ec4ac779c187bf72a8"}],"designate/central/service.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"1f4f9a7eb7fd36bfe7dfe9bf83e801889f93ece1","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            context, criterion\u003d{\u0027zone_id\u0027: zone[\u0027id\u0027], \u0027type\u0027: \"NS\"}"},{"line_number":571,"context_line":"        )"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        managed \u003d []"},{"line_number":574,"context_line":"        for rs in recordsets:"},{"line_number":575,"context_line":"            if rs.managed:"},{"line_number":576,"context_line":"                managed.append(rs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"afdb0cd2_87c9ce53","side":"PARENT","line":573,"updated":"2021-12-27 00:23:25.000000000","message":"The issue here is that this code was most likely written before the concept of recordsets were introduced. The problem it causes is that a recordset can have a mix of managed and un-managed records, and if only un-managed records exists, the command would fail because it would try to create a new recordset, but one already exists, and fail.","commit_id":"aa798fc006e0d4bce38751af7b0c14d97b0fecfb"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"1f4f9a7eb7fd36bfe7dfe9bf83e801889f93ece1","unresolved":false,"context_lines":[{"line_number":571,"context_line":"            context,"},{"line_number":572,"context_line":"            criterion\u003d{"},{"line_number":573,"context_line":"                \u0027zone_id\u0027: zone[\u0027id\u0027],"},{"line_number":574,"context_line":"                \u0027name\u0027: zone[\u0027name\u0027],"},{"line_number":575,"context_line":"                \u0027type\u0027: \u0027NS\u0027"},{"line_number":576,"context_line":"            }"},{"line_number":577,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":7,"id":"dd97bfca_a159518e","line":574,"updated":"2021-12-27 00:23:25.000000000","message":"This changes the code to only look for the master NS record for the zone e.g. zone.example.org will now only match the NS record zone.example.org. and never additional records created under a different name e.g. NS hello.zone.example.org.","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"16ae93f81cf9f874f1cf74e46c29d94aa47d9670","unresolved":true,"context_lines":[{"line_number":580,"context_line":"            self._create_ns(context, zone, [ns_record])"},{"line_number":581,"context_line":"            return"},{"line_number":582,"context_line":"        elif len(recordsets) !\u003d 1:"},{"line_number":583,"context_line":"            raise exceptions.RecordSetNotFound(\u0027No valid recordset found\u0027)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        recordset \u003d recordsets[0]"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"0fcbe80b_d7200f63","line":583,"updated":"2021-12-27 15:52:30.000000000","message":"Maybe also improve the wording of this message? Since instead of \"No\", actually too many recordsets were found.\n\notoh I\u0027m not sure whether this can actually happen with the new search criteria. Those would be duplicate recordsets that shouldn\u0027t have been allowed to be created in the first place? That would even allow us to use find_recordset() above instead of find_recordsets().","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d07647470a93c9fde5e00a3b66bac03b96db02dd","unresolved":false,"context_lines":[{"line_number":580,"context_line":"            self._create_ns(context, zone, [ns_record])"},{"line_number":581,"context_line":"            return"},{"line_number":582,"context_line":"        elif len(recordsets) !\u003d 1:"},{"line_number":583,"context_line":"            raise exceptions.RecordSetNotFound(\u0027No valid recordset found\u0027)"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"        recordset \u003d recordsets[0]"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ecb5de1c_99f902b0","line":583,"in_reply_to":"0fcbe80b_d7200f63","updated":"2021-12-27 19:17:03.000000000","message":"Yep - you are right. Will fix.","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"},{"author":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"change_message_id":"16ae93f81cf9f874f1cf74e46c29d94aa47d9670","unresolved":true,"context_lines":[{"line_number":602,"context_line":"            }"},{"line_number":603,"context_line":"        )"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        for record in recordset.records:"},{"line_number":606,"context_line":"            if record.data \u003d\u003d ns_record:"},{"line_number":607,"context_line":"                recordset.records.remove(record)"},{"line_number":608,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"01e47df9_935a78c9","line":605,"updated":"2021-12-27 15:52:30.000000000","message":"I\u0027m not sure whether dropping the \"deepcopy\" here is valid. Deleting from recordset.records while at the same time iterating over it sounds dangerous at least. Not sure what the actual python semantics for this would be.","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"d07647470a93c9fde5e00a3b66bac03b96db02dd","unresolved":false,"context_lines":[{"line_number":602,"context_line":"            }"},{"line_number":603,"context_line":"        )"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        for record in recordset.records:"},{"line_number":606,"context_line":"            if record.data \u003d\u003d ns_record:"},{"line_number":607,"context_line":"                recordset.records.remove(record)"},{"line_number":608,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f3ae7a7_8f34ad12","line":605,"in_reply_to":"01e47df9_935a78c9","updated":"2021-12-27 19:17:03.000000000","message":"Ah yea - good catch. I changed it to a list that should be a more modern approach to this.","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"170b8a3efec006cf5aa4cb4cffa46a58f863c261","unresolved":false,"context_lines":[{"line_number":2309,"context_line":""},{"line_number":2310,"context_line":"        updated_pool \u003d self.storage.update_pool(context, pool)"},{"line_number":2311,"context_line":""},{"line_number":2312,"context_line":"        if not pool.obj_attr_is_set(\u0027ns_records\u0027):"},{"line_number":2313,"context_line":"            return updated_pool"},{"line_number":2314,"context_line":""},{"line_number":2315,"context_line":"        # Find the current NS hostnames"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfde4e96_340f366f","line":2312,"updated":"2021-12-27 00:24:53.000000000","message":"The code flow here is almost entirely unchanged. The only real difference is that if obj_attr_is_set is false for ns_records we just exit out and return the update_pool object. Previously this could generate a nasty exception since create_ns / delete_ns wouldn\u0027t exist.","commit_id":"c09af7df4252997be07b3bb7223d6ac75c811ee2"}]}
