)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff089b8cc6bd1d181f56efb8258f0a6a29439c67","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"93e79e2c_d2ccb8d5","updated":"2025-01-30 17:59:18.000000000","message":"I\u0027m fine with the concept, just had some comments so it\u0027s clear what the settings mean.","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"cc9eeb86a57717b3ff795d34ce8e0009e2cf7fa9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"73bcbbee_76239588","updated":"2025-02-06 12:01:58.000000000","message":"All fixed.","commit_id":"70846c155d4cae559f40fc9482afce65f8fc4245"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"18bb038ab5eadf88c50f9d545f09a779a17ccd2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3b93ba93_095b591a","updated":"2025-02-07 17:29:45.000000000","message":"Thanks for updating","commit_id":"59a370b6ba01ca269a646ea7c63a774c97d5b64d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"58f2ddf48251b5cc8070dab31443ddb13d75a9f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f012969e_4b7694c7","updated":"2025-05-06 01:13:09.000000000","message":"-1 for previous comment","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ed2293949b8eeadf3783d80165ccd292b0af70e3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b10f27dd_894cf3f3","updated":"2025-10-27 16:30:02.000000000","message":"I have added a discussion topic about old specs for tomorrow\u0027s\nNeutron PTG meeting, ~14:00 UTC in the Folsom room. We plan on\nbriefly discussing the status of specs that have not been\nmerged and approved. If you want to come and give a quick update,\nor just add an update here (and rebase to 2026.1 branch) please\ndo so before then.\n\nThanks, Brian\n\n[0] https://ptg.opendev.org/ptg.html\n[1] https://etherpad.opendev.org/p/oct2025-ptg-neutron#L61","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"588dc1238dd158b7a5ff3bdea35f9ca3bbe7d5dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e67d7836_cb79cea2","updated":"2025-04-24 17:41:04.000000000","message":"Since this was not approved in time, will need to be moved to the 2025.2 directory.","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"38cc8742e0aa277da5fddf6287a70367288031b7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7b28a17b_1ec23ba4","updated":"2025-03-26 12:04:41.000000000","message":"Thank you for your input, check my comments below.","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e0287b175587d1283a80469b91f474cb563e0ec9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"178051cb_761590ef","updated":"2025-03-24 16:10:44.000000000","message":"really good initiative, thanks, please check my comments","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"02aa770aa50462312d1af8391465f05601a65e0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a58b864a_3c28045d","in_reply_to":"b10f27dd_894cf3f3","updated":"2025-10-27 20:31:31.000000000","message":"I believe this can be abandoned.\nFirst of all, OVN acts as if \"random-fully\" is disabled at all times, and last time I checked there was no way to change that. Seeing as OVN is de-facto a new network mechanism in Openstack that largely deprecates OVS+L3 model, I see no reason to waste time on implementing a feature for an older stack.\nSecondly there doesn\u0027t appear to be any interest in this feature as its use case is quite limited.\nI\u0027d be happy to share whatever working code I have for someone willing to pick it up, it\u0027s been working in production environment for a year now, but I\u0027ll not be extending my efforts beyond that for the abovementioned reasons.","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"}],"specs/2025.1/random-fully-pat-per-fip.rst":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff089b8cc6bd1d181f56efb8258f0a6a29439c67","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/2083214"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This RFE proposes an update to control random-fully PAT behavior on a"},{"line_number":14,"context_line":"per-Floating-IP base in addition to the global configuration setting."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem Description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8688d30c_9a2aae2b","line":13,"range":{"start_line":13,"start_character":52,"end_line":13,"end_character":55},"updated":"2025-01-30 17:59:18.000000000","message":"Can you please define PAT here at the first usage? Something like \u0027Port Address Translation (PAT)\u0027","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"cc9eeb86a57717b3ff795d34ce8e0009e2cf7fa9","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://bugs.launchpad.net/neutron/+bug/2083214"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This RFE proposes an update to control random-fully PAT behavior on a"},{"line_number":14,"context_line":"per-Floating-IP base in addition to the global configuration setting."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Problem Description"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ac6a6aa4_9e008692","line":13,"range":{"start_line":13,"start_character":52,"end_line":13,"end_character":55},"in_reply_to":"8688d30c_9a2aae2b","updated":"2025-02-06 12:01:58.000000000","message":"Done","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff089b8cc6bd1d181f56efb8258f0a6a29439c67","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Problem Description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Neutron uses random-fully PAT(see [0]_) when performing NAT on L3 agent, meaning that source"},{"line_number":20,"context_line":"port is randomized for every outgoing connection. This breaks some workflows for"},{"line_number":21,"context_line":"software that performs UDP hole punching, or otherwise requires knowledge of the"},{"line_number":22,"context_line":"outgoing port number."}],"source_content_type":"text/x-rst","patch_set":1,"id":"2b2c4713_c64e2b57","line":19,"range":{"start_line":19,"start_character":81,"end_line":19,"end_character":85},"updated":"2025-01-30 17:59:18.000000000","message":"s/that the","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"cc9eeb86a57717b3ff795d34ce8e0009e2cf7fa9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Problem Description"},{"line_number":17,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Neutron uses random-fully PAT(see [0]_) when performing NAT on L3 agent, meaning that source"},{"line_number":20,"context_line":"port is randomized for every outgoing connection. This breaks some workflows for"},{"line_number":21,"context_line":"software that performs UDP hole punching, or otherwise requires knowledge of the"},{"line_number":22,"context_line":"outgoing port number."}],"source_content_type":"text/x-rst","patch_set":1,"id":"095a48a9_2c1a747c","line":19,"range":{"start_line":19,"start_character":81,"end_line":19,"end_character":85},"in_reply_to":"2b2c4713_c64e2b57","updated":"2025-02-06 12:01:58.000000000","message":"Done","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff089b8cc6bd1d181f56efb8258f0a6a29439c67","unresolved":true,"context_lines":[{"line_number":35,"context_line":"If set to None, random-fully PAT setting will be inherited from `use_random_fully`"},{"line_number":36,"context_line":"configuration option."},{"line_number":37,"context_line":"This implemenatation does not break workflow for clouds that have `use_random_fully`"},{"line_number":38,"context_line":"configuration setting set to `False`."},{"line_number":39,"context_line":"`use_random_fully` setting can be then deprecated in the future release."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"6f302798_8eec49d2","line":38,"updated":"2025-01-30 17:59:18.000000000","message":"I\u0027m a little confused with this wording. Maybe having a table of the two values and what it implies would help?\n\nuse_random_fully: True/False\nrandom-fully PAT: True/False/None","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"cc9eeb86a57717b3ff795d34ce8e0009e2cf7fa9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"If set to None, random-fully PAT setting will be inherited from `use_random_fully`"},{"line_number":36,"context_line":"configuration option."},{"line_number":37,"context_line":"This implemenatation does not break workflow for clouds that have `use_random_fully`"},{"line_number":38,"context_line":"configuration setting set to `False`."},{"line_number":39,"context_line":"`use_random_fully` setting can be then deprecated in the future release."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"d9493e37_77265a71","line":38,"in_reply_to":"6f302798_8eec49d2","updated":"2025-02-06 12:01:58.000000000","message":"Done","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"ff089b8cc6bd1d181f56efb8258f0a6a29439c67","unresolved":true,"context_lines":[{"line_number":36,"context_line":"configuration option."},{"line_number":37,"context_line":"This implemenatation does not break workflow for clouds that have `use_random_fully`"},{"line_number":38,"context_line":"configuration setting set to `False`."},{"line_number":39,"context_line":"`use_random_fully` setting can be then deprecated in the future release."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"REST API Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bcc50bf5_1bb91742","line":39,"range":{"start_line":39,"start_character":53,"end_line":39,"end_character":56},"updated":"2025-01-30 17:59:18.000000000","message":"s/a future\n\nAlso, please put a \u0027The\u0027 at the beginning of this sentence.","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"cc9eeb86a57717b3ff795d34ce8e0009e2cf7fa9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"configuration option."},{"line_number":37,"context_line":"This implemenatation does not break workflow for clouds that have `use_random_fully`"},{"line_number":38,"context_line":"configuration setting set to `False`."},{"line_number":39,"context_line":"`use_random_fully` setting can be then deprecated in the future release."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"REST API Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6e294d86_3b400b7c","line":39,"range":{"start_line":39,"start_character":53,"end_line":39,"end_character":56},"in_reply_to":"bcc50bf5_1bb91742","updated":"2025-02-06 12:01:58.000000000","message":"Done","commit_id":"8e4d1db5849a232bf4f162fa1759b893bd4ecce6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"06e2a10222f711cf784c1211f04d4d4eadbca8e9","unresolved":true,"context_lines":[{"line_number":46,"context_line":"|-------------------------------------------------------------|---------|----------|----------|"},{"line_number":47,"context_line":"| true                                                        | enabled | disabled | enabled  |"},{"line_number":48,"context_line":"| false                                                       | enabled | disabled | disabled |"},{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"REST API Impact"},{"line_number":52,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c08c10e0_7314e595","line":49,"updated":"2025-02-07 00:40:57.000000000","message":"Thanks for doing this, it didn\u0027t quite render correctly - you can see the doc jobs output to see what I mean at [0]. And I know I\u0027m doing this wrong with the \u0027|\u0027s, but maybe something like this:\n\n| use_random_fully config value | random_fully FIP value |\n|-------------------------------|------------------------|\n|                               | true  | false  | None  |\n|-------------------------------|-------|--------|-------|\n| true ...\n| false ...\n\nYou ran run \u0027tox -e docs\u0027 to generate locally and look.\n\n[0] https://40d2a9f7b071b534b802-bcea6e1c618253950d238ae3b618b61a.ssl.cf2.rackcdn.com/932650/4/check/openstack-tox-docs/f84ec4f/docs/specs/2025.1/random-fully-pat-per-fip.html","commit_id":"70846c155d4cae559f40fc9482afce65f8fc4245"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"de51168a82228f34333f5ca1737c93bceda70168","unresolved":false,"context_lines":[{"line_number":46,"context_line":"|-------------------------------------------------------------|---------|----------|----------|"},{"line_number":47,"context_line":"| true                                                        | enabled | disabled | enabled  |"},{"line_number":48,"context_line":"| false                                                       | enabled | disabled | disabled |"},{"line_number":49,"context_line":"```"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"REST API Impact"},{"line_number":52,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"beed5a3b_163027ce","line":49,"in_reply_to":"c08c10e0_7314e595","updated":"2025-02-07 10:00:08.000000000","message":"Table updated and renders properly now. It\u0027s not exactly what I\u0027d hope to see, but markdown here is somewhat weird, so this should do.","commit_id":"70846c155d4cae559f40fc9482afce65f8fc4245"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"06e2a10222f711cf784c1211f04d4d4eadbca8e9","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"openstackclient is extended with three new options for floating IP management:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `openstack floating ip create/set --disable-random-fully \u003cFIP\u003e` sets `random_fully` to `False`"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* `openstack floating ip create/set --enable-random-fully \u003cFIP\u003e` sets `random_fully` to `True`"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"418de482_8f7aac04","line":82,"updated":"2025-02-07 00:40:57.000000000","message":"These are a little complicated, I *think* it should be like this:\n\n$ openstack floating ip create --random-fully \u003cFIP\u003e (for True)\n$ openstack floating ip create --no-random-fully \u003cFIP\u003e (for False)\n$ openstack floating ip set --random-fully \u003cFIP\u003e (for True)\n$ openstack floating ip set --no-random-fully \u003cFIP\u003e (for False)\n$ openstack floating ip unset --random-fully \u003cFIP\u003e (for None)\n\nI\u0027m getting confused just writing it, but we can figure that out when we go to implement it.","commit_id":"70846c155d4cae559f40fc9482afce65f8fc4245"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"de51168a82228f34333f5ca1737c93bceda70168","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"openstackclient is extended with three new options for floating IP management:"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"* `openstack floating ip create/set --disable-random-fully \u003cFIP\u003e` sets `random_fully` to `False`"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"* `openstack floating ip create/set --enable-random-fully \u003cFIP\u003e` sets `random_fully` to `True`"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"345fe3e9_dca43635","line":82,"in_reply_to":"418de482_8f7aac04","updated":"2025-02-07 10:00:08.000000000","message":"I\u0027m inclined to agree with you here, this approach does look simpler and cleaner. I\u0027ve updated spec to reflect that.","commit_id":"70846c155d4cae559f40fc9482afce65f8fc4245"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"18bb038ab5eadf88c50f9d545f09a779a17ccd2b","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Extend Floating IP API with a new option to control random-fully PAT behavior"},{"line_number":31,"context_line":"per Floating IP."},{"line_number":32,"context_line":"This option can take 3 values: `None`(default), `True`, or `False`."},{"line_number":33,"context_line":"If set to True, random-fully PAT will be enabled for this FIP."},{"line_number":34,"context_line":"If set to False, random-fully PAT will be disabled for this FIP."},{"line_number":35,"context_line":"If set to None, random-fully PAT setting will be inherited from `use_random_fully`"}],"source_content_type":"text/x-rst","patch_set":5,"id":"969de685_9bb5b59d","line":32,"updated":"2025-02-07 17:29:45.000000000","message":"nit: I think you need a space here before the ( as the output has random ` in it","commit_id":"59a370b6ba01ca269a646ea7c63a774c97d5b64d"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"e2b50706352dedef19a802e1835b121ad2975927","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Extend Floating IP API with a new option to control random-fully PAT behavior"},{"line_number":31,"context_line":"per Floating IP."},{"line_number":32,"context_line":"This option can take 3 values: `None`(default), `True`, or `False`."},{"line_number":33,"context_line":"If set to True, random-fully PAT will be enabled for this FIP."},{"line_number":34,"context_line":"If set to False, random-fully PAT will be disabled for this FIP."},{"line_number":35,"context_line":"If set to None, random-fully PAT setting will be inherited from `use_random_fully`"}],"source_content_type":"text/x-rst","patch_set":5,"id":"03879104_93b365f6","line":32,"in_reply_to":"969de685_9bb5b59d","updated":"2025-02-11 09:51:10.000000000","message":"Fixed.","commit_id":"59a370b6ba01ca269a646ea7c63a774c97d5b64d"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"18bb038ab5eadf88c50f9d545f09a779a17ccd2b","unresolved":true,"context_lines":[{"line_number":57,"context_line":"        PUT /v2.0/floatingips/{floatingip_id}"},{"line_number":58,"context_line":"        {"},{"line_number":59,"context_line":"            \"floatingip\": {"},{"line_number":60,"context_line":"                \"random_fully\": true|false|null"},{"line_number":61,"context_line":"            }"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5ba2db62_eb9cdddb","line":60,"range":{"start_line":60,"start_character":43,"end_line":60,"end_character":47},"updated":"2025-02-07 17:29:45.000000000","message":"Is this null or None ? Same below on L68\n\nI realize sometimes the \u0027null\u0027 value in an API call implies None, but there is an extension that does accept \u0027None\u0027\n\nneutron_lib/api/definitions/port_numa_affinity_policy.py","commit_id":"59a370b6ba01ca269a646ea7c63a774c97d5b64d"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"e2b50706352dedef19a802e1835b121ad2975927","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        PUT /v2.0/floatingips/{floatingip_id}"},{"line_number":58,"context_line":"        {"},{"line_number":59,"context_line":"            \"floatingip\": {"},{"line_number":60,"context_line":"                \"random_fully\": true|false|null"},{"line_number":61,"context_line":"            }"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"0ab0d749_8a76fb29","line":60,"range":{"start_line":60,"start_character":43,"end_line":60,"end_character":47},"in_reply_to":"5ba2db62_eb9cdddb","updated":"2025-02-11 09:51:10.000000000","message":"This is explicitly \"null\" only, trying to supply anything else beside that, like \"none\" or \"None\" results in \"Malformed request body: Cannot understand JSON.\" error. This is controlled by some code before validator, because validator already receives None or boolean-interpretable value as input:\n```\ndef validate_boolean_or_none(data, valid_values\u003dNone):\n...\ntry:\n    if data \u003d\u003d None:\n    ...\n```\nI imagine this can be changed, but this is how it works in my production implementation at the moment.","commit_id":"59a370b6ba01ca269a646ea7c63a774c97d5b64d"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e0287b175587d1283a80469b91f474cb563e0ec9","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":75,"context_line":"    random_fully          bool     CRUD random-fully PAT flag status"},{"line_number":76,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"CLI Impact"},{"line_number":79,"context_line":"----------"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"8f64e69c_45b29e8b","line":77,"updated":"2025-03-24 16:10:44.000000000","message":"How this behave with OVN, shall we add that also here to see the difference and if this new API can be used with OVN as well?","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"38cc8742e0aa277da5fddf6287a70367288031b7","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":75,"context_line":"    random_fully          bool     CRUD random-fully PAT flag status"},{"line_number":76,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"CLI Impact"},{"line_number":79,"context_line":"----------"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"aa647006_bba0d8b2","line":77,"in_reply_to":"8f64e69c_45b29e8b","updated":"2025-03-26 12:04:41.000000000","message":"I did test OVN behavior in Devstack to check how port randomization manifests there, and it appears OVN defaults to performing full cone NAT already. If anything I don\u0027t see a way around it, i.e. enable \"random-fully\" equivalent behavior in OVN.\nSo this API may not be useful for OVN at all, but this needs review from someone more experienced with OVN than me.\nOn the other hand it questions the need for this API in the first place. If OVN default to full-cone NAT and has no way of disabling it - maybe it should be set the same for L3 agents by default to enable behavior parity?","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1c5ee9a103ac3980e1c10f9a6ad30e5c0ee0b870","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":75,"context_line":"    random_fully          bool     CRUD random-fully PAT flag status"},{"line_number":76,"context_line":"    \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"CLI Impact"},{"line_number":79,"context_line":"----------"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"ef9752c6_bce2ded0","line":77,"in_reply_to":"aa647006_bba0d8b2","updated":"2025-03-26 13:22:29.000000000","message":"That is really a good question, let\u0027s wait for others opinion also. thanks for checking","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e0287b175587d1283a80469b91f474cb563e0ec9","unresolved":true,"context_lines":[{"line_number":102,"context_line":"--------------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"New API must be documented."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"References"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"eeb701c7_81fc96b3","line":105,"updated":"2025-03-24 16:10:44.000000000","message":"testing:\n* not sure if high level test (Tempest can be used for this) please check and add not for it here\n* some Neutron lower level test env should be used for this like fullstack or functional over the unit tests of course","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1c5ee9a103ac3980e1c10f9a6ad30e5c0ee0b870","unresolved":true,"context_lines":[{"line_number":102,"context_line":"--------------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"New API must be documented."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"References"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"aa5bb273_bea43bba","line":105,"in_reply_to":"002a7ad4_a0f91525","updated":"2025-03-26 13:22:29.000000000","message":"in tempest (neutron-tempest-plugin actually) we have examples for using netcat see the utility modul:\nhttps://opendev.org/openstack/neutron-tempest-plugin/src/branch/master/neutron_tempest_plugin/common/utils.py#L135\n\nPlease check if that can help, or can be used to your case.","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"},{"author":{"_account_id":37351,"name":"Vladimir Prokofev","email":"v@prokofev.me","username":"vprokofev"},"change_message_id":"38cc8742e0aa277da5fddf6287a70367288031b7","unresolved":true,"context_lines":[{"line_number":102,"context_line":"--------------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"New API must be documented."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"References"},{"line_number":107,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"002a7ad4_a0f91525","line":105,"in_reply_to":"eeb701c7_81fc96b3","updated":"2025-03-26 12:04:41.000000000","message":"I\u0027m not sure what can be done here since confirming proper operation requires a client/server environment, opening connections between them with something like netcat, and checking if port numbers inside/outside match. Is such automation testing possible within established used tools(Zuul?)?","commit_id":"f785e4dd712e8ea75e96b7d494bedc836ca5e605"}]}
