)]}'
{"id":"openstack%2Fdesignate~991683","triplet_id":"openstack%2Fdesignate~master~Ie4fd310c3bfb50e5a70a4f50471d73ca9846fe9e","project":"openstack/designate","branch":"master","topic":"unmanaged-ns-records","attention_set":{},"removed_from_attention_set":{"38653":{"account":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"last_update":"2026-06-04 19:46:02.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"Ie4fd310c3bfb50e5a70a4f50471d73ca9846fe9e","subject":"Allow zone owners to manage the apex NS recordset","status":"ABANDONED","created":"2026-06-04 15:27:28.000000000","updated":"2026-06-04 19:46:02.000000000","total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"f87056c4a47cfaba64af7b7e6b624bbba45d9e01","_number":991683,"virtual_id_number":991683,"owner":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-06-04 18:05:56.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Review-Priority":{"all":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-04 18:05:56.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"}],"messages":[{"id":"eee8803d93d36cf6590bd32097f916a8dea356c7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"date":"2026-06-04 15:27:28.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"5468a1afb4a38d8cfa18095b0e4deb75842795d7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"date":"2026-06-04 16:36:35.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6a8d27a95cbfe3e8468d4ecaed72affe8265652c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-04 18:05:56.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/dc03ec4cf9ac473f88ccd16ffb6a5ef0\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/487de6e8a8684bd5bc825e658079ea5c : FAILURE in 50m 15s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/f268fd4091924bdcbd9d3fb3cd7cbbf7 : FAILURE in 53m 54s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/733e990b5e25416c910697c492b23237 : FAILURE in 42m 34s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/cb472a2787e54c2ca6a02825ec1cfc82 : SUCCESS in 33m 15s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/d076fbc0e8674f438c1986c044310e02 : FAILURE in 57m 05s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/eb322a204e9c4a469f9ce2ddf1a78b93 : FAILURE in 1h 13m 05s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/da201ce0317f469381cfcad597217432 : FAILURE in 1h 14m 54s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/8d76999b98024223b86d2d06c8880f6a : FAILURE in 1h 12m 51s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/e32cb2f98b9942fc8fd21aade3a8879c : FAILURE in 51m 40s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/ff860b0890614b5c804bf19eb6e06677 : FAILURE in 37m 35s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/8ef859e8e7444467a05477aae1a37e6a : FAILURE in 51m 01s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/b7d648874ea7413da73aa6f835ff8b0c : SUCCESS in 6m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/53af2a76ce1a43b0b6a94a78b874e92c : SUCCESS in 2m 30s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/92393813e0534d438efe781a452c5197 : SUCCESS in 4m 24s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3c9f7f6eb12f45cdb0780ce11229eb07 : SUCCESS in 4m 23s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/92c54f598f594348b974eb1353af1ebb : SUCCESS in 5m 00s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/57bf2f74c30f482e82a61841cf59e793 : SUCCESS in 8m 32s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/2c999fd5833945c19649911e7a82bf86 : SUCCESS in 6m 04s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/179e3762052d4f329f4a7c27f8159554 : SUCCESS in 38m 18s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/19926d60911f4f1eb69edd19b095bdc5 : SUCCESS in 4m 43s","accounts_in_message":[],"_revision_number":2},{"id":"f87056c4a47cfaba64af7b7e6b624bbba45d9e01","tag":"autogenerated:gerrit:abandon","author":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"date":"2026-06-04 19:46:02.000000000","message":"Abandoned\n\na new one is proposed -\u003e 991726","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"954535c20317340404d4702eff2971ba4698a897","revisions":{"4c5b871e48599e805a567ca6081cef2bed278f3f":{"kind":"REWORK","_number":1,"created":"2026-06-04 15:27:28.000000000","uploader":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"ref":"refs/changes/83/991683/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/83/991683/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/83/991683/1"}}},"commit":{"parents":[{"commit":"3ac07a0d060bcdd6177bb864bdc9c294c8fce0e7","subject":"Merge \"Api-ref doc change to address sort_key default.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/3ac07a0d060bcdd6177bb864bdc9c294c8fce0e7"}]}],"author":{"name":"artpej","email":"sylvain.desgrais@gmail.com","date":"2026-06-04 15:07:06.000000000","tz":120},"committer":{"name":"artpej","email":"sylvain.desgrais@gmail.com","date":"2026-06-04 15:27:21.000000000","tz":120},"subject":"Allow zone owners to manage the apex NS recordset","message":"Allow zone owners to manage the apex NS recordset\n\nThe apex NS recordset was previously immutable for non-admin users.\nThis change introduces a hand-off model: the recordset starts as\nservice-managed (driven by the pool configuration), and transitions\nto user-managed on the first update by the zone owner.\n\nOnce user-managed:\n- Pool operations (pool update, zone move) no longer modify the NS\n  recordset for that zone.\n- The zone owner is responsible for keeping the NS records correct.\n\nThis is useful for Primary zones with external secondary nameservers\nthat are not part of the Designate pool, where the apex NS recordset\nmust list all authoritative servers.\n\nImplementation details:\n- POST on an existing apex NS recordset is treated as an upsert\n  (redirected to update) rather than returning 409 Conflict,\n  allowing IaC tools to declare the NS recordset without a prior\n  import step.\n- On first user update, the managed flag is cleared on all records\n  so that _add_ns/_delete_ns skip the zone going forward.\n- The SOA recordset remains non-editable.\n\nChange-Id: Ie4fd310c3bfb50e5a70a4f50471d73ca9846fe9e\nSigned-off-by: artpej \u003csylvain.desgrais@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/4c5b871e48599e805a567ca6081cef2bed278f3f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/4c5b871e48599e805a567ca6081cef2bed278f3f"}]},"branch":"refs/heads/master"},"954535c20317340404d4702eff2971ba4698a897":{"kind":"REWORK","_number":2,"created":"2026-06-04 16:36:35.000000000","uploader":{"_account_id":38653,"name":"Sylvain Desgrais","email":"sylvain.desgrais@gmail.com","username":"artpej"},"ref":"refs/changes/83/991683/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/83/991683/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/83/991683/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/83/991683/2"}}},"commit":{"parents":[{"commit":"3ac07a0d060bcdd6177bb864bdc9c294c8fce0e7","subject":"Merge \"Api-ref doc change to address sort_key default.\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/3ac07a0d060bcdd6177bb864bdc9c294c8fce0e7"}]}],"author":{"name":"artpej","email":"sylvain.desgrais@gmail.com","date":"2026-06-04 15:07:06.000000000","tz":120},"committer":{"name":"artpej","email":"sylvain.desgrais@gmail.com","date":"2026-06-04 16:36:09.000000000","tz":120},"subject":"Allow zone owners to manage the apex NS recordset","message":"Allow zone owners to manage the apex NS recordset\n\nThe apex NS recordset was previously immutable for non-admin users.\nThis change introduces a hand-off model: the recordset starts as\nservice-managed (driven by the pool configuration), and transitions\nto user-managed on the first update by the zone owner.\n\nOnce user-managed:\n- Pool operations (pool update, zone move) no longer modify the NS\n  recordset for that zone.\n- The zone owner is responsible for keeping the NS records correct.\n\nThis is useful for Primary zones with external secondary nameservers\nthat are not part of the Designate pool, where the apex NS recordset\nmust list all authoritative servers.\n\nImplementation details:\n- POST on an existing apex NS recordset is treated as an upsert\n  (redirected to update) rather than returning 409 Conflict,\n  allowing IaC tools to declare the NS recordset without a prior\n  import step.\n- On first user update, the managed flag is cleared on all records\n  so that _add_ns/_delete_ns skip the zone going forward.\n- The SOA recordset remains non-editable.\n\nChange-Id: Ie4fd310c3bfb50e5a70a4f50471d73ca9846fe9e\nSigned-off-by: artpej \u003csylvain.desgrais@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/954535c20317340404d4702eff2971ba4698a897"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/954535c20317340404d4702eff2971ba4698a897"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{"label:Review-Priority\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
