)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"c72844f5e83ef7c540a66772ffb247ab771ba833","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"34302c58_320bca30","updated":"2024-09-19 10:55:44.000000000","message":"Hello Olaf, thanks for working on this bug. I don\u0027t think the failed test is related to your patch. You can always add a comment `recheck \u003creason for rerun the u/s check pipeline\u003e`","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"21cd62e30b7d6e76a71c72bdaf504be96b8754da","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"479e7172_173c14fc","updated":"2024-09-18 12:28:45.000000000","message":"I don\u0027t see why neutron-tempest-plugin-designate-scenario fails - it passed in the first version of the patch and the changes are purely cosmetic.","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"025f7d986e8184a53fb8ce2ada5c41738ad69392","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f5f0bbf6_466891a9","updated":"2024-09-19 11:10:27.000000000","message":"I don\u0027t think I understood fully what we would like to accomplish in this patch, do we want the email to be saved as (e.g.) o\\.example@example.com? (i.e. with backslash that will appear in the string?) because I tried to create a zone this way\nopenstack zone create --email dnsmaster.example@example.com example.com.\nand I did get\n| email          | dnsmaster.example@example.com            |\n\nwould you mind adding a few tests to this patch?\n\nbtw, we have these instances of \"replace(\u0027@\u0027, \u0027.\u0027)\" on these files as well:\nhttps://opendev.org/openstack/designate/src/branch/master/designate/objects/fields.py#L196\nhttps://opendev.org/openstack/designate/src/branch/master/designate/tests/functional/central/test_service.py#L2858","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a9ba06e6d0d67b21e383fdc2a2639903ff0599e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3dcb2f51_7001882f","updated":"2024-09-19 10:58:44.000000000","message":"In the commit msg, you can replace your current\nCLOSES-BUG: 1835409\nwith\nCloses-bug: #1835409\n(it should be camelCased and with # before the bug number)","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"3344b00bbd56838436a5b6d33ff7add965a5f27e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c8a5f879_03372cda","updated":"2024-09-19 10:56:42.000000000","message":"recheck failed test was not related to the patch","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"49d19fa04e992e9748060ee5004ac1727f5353a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"33e8b307_722efbc0","in_reply_to":"3dcb2f51_7001882f","updated":"2024-09-19 12:00:29.000000000","message":"I copy/pasted this from some web page with Gerrit instructions, and of course I can\u0027t find it any more... I\u0027ll change it.","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"49d19fa04e992e9748060ee5004ac1727f5353a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"dd76c076_7de6cc3c","in_reply_to":"479e7172_173c14fc","updated":"2024-09-19 12:00:29.000000000","message":"Done","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"49d19fa04e992e9748060ee5004ac1727f5353a1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"241dab7c_b4315c62","in_reply_to":"f5f0bbf6_466891a9","updated":"2024-09-19 12:00:29.000000000","message":"It is about how the email address is stored in the SOA record, not about what you see with \"openstack zone show ...\".\n\n$ dig +short olaf.example.org SOA @ns04.zbk.cloud.xxxsyselevenxxx.net.\nns02.zbk.cloud.syseleven.net. o.seibert.example.org. 1726650918 21600 3600 259200 300\n\n(I redacted that server name slightly)\n\nThis address \"o.seibert.example.org.\" would be equivalent to o@seibert.example.org instead of o.seibert@example.org.\n\nThis is mentioned in passing in RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt):\n\n@ IN SOA VENERA Action\\.domains (\n                                 20 ; SERIAL\n                                 7200 ; REFRESH\n                                 600 ; RETRY\n                                 3600000; EXPIRE\n                                 60) ; MINIMUM\n...\n\nNote the use of the \\ character in the SOA RR to specify the responsible\nperson mailbox \"Action.domains@E.ISI.EDU\".\n\n(end quote)\n\nRegarding adding tests: I\u0027ll have to see if I can manage that, I will probably have to do this \"blindly\", since I\u0027m currently not set up for local testing.","commit_id":"14c93b9193f4f222786e88fbb67f319d67e2fd1f"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"a19cd59feed8648d516e364ec7042adfa9ccffce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"75026fb1_b687a79a","updated":"2024-09-19 15:57:50.000000000","message":"Ah, I had one new file but it didn\u0027t have the right name...","commit_id":"54a9a41a26dc6a21d54a9f6313b0ce5e75be5fb9"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"9b5c12b5f72e47ce18a58614c291c8d6a98d1f31","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ac768393_711518c0","updated":"2024-09-19 13:42:56.000000000","message":"Annoyingly the backslashes in our respective replies get deleted by Gerrit so the result reads a bit confusing... The quote from RFC 1035 contains (let me try 2 backslashes to see if that works \"@ IN SOA VENERA Action\\\\.domains (\"","commit_id":"54a9a41a26dc6a21d54a9f6313b0ce5e75be5fb9"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"44182e023fe50ad04102d35297432545c7db6ae4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9f68a749_9865da1e","updated":"2024-09-20 08:52:15.000000000","message":"So the error when one of the tests fails seems to be\n\n  File \"/home/zuul/src/opendev.org/openstack/designate/designate/tests/functional/test_dnsutils.py\", line 209, in test_from_dnspython_zone_scaped_soa\n    soa_record_values \u003d zone.soa.records[0].data.split()\nAttributeError: \u0027Zone\u0027 object has no attribute \u0027soa\u0027\n\nI think I see what\u0027s wrong there.\n\nThe other test failures looked unrelated; I stopped looking after seeing 2 of those. Chasing after unrelated failures is a bit..... frustrating.","commit_id":"26b26a2150e64a8d8924c27abe73018cdb58fef4"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"ed774867a251314568f7ff0feb6cdf7916aeaa7c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"239035fb_2699ae85","updated":"2024-09-23 09:51:13.000000000","message":"A few small comments. Apart from those, looks good to me","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"1a03878e8f97ce2dbb7196b2199004e8418a94c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"fc84043e_e6c15556","updated":"2024-09-20 09:38:56.000000000","message":"I had another glance at RFC 1035 and the situation is worse than I remembered.\nThe mention of escaping dots in local-parts of email address isn\u0027t just mentioned in passing, but in 2 whole paragraphs in section 8:\n\n----\n8. MAIL SUPPORT\n\nThe domain system defines a standard for mapping mailboxes into domain\nnames, and two methods for using the mailbox information to derive mail\nrouting information.  The first method is called mail exchange binding\nand the other method is mailbox binding.  The mailbox encoding standard\nand mail exchange binding are part of the DNS official protocol, and are\nthe recommended method for mail routing in the Internet.  Mailbox\nbinding is an experimental feature which is still under development and\nsubject to change.\n\n\n\n\nMockapetris                                                    [Page 47]\n\f\nRFC 1035        Domain Implementation and Specification    November 1987\n\n\nThe mailbox encoding standard assumes a mailbox name of the form\n\"\u003clocal-part\u003e@\u003cmail-domain\u003e\".  While the syntax allowed in each of these\nsections varies substantially between the various mail internets, the\npreferred syntax for the ARPA Internet is given in [RFC-822].\n\nThe DNS encodes the \u003clocal-part\u003e as a single label, and encodes the\n\u003cmail-domain\u003e as a domain name.  The single label from the \u003clocal-part\u003e\nis prefaced to the domain name from \u003cmail-domain\u003e to form the domain\nname corresponding to the mailbox.  Thus the mailbox HOSTMASTER@SRI-\nNIC.ARPA is mapped into the domain name HOSTMASTER.SRI-NIC.ARPA.  If the\n\u003clocal-part\u003e contains dots or other special characters, its\nrepresentation in a master file will require the use of backslash\nquoting to ensure that the domain name is properly encoded.  For\nexample, the mailbox Action.domains@ISI.EDU would be represented as\nAction\\.domains.ISI.EDU.\n----\n\nI think the \"standard for mapping mailboxes into domain names\" applies to the SOA record, and we can ignore the \"two methods for using the mailbox information to derive mail routing information\" because \"Mailbox binding is an experimental feature which is still under development and subject to change.\"\n\nNevertheless I will not be extending my patch to other \"other special characters\" because the actual case I ran into concerned dots.","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"8b3f4cbaf27b3f5e48fa095d0b4df80cdbdbb4b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8cb4cab4_fe26f60c","updated":"2024-09-20 09:40:26.000000000","message":"and again Gerrit swallowed the backslashes... and I didn\u0027t see an edit button.","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"f1fc8a2c2a105534c303b1f6fa6ecea10876165f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"265ae270_dd4dcce8","updated":"2024-09-21 16:38:09.000000000","message":"recheck unrelated failure","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"9f2876862aaae69f6a3c83b4afaff5f9818529d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1673a107_a60e11cc","updated":"2024-10-08 11:22:27.000000000","message":"Looks good to me, I would just move the unit test test__soa_to_normal from the functional tests directory to the unit tests directory, probably to this class https://opendev.org/openstack/designate/src/branch/master/designate/tests/unit/test_dnsutils.py#L38\n\nreviewers: do you think this patch should have a release note?","commit_id":"278bdb493c40aea6ddeb08bbb8bcecb06764a3fb"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"736debd50e187104633208528736f5878ba5315c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"940e2fe3_dbcd7c68","updated":"2025-05-28 13:33:24.000000000","message":"Again it is four and a half months later... is there anything happening here???","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1e8af4c8c86c80dfc3ce24eeea315e180902b3ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"780f703f_766bb91e","updated":"2025-07-01 19:41:46.000000000","message":"I think this looks ok, but we need a release note for it.\nI will add one in the next patch.","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"125c4ab3e9a6fbe548d3c56615fcb0deafb1407c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"e03ac7a2_20bdb312","updated":"2025-05-28 13:46:22.000000000","message":"LGTM\njust FYI the grenade jobs are currently broken, we are working on fixing those","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"bc4c59f4e3df525da80a64f1b1a3aa50a14c66e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"452c81e1_91c9dc9a","updated":"2024-10-11 11:28:28.000000000","message":"Looks good to me","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"64b4f728eef00aa9d53a9fb74194ab91f3886ba3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"72baa00c_dc36a165","updated":"2025-01-15 16:22:43.000000000","message":"We are several months later.... nothing happening?","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"be451ecaef9a9a890510a1e6282038ba9fbbc83f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fccfeed5_af6f7c6b","updated":"2025-06-03 13:59:27.000000000","message":"recheck generate fresh reports","commit_id":"0a8a3dea437c20e080f3338b1f2cccf1a8334f1b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"efe7559aa800e157e491e4c568418112004f28e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"9b415b3c_1e1ed7c0","updated":"2025-07-01 19:45:41.000000000","message":"LGTM","commit_id":"66a8987b494849c29b9e317f46d42aee148fc10f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"d0d7b8305290705dc0a5c251a5d3bc26db508019","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"a44e0cd5_443e8f97","updated":"2025-08-06 10:52:50.000000000","message":"Looks good to me, thanks for working on this.","commit_id":"66a8987b494849c29b9e317f46d42aee148fc10f"}],"designate/dnsutils.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"ed774867a251314568f7ff0feb6cdf7916aeaa7c","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            return default"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def _soa_to_normal(soa):"},{"line_number":63,"context_line":"    mbox \u003d \"\""},{"line_number":64,"context_line":"    domain \u003d \"\""},{"line_number":65,"context_line":"    in_domain \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"eaa07e4c_330ae060","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":24},"updated":"2024-09-23 09:51:13.000000000","message":"I would suggest to simplify this function without using the boolean\n````\ndef _soa_to_normal(soa):\n    mbox \u003d \"\"\n    domain \u003d \"\"\n    parts \u003d soa.split(\".\")\n    \n    for i, part in enumerate(parts):\n        if part.endswith(\u0027\\\\\u0027):\n            mbox +\u003d part.replace(\"\\\\\", \".\")\n        else:\n            mbox +\u003d part\n            domain_parts \u003d parts[i+1:]\n            domain \u003d \".\".join(domain_parts)\n            break\n\n    if domain !\u003d \"\":\n        result \u003d mbox + \u0027@\u0027 + domain\n    else:\n        # this is technically probably invalid\n        result \u003d mbox\n\n    return result\n````","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"66865f032eab40d16cfb9680c7badeba4b9f9e45","unresolved":false,"context_lines":[{"line_number":59,"context_line":"            return default"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def _soa_to_normal(soa):"},{"line_number":63,"context_line":"    mbox \u003d \"\""},{"line_number":64,"context_line":"    domain \u003d \"\""},{"line_number":65,"context_line":"    in_domain \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"6fc3e28f_1ba8deab","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":24},"in_reply_to":"0664c07e_1d5a31ca","updated":"2024-10-23 14:41:14.000000000","message":"Done","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"0b67a79f03f8a9a0f3c03008dc8e0a826bd001f6","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            return default"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def _soa_to_normal(soa):"},{"line_number":63,"context_line":"    mbox \u003d \"\""},{"line_number":64,"context_line":"    domain \u003d \"\""},{"line_number":65,"context_line":"    in_domain \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"0664c07e_1d5a31ca","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":24},"in_reply_to":"76297db9_9c0cfb77","updated":"2024-09-23 14:57:04.000000000","message":"That version of _soa_to_normal is a bit shorter indeed.\nThe fragment   mbox +\u003d part.replace(\"\\\\\", \".\")  mishandles (more than needed) input where characters other than dots in the local-part are backslashed; I would leave backslashed non-dots simply alone, since the conversion in the other direction didn\u0027t introduce the backslashes. Such input may or may not be valid anyway. The description in the RFC doesn\u0027t cover all cases. So I\u0027m trying to make the actual conversions each other\u0027s inverse as much as possible.\nI\u0027ll stick with  mbox +\u003d part[:-1] + \".\"  for this.","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"8f2d40c481288f8ef05055c5106450b567bf3e9a","unresolved":true,"context_lines":[{"line_number":59,"context_line":"            return default"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def _soa_to_normal(soa):"},{"line_number":63,"context_line":"    mbox \u003d \"\""},{"line_number":64,"context_line":"    domain \u003d \"\""},{"line_number":65,"context_line":"    in_domain \u003d False"}],"source_content_type":"text/x-python","patch_set":8,"id":"76297db9_9c0cfb77","line":62,"range":{"start_line":62,"start_character":0,"end_line":62,"end_character":24},"in_reply_to":"eaa07e4c_330ae060","updated":"2024-09-23 11:49:07.000000000","message":"Please also add full unit test coverage of this function.","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"}],"designate/objects/fields.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"ed774867a251314568f7ff0feb6cdf7916aeaa7c","unresolved":true,"context_lines":[{"line_number":193,"context_line":"        value \u003d super().coerce(obj, attr, value)"},{"line_number":194,"context_line":"        if value.count(\u0027@\u0027) !\u003d 1:"},{"line_number":195,"context_line":"            raise ValueError(f\u0027{value} is not an email\u0027)"},{"line_number":196,"context_line":"        # NOTE(oseibert): We don\u0027t bother with escaping \u0027.\u0027 chars in the"},{"line_number":197,"context_line":"        # local part of the email address, since we don\u0027t keep the result."},{"line_number":198,"context_line":"        email \u003d value.replace(\u0027@\u0027, \u0027.\u0027)"},{"line_number":199,"context_line":"        if not constants.RE_ZONENAME.match(f\u0027{email}.\u0027):"},{"line_number":200,"context_line":"            raise ValueError(f\u0027Email {value} is invalid\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"f36f534f_7bd483f6","line":197,"range":{"start_line":196,"start_character":8,"end_line":197,"end_character":74},"updated":"2024-09-23 09:51:13.000000000","message":"nit: Thank you for addressing the references I provided in the code regarding \n````\nemail \u003d value.replace(\u0027@\u0027, \u0027.\u0027).\n````\nHowever, in my opinion, I think we can skip this comment, and this one as well https://review.opendev.org/c/openstack/designate/+/929660/8/designate/tests/functional/central/test_service.py#2858","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"0b67a79f03f8a9a0f3c03008dc8e0a826bd001f6","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        value \u003d super().coerce(obj, attr, value)"},{"line_number":194,"context_line":"        if value.count(\u0027@\u0027) !\u003d 1:"},{"line_number":195,"context_line":"            raise ValueError(f\u0027{value} is not an email\u0027)"},{"line_number":196,"context_line":"        # NOTE(oseibert): We don\u0027t bother with escaping \u0027.\u0027 chars in the"},{"line_number":197,"context_line":"        # local part of the email address, since we don\u0027t keep the result."},{"line_number":198,"context_line":"        email \u003d value.replace(\u0027@\u0027, \u0027.\u0027)"},{"line_number":199,"context_line":"        if not constants.RE_ZONENAME.match(f\u0027{email}.\u0027):"},{"line_number":200,"context_line":"            raise ValueError(f\u0027Email {value} is invalid\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"6fac883f_4cde0f80","line":197,"range":{"start_line":196,"start_character":8,"end_line":197,"end_character":74},"in_reply_to":"f36f534f_7bd483f6","updated":"2024-09-23 14:57:04.000000000","message":"Acknowledged","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"}],"designate/tests/functional/test_dnsutils.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"ed774867a251314568f7ff0feb6cdf7916aeaa7c","unresolved":true,"context_lines":[{"line_number":193,"context_line":"        self.assertEqual(len(SAMPLES), len(zone.recordsets))"},{"line_number":194,"context_line":"        self.assertEqual(\u0027example.com.\u0027, zone.name)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_from_dnspython_zone_scaped_soa(self):"},{"line_number":197,"context_line":"        zone_file \u003d self.get_zonefile_fixture(variant\u003d\u0027escaped\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        dnspython_zone \u003d dns.zone.from_text("}],"source_content_type":"text/x-python","patch_set":8,"id":"8df2af59_0b87a71b","line":196,"range":{"start_line":196,"start_character":33,"end_line":196,"end_character":39},"updated":"2024-09-23 09:51:13.000000000","message":"typo: escaped","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"},{"author":{"_account_id":31975,"name":"Olaf Seibert","email":"o.seibert@syseleven.de","username":"oseiberts11"},"change_message_id":"0b67a79f03f8a9a0f3c03008dc8e0a826bd001f6","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        self.assertEqual(len(SAMPLES), len(zone.recordsets))"},{"line_number":194,"context_line":"        self.assertEqual(\u0027example.com.\u0027, zone.name)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_from_dnspython_zone_scaped_soa(self):"},{"line_number":197,"context_line":"        zone_file \u003d self.get_zonefile_fixture(variant\u003d\u0027escaped\u0027)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        dnspython_zone \u003d dns.zone.from_text("}],"source_content_type":"text/x-python","patch_set":8,"id":"57ec1416_86ccafd4","line":196,"range":{"start_line":196,"start_character":33,"end_line":196,"end_character":39},"in_reply_to":"8df2af59_0b87a71b","updated":"2024-09-23 14:57:04.000000000","message":"Acknowledged","commit_id":"4a8cbd3f175d526e86fd1f17df709c38bb7d3026"}]}
