)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05dc690cf3357fa673c77e23f8efde09d0f04b3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1d45596a_d766dc17","updated":"2026-05-20 11:23:18.000000000","message":"Thanks for writing up this module.\n\nThought I want to check if you have a related patch to the router module? As I think passing enable-ndp-proxy to the router is essential part of setting it up?\nAt least when I am looking at the guide https://docs.openstack.org/neutron/2025.2/admin/config-ndp-proxy.html it seems to consist of 2 part - enable property for the router (step 7), and then create the proxy (step 10).\n\nAnd if I am not missing anything, this module is not covering this step 7 (neither it should).\n\nThe module looks good to me though, but would be nice to ensure that we have full support of the feature in 😉\n\nIt looks good to me, except these multiple nits I\u0027ve highlighted below.","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"1868d2fa3bb171b96747c00c7590bdde436ce7f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"316dbbff_73ae39ed","updated":"2026-01-12 11:11:41.000000000","message":"recheck 500 error in volume service","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"e4b5c8581ab811e6ea9e516524abec45dd76cba3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"de3ea67e_c78b50a9","updated":"2026-01-08 17:21:19.000000000","message":"recheck 500 error in volume service","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"36f78ab2d4870980b43acc7ae381ac79e6ab75ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7eb7ad7b_ccf79e97","updated":"2026-01-09 16:30:15.000000000","message":"recheck timeout in build","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"9617200a817a5f2f2bbd4432b8410071e04b3023","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"88ae1fa9_8ac3ccdf","in_reply_to":"1d45596a_d766dc17","updated":"2026-05-20 20:04:50.000000000","message":"\u003e Thought I want to check if you have a related patch to the router module? As I think passing enable-ndp-proxy to the router is essential part of setting it up?\n\nI should also say, I don\u0027t have a matching patch. I use an OpenStack instance, I don\u0027t maintain one, so I wouldn\u0027t be able to test the router configuration locally. I agree it would be good to add that though.","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"5280e0bdc67329dbdafb4791d59cbbbcc6e54316","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"557a3d2a_b3dc4ab5","updated":"2026-05-21 12:24:59.000000000","message":"And I also forgot that a release note is also needed when you add a new module.\nPlease use reno tool to produce one:\nhttps://docs.openstack.org/reno/latest/user/usage.html\n\nI would be good once CI runs and reno exists :)","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"f45bc6b87b03543bd062a2dd94bb0aabcec4f9b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"591c36ea_33c67812","updated":"2026-05-21 12:41:44.000000000","message":"Sorry for the confusion. Release notes for this project are not maintained with `reno` but as ansible release note fragments.\n\nSo you would need to create a fragment here:\nhttps://opendev.org/openstack/ansible-collections-openstack/src/branch/master/changelogs/fragments\n\nThe doc around it can be found https://docs.ansible.com/projects/ansible/latest/community/development_process.html#creating-a-changelog-fragment","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"654e38add454e34045dcc55eedd5dcad1c283f54","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bbe22962_6885a3ce","updated":"2026-05-21 12:22:14.000000000","message":"Sorry, one more thing - your CI role do not actually run, you need to add it to the https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/run-collection.yml for test to actually happen.","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"311660bd1036a388834b17f95bd5fbb1608ef5c4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"41ff5568_b7b8e9be","updated":"2026-05-20 20:03:27.000000000","message":"Thanks for the review, changes applied.","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"548741fdc1ed3b2fe7a895e2ed2981b558d79a48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6e0be9b7_da98b197","updated":"2026-05-20 21:52:52.000000000","message":"recheck timeout in build","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"6591479afb87e3bba7ed2c7cb30828434476af88","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"88ccb4cb_e6126b0f","updated":"2026-05-20 23:24:59.000000000","message":"recheck timeout in build","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"520e3fe81e3b1f8a907e7c1d369a44c05f8b327a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ed4c1771_4b560cae","updated":"2026-05-21 07:34:17.000000000","message":"recheck timeout in build","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"f70567c666f6778e9d5e613c6d5c2c0842d592aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e8f06064_3f08ba2f","in_reply_to":"591c36ea_33c67812","updated":"2026-05-21 13:16:50.000000000","message":"Looking at the docs, I found a couple of things:\n\n\u003e You do not need a changelog fragment for PRs that: add new modules and plugins, because Ansible tooling does that automatically;\n\nand\n\n\u003e New modules and plugins (including jinja2 filter and test plugins) must have version_added entries set correctly in their documentation, and do not need a changelog fragment. The tooling detects new modules and plugins by their version_added values and announces them in the next release’s changelog automatically.\n\nHowever, doing a search on the repo, I don\u0027t find the string version_added anywhere.\n\nCan you help confirm? Should I be making a fragment regardless?","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"f70567c666f6778e9d5e613c6d5c2c0842d592aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"65708f0c_1f5cc395","in_reply_to":"bbe22962_6885a3ce","updated":"2026-05-21 13:16:50.000000000","message":"Thanks, that\u0027s an important one!","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d72668538a87470ff98f85c1fef60cd0be1534ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"31cb2825_a42cd19e","in_reply_to":"e8f06064_3f08ba2f","updated":"2026-05-22 06:59:40.000000000","message":"Hm, that is a good one...\n\nI think you\u0027re right and we should be doing that, instead of release notes for new modules. It\u0027s indeed we never used `version_added` but we should 😉","commit_id":"95bc62faa32a7fe171cd0f3e40d5cf90b6302c4a"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"19bd972a58856af53b34f55f137845bc0f1f7bc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"52ff41c0_bead9c62","updated":"2026-05-22 06:50:26.000000000","message":"This CI failure is apparently caused by the module/added tests","commit_id":"f3747976523974384c92f3ba1708e273c6f821a7"}],"ci/roles/ndp_proxy/tasks/main.yml":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05dc690cf3357fa673c77e23f8efde09d0f04b3c","unresolved":true,"context_lines":[{"line_number":77,"context_line":"    router: \"{{ router_name }}\""},{"line_number":78,"context_line":"  register: ndp_proxy"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- debug: var\u003dndp_proxy"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- name: Assert return values of ndp_proxy module"},{"line_number":83,"context_line":"  assert:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"45e28a4b_d0249e10","line":80,"range":{"start_line":80,"start_character":0,"end_line":80,"end_character":22},"updated":"2026-05-20 11:23:18.000000000","message":"probably this debug is not meant to stay here?","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"311660bd1036a388834b17f95bd5fbb1608ef5c4","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    router: \"{{ router_name }}\""},{"line_number":78,"context_line":"  register: ndp_proxy"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"- debug: var\u003dndp_proxy"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"- name: Assert return values of ndp_proxy module"},{"line_number":83,"context_line":"  assert:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"44077bc4_466e7951","line":80,"range":{"start_line":80,"start_character":0,"end_line":80,"end_character":22},"in_reply_to":"45e28a4b_d0249e10","updated":"2026-05-20 20:03:27.000000000","message":"There are a number of ci test tasks that do have a debug statement and I will have copied one of those. It can be removed though.","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05dc690cf3357fa673c77e23f8efde09d0f04b3c","unresolved":true,"context_lines":[{"line_number":88,"context_line":"      - ndp_proxy.ndp_proxy.port_id \u003d\u003d port_result.port.id"},{"line_number":89,"context_line":"      - ndp_proxy.ndp_proxy.router_id \u003d\u003d router.router.id"},{"line_number":90,"context_line":"      # allow new fields to be introduced but prevent fields from being removed"},{"line_number":91,"context_line":"      - expected_fields|difference(ndp_proxy.ndp_proxy.keys())|length \u003d\u003d 0"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- name: Create NDP proxy again (idempotency check)"},{"line_number":94,"context_line":"  openstack.cloud.ndp_proxy:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"8d2ad972_8415c659","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":74},"updated":"2026-05-20 11:23:18.000000000","message":"```suggestion\n      - expected_fields | difference(ndp_proxy.ndp_proxy.keys()) | length \u003d\u003d 0\n```","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"311660bd1036a388834b17f95bd5fbb1608ef5c4","unresolved":false,"context_lines":[{"line_number":88,"context_line":"      - ndp_proxy.ndp_proxy.port_id \u003d\u003d port_result.port.id"},{"line_number":89,"context_line":"      - ndp_proxy.ndp_proxy.router_id \u003d\u003d router.router.id"},{"line_number":90,"context_line":"      # allow new fields to be introduced but prevent fields from being removed"},{"line_number":91,"context_line":"      - expected_fields|difference(ndp_proxy.ndp_proxy.keys())|length \u003d\u003d 0"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- name: Create NDP proxy again (idempotency check)"},{"line_number":94,"context_line":"  openstack.cloud.ndp_proxy:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"0cdc7dae_28ed6306","line":91,"range":{"start_line":91,"start_character":8,"end_line":91,"end_character":74},"in_reply_to":"8d2ad972_8415c659","updated":"2026-05-20 20:03:27.000000000","message":"Done","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"05dc690cf3357fa673c77e23f8efde09d0f04b3c","unresolved":true,"context_lines":[{"line_number":176,"context_line":"    name: \"{{ network_name }}\""},{"line_number":177,"context_line":"  when: not use_existing_network"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"# Made with Bob"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7263531f_799577e3","line":179,"range":{"start_line":179,"start_character":2,"end_line":179,"end_character":15},"updated":"2026-05-20 11:23:18.000000000","message":"I think you should actually add a copyright/license clause to the begging of the file instead.","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"},{"author":{"_account_id":38716,"name":"James Hewitt","email":"james.hewitt@gmail.com","username":"jammy"},"change_message_id":"311660bd1036a388834b17f95bd5fbb1608ef5c4","unresolved":false,"context_lines":[{"line_number":176,"context_line":"    name: \"{{ network_name }}\""},{"line_number":177,"context_line":"  when: not use_existing_network"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"# Made with Bob"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"cf578ffe_bfe50f14","line":179,"range":{"start_line":179,"start_character":2,"end_line":179,"end_character":15},"in_reply_to":"7263531f_799577e3","updated":"2026-05-20 20:03:27.000000000","message":"I\u0027ll just drop those statement, Bob doesn\u0027t worry about attribution 😉","commit_id":"68b2c34e9e26ac510213fdd0c6b1f974fac321eb"}],"plugins/modules/ndp_proxy.py":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"d72668538a87470ff98f85c1fef60cd0be1534ea","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"DOCUMENTATION \u003d \u0027\u0027\u0027"},{"line_number":8,"context_line":"---"},{"line_number":9,"context_line":"module: ndp_proxy"},{"line_number":10,"context_line":"short_description: Manage NDP proxies in OpenStack"},{"line_number":11,"context_line":"author: OpenStack Ansible SIG"},{"line_number":12,"context_line":"description:"}],"source_content_type":"text/x-python","patch_set":4,"id":"2bd32ec3_4c618880","line":9,"updated":"2026-05-22 06:59:40.000000000","message":"You can add `version_added: 2.6.0` here","commit_id":"f3747976523974384c92f3ba1708e273c6f821a7"}]}
