)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"4993476fd419383b31010702853666dd3102d654","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"629c1c82_1b0881e4","updated":"2025-05-28 10:59:15.000000000","message":"hello Mikhail, the designate grenade jobs are currently broken, we are working on fixing those","commit_id":"cce61ef48cef1a70dab9a0c69611821bfc788d39"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"102e812c053d395750595d50d06f523944f1438f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"65f6c03d_21fd79d9","updated":"2025-05-27 06:29:34.000000000","message":"recheck","commit_id":"cce61ef48cef1a70dab9a0c69611821bfc788d39"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c5b218b4c3e8833cfe9d43f467f95f3c8b989e93","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c574428f_06764b61","updated":"2025-05-26 13:19:13.000000000","message":"recheck","commit_id":"cce61ef48cef1a70dab9a0c69611821bfc788d39"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"07b04c77efb5f15154608f56549fcddd34b0d1c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"daf8f332_eaab57ca","updated":"2025-05-28 08:23:41.000000000","message":"recheck","commit_id":"cce61ef48cef1a70dab9a0c69611821bfc788d39"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"fe6b85f54f4735a321ee5ed0e8757071bb28caab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"c95d8a6c_13f6eb67","in_reply_to":"c574428f_06764b61","updated":"2025-06-06 10:57:11.000000000","message":"Done","commit_id":"cce61ef48cef1a70dab9a0c69611821bfc788d39"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"7bc129a44be4f99ead7940183c4408c5ac2eaace","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"fd4abbef_f2eca00b","updated":"2025-05-30 01:35:15.000000000","message":"recheck","commit_id":"a259f73cb69f2488437df21363727de26e55da4c"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"2708e12cf09f2bf2b956e008859eec8248e8e7b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"10a3f3e0_71f67336","updated":"2025-06-03 15:46:17.000000000","message":"recheck","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a4eca342fb96c8cec8016255b2daeb1cbca86da7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"9a45ac59_5a222e86","updated":"2025-06-02 20:23:18.000000000","message":"recheck https://review.opendev.org/c/openstack/designate/+/951012 is merged","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":20104,"name":"Dmitrii Galkin","display_name":"Dmitry Galkin","email":"galkindmitrii@gmail.com","username":"galkindmitrii"},"change_message_id":"fc37ad60eb07ad8ddfbeb4aefba7c1e43e12be4b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"a878f29e_f150bd5b","updated":"2025-07-17 09:48:40.000000000","message":"Hi Michael, Erik, Omer.\n\nThere have been no further comments. Please review the change set.\n\nThanks!","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"549d112c_0d99882b","updated":"2025-07-18 15:57:04.000000000","message":"Thank you for working on this, Mikhail. I added a few comments and questions.","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"bcf33f16_ff9c494f","updated":"2025-08-06 10:46:41.000000000","message":"Sorry for taking my time with this patch, but I am working on removing eventlet from designate and it takes all my u/s capacity. I think it is an important patch and I would like to see it getting merged. I added a few more comments and I plan to test it in my devstack env next week.","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"84cfecc5668f61722b97bb50ef9d75cb9ec608f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"6e6742b6_defddf31","updated":"2025-08-07 12:26:18.000000000","message":"I am testing it on a fresh devstack deployment and for some reason I cannot create an HTTPS record successfully: https://paste.openstack.org/show/bF1IJKgOpgeOffFzWSeC/","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"54e022f689ef6280bde345efa9f876c76af18f4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"d273782a_e29984df","updated":"2025-08-07 00:46:31.000000000","message":"recheck","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"8d78c504b16f4285f85cb881878a342851286f23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"d3aa595b_1453f1bf","updated":"2025-08-06 14:55:13.000000000","message":"recheck","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"599ea7625de5b195fa55a075f3a58290b5cb373e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"51da56a3_f27bdce5","in_reply_to":"32b3b624_5fdf0ca2","updated":"2025-08-08 00:43:01.000000000","message":"ok, it\u0027s just a tempest misconf, there is no check for rs status after creation. Looking what\u0027s wrong","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"fd9f7fabd01f93e48b35778411cece436b42df4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"e7577cf9_a43533cc","in_reply_to":"51da56a3_f27bdce5","updated":"2025-08-09 05:03:00.000000000","message":"@oschwart@redhat.com\nI\u0027m added tempest test to check it and test show that everything is fine now.\nhttps://a54d2fc98a60fcd93973-00f5302f444d38fb0cb9bb58094cf5c2.ssl.cf5.rackcdn.com/openstack/52c45c8364e64d98be2c832dcd822374/testr_results.html\n\nhttps://review.opendev.org/c/openstack/designate-tempest-plugin/+/951138","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"d3fd729a469767c3c4cfd81ae00793f4c793f183","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"32b3b624_5fdf0ca2","in_reply_to":"6e6742b6_defddf31","updated":"2025-08-07 13:41:19.000000000","message":"It\u0027s weird because designate-tempest-plugin shows that everything is fine with HTTPS:\nhttps://0ee130e4a5a2946be1c4-63ec39ca44f5300255d15df097f93e08.ssl.cf1.rackcdn.com/openstack/bc949a1405b640f988ed1afc8223dcca/testr_results.html\nhttps://review.opendev.org/c/openstack/designate-tempest-plugin/+/951138\nAnyway I\u0027ll check with devstack.","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"5bd26fcc11cb08cde4747ecf9e20a2da5a9dfd72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":23,"id":"fdeaf8ff_5c748d2b","in_reply_to":"e7577cf9_a43533cc","updated":"2025-08-13 14:03:11.000000000","message":"It was a problem with a dohpath, bind support specific format, described here:\nhttps://gitlab.isc.org/isc-projects/bind9/-/merge_requests/6774/diffs\nI\u0027m implemented similar validation in review.\nhttps://paste.opendev.org/show/bfzIOeLZYJcCMADi28dK/","commit_id":"2424113638f9781a7c4c498b7fef19ee0a4978da"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"2e20e8064feed5bde55ec3fca536077c93b8d722","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"919972a8_494dd5cc","updated":"2025-08-09 03:11:49.000000000","message":"recheck","commit_id":"8253634cb1e6b07e37baf92f13958f8a830daf30"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"a23819d4_13342569","updated":"2025-08-14 14:39:06.000000000","message":"Thank you for resolving the comments. Now I have 2 smaller comments / questions, but apart from those, it looks good to me.\n\nhttps://paste.openstack.org/show/brlII0mvoTJ9q5G1lN5N/","commit_id":"cc852f6594eafe3e9d7a79a1f885227b96b1d1de"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"447eae2b62d27cd0550dc7e48b94a6a57557ee46","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"f609eedb_fd470fa9","updated":"2025-08-14 06:21:13.000000000","message":"recheck","commit_id":"cc852f6594eafe3e9d7a79a1f885227b96b1d1de"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"474e1d6d39007f4ecb50199a287d91829ab5d714","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"d0e33bcf_fb4854bf","in_reply_to":"a23819d4_13342569","updated":"2025-08-15 00:56:47.000000000","message":"@oschwart@redhat.com Hi. This is bind issue (default devstack for my ubuntu 22.04 uses bind9 version 9.18.30-0ubuntu0.22.04.2-Ubuntu) which have been fixed in bind9 version 9.21.8.\nhttps://bind9.readthedocs.io/en/v9.21.8/changelog.html#bind-9-21-8\n\u0027\u0027\u0027\nUse named Service Parameter Keys (SvcParamKeys) by default. 3f61a87be3\n\nWhen converting SVCB records to text representation named now uses named SvcParamKeys values unless backward-compatible mode is activated, in which case the values which were not defined initially in RFC9460 and were added later (see [1]) are converted to opaque “keyNNNN” syntax, like, for example, “key7” instead of “dohpath”.\n\nAlso a new +[no]svcparamkeycompat option is implemented for dig, which enables the backward-compatible mode and uses the opaque syntax, if required for interoperability with other software or scripts. By default, the compatibility mode is disabled.\n\u0027\u0027\u0027","commit_id":"cc852f6594eafe3e9d7a79a1f885227b96b1d1de"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54fc1181042eb2b8d4462499dd444a94a50092a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"4285609e_5f3074e9","updated":"2025-08-18 14:25:24.000000000","message":"Looks good to me","commit_id":"8fbc995352afdb85829540d177930e729de8f12f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7be3831662cff83f0ae9fd6adef9e04a54645968","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"ef8eabd7_89ce4cea","updated":"2025-08-25 16:12:43.000000000","message":"This patch needs to update the API version.\nhttps://github.com/openstack/designate/blob/master/designate/api/versions.py#L54","commit_id":"8fbc995352afdb85829540d177930e729de8f12f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"1fdb04211c40cf51edd71db509e15b5800b31736","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"e7ff5f7d_d287bf5a","in_reply_to":"ef8eabd7_89ce4cea","updated":"2025-08-26 07:22:58.000000000","message":"@johnsomor@gmail.com Done","commit_id":"8fbc995352afdb85829540d177930e729de8f12f"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":29,"id":"19f9aa8d_e74afc6d","updated":"2025-08-27 21:55:06.000000000","message":"I have couple of concerns here, but they are minor changes to fix.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"37d85e73d10b2da90bbbd3c9f72d2d1db8aed59c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":30,"id":"96035e09_52dbb505","updated":"2025-08-28 06:09:45.000000000","message":"Thank you for the update. I will give a final review tomorrow. My goal is to get this in the Flamingo release.","commit_id":"835f3f29060675e35fc6af152c2c92c14c0f112c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0947c94723f2ef2d29fdf565df3ec121670ea403","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"042af3ad_859cb479","updated":"2025-08-30 01:36:30.000000000","message":"As discussed with other cores that are unavailable due to vacation (and have +2\u0027d it before), I am going to workflow this so we get it in the Flamingo release.","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"14fe2cef058d0efb71044691e1b0552888abcb53","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"5229ee80_2a78d97c","updated":"2025-08-29 16:18:21.000000000","message":"LGTM","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"a4a994401fbd95667b070ceafa7237072027fda1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"4ec6e6c4_a0c570c4","updated":"2025-08-29 00:29:41.000000000","message":"Please comment on the changes I have made.","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"dd75864e953af92df5d7dca7ba4fd9afb4132e84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"9fc6e7b5_9ec067ec","updated":"2025-09-02 12:56:37.000000000","message":"recheck","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"fcb3999641d1a9285c23947a6eed7349fa499bc0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"a3651feb_9f0e7b6e","updated":"2025-08-29 15:00:42.000000000","message":"recheck\npackage install problem","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"cc2c9c6a97fd2873e8a5ee03730b0902b16203ca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"21beedf5_f1ab05dc","updated":"2025-09-02 00:37:13.000000000","message":"recheck\npackaging issue","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"933a84be7860a64ae9106127ded4949a2c7a6a7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"cd141181_4a50af17","updated":"2025-09-02 10:28:35.000000000","message":"recheck gate fix patch has been merged https://review.opendev.org/c/openstack/designate/+/959056","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"caab68d3c5ab44d664b91b5904ae9a790e2561ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":33,"id":"a75c696d_6ed4ac27","in_reply_to":"4ec6e6c4_a0c570c4","updated":"2025-08-29 04:33:02.000000000","message":"Lgtm","commit_id":"97f77761b6d83a9e286cdf51c6e81a3473e945b1"}],"designate/objects/__init__.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5368661a46ce969726c6c8bd9f2ec2f634eea17f","unresolved":true,"context_lines":[{"line_number":53,"context_line":"from designate.objects.rrdata_cert import CERT, CERTList  # noqa"},{"line_number":54,"context_line":"from designate.objects.rrdata_cname import CNAME, CNAMEList  # noqa"},{"line_number":55,"context_line":"from designate.objects.rrdata_https import HTTPS, HTTPSList  # noqa"},{"line_number":56,"context_line":"from designate.objects.rrdata_svcb import SVCB, SVCBList  # noqa"},{"line_number":57,"context_line":"from designate.objects.rrdata_mx import MX, MXList  # noqa"},{"line_number":58,"context_line":"from designate.objects.rrdata_naptr import NAPTR, NAPTRList  # noqa"},{"line_number":59,"context_line":"from designate.objects.rrdata_ns import NS, NSList  # noqa"}],"source_content_type":"text/x-python","patch_set":12,"id":"4707a885_166195a4","line":56,"updated":"2025-06-04 17:53:16.000000000","message":"Try keeping these in alphabetic order","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"686fe65fc392ad0ecd083317112bbdb98cebba27","unresolved":true,"context_lines":[{"line_number":53,"context_line":"from designate.objects.rrdata_cert import CERT, CERTList  # noqa"},{"line_number":54,"context_line":"from designate.objects.rrdata_cname import CNAME, CNAMEList  # noqa"},{"line_number":55,"context_line":"from designate.objects.rrdata_https import HTTPS, HTTPSList  # noqa"},{"line_number":56,"context_line":"from designate.objects.rrdata_svcb import SVCB, SVCBList  # noqa"},{"line_number":57,"context_line":"from designate.objects.rrdata_mx import MX, MXList  # noqa"},{"line_number":58,"context_line":"from designate.objects.rrdata_naptr import NAPTR, NAPTRList  # noqa"},{"line_number":59,"context_line":"from designate.objects.rrdata_ns import NS, NSList  # noqa"}],"source_content_type":"text/x-python","patch_set":12,"id":"bba1477e_d2c3f7a4","line":56,"in_reply_to":"4707a885_166195a4","updated":"2025-06-05 03:53:23.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"b6e4aed7125ec98b06de70556900bf5774c6a3a7","unresolved":false,"context_lines":[{"line_number":53,"context_line":"from designate.objects.rrdata_cert import CERT, CERTList  # noqa"},{"line_number":54,"context_line":"from designate.objects.rrdata_cname import CNAME, CNAMEList  # noqa"},{"line_number":55,"context_line":"from designate.objects.rrdata_https import HTTPS, HTTPSList  # noqa"},{"line_number":56,"context_line":"from designate.objects.rrdata_svcb import SVCB, SVCBList  # noqa"},{"line_number":57,"context_line":"from designate.objects.rrdata_mx import MX, MXList  # noqa"},{"line_number":58,"context_line":"from designate.objects.rrdata_naptr import NAPTR, NAPTRList  # noqa"},{"line_number":59,"context_line":"from designate.objects.rrdata_ns import NS, NSList  # noqa"}],"source_content_type":"text/x-python","patch_set":12,"id":"54d3d903_a17af17f","line":56,"in_reply_to":"bba1477e_d2c3f7a4","updated":"2025-06-05 03:54:08.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"}],"designate/objects/rrdata_https.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":true,"context_lines":[{"line_number":24,"context_line":"@base.DesignateRegistry.register"},{"line_number":25,"context_line":"class HTTPS(SVCB):"},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    SVCB-compatible type for use with HTTP"},{"line_number":28,"context_line":"    Defined in: RFC9460"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":"    RECORD_TYPE \u003d 65"}],"source_content_type":"text/x-python","patch_set":26,"id":"55396a72_bc37f8f3","line":27,"range":{"start_line":27,"start_character":38,"end_line":27,"end_character":42},"updated":"2025-08-14 14:39:06.000000000","message":"I think you wanted to write HTTPS","commit_id":"cc852f6594eafe3e9d7a79a1f885227b96b1d1de"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c3bc8c031fcee402cd5cb1ba9b7f1ac59097a2eb","unresolved":true,"context_lines":[{"line_number":24,"context_line":"@base.DesignateRegistry.register"},{"line_number":25,"context_line":"class HTTPS(SVCB):"},{"line_number":26,"context_line":"    \"\"\""},{"line_number":27,"context_line":"    SVCB-compatible type for use with HTTP"},{"line_number":28,"context_line":"    Defined in: RFC9460"},{"line_number":29,"context_line":"    \"\"\""},{"line_number":30,"context_line":"    RECORD_TYPE \u003d 65"}],"source_content_type":"text/x-python","patch_set":26,"id":"fe2fd960_6768659d","line":27,"range":{"start_line":27,"start_character":38,"end_line":27,"end_character":42},"in_reply_to":"55396a72_bc37f8f3","updated":"2025-08-15 09:23:15.000000000","message":"Done","commit_id":"cc852f6594eafe3e9d7a79a1f885227b96b1d1de"}],"designate/objects/rrdata_svcb.py":[{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5368661a46ce969726c6c8bd9f2ec2f634eea17f","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":41,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":42,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"375d69c9_3e8e42a4","line":41,"updated":"2025-06-04 17:53:16.000000000","message":"I don\u0027t see any unit test coverage here.","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"b6e4aed7125ec98b06de70556900bf5774c6a3a7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":41,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":42,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"e0112b1a_071f40cc","line":41,"in_reply_to":"375d69c9_3e8e42a4","updated":"2025-06-05 03:54:08.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5368661a46ce969726c6c8bd9f2ec2f634eea17f","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_echconfig(ech):"},{"line_number":64,"context_line":"    if \"\\\\\" in ech:"},{"line_number":65,"context_line":"        raise ValueError(\"escape in ECH value\")"},{"line_number":66,"context_line":"    return ech"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"83101ea1_f24df39b","line":64,"updated":"2025-06-04 17:53:16.000000000","message":"Test this as well","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"b6e4aed7125ec98b06de70556900bf5774c6a3a7","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_echconfig(ech):"},{"line_number":64,"context_line":"    if \"\\\\\" in ech:"},{"line_number":65,"context_line":"        raise ValueError(\"escape in ECH value\")"},{"line_number":66,"context_line":"    return ech"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fb3a5dd7_0a699dbf","line":64,"in_reply_to":"6d571385_2d3d9a87","updated":"2025-06-05 03:54:08.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"686fe65fc392ad0ecd083317112bbdb98cebba27","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_echconfig(ech):"},{"line_number":64,"context_line":"    if \"\\\\\" in ech:"},{"line_number":65,"context_line":"        raise ValueError(\"escape in ECH value\")"},{"line_number":66,"context_line":"    return ech"},{"line_number":67,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"6d571385_2d3d9a87","line":64,"in_reply_to":"83101ea1_f24df39b","updated":"2025-06-05 03:53:23.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5368661a46ce969726c6c8bd9f2ec2f634eea17f","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def validate_doh(doh):"},{"line_number":70,"context_line":"    if not isinstance(doh, str):"},{"line_number":71,"context_line":"        raise ValueError(f\"dohpath is not string {doh}\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_port(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"f60ff11f_11ae71d2","line":71,"updated":"2025-06-04 17:53:16.000000000","message":"And this","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"b6e4aed7125ec98b06de70556900bf5774c6a3a7","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def validate_doh(doh):"},{"line_number":70,"context_line":"    if not isinstance(doh, str):"},{"line_number":71,"context_line":"        raise ValueError(f\"dohpath is not string {doh}\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_port(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"1523bbee_043521fb","line":71,"in_reply_to":"4d8792d2_c55e8edb","updated":"2025-06-05 03:54:08.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"686fe65fc392ad0ecd083317112bbdb98cebba27","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def validate_doh(doh):"},{"line_number":70,"context_line":"    if not isinstance(doh, str):"},{"line_number":71,"context_line":"        raise ValueError(f\"dohpath is not string {doh}\")"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_port(port):"}],"source_content_type":"text/x-python","patch_set":12,"id":"4d8792d2_c55e8edb","line":71,"in_reply_to":"f60ff11f_11ae71d2","updated":"2025-06-05 03:53:23.000000000","message":"This validator deleted due doh comes always as a string","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"5368661a46ce969726c6c8bd9f2ec2f634eea17f","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        values \u003d value.split(\u0027 \u0027)"},{"line_number":125,"context_line":"        priority, target \u003d values[:2]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        def _svcbparams_to_dict(params):"},{"line_number":128,"context_line":"            result \u003d {}"},{"line_number":129,"context_line":"            for param in params:"},{"line_number":130,"context_line":"                if param \u003d\u003d \u0027no-default-alpn\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"72b91d1f_9f2b3773","line":127,"updated":"2025-06-04 17:53:16.000000000","message":"There are a few cases here that ideally should be covered by tests as well.","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"b6e4aed7125ec98b06de70556900bf5774c6a3a7","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        values \u003d value.split(\u0027 \u0027)"},{"line_number":125,"context_line":"        priority, target \u003d values[:2]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        def _svcbparams_to_dict(params):"},{"line_number":128,"context_line":"            result \u003d {}"},{"line_number":129,"context_line":"            for param in params:"},{"line_number":130,"context_line":"                if param \u003d\u003d \u0027no-default-alpn\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"b2920b7f_923483f4","line":127,"in_reply_to":"1204d8c1_58530596","updated":"2025-06-05 03:54:08.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"686fe65fc392ad0ecd083317112bbdb98cebba27","unresolved":true,"context_lines":[{"line_number":124,"context_line":"        values \u003d value.split(\u0027 \u0027)"},{"line_number":125,"context_line":"        priority, target \u003d values[:2]"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        def _svcbparams_to_dict(params):"},{"line_number":128,"context_line":"            result \u003d {}"},{"line_number":129,"context_line":"            for param in params:"},{"line_number":130,"context_line":"                if param \u003d\u003d \u0027no-default-alpn\u0027:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1204d8c1_58530596","line":127,"in_reply_to":"72b91d1f_9f2b3773","updated":"2025-06-05 03:53:23.000000000","message":"Done","commit_id":"68be55890714d7164c9f09775e2a90097eb8f30f"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"ecb7a8b3673b87ef66b0ca4bb2fc9bcfc6c28a21","unresolved":true,"context_lines":[{"line_number":169,"context_line":"                elif param_name in (\"ech\", \"echconfig\"):"},{"line_number":170,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if repr(int(priority)) !\u003d priority:"},{"line_number":173,"context_line":"            raise ValueError(\u0027Value is not an integer\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.priority \u003d int(priority)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ff8eab1f_e5d23fa1","line":172,"updated":"2025-06-08 21:02:34.000000000","message":"I don\u0027t think this works, as this would throw a value error, so you cannot hit line 173. You could just add a try catch on line 175 instead and re-throw the ValueError with your prefered message.","commit_id":"924c6caf67d8fd66fd0d6107bff8a609bf131a0e"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"bde705b34f488593ff758551fcfb2c9df0de2213","unresolved":false,"context_lines":[{"line_number":169,"context_line":"                elif param_name in (\"ech\", \"echconfig\"):"},{"line_number":170,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        if repr(int(priority)) !\u003d priority:"},{"line_number":173,"context_line":"            raise ValueError(\u0027Value is not an integer\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.priority \u003d int(priority)"}],"source_content_type":"text/x-python","patch_set":18,"id":"77cbe91e_a85e15a1","line":172,"in_reply_to":"ff8eab1f_e5d23fa1","updated":"2025-06-09 11:35:28.000000000","message":"Done","commit_id":"924c6caf67d8fd66fd0d6107bff8a609bf131a0e"},{"author":{"_account_id":22623,"name":"Erik Olof Gunnar Andersson","email":"eandersson@blizzard.com","username":"eoandersson"},"change_message_id":"a50e2a5fa92fe0c2e27a7f2dc2ff4d48c85a2202","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        try:"},{"line_number":173,"context_line":"            self.priority \u003d int(priority)"},{"line_number":174,"context_line":"        except ValueError:"},{"line_number":175,"context_line":"            raise ValueError(\u0027Value preiority is not an integer\u0027)"},{"line_number":176,"context_line":"        self.target \u003d target"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    # The record type is defined in the RFC. This will be used when the record"}],"source_content_type":"text/x-python","patch_set":19,"id":"a15f3a6b_5dff3128","line":175,"updated":"2025-06-09 12:50:41.000000000","message":"Typo in priority","commit_id":"d7f7c7f87b210d6bf25231a6257f79c5b04ca1a2"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"e69d872595bb5934e5e6701ec520974c450057a2","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        try:"},{"line_number":173,"context_line":"            self.priority \u003d int(priority)"},{"line_number":174,"context_line":"        except ValueError:"},{"line_number":175,"context_line":"            raise ValueError(\u0027Value preiority is not an integer\u0027)"},{"line_number":176,"context_line":"        self.target \u003d target"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    # The record type is defined in the RFC. This will be used when the record"}],"source_content_type":"text/x-python","patch_set":19,"id":"f46bd4ac_dff757ad","line":175,"in_reply_to":"a15f3a6b_5dff3128","updated":"2025-06-09 23:33:39.000000000","message":"Nice catch, thank you","commit_id":"d7f7c7f87b210d6bf25231a6257f79c5b04ca1a2"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"f9751ae24b32cb5c4e388a642222d69363b46786","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        try:"},{"line_number":173,"context_line":"            self.priority \u003d int(priority)"},{"line_number":174,"context_line":"        except ValueError:"},{"line_number":175,"context_line":"            raise ValueError(\u0027Value preiority is not an integer\u0027)"},{"line_number":176,"context_line":"        self.target \u003d target"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    # The record type is defined in the RFC. This will be used when the record"}],"source_content_type":"text/x-python","patch_set":19,"id":"6c5449aa_edccef65","line":175,"in_reply_to":"f46bd4ac_dff757ad","updated":"2025-06-13 15:19:58.000000000","message":"Done","commit_id":"d7f7c7f87b210d6bf25231a6257f79c5b04ca1a2"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    values \u003d alpn_string.split(\",\")"},{"line_number":35,"context_line":"    for value in values:"},{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""}],"source_content_type":"text/x-python","patch_set":20,"id":"65728a45_3d6db8b5","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":61},"updated":"2025-07-18 15:57:04.000000000","message":"I think it is a typo","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    values \u003d alpn_string.split(\",\")"},{"line_number":35,"context_line":"    for value in values:"},{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""}],"source_content_type":"text/x-python","patch_set":20,"id":"83aa4b27_db3d3d9a","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":61},"in_reply_to":"65728a45_3d6db8b5","updated":"2025-07-18 16:48:29.000000000","message":"Updated","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    values \u003d alpn_string.split(\",\")"},{"line_number":35,"context_line":"    for value in values:"},{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""}],"source_content_type":"text/x-python","patch_set":20,"id":"f532e668_b31f412a","line":37,"range":{"start_line":37,"start_character":39,"end_line":37,"end_character":61},"in_reply_to":"83aa4b27_db3d3d9a","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":41,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def validate_ipv4hint(ipv4hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"62451ed5_92a261fe","line":41,"range":{"start_line":39,"start_character":8,"end_line":41,"end_character":58},"updated":"2025-07-18 15:57:04.000000000","message":"Could there be use cases like CDNs, web servers, and APIs that would like to advertise h2 or h3 support without providing DOH services?","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":41,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def validate_ipv4hint(ipv4hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"fe91e882_fadd7c08","line":41,"range":{"start_line":39,"start_character":8,"end_line":41,"end_character":58},"in_reply_to":"62451ed5_92a261fe","updated":"2025-07-18 16:48:29.000000000","message":"Hi. Thank you for review. Regarding to RFC (https://datatracker.ietf.org/doc/html/rfc9461#name-alpn) ff the protocol set contains any HTTP versions (e.g., \"h2\", \"h3\"), then the record indicates support for DoH and the \"dohpath\" key MUST be present","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":41,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def validate_ipv4hint(ipv4hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3e3db88c_590df3db","line":41,"range":{"start_line":39,"start_character":8,"end_line":41,"end_character":58},"in_reply_to":"fe91e882_fadd7c08","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        if value not in valid_values:"},{"line_number":37,"context_line":"            raise ValueError(f\"{value} as not support as ALPN.\""},{"line_number":38,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":39,"context_line":"        if value in (\"h3\", \"h2\") and \"dohpath\" not in params:"},{"line_number":40,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":41,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def validate_ipv4hint(ipv4hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"ade78b8b_ea52bb9c","line":41,"range":{"start_line":39,"start_character":8,"end_line":41,"end_character":58},"in_reply_to":"fe91e882_fadd7c08","updated":"2025-08-06 10:46:41.000000000","message":"Thanks for providing the exact section.","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            ipv4.inet_aton(str(value))"},{"line_number":49,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":50,"context_line":"            raise ValueError()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def validate_ipv6hint(ipv6hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"f5ed86ec_18bd8ceb","line":50,"updated":"2025-07-18 15:57:04.000000000","message":"Maybe we could provide a better err msg here","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            ipv4.inet_aton(str(value))"},{"line_number":49,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":50,"context_line":"            raise ValueError()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def validate_ipv6hint(ipv6hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f3613a3_1e83d0bc","line":50,"in_reply_to":"4bf219ba_6da0b9e8","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            ipv4.inet_aton(str(value))"},{"line_number":49,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":50,"context_line":"            raise ValueError()"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def validate_ipv6hint(ipv6hint):"}],"source_content_type":"text/x-python","patch_set":20,"id":"4bf219ba_6da0b9e8","line":50,"in_reply_to":"f5ed86ec_18bd8ceb","updated":"2025-07-18 16:48:29.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            ipv6.inet_aton(str(value))"},{"line_number":58,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":59,"context_line":"            raise ValueError()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def validate_echconfig(ech):"}],"source_content_type":"text/x-python","patch_set":20,"id":"660c905e_883a70b3","line":59,"updated":"2025-07-18 15:57:04.000000000","message":"Maybe we could provide a better err msg here","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            ipv6.inet_aton(str(value))"},{"line_number":58,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":59,"context_line":"            raise ValueError()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def validate_echconfig(ech):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7ecf6b80_c0d4305b","line":59,"in_reply_to":"660c905e_883a70b3","updated":"2025-07-18 16:48:29.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        try:"},{"line_number":57,"context_line":"            ipv6.inet_aton(str(value))"},{"line_number":58,"context_line":"        except dns.exception.SyntaxError:"},{"line_number":59,"context_line":"            raise ValueError()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"def validate_echconfig(ech):"}],"source_content_type":"text/x-python","patch_set":20,"id":"0153dcf5_8ebed500","line":59,"in_reply_to":"7ecf6b80_c0d4305b","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        raise ValueError(\u0027Port is not an integer\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_mandatory(mandatory_params, all_params):"},{"line_number":75,"context_line":"    values \u003d mandatory_params.split(\",\")"},{"line_number":76,"context_line":"    if not set(values).issubset("},{"line_number":77,"context_line":"            all_params.keys()"}],"source_content_type":"text/x-python","patch_set":20,"id":"20e29233_eeb88d60","line":74,"updated":"2025-07-18 15:57:04.000000000","message":"Should we verify that there are no duplicate mandatory / non-mandatory keys?","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        raise ValueError(\u0027Port is not an integer\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_mandatory(mandatory_params, all_params):"},{"line_number":75,"context_line":"    values \u003d mandatory_params.split(\",\")"},{"line_number":76,"context_line":"    if not set(values).issubset("},{"line_number":77,"context_line":"            all_params.keys()"}],"source_content_type":"text/x-python","patch_set":20,"id":"54944f21_b62d7f06","line":74,"in_reply_to":"20e29233_eeb88d60","updated":"2025-07-18 16:48:29.000000000","message":"It\u0027s already done in _svcbparams_to_dict, because it\u0027s a dict only unique params presented.","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise ValueError(\u0027Port is not an integer\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_mandatory(mandatory_params, all_params):"},{"line_number":75,"context_line":"    values \u003d mandatory_params.split(\",\")"},{"line_number":76,"context_line":"    if not set(values).issubset("},{"line_number":77,"context_line":"            all_params.keys()"}],"source_content_type":"text/x-python","patch_set":20,"id":"4c1cfa62_5674c1bf","line":74,"in_reply_to":"54944f21_b62d7f06","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        raise ValueError(\u0027Port is not an integer\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def validate_mandatory(mandatory_params, all_params):"},{"line_number":75,"context_line":"    values \u003d mandatory_params.split(\",\")"},{"line_number":76,"context_line":"    if not set(values).issubset("},{"line_number":77,"context_line":"            all_params.keys()"}],"source_content_type":"text/x-python","patch_set":20,"id":"60d09dcf_9bac1229","line":74,"in_reply_to":"54944f21_b62d7f06","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        \u0027ech\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":110,"context_line":"        \u0027ipv4hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":111,"context_line":"        \u0027ipv6hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":112,"context_line":"        \u0027port\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d10),"},{"line_number":113,"context_line":"        \u0027no_default_alpn\u0027: fields.BooleanField(nullable\u003dTrue, default\u003dFalse),"},{"line_number":114,"context_line":"        \u0027mandatory\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255),"},{"line_number":115,"context_line":"        \u0027dohpath\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3693e5ca_9bbdc166","line":112,"updated":"2025-07-18 15:57:04.000000000","message":"maybe we could make this one Integer Fields? say\n\u0027port\u0027: fields.IntegerFields(nullable\u003dTrue, minimum\u003d1, maximum\u003d65535),\nThat\u0027s the definition of Port I see in the RFC, 7.2\nhttps://datatracker.ietf.org/doc/rfc9460/\n(dropping 0)","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        \u0027ech\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":110,"context_line":"        \u0027ipv4hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":111,"context_line":"        \u0027ipv6hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":112,"context_line":"        \u0027port\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d10),"},{"line_number":113,"context_line":"        \u0027no_default_alpn\u0027: fields.BooleanField(nullable\u003dTrue, default\u003dFalse),"},{"line_number":114,"context_line":"        \u0027mandatory\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255),"},{"line_number":115,"context_line":"        \u0027dohpath\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"dcc2789b_5129c03a","line":112,"in_reply_to":"0393ec08_4f944f8a","updated":"2025-08-06 12:09:54.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        \u0027ech\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":110,"context_line":"        \u0027ipv4hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":111,"context_line":"        \u0027ipv6hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":112,"context_line":"        \u0027port\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d10),"},{"line_number":113,"context_line":"        \u0027no_default_alpn\u0027: fields.BooleanField(nullable\u003dTrue, default\u003dFalse),"},{"line_number":114,"context_line":"        \u0027mandatory\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255),"},{"line_number":115,"context_line":"        \u0027dohpath\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"6d49287d_2482cd6d","line":112,"in_reply_to":"3693e5ca_9bbdc166","updated":"2025-07-18 16:48:29.000000000","message":"No, because I\u0027m store params in a string format \"param_name\u003dparam_value\"","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        \u0027ech\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":110,"context_line":"        \u0027ipv4hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":111,"context_line":"        \u0027ipv6hint\u0027: fields.StringFields(maxLength\u003d255, nullable\u003dTrue),"},{"line_number":112,"context_line":"        \u0027port\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d10),"},{"line_number":113,"context_line":"        \u0027no_default_alpn\u0027: fields.BooleanField(nullable\u003dTrue, default\u003dFalse),"},{"line_number":114,"context_line":"        \u0027mandatory\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255),"},{"line_number":115,"context_line":"        \u0027dohpath\u0027: fields.StringFields(nullable\u003dTrue, maxLength\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"0393ec08_4f944f8a","line":112,"in_reply_to":"6d49287d_2482cd6d","updated":"2025-08-06 10:46:41.000000000","message":"Then I think that port.isnumeric() is a good choice. Maybe we could add another check to make sure the port is between 1 and 65535, as I think that StringFields with maxLength\u003d255 could be a very big number.","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"5b7b611335a72ed7434874a348e5fa80df4873ec","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        for param_name, param_value in svcbparams.items():"},{"line_number":147,"context_line":"            if param_name not in self.params:"},{"line_number":148,"context_line":"                raise ValueError(f\"Unsupported param {param_name}\")"},{"line_number":149,"context_line":"            if param_name \u003d\u003d \u0027no-default-alpn\u0027:"},{"line_number":150,"context_line":"                self.no_default_alpn \u003d True"},{"line_number":151,"context_line":"                continue"},{"line_number":152,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"98dda5c2_767dbaa0","line":149,"updated":"2025-07-18 15:57:04.000000000","message":"In the RFC they mention (7.1.1):\n\nWhen \"no-default-alpn\" is specified in an RR, \"alpn\" must also be specified in order for the RR to be \"self-consistent\"\n\nmaybe we could verify that with hasattr (or any other way)","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        for param_name, param_value in svcbparams.items():"},{"line_number":147,"context_line":"            if param_name not in self.params:"},{"line_number":148,"context_line":"                raise ValueError(f\"Unsupported param {param_name}\")"},{"line_number":149,"context_line":"            if param_name \u003d\u003d \u0027no-default-alpn\u0027:"},{"line_number":150,"context_line":"                self.no_default_alpn \u003d True"},{"line_number":151,"context_line":"                continue"},{"line_number":152,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"4736ad85_d6f3b596","line":149,"in_reply_to":"17af6d95_c4b305df","updated":"2025-08-06 10:46:41.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"c4ce99a817f7db8b83aecd01cc87f9bacecd11ce","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        for param_name, param_value in svcbparams.items():"},{"line_number":147,"context_line":"            if param_name not in self.params:"},{"line_number":148,"context_line":"                raise ValueError(f\"Unsupported param {param_name}\")"},{"line_number":149,"context_line":"            if param_name \u003d\u003d \u0027no-default-alpn\u0027:"},{"line_number":150,"context_line":"                self.no_default_alpn \u003d True"},{"line_number":151,"context_line":"                continue"},{"line_number":152,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"17af6d95_c4b305df","line":149,"in_reply_to":"98dda5c2_767dbaa0","updated":"2025-07-18 16:48:29.000000000","message":"Done","commit_id":"e6bf20f0f1186f004e9d7aed5b1a4c5a70deae80"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"                svc_param \u003d param.split(\"\u003d\")"},{"line_number":132,"context_line":"                if len(svc_param[1:]) \u003e 1:"},{"line_number":133,"context_line":"                    if param.startswith(\"ech\") or param.startswith("},{"line_number":134,"context_line":"                            \"echconfig\"):"},{"line_number":135,"context_line":"                        echstr \u003d []"},{"line_number":136,"context_line":"                        for el in svc_param[1:]:"},{"line_number":137,"context_line":"                            if not el:"}],"source_content_type":"text/x-python","patch_set":21,"id":"d3844433_11430e9d","line":134,"range":{"start_line":133,"start_character":47,"end_line":134,"end_character":40},"updated":"2025-08-06 10:46:41.000000000","message":"I think this condition is redundant, if param does not start with \"ech\", it won\u0027t start with \"echconfig\"","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"                svc_param \u003d param.split(\"\u003d\")"},{"line_number":132,"context_line":"                if len(svc_param[1:]) \u003e 1:"},{"line_number":133,"context_line":"                    if param.startswith(\"ech\") or param.startswith("},{"line_number":134,"context_line":"                            \"echconfig\"):"},{"line_number":135,"context_line":"                        echstr \u003d []"},{"line_number":136,"context_line":"                        for el in svc_param[1:]:"},{"line_number":137,"context_line":"                            if not el:"}],"source_content_type":"text/x-python","patch_set":21,"id":"e70c6d92_7d8079f7","line":134,"range":{"start_line":133,"start_character":47,"end_line":134,"end_character":40},"in_reply_to":"5fbff6fa_19457b86","updated":"2025-08-14 14:39:06.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"                svc_param \u003d param.split(\"\u003d\")"},{"line_number":132,"context_line":"                if len(svc_param[1:]) \u003e 1:"},{"line_number":133,"context_line":"                    if param.startswith(\"ech\") or param.startswith("},{"line_number":134,"context_line":"                            \"echconfig\"):"},{"line_number":135,"context_line":"                        echstr \u003d []"},{"line_number":136,"context_line":"                        for el in svc_param[1:]:"},{"line_number":137,"context_line":"                            if not el:"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fbff6fa_19457b86","line":134,"range":{"start_line":133,"start_character":47,"end_line":134,"end_character":40},"in_reply_to":"d3844433_11430e9d","updated":"2025-08-06 12:09:54.000000000","message":"Deleted","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":151,"context_line":"                    self.no_default_alpn \u003d True"},{"line_number":152,"context_line":"                    continue"},{"line_number":153,"context_line":"                else:"},{"line_number":154,"context_line":"                    raise ValueError(\"ALPN should be presented\""},{"line_number":155,"context_line":"                                     \" if no-default-alpn param exist\")"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                if param_name in (\"alpn\", \"mandatory\"):"}],"source_content_type":"text/x-python","patch_set":21,"id":"e8ec2e8e_d9f11ced","line":154,"updated":"2025-08-06 10:46:41.000000000","message":"can we add a unit test for this case too?","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    self.no_default_alpn \u003d True"},{"line_number":152,"context_line":"                    continue"},{"line_number":153,"context_line":"                else:"},{"line_number":154,"context_line":"                    raise ValueError(\"ALPN should be presented\""},{"line_number":155,"context_line":"                                     \" if no-default-alpn param exist\")"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                if param_name in (\"alpn\", \"mandatory\"):"}],"source_content_type":"text/x-python","patch_set":21,"id":"1b0674a0_3875f9ad","line":154,"in_reply_to":"2304bb6d_801ffb6a","updated":"2025-08-14 14:39:06.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":151,"context_line":"                    self.no_default_alpn \u003d True"},{"line_number":152,"context_line":"                    continue"},{"line_number":153,"context_line":"                else:"},{"line_number":154,"context_line":"                    raise ValueError(\"ALPN should be presented\""},{"line_number":155,"context_line":"                                     \" if no-default-alpn param exist\")"},{"line_number":156,"context_line":"            else:"},{"line_number":157,"context_line":"                if param_name in (\"alpn\", \"mandatory\"):"}],"source_content_type":"text/x-python","patch_set":21,"id":"2304bb6d_801ffb6a","line":154,"in_reply_to":"e8ec2e8e_d9f11ced","updated":"2025-08-06 12:09:54.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        try:"},{"line_number":177,"context_line":"            self.priority \u003d int(priority)"},{"line_number":178,"context_line":"        except ValueError:"},{"line_number":179,"context_line":"            raise ValueError(\u0027Value priority is not an integer\u0027)"},{"line_number":180,"context_line":"        self.target \u003d target"}],"source_content_type":"text/x-python","patch_set":21,"id":"2efd319b_86af2182","line":177,"range":{"start_line":177,"start_character":12,"end_line":177,"end_character":41},"updated":"2025-08-06 10:46:41.000000000","message":"We might want to reuse the port validation here. int(priority) won\u0027t raise ValueError if it is -1 (not sure if that\u0027s necessarily prohibited).","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":174,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        try:"},{"line_number":177,"context_line":"            self.priority \u003d int(priority)"},{"line_number":178,"context_line":"        except ValueError:"},{"line_number":179,"context_line":"            raise ValueError(\u0027Value priority is not an integer\u0027)"},{"line_number":180,"context_line":"        self.target \u003d target"}],"source_content_type":"text/x-python","patch_set":21,"id":"b21414e0_3d17bed9","line":177,"range":{"start_line":177,"start_character":12,"end_line":177,"end_character":41},"in_reply_to":"2efd319b_86af2182","updated":"2025-08-06 12:09:54.000000000","message":"I\u0027m using here same way as for MX record types.","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    or QUIC (for example, \"alpn\"\u003d\"h2\")."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":"    valid_values \u003d (\"h3\", \"h2\", \"h2c\", \"http/1.1\","},{"line_number":34,"context_line":"                    \"http/1.0\", \"http/2\", \"http/3\")"},{"line_number":35,"context_line":"    values \u003d alpn_string.split(\",\")"},{"line_number":36,"context_line":"    for value in values:"},{"line_number":37,"context_line":"        if value not in valid_values:"}],"source_content_type":"text/x-python","patch_set":29,"id":"55ae8637_6dacbe2f","line":34,"updated":"2025-08-27 21:55:06.000000000","message":"http/2 and http/3 are not valid alpn identifiers per iana.\nhttps://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    or QUIC (for example, \"alpn\"\u003d\"h2\")."},{"line_number":32,"context_line":"    \"\"\""},{"line_number":33,"context_line":"    valid_values \u003d (\"h3\", \"h2\", \"h2c\", \"http/1.1\","},{"line_number":34,"context_line":"                    \"http/1.0\", \"http/2\", \"http/3\")"},{"line_number":35,"context_line":"    values \u003d alpn_string.split(\",\")"},{"line_number":36,"context_line":"    for value in values:"},{"line_number":37,"context_line":"        if value not in valid_values:"}],"source_content_type":"text/x-python","patch_set":29,"id":"bb393334_881404f5","line":34,"in_reply_to":"55ae8637_6dacbe2f","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            raise ValueError(f\"{value} is not supported.\""},{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\","},{"line_number":41,"context_line":"                     \"http/2\", \"http/3\") and \"dohpath\" not in params:"},{"line_number":42,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":43,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"d805d079_3bf9b8be","line":41,"updated":"2025-08-27 21:55:06.000000000","message":"Same here, http/2 and http/3 are invalid.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":38,"context_line":"            raise ValueError(f\"{value} is not supported.\""},{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\","},{"line_number":41,"context_line":"                     \"http/2\", \"http/3\") and \"dohpath\" not in params:"},{"line_number":42,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":43,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"51ed58c1_497b60da","line":41,"in_reply_to":"d805d079_3bf9b8be","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\","},{"line_number":41,"context_line":"                     \"http/2\", \"http/3\") and \"dohpath\" not in params:"},{"line_number":42,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":43,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"fe82e6ad_2874e2d0","line":42,"updated":"2025-08-27 21:55:06.000000000","message":"This restriction only applies to dns scheme records (RFC 9461).\nh2 and h3 are perfectly valid without dohpath when the SVCB is not used for DNS endpoints.\nSee Example 10.4.1 in RFC 9460 and test vector figure 9 in RFC 9460.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":39,"context_line":"                             f\"Supported values {valid_values}\")"},{"line_number":40,"context_line":"        if value in (\"h3\", \"h2\","},{"line_number":41,"context_line":"                     \"http/2\", \"http/3\") and \"dohpath\" not in params:"},{"line_number":42,"context_line":"            raise ValueError(\"DOH should be presented\""},{"line_number":43,"context_line":"                             \" for ALPN values h3 or h2.\")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"05b4aa2c_3c616e67","line":42,"in_reply_to":"fe82e6ad_2874e2d0","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":64,"context_line":"def validate_echconfig(ech):"},{"line_number":65,"context_line":"    if \"\\\\\" in ech:"},{"line_number":66,"context_line":"        raise ValueError(\"escape in ECH value\")"},{"line_number":67,"context_line":"    elif len(ech.strip()) % 4 !\u003d 0:"},{"line_number":68,"context_line":"        raise ValueError(\"ECH value is not base64 string\")"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"0258dd35_bf0442f6","line":67,"updated":"2025-08-27 21:55:06.000000000","message":"A better check would be to use the python3 base64.b64decode() as these must be base64 encoded here.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":64,"context_line":"def validate_echconfig(ech):"},{"line_number":65,"context_line":"    if \"\\\\\" in ech:"},{"line_number":66,"context_line":"        raise ValueError(\"escape in ECH value\")"},{"line_number":67,"context_line":"    elif len(ech.strip()) % 4 !\u003d 0:"},{"line_number":68,"context_line":"        raise ValueError(\"ECH value is not base64 string\")"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"e763c69a_85afaf73","line":67,"in_reply_to":"0258dd35_bf0442f6","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@base.DesignateRegistry.register"},{"line_number":97,"context_line":"class SVCB(Record):"},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    General-purpose service binding record type"},{"line_number":100,"context_line":"    Defined in: RFC9460"}],"source_content_type":"text/x-python","patch_set":29,"id":"fbb7b673_ce24ac82","line":97,"updated":"2025-08-27 21:55:06.000000000","message":"This doesn\u0027t support the arbitrary keys \"keyNNNNN\" format, but I think that is ok. It can be added in a future patch if it is needed.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"@base.DesignateRegistry.register"},{"line_number":97,"context_line":"class SVCB(Record):"},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":"    General-purpose service binding record type"},{"line_number":100,"context_line":"    Defined in: RFC9460"}],"source_content_type":"text/x-python","patch_set":29,"id":"a33a46ea_00648e91","line":97,"in_reply_to":"fbb7b673_ce24ac82","updated":"2025-08-28 04:58:42.000000000","message":"Let\u0027s add it later","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    params \u003d [\"alpn\", \"ipv4hint\", \"ipv6hint\","},{"line_number":104,"context_line":"              \"port\", \"ech\", \"echconfig\", \"no-default-alpn\","},{"line_number":105,"context_line":"              \"mandatory\", \"dohpath\"]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    svcb_params \u003d {\"alpn\": validate_alpn,"}],"source_content_type":"text/x-python","patch_set":29,"id":"bde4d0b2_543c2d3e","line":104,"updated":"2025-08-27 21:55:06.000000000","message":"Per IANA, \"echconfig\" is not a valid SvcParamKey:\nhttps://www.iana.org/assignments/dns-svcb/dns-svcb.xhtml","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":101,"context_line":"    \"\"\""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    params \u003d [\"alpn\", \"ipv4hint\", \"ipv6hint\","},{"line_number":104,"context_line":"              \"port\", \"ech\", \"echconfig\", \"no-default-alpn\","},{"line_number":105,"context_line":"              \"mandatory\", \"dohpath\"]"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    svcb_params \u003d {\"alpn\": validate_alpn,"}],"source_content_type":"text/x-python","patch_set":29,"id":"25686ae1_680d7337","line":104,"in_reply_to":"bde4d0b2_543c2d3e","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":109,"context_line":"                   \"ipv6hint\": validate_ipv6hint,"},{"line_number":110,"context_line":"                   \"port\": validate_port,"},{"line_number":111,"context_line":"                   \"ech\": validate_echconfig,"},{"line_number":112,"context_line":"                   \"echconfig\": validate_echconfig,"},{"line_number":113,"context_line":"                   \"mandatory\": validate_mandatory,"},{"line_number":114,"context_line":"                   \u0027dohpath\u0027: validate_doh,"},{"line_number":115,"context_line":"                   }"}],"source_content_type":"text/x-python","patch_set":29,"id":"42266ed3_49342613","line":112,"updated":"2025-08-27 21:55:06.000000000","message":"Same here, \"echconfig\" is invalid.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":109,"context_line":"                   \"ipv6hint\": validate_ipv6hint,"},{"line_number":110,"context_line":"                   \"port\": validate_port,"},{"line_number":111,"context_line":"                   \"ech\": validate_echconfig,"},{"line_number":112,"context_line":"                   \"echconfig\": validate_echconfig,"},{"line_number":113,"context_line":"                   \"mandatory\": validate_mandatory,"},{"line_number":114,"context_line":"                   \u0027dohpath\u0027: validate_doh,"},{"line_number":115,"context_line":"                   }"}],"source_content_type":"text/x-python","patch_set":29,"id":"dd4fc278_e7b6edf0","line":112,"in_reply_to":"42266ed3_49342613","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":179,"context_line":"                    self.ipv6hint \u003d \"\u003d\".join([param_name, param_value])"},{"line_number":180,"context_line":"                elif param_name \u003d\u003d \"mandatory\":"},{"line_number":181,"context_line":"                    self.mandatory \u003d \"\u003d\".join([param_name, param_value])"},{"line_number":182,"context_line":"                elif param_name in (\"ech\", \"echconfig\"):"},{"line_number":183,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":184,"context_line":"                elif param_name \u003d\u003d \u0027dohpath\u0027:"},{"line_number":185,"context_line":"                    self.dohpath \u003d \"\u003d\".join([param_name, param_value])"}],"source_content_type":"text/x-python","patch_set":29,"id":"c6f1fa5b_b39756d0","line":182,"updated":"2025-08-27 21:55:06.000000000","message":"\"echconfig\" is invalid","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":179,"context_line":"                    self.ipv6hint \u003d \"\u003d\".join([param_name, param_value])"},{"line_number":180,"context_line":"                elif param_name \u003d\u003d \"mandatory\":"},{"line_number":181,"context_line":"                    self.mandatory \u003d \"\u003d\".join([param_name, param_value])"},{"line_number":182,"context_line":"                elif param_name in (\"ech\", \"echconfig\"):"},{"line_number":183,"context_line":"                    self.ech \u003d \"\u003d\".join([\"ech\", param_value])"},{"line_number":184,"context_line":"                elif param_name \u003d\u003d \u0027dohpath\u0027:"},{"line_number":185,"context_line":"                    self.dohpath \u003d \"\u003d\".join([param_name, param_value])"}],"source_content_type":"text/x-python","patch_set":29,"id":"d2d0ed0a_23c1d777","line":182,"in_reply_to":"c6f1fa5b_b39756d0","updated":"2025-08-28 04:58:42.000000000","message":"Fixed","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"}],"designate/tests/unit/objects/test_rrdata_svcb.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        alpn \u003d \"h3,h2,http/1.1\""},{"line_number":47,"context_line":"        port \u003d \"888\""},{"line_number":48,"context_line":"        target \u003d \"sample.example.org.\""},{"line_number":49,"context_line":"        svcb_record.from_string(f\u00271 {target} alpn\u003dh3,h2,http/1.1\u0027"},{"line_number":50,"context_line":"                                f\u0027 ipv4hint\u003d{ipv4hint} \u0027"},{"line_number":51,"context_line":"                                f\u0027ipv6hint\u003d{ipv6hint} port\u003d{port}\u0027"},{"line_number":52,"context_line":"                                f\u0027 dohpath\u003d/\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"d9d2104e_143b0b80","line":49,"range":{"start_line":49,"start_character":50,"end_line":49,"end_character":64},"updated":"2025-08-06 10:46:41.000000000","message":"very minor, but we should use the alpn variable we defined","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        alpn \u003d \"h3,h2,http/1.1\""},{"line_number":47,"context_line":"        port \u003d \"888\""},{"line_number":48,"context_line":"        target \u003d \"sample.example.org.\""},{"line_number":49,"context_line":"        svcb_record.from_string(f\u00271 {target} alpn\u003dh3,h2,http/1.1\u0027"},{"line_number":50,"context_line":"                                f\u0027 ipv4hint\u003d{ipv4hint} \u0027"},{"line_number":51,"context_line":"                                f\u0027ipv6hint\u003d{ipv6hint} port\u003d{port}\u0027"},{"line_number":52,"context_line":"                                f\u0027 dohpath\u003d/\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"07bdcc55_843a8a60","line":49,"range":{"start_line":49,"start_character":50,"end_line":49,"end_character":64},"in_reply_to":"7922aa86_e1f432c9","updated":"2025-08-14 14:39:06.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":46,"context_line":"        alpn \u003d \"h3,h2,http/1.1\""},{"line_number":47,"context_line":"        port \u003d \"888\""},{"line_number":48,"context_line":"        target \u003d \"sample.example.org.\""},{"line_number":49,"context_line":"        svcb_record.from_string(f\u00271 {target} alpn\u003dh3,h2,http/1.1\u0027"},{"line_number":50,"context_line":"                                f\u0027 ipv4hint\u003d{ipv4hint} \u0027"},{"line_number":51,"context_line":"                                f\u0027ipv6hint\u003d{ipv6hint} port\u003d{port}\u0027"},{"line_number":52,"context_line":"                                f\u0027 dohpath\u003d/\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"7922aa86_e1f432c9","line":49,"range":{"start_line":49,"start_character":50,"end_line":49,"end_character":64},"in_reply_to":"d9d2104e_143b0b80","updated":"2025-08-06 12:09:54.000000000","message":"Fixed","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_doh(self):"},{"line_number":177,"context_line":"        doh \u003d 1"},{"line_number":178,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":179,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027SVCB\u0027,"},{"line_number":180,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"ef9f4f07_855b56e1","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":15},"updated":"2025-08-06 10:46:41.000000000","message":"That should have raised an error. Should we have a validate_dohpath as well?","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_doh(self):"},{"line_number":177,"context_line":"        doh \u003d 1"},{"line_number":178,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":179,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027SVCB\u0027,"},{"line_number":180,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"2419887d_58f49efe","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":15},"in_reply_to":"9ccc3c81_1c8873b4","updated":"2025-08-14 14:39:06.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":174,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_doh(self):"},{"line_number":177,"context_line":"        doh \u003d 1"},{"line_number":178,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":179,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027SVCB\u0027,"},{"line_number":180,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"9ccc3c81_1c8873b4","line":177,"range":{"start_line":177,"start_character":8,"end_line":177,"end_character":15},"in_reply_to":"ef9f4f07_855b56e1","updated":"2025-08-06 12:09:54.000000000","message":"Validation added","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cfb0525f2cbd4da04aba5d52a10cc708d40e90dd","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_no_test(self):"},{"line_number":222,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":223,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027HTTPS\u0027,"},{"line_number":224,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"a0eeda71_727ca5c4","line":221,"updated":"2025-08-06 10:46:41.000000000","message":"I didn\u0027t understand the test, I see the ech has //, and that the record type is HTTPS, and it is called test_no_test","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"cc4e6e737e0899c02bd10dc80803d6db01808ea2","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_no_test(self):"},{"line_number":222,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":223,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027HTTPS\u0027,"},{"line_number":224,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"a19fe35c_625bb47d","line":221,"in_reply_to":"0667c3cf_bd586bf3","updated":"2025-08-14 14:39:06.000000000","message":"Done","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"138776851c5be5dcb7c6173b1c9e1c5910702212","unresolved":true,"context_lines":[{"line_number":218,"context_line":"        )"},{"line_number":219,"context_line":"        self.assertRaises(InvalidObject, recordset.validate)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"    def test_no_test(self):"},{"line_number":222,"context_line":"        recordset \u003d objects.RecordSet("},{"line_number":223,"context_line":"            name\u003d\u0027example.org.\u0027, type\u003d\u0027HTTPS\u0027,"},{"line_number":224,"context_line":"            records\u003dobjects.RecordList(objects\u003d["}],"source_content_type":"text/x-python","patch_set":21,"id":"0667c3cf_bd586bf3","line":221,"in_reply_to":"a0eeda71_727ca5c4","updated":"2025-08-06 12:09:54.000000000","message":"Test name updated","commit_id":"380639d468f81c395472fa78d528d3b2f4131a45"}],"releasenotes/notes/RFC9460_svcb_records-f828412479ee.yaml":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c9927bc3ffa360d303aafd53e5c616270ce9c9c2","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    SVCB and HTTPS recordset type have been added. All users should be able to use this type"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"d0180666_0a1c055d","line":1,"updated":"2025-08-27 21:55:06.000000000","message":"I think we should add back the others section and mention the issue with BIND9 older than 9.21.8 here and the \"keyNNNN\" representation.\n\nWe could also include a \"issues\" section for the missing \"keyNNNN\" representation support.","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"},{"author":{"_account_id":33685,"name":"Mikhail","display_name":"Mikhail Samoylov","email":"mikhailsamoiloff@gmail.com","username":"mikhails"},"change_message_id":"a7979fa8f0ab70af26cb2c68177c26f500e97f75","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    SVCB and HTTPS recordset type have been added. All users should be able to use this type"}],"source_content_type":"text/x-yaml","patch_set":29,"id":"b66a9844_25fc38b3","line":1,"in_reply_to":"d0180666_0a1c055d","updated":"2025-08-28 04:58:42.000000000","message":"Updated","commit_id":"363fca67cb583969d68e4f6630b210a9cb13d857"}]}
