)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"fddd9d3f2dd057547c2b00a8c1a70f35626eab58","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8016a9f1_c6573b58","updated":"2025-04-02 08:26:45.000000000","message":"recheck https://review.opendev.org/c/openstack/designate/+/946058 fixed the gates","commit_id":"ceb7216a5e402ac2131d4fe004eb177172f243ff"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f7abf0a19646b66b013855f86a09e90121108f48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"bfc00e80_dae8cec2","updated":"2025-04-03 17:05:57.000000000","message":"This change is in place because we couldn\u0027t use nameservers from tempest.conf for multi-pool testing, I\u0027ve added a few comment + I still think that the proper logic for test_create_zones is: https://review.opendev.org/c/openstack/designate-tempest-plugin/+/945081/comment/3ba839ad_639b0c53/\nThanks Omer!","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"d1f32322007439c2a4c1291c5ef0721ae8e67b20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8c3dd0b2_8d00cc48","updated":"2025-04-04 09:57:42.000000000","message":"thanks for reviewing this patch Arkady. This patch is ready to receive additional feedback","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"55fe5671220d2cd2872fc65dc9e4c7712e2d2d9e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"90da71d2_dd8aa34f","updated":"2025-11-25 09:55:59.000000000","message":"For \"test_create_zone_per_pool\", please add a negative assertion (e.g., found\u003dFalse). Currently, we only check the record exists on the correct BIND server. We must also verify it was NOT created on BIND servers from other pools to validate cross-pool isolation and integrity. The test must ensure the RecordSet is NOT found on BIND servers belonging to any other pool.","commit_id":"9261dfeca2f5b6dd16b8f91136d34763844e585f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"217e6459c212609c2b21d1bc800a0678d55ac80e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3150c370_7456290e","updated":"2025-11-24 14:33:19.000000000","message":"recheck failure does not seem related","commit_id":"9261dfeca2f5b6dd16b8f91136d34763844e585f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"ddb3997c3a76e71b011375d271952b0391100860","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"de0802c0_47925f73","in_reply_to":"90da71d2_dd8aa34f","updated":"2026-02-25 15:39:08.000000000","message":"Done","commit_id":"9261dfeca2f5b6dd16b8f91136d34763844e585f"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"4e997f52fe453c8712236c0ee237c044b0bfe721","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a00ad612_84324d5b","updated":"2026-04-07 09:19:53.000000000","message":"I think we can merge this one, it has been about a year on review","commit_id":"0396aded8c32977273c6dd8d888a12e3c1e4cad6"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"676acc29a096ac3f854d857cfe1e49b0ee52b58f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"eca57bdb_0917311e","updated":"2026-02-26 09:51:53.000000000","message":"recheck neutron-tempest-plugin-designate-scenario is fixed now","commit_id":"0396aded8c32977273c6dd8d888a12e3c1e4cad6"}],"designate_tempest_plugin/tests/scenario/v2/test_designate_multipool.py":[{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fb26ff9472a6b4a6516b7b6a50065109a34d314d","unresolved":true,"context_lines":[{"line_number":300,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":302,"context_line":"    @decorators.idempotent_id(\u0027c0648f53-4114-45bd-8792-462a82f69d32\u0027)"},{"line_number":303,"context_line":"    def test_create_zone_per_pool(self):"},{"line_number":304,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("}],"source_content_type":"text/x-python","patch_set":1,"id":"3ba839ad_639b0c53","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":40},"updated":"2025-03-26 14:28:46.000000000","message":"I\u0027d improve the test logic by using four assertions for backend checks as follows:\n\nOnce first A type recordset is created and ACTIVE\n1 A type exists on Pool1 backend\n2 A type doesn\u0027t exist on Pool2 backend\n\nOnce second A type recordset is created and ACTIVE\n3 A type exists on Pool2 backend\n4 A type doesn\u0027t exist on Pool3 backend","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"35607e00660f01ea083dd5bc692d7e32454cfa86","unresolved":true,"context_lines":[{"line_number":300,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":302,"context_line":"    @decorators.idempotent_id(\u0027c0648f53-4114-45bd-8792-462a82f69d32\u0027)"},{"line_number":303,"context_line":"    def test_create_zone_per_pool(self):"},{"line_number":304,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("}],"source_content_type":"text/x-python","patch_set":1,"id":"18f3f756_2734a1b0","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":40},"in_reply_to":"1ef9d557_4cc5c04d","updated":"2025-04-04 06:00:01.000000000","message":"Maybe I wasn\u0027t clear.\nMy point was checking the opposite, it means that the A record somehow was created on the second bind too (shouldn\u0027t happen, otherwise it\u0027s a bug)\nI didn\u0027t say that pool stores recordypes, bind that serves this pool does.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8ebeb7f28b76e8d6518999a4cfc185d44dbabcda","unresolved":true,"context_lines":[{"line_number":300,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":302,"context_line":"    @decorators.idempotent_id(\u0027c0648f53-4114-45bd-8792-462a82f69d32\u0027)"},{"line_number":303,"context_line":"    def test_create_zone_per_pool(self):"},{"line_number":304,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("}],"source_content_type":"text/x-python","patch_set":1,"id":"7f0fc1f6_8c00eb26","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":40},"in_reply_to":"3ba839ad_639b0c53","updated":"2025-04-01 14:17:46.000000000","message":"The A record is not stored in the pools. I think modifying the dig command to query the A record is good enough. But obviously I am open to any additional feedback from reviewers.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54f4ae1df490b07a1959e90ef4fe1448de03da0","unresolved":false,"context_lines":[{"line_number":300,"context_line":"    @decorators.attr(type\u003d\u0027smoke\u0027)"},{"line_number":301,"context_line":"    @decorators.attr(type\u003d\u0027slow\u0027)"},{"line_number":302,"context_line":"    @decorators.idempotent_id(\u0027c0648f53-4114-45bd-8792-462a82f69d32\u0027)"},{"line_number":303,"context_line":"    def test_create_zone_per_pool(self):"},{"line_number":304,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("}],"source_content_type":"text/x-python","patch_set":1,"id":"1ef9d557_4cc5c04d","line":303,"range":{"start_line":303,"start_character":0,"end_line":303,"end_character":40},"in_reply_to":"7f0fc1f6_8c00eb26","updated":"2025-04-03 18:00:49.000000000","message":"Done","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fb26ff9472a6b4a6516b7b6a50065109a34d314d","unresolved":true,"context_lines":[{"line_number":307,"context_line":"            name\u003d\"create_zones_multipool-\","},{"line_number":308,"context_line":"            suffix\u003dself.tld_name)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        zone1 \u003d self.admin_zones_client.create_zone("},{"line_number":311,"context_line":"            name\u003df\"{zone1_name}\","},{"line_number":312,"context_line":"            attributes\u003d{\u0027pool_id\u0027: f\u0027{self.multipools[0].id}\u0027})[1]"},{"line_number":313,"context_line":"        self.addCleanup(self.wait_zone_delete,"}],"source_content_type":"text/x-python","patch_set":1,"id":"2367b0bb_56d1829d","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":52},"updated":"2025-03-26 14:28:46.000000000","message":"You can just add \"wait_until\u003dconst.ACTIVE\" here it will do the job, so the waiter coming latter is not necessary.\nSame in L321","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8ebeb7f28b76e8d6518999a4cfc185d44dbabcda","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            name\u003d\"create_zones_multipool-\","},{"line_number":308,"context_line":"            suffix\u003dself.tld_name)"},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"        zone1 \u003d self.admin_zones_client.create_zone("},{"line_number":311,"context_line":"            name\u003df\"{zone1_name}\","},{"line_number":312,"context_line":"            attributes\u003d{\u0027pool_id\u0027: f\u0027{self.multipools[0].id}\u0027})[1]"},{"line_number":313,"context_line":"        self.addCleanup(self.wait_zone_delete,"}],"source_content_type":"text/x-python","patch_set":1,"id":"26b6d291_931154d5","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":52},"in_reply_to":"2367b0bb_56d1829d","updated":"2025-04-01 14:17:46.000000000","message":"thanks, added.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fb26ff9472a6b4a6516b7b6a50065109a34d314d","unresolved":true,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # wait for both of them to be active"},{"line_number":332,"context_line":"        for zone in [zone1, zone2]:"},{"line_number":333,"context_line":"            waiters.wait_for_zone_status("},{"line_number":334,"context_line":"                self.admin_zones_client, zone[\u0027id\u0027], const.ACTIVE)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"            # Create a type A recordset for each zone"},{"line_number":337,"context_line":"            recordset_data \u003d dns_data_utils.rand_recordset_data("}],"source_content_type":"text/x-python","patch_set":1,"id":"7547d3f0_6239adec","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":66},"updated":"2025-03-26 14:28:46.000000000","message":"See my comment in L310. \nBy using \"wait_until\u003dconst.ACTIVE\" on create, you can remove this waiter.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8ebeb7f28b76e8d6518999a4cfc185d44dbabcda","unresolved":false,"context_lines":[{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # wait for both of them to be active"},{"line_number":332,"context_line":"        for zone in [zone1, zone2]:"},{"line_number":333,"context_line":"            waiters.wait_for_zone_status("},{"line_number":334,"context_line":"                self.admin_zones_client, zone[\u0027id\u0027], const.ACTIVE)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"            # Create a type A recordset for each zone"},{"line_number":337,"context_line":"            recordset_data \u003d dns_data_utils.rand_recordset_data("}],"source_content_type":"text/x-python","patch_set":1,"id":"2c0942b0_a199e7d5","line":334,"range":{"start_line":333,"start_character":0,"end_line":334,"end_character":66},"in_reply_to":"7547d3f0_6239adec","updated":"2025-04-01 14:17:46.000000000","message":"Done","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fb26ff9472a6b4a6516b7b6a50065109a34d314d","unresolved":true,"context_lines":[{"line_number":343,"context_line":"                zone[\u0027id\u0027], body[\u0027id\u0027])"},{"line_number":344,"context_line":"            self.assertEqual(const.PENDING, body[\u0027status\u0027],"},{"line_number":345,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":346,"context_line":"            waiters.wait_for_recordset_status("},{"line_number":347,"context_line":"                self.rec_client, zone[\u0027id\u0027],"},{"line_number":348,"context_line":"                body[\u0027id\u0027], const.ACTIVE)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":351,"context_line":"            for nameserver in self.multipools[zone[\u0027pool_id\u0027]].nameservers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8b46abca_edb4f895","line":348,"range":{"start_line":346,"start_character":0,"end_line":348,"end_character":41},"updated":"2025-03-26 14:28:46.000000000","message":"You can also use \"wait_until\u003dconst.ACTIVE\" for \"recordset_create\", so you can remove this lines once it\u0027s done there.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8ebeb7f28b76e8d6518999a4cfc185d44dbabcda","unresolved":false,"context_lines":[{"line_number":343,"context_line":"                zone[\u0027id\u0027], body[\u0027id\u0027])"},{"line_number":344,"context_line":"            self.assertEqual(const.PENDING, body[\u0027status\u0027],"},{"line_number":345,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":346,"context_line":"            waiters.wait_for_recordset_status("},{"line_number":347,"context_line":"                self.rec_client, zone[\u0027id\u0027],"},{"line_number":348,"context_line":"                body[\u0027id\u0027], const.ACTIVE)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":351,"context_line":"            for nameserver in self.multipools[zone[\u0027pool_id\u0027]].nameservers:"}],"source_content_type":"text/x-python","patch_set":1,"id":"cb2945ab_ac552e6b","line":348,"range":{"start_line":346,"start_character":0,"end_line":348,"end_character":41},"in_reply_to":"8b46abca_edb4f895","updated":"2025-04-01 14:17:46.000000000","message":"Done","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"fb26ff9472a6b4a6516b7b6a50065109a34d314d","unresolved":true,"context_lines":[{"line_number":351,"context_line":"            for nameserver in self.multipools[zone[\u0027pool_id\u0027]].nameservers:"},{"line_number":352,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":353,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":354,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":355,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":356,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":357,"context_line":"                )"},{"line_number":358,"context_line":"                a_record \u003d str(ns_obj.query(zone[\u0027name\u0027], rdatatype\u003d\u0027A\u0027))"},{"line_number":359,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record,"},{"line_number":360,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":361,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":362,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":363,"context_line":"                              f\u0027NOERROR. Got response: {a_record}\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"556ef7e1_a935bd08","line":363,"range":{"start_line":354,"start_character":0,"end_line":363,"end_character":67},"updated":"2025-03-26 14:28:46.000000000","message":"This check is incorrect since you are querying a zone instead of recordset L358.\nTherefore received ;ANSWER section is empty and NOERROR is less relevant.\nTest assertion must be based on ;ANSWER section. (No ;ANSWER indicates problem)\nHere is what you get for \"a_record\" (No lines under ;ANSWER means empty answer)\n\nid 10747\nopcode QUERY\nrcode NOERROR\nflags QR AA RD\n;QUESTION\nrand-create_zones_multipool--1490665634.rand-ZonesTest-1806032199.test. IN A\n;ANSWER\n;AUTHORITY\nrand-create_zones_multipool--1490665634.rand-ZonesTest-1806032199.test. 3600 IN SOA ns1.devstack.org. example.rand-2052580671.test. 1742996288 3598 600 86400 3600\n;ADDITIONAL\n\nInstead of \"SingleQueryClient\" you have to use \"QueryClient\"[1] + Waiter [2]\nThe last, once it generates response takes ;ANSWER section (r.answer) from \"dig\" response, I mean here: all_answers_good \u003d all(r.answer for r in responses)\n\n\n[1] - https://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/services/dns/query/query_client.py#L23C7-L23C18 \n\n[2] - https://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/common/waiters.py#L232 \n\nNote, \"query_client\" usage is not so clear. I was facing the same problem as you actually while working on my patch \"Move zone API\". Also I\u0027ve proposed this patch: \nhttps://review.opendev.org/c/openstack/designate-tempest-plugin/+/945309","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"8ebeb7f28b76e8d6518999a4cfc185d44dbabcda","unresolved":false,"context_lines":[{"line_number":351,"context_line":"            for nameserver in self.multipools[zone[\u0027pool_id\u0027]].nameservers:"},{"line_number":352,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":353,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":354,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":355,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":356,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":357,"context_line":"                )"},{"line_number":358,"context_line":"                a_record \u003d str(ns_obj.query(zone[\u0027name\u0027], rdatatype\u003d\u0027A\u0027))"},{"line_number":359,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record,"},{"line_number":360,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":361,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":362,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":363,"context_line":"                              f\u0027NOERROR. Got response: {a_record}\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa53241_01e3317b","line":363,"range":{"start_line":354,"start_character":0,"end_line":363,"end_character":67},"in_reply_to":"556ef7e1_a935bd08","updated":"2025-04-01 14:17:46.000000000","message":"Thanks for adding this comment. I used zone[\u0027name\u0027] instead of rrset[\u0027name\u0027]. I will change it and add an assertion statement for the A record.","commit_id":"09aecd579eea559eda49555c1de48561d7ecfa41"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f7abf0a19646b66b013855f86a09e90121108f48","unresolved":true,"context_lines":[{"line_number":325,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"0345cc77_66632edb","line":328,"range":{"start_line":328,"start_character":23,"end_line":328,"end_character":46},"updated":"2025-04-03 17:05:57.000000000","message":"\"_get_nameservers_in_use\" may return None in case of failure, means \"TypeError: \u0027NoneType\u0027 object is not iterable\" will be raised here.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54f4ae1df490b07a1959e90ef4fe1448de03da0","unresolved":true,"context_lines":[{"line_number":325,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3dc6cab3_cdd4226a","line":328,"range":{"start_line":328,"start_character":23,"end_line":328,"end_character":46},"in_reply_to":"0345cc77_66632edb","updated":"2025-04-03 18:00:49.000000000","message":"If we can\u0027t get the nameservers, I would like this test to either fail or be skipped. I can add a skipper here","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"1676548b2f4277a5a367384a424cc1b0ed5f4653","unresolved":false,"context_lines":[{"line_number":325,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f2e09d54_529308ed","line":328,"range":{"start_line":328,"start_character":23,"end_line":328,"end_character":46},"in_reply_to":"25dfab6f_f1ea6fb2","updated":"2025-11-21 15:29:25.000000000","message":"I added a skipper check, if nameservers_list is empty, I am skipping the test.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"35607e00660f01ea083dd5bc692d7e32454cfa86","unresolved":true,"context_lines":[{"line_number":325,"context_line":"        LOG.info(\u0027Create 2 zones, one per pool\u0027)"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"25dfab6f_f1ea6fb2","line":328,"range":{"start_line":328,"start_character":23,"end_line":328,"end_character":46},"in_reply_to":"3dc6cab3_cdd4226a","updated":"2025-04-04 06:00:01.000000000","message":"Skip with appropriate message sounds good to me.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f7abf0a19646b66b013855f86a09e90121108f48","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        self.assertGreaterEqual(len(pool_ids), 2,"},{"line_number":333,"context_line":"                                \"At least 2 pools are required for this test\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("},{"line_number":336,"context_line":"            name\u003d\"create_zones_multipool-\","}],"source_content_type":"text/x-python","patch_set":4,"id":"9935ca2b_11d9fe44","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":78},"updated":"2025-04-03 17:05:57.000000000","message":"Minor\n\nOnce you got here (assuming L328 is fixed) \"_get_nameservers_in_use\" result is dictionary, so you can change the order of lines here (by using len(dictionary)).\nIt will save some execution time on extracting pool_ids if there are less than 2 items(pools) in returned dictionary.\n\nself.assertGreaterEqual(len(nameservers_by_pool), 2,\n                                \"At least 2 pools are required for this test\")\npool_ids \u003d list(nameservers_by_pool.keys())","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"1676548b2f4277a5a367384a424cc1b0ed5f4653","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        self.assertGreaterEqual(len(pool_ids), 2,"},{"line_number":333,"context_line":"                                \"At least 2 pools are required for this test\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("},{"line_number":336,"context_line":"            name\u003d\"create_zones_multipool-\","}],"source_content_type":"text/x-python","patch_set":4,"id":"2bb448a1_0d77eb8b","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":78},"in_reply_to":"0eb1f664_f5a16fe2","updated":"2025-11-21 15:29:25.000000000","message":"Done","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54f4ae1df490b07a1959e90ef4fe1448de03da0","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        self.assertGreaterEqual(len(pool_ids), 2,"},{"line_number":333,"context_line":"                                \"At least 2 pools are required for this test\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("},{"line_number":336,"context_line":"            name\u003d\"create_zones_multipool-\","}],"source_content_type":"text/x-python","patch_set":4,"id":"cc9c0c8f_76ca7955","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":78},"in_reply_to":"9935ca2b_11d9fe44","updated":"2025-04-03 18:00:49.000000000","message":"that\u0027s very minor indeed","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"35607e00660f01ea083dd5bc692d7e32454cfa86","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        nameservers_by_pool \u003d defaultdict(list)"},{"line_number":328,"context_line":"        for ns in self._get_nameservers_in_use():"},{"line_number":329,"context_line":"            nameservers_by_pool[ns[\u0027pool_id\u0027]].append(ns)"},{"line_number":330,"context_line":"        pool_ids \u003d list(nameservers_by_pool.keys())"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        self.assertGreaterEqual(len(pool_ids), 2,"},{"line_number":333,"context_line":"                                \"At least 2 pools are required for this test\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"        zone1_name \u003d dns_data_utils.rand_zone_name("},{"line_number":336,"context_line":"            name\u003d\"create_zones_multipool-\","}],"source_content_type":"text/x-python","patch_set":4,"id":"0eb1f664_f5a16fe2","line":333,"range":{"start_line":330,"start_character":0,"end_line":333,"end_character":78},"in_reply_to":"cc9c0c8f_76ca7955","updated":"2025-04-04 06:00:01.000000000","message":"Yep as I\u0027ve mentioned in my comment, nit but still relevant.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f7abf0a19646b66b013855f86a09e90121108f48","unresolved":true,"context_lines":[{"line_number":373,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":376,"context_line":"            pool_nameservers \u003d nameservers_by_pool.get(zone[\u0027pool_id\u0027], [])"},{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("}],"source_content_type":"text/x-python","patch_set":4,"id":"c38ed5f5_c9f8df4a","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":47},"updated":"2025-04-03 17:05:57.000000000","message":"This is nice, but I think that in case of failure it may add some difficulties on debugging while trying to understand why returned list was empty, therefore removing L376 and  using \"nameservers_by_pool\" as is here, makes sense to me.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54f4ae1df490b07a1959e90ef4fe1448de03da0","unresolved":true,"context_lines":[{"line_number":373,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":376,"context_line":"            pool_nameservers \u003d nameservers_by_pool.get(zone[\u0027pool_id\u0027], [])"},{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("}],"source_content_type":"text/x-python","patch_set":4,"id":"d294b943_51b48831","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":47},"in_reply_to":"c38ed5f5_c9f8df4a","updated":"2025-04-03 18:00:49.000000000","message":"what kind of failures are you referring?","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"1676548b2f4277a5a367384a424cc1b0ed5f4653","unresolved":false,"context_lines":[{"line_number":373,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":376,"context_line":"            pool_nameservers \u003d nameservers_by_pool.get(zone[\u0027pool_id\u0027], [])"},{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("}],"source_content_type":"text/x-python","patch_set":4,"id":"ae06e1e4_d9e11b88","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":47},"in_reply_to":"c8178c7c_86e18d99","updated":"2025-11-21 15:29:25.000000000","message":"Done","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"35607e00660f01ea083dd5bc692d7e32454cfa86","unresolved":true,"context_lines":[{"line_number":373,"context_line":"                            \u0027Failed, expected status is PENDING\u0027)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"            # Use the nameservers from the pool configuration to query"},{"line_number":376,"context_line":"            pool_nameservers \u003d nameservers_by_pool.get(zone[\u0027pool_id\u0027], [])"},{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("}],"source_content_type":"text/x-python","patch_set":4,"id":"c8178c7c_86e18d99","line":377,"range":{"start_line":376,"start_character":0,"end_line":377,"end_character":47},"in_reply_to":"d294b943_51b48831","updated":"2025-04-04 06:00:01.000000000","message":"L376 will return an empty list if for some resason \"pool_id\" key wasn\u0027t found.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"f7abf0a19646b66b013855f86a09e90121108f48","unresolved":true,"context_lines":[{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":381,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":382,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":383,"context_line":"                )"},{"line_number":384,"context_line":"                a_record_response \u003d str(ns_obj.query(rrset[\u0027name\u0027],"},{"line_number":385,"context_line":"                                                     rdatatype\u003d\u0027A\u0027))"},{"line_number":386,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record_response,"},{"line_number":387,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":388,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":389,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":390,"context_line":"                              f\u0027NOERROR. Got response: {a_record_response}\u0027)"},{"line_number":391,"context_line":"                for ip in rrset[\u0027records\u0027]:"},{"line_number":392,"context_line":"                    self.assertIn("},{"line_number":393,"context_line":"                        f\u0027IN A {ip}\u0027, a_record_response,"},{"line_number":394,"context_line":"                        f\u0027DNS query response does not contain expected IP\u0027"},{"line_number":395,"context_line":"                        f\u0027{ip}. Got response: {a_record_response}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ce3d9ba_eddda655","line":395,"range":{"start_line":380,"start_character":0,"end_line":395,"end_character":67},"updated":"2025-04-03 17:05:57.000000000","message":"All this stuff is less relevant in term of this particular test I think and here is why:\n\n1 - This test should be concentrated on multi pool functionality validation and it\u0027s main goal/idea is to ensure that the recordset type A goes into the proper bind only.\n\n2 - This code involves \"records\" field validation, that is kind of \"extra\" here and in fact we do have an existing tests for that purpose in test-recordsets.py. See this method: https://github.com/openstack/designate-tempest-plugin/blob/master/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py#L77 \n\nSo I think that this whole piece of code can be simply replaced with:\nquery_client \u003d QueryClient(nameserver)\nwaiters.wait_for_query(query_client, recordset_data[\u0027name\u0027], \u0027A\u0027, found\u003dFalse)\n\n\nBTW - if you think that query_client.py is missing some functionality and that checks for :\"records\", \"rcode\"... are needed,then consider proposing a new patch for that client.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":28609,"name":"Arkady Shtempler","email":"ashtempl@redhat.com","username":"ashtempl"},"change_message_id":"35607e00660f01ea083dd5bc692d7e32454cfa86","unresolved":true,"context_lines":[{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":381,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":382,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":383,"context_line":"                )"},{"line_number":384,"context_line":"                a_record_response \u003d str(ns_obj.query(rrset[\u0027name\u0027],"},{"line_number":385,"context_line":"                                                     rdatatype\u003d\u0027A\u0027))"},{"line_number":386,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record_response,"},{"line_number":387,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":388,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":389,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":390,"context_line":"                              f\u0027NOERROR. Got response: {a_record_response}\u0027)"},{"line_number":391,"context_line":"                for ip in rrset[\u0027records\u0027]:"},{"line_number":392,"context_line":"                    self.assertIn("},{"line_number":393,"context_line":"                        f\u0027IN A {ip}\u0027, a_record_response,"},{"line_number":394,"context_line":"                        f\u0027DNS query response does not contain expected IP\u0027"},{"line_number":395,"context_line":"                        f\u0027{ip}. Got response: {a_record_response}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a872a9ad_97976515","line":395,"range":{"start_line":380,"start_character":0,"end_line":395,"end_character":67},"in_reply_to":"2fc1f936_5ee9bc2f","updated":"2025-04-04 06:00:01.000000000","message":"Yes, but waiter checks \";ANSWER\" section and this is absolutely enough here, we don\u0027t need more than that it terms of testing multi pool logic. As I\u0027ve mentioned  \"records\" validation (different kind of testing) is done in another file for all supported recordset types.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"a54f4ae1df490b07a1959e90ef4fe1448de03da0","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":381,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":382,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":383,"context_line":"                )"},{"line_number":384,"context_line":"                a_record_response \u003d str(ns_obj.query(rrset[\u0027name\u0027],"},{"line_number":385,"context_line":"                                                     rdatatype\u003d\u0027A\u0027))"},{"line_number":386,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record_response,"},{"line_number":387,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":388,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":389,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":390,"context_line":"                              f\u0027NOERROR. Got response: {a_record_response}\u0027)"},{"line_number":391,"context_line":"                for ip in rrset[\u0027records\u0027]:"},{"line_number":392,"context_line":"                    self.assertIn("},{"line_number":393,"context_line":"                        f\u0027IN A {ip}\u0027, a_record_response,"},{"line_number":394,"context_line":"                        f\u0027DNS query response does not contain expected IP\u0027"},{"line_number":395,"context_line":"                        f\u0027{ip}. Got response: {a_record_response}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"2fc1f936_5ee9bc2f","line":395,"range":{"start_line":380,"start_character":0,"end_line":395,"end_character":67},"in_reply_to":"9ce3d9ba_eddda655","updated":"2025-04-03 18:00:49.000000000","message":"I validate the A record\u0027s answer because wait_for_query doesn\u0027t do that.\n\nI don\u0027t think a waiter is necessary here. The test passes without that waiter. I wonder if it is necessary in the other tests where it is used.\n\nbtw, isn\u0027t a found\u003dFalse will validate all of the answers are empty? I don\u0027t want to add any additional waiter logic overhead here. I would prefer to focus on the relevant functionality testing here.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"1676548b2f4277a5a367384a424cc1b0ed5f4653","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            for nameserver in pool_nameservers:"},{"line_number":378,"context_line":"                ns_address \u003d nameserver[\u0027host\u0027]"},{"line_number":379,"context_line":"                ns_port \u003d nameserver[\u0027port\u0027]"},{"line_number":380,"context_line":"                ns_obj \u003d SingleQueryClient("},{"line_number":381,"context_line":"                    nameserver\u003df\u0027{ns_address}:{ns_port}\u0027,"},{"line_number":382,"context_line":"                    query_timeout\u003dconfig.CONF.dns.query_timeout,"},{"line_number":383,"context_line":"                )"},{"line_number":384,"context_line":"                a_record_response \u003d str(ns_obj.query(rrset[\u0027name\u0027],"},{"line_number":385,"context_line":"                                                     rdatatype\u003d\u0027A\u0027))"},{"line_number":386,"context_line":"                self.assertIn(\u0027rcode NOERROR\u0027, a_record_response,"},{"line_number":387,"context_line":"                              f\u0027DNS query to nameserver {ns_address}:{ns_port}\u0027"},{"line_number":388,"context_line":"                              f\u0027 for zone {zone[\"name\"]} in pool \u0027"},{"line_number":389,"context_line":"                              f\u0027{zone[\"pool_id\"]} did not return \u0027"},{"line_number":390,"context_line":"                              f\u0027NOERROR. Got response: {a_record_response}\u0027)"},{"line_number":391,"context_line":"                for ip in rrset[\u0027records\u0027]:"},{"line_number":392,"context_line":"                    self.assertIn("},{"line_number":393,"context_line":"                        f\u0027IN A {ip}\u0027, a_record_response,"},{"line_number":394,"context_line":"                        f\u0027DNS query response does not contain expected IP\u0027"},{"line_number":395,"context_line":"                        f\u0027{ip}. Got response: {a_record_response}\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"967df577_60ca7ecb","line":395,"range":{"start_line":380,"start_character":0,"end_line":395,"end_character":67},"in_reply_to":"a872a9ad_97976515","updated":"2025-11-21 15:29:25.000000000","message":"Although I don\u0027t think it is necessary, I am ok with using the waiter and QueryClient instead of SingleQueryClient.","commit_id":"6acd3e73da1cd7ab34b2369ecf29a2bf107f9874"}]}
